Inhaltsverzeichnis:

Arduino Smart Home-System - Gunook
Arduino Smart Home-System - Gunook

Video: Arduino Smart Home-System - Gunook

Video: Arduino Smart Home-System - Gunook
Video: комплект умного дома с платой PLUS для arduino DIY STEM | Keyestudio 2024, November
Anonim
Arduino Smart Home-System
Arduino Smart Home-System
Arduino Smart Home-System
Arduino Smart Home-System

In diesem Instructable zeigen wir Ihnen, wie Sie mit dem App Designer von MATLAB mit einem Sparkfun Red Board Ihr eigenes Smart Home-System erstellen. Dieses Instructable kann verwendet werden, um ein grundlegendes Verständnis des App Designers von MATLAB zu erlangen sowie einen Fotowiderstand, einen Servomotor und einen PIR-Bewegungssensor zu verwenden.

Schritt 1: Zu Beginn: Materialien

Für dieses Projekt werden folgende Materialien benötigt:

- Arduino Uno (Für dieses Projekt haben wir ein Sparkfun Red Board verwendet)

- Ein Fotowiderstand

- Ein Mini-Servomotor

- Ein kontinuierlicher Servomotor

- Ein PIR-Bewegungssensor

- Ein Temperatursensor

- 2 LEDs

- Drähte und Widerstände nach Bedarf

Schritt 2: Schritt 2: Annäherung an das zu lösende Problem

Das Hauptziel dieses Projekts war es, ein einfach zu bedienendes Smart-Home-System zu erstellen, indem ein Arduino Uno-Board mit MATLAB codiert wurde. Wir dachten zuerst darüber nach, nur mit einem Temperatur- und Feuchtigkeitssensor zu arbeiten, aber wenn wir bei diesen beiden Sensoren bleiben würden, wäre unser Smart-Home-System nicht leicht für ein breites Publikum vermarktbar. Wir entschieden uns, ein umfassendes Smart Home-Energiesystem zu schaffen, das als intelligentes Thermostat- und Sicherheitssystem funktioniert. Schließlich wollten wir mit dem AppDesigner von MATLAB arbeiten, damit der Benutzer das Smart Home ganz einfach nach Belieben ändern kann.

Schritt 3: Schritt 3: Konfigurieren der GUI und des grundlegenden Codeflusses

Schritt 3: Konfigurieren der GUI und des grundlegenden Codeflusses
Schritt 3: Konfigurieren der GUI und des grundlegenden Codeflusses

Um zu starten, müssen Sie MATLABs AppDesigner öffnen und Folgendes platzieren:

Zwei numerische Eingabefelder für eine heiße und kalte Schwelleneingabe

Ein Knopf zum Entriegeln der Tür

Und vier Kontrollleuchten für Kamin, Tür, Ventilator und Flutlicht.

Zwei Etiketten zur Kommunikation mit dem Benutzer.

Für dieses Projekt fanden wir es einfacher, mit globalen Variablen und der Startfunktion innerhalb des Designers zu arbeiten. Sie benötigen diese Variablen innerhalb der Startfunktion:

global

a = arduino('COM3', 'uno', 'Bibliotheken', 'Servo'); global s global p global hotUI global coldUI global unlock global temp global curr_temp global int_light

Im Moment haben wir nur eine Zuweisung für die Variable a, damit Ihr Computer das Arduino lesen kann. COM3 kann unterschiedlich sein, je nachdem, welchen Port Ihr Computer verwendet.

Wenn Sie den Code ausführen, wird er innerhalb der Startfunktion gestartet, um die globalen Variablen zu erstellen und das System zu kalibrieren. Am Ende dieser Funktion befindet sich eine Timer-Funktion, die eine Eigenschaft namens Timer aufruft. In diese Timer-Eigenschaft geben wir den Code ein, der das Heimsystem ausführt, damit der Timer den Kalibrierungscode nicht erneut ausführt.

Hinweis: Wir haben keine Verkabelungsanleitung für das System gegeben. Wir haben auf das Handbuch verwiesen, das mit dem SparkFun Red-Board geliefert wird.

Schritt 4: Schritt 3: Einrichten des Thermostatsystems

Schritt 3: Einrichten des Thermostatsystems
Schritt 3: Einrichten des Thermostatsystems
Schritt 3: Einrichten des Thermostatsystems
Schritt 3: Einrichten des Thermostatsystems

Die Funktion des Thermostats funktioniert wie folgt:

Der Benutzer gibt ein, welche Temperatur er für zu heiß oder zu kalt hält. Sobald das Thermometer eine Messung vornimmt und das Haus zu kalt ist, schaltet sich der "Kamin" (eine rote LED) ein und heizt das Haus. Wenn es im Haus zu heiß ist, schaltet ein "Lüfter" (kontinuierlicher Servomotor) die Kühlung des Hauses ein.

So codieren Sie das Thermostatsystem:

Wir beginnen innerhalb der Startfunktion, um die aktuelle Temperatur anzuzeigen und den Benutzer seine Kalt- und Heißschwellen eingeben zu lassen.

p = 'A0' %Photowiderstandsstift

volt = readVoltage(a, temp); celc = (Volt – 0,5).*100; curr_temp = celc*9/5+32; app. Label_4. Text = num2str(curr_temp); %Etikettnummer kann sich ändern pause(10); %Möglicherweise ändern!!!!!

Dann vervollständigen wir das Thermostatsystem innerhalb der Timer-Eigenschaft.

global curr_temp

global coldUI global a global hotUI if curr_temp hotUI app. FanStateLamp. Color = [0,47 0,67 0,19]; %Schaltet die GUI-Lampe grün writePWMDutyCycle(a, 'D11',.9) %Die nächsten drei Codezeilen führen den Servolüfter an. (10) writePWMDutyCycle(a, 'D11',.0) else app. FireplaceStateLamp. Color = [0,90 0,90 0,90]; %Dies schaltet alle GUI-Lampen und den Kamin aus app. FanStateLamp. Color = [0.9 0.9 0.9]; writeDigitalPin(a, 'D13', 0); Ende

Schritt 5: Schritt 4: Einrichten des Türsystems

Schritt 4: Einrichten des Türsystems
Schritt 4: Einrichten des Türsystems

Die Funktion für die Tür funktioniert wie folgt:

Wenn Sie Ihren MATLAB-Code zum ersten Mal ausführen, werden Sie von der App aufgefordert, die Tür zu öffnen, damit der Fotowiderstand eine erste Lichtmessung vornehmen kann. Sobald dies abgeschlossen ist, wird der Timer aktiviert und der Fotowiderstand nimmt sekundäre Lichtmessungen vor. Wenn die Sekundärlichtanzeige heller ist als die Anfangsanzeige, verriegelt ein Servomotor die Tür. Wenn der Benutzer die Tür entriegeln möchte, kann er eine Taste in der App drücken, die die Tür entriegelt.

So konfigurieren Sie den Servomotor und den Fotowiderstand:

So codieren Sie das Türsystem:

Wir beginnen mit der Startfunktion, um die ersten Lichtmessungen durchzuführen.

s = servo(a, 'D9') %Pin kann sich je nach Verkabelung ändern

app. Label_4. Text='Bitte öffnen Sie die Tür, um das System zu kalibrieren'; Pause (15); %Dies gibt dem Benutzer Zeit, die Tür zu öffnen int_light = readVoltage(a, p); app. Label_4. Text = 'Sie können Ihren Finger entfernen';

Als Nächstes vervollständigen wir den Code in der Timer-Eigenschaft

globales entsperren

global int_light global s global a %Erhalte einen aktuellen Lichtwert zum Vergleichen curr_light = readVoltage(a, p); % -- Tür verriegeln -- if int_light<curr_light writePosition(s, 1) %Servopositionen können je Motorpause unterschiedlich sein (0,5); app. DoorStateLamp. Color = [0,47 0,67 0,19]; Ende % -- Tür entriegeln -- wenn entriegeln == 1234 Pause(0.5); writePosition(s,.52) app. DoorStateLamp. Color = [0,85 0,33 0,10]; Ende

Schließlich erstellen wir den Rückruf für die Schaltfläche zum Entsperren. Sobald der Benutzer die Schaltfläche zum Entsperren drückt, wird der globalen Variable unlock eine Zahl zugewiesen, die die letzte if-Anweisung in der Timer-Eigenschaft abschließen kann.

globales entsperren

entsperren = 1234;

Schritt 6: Schritt 6: Einrichten des Flutlichtsystems

Schritt 6: Einrichten des Flutlichtsystems
Schritt 6: Einrichten des Flutlichtsystems

Die Funktion für das Flutlicht funktioniert wie folgt:

Wenn Sie den MATLAB-Code starten, beginnt der PIR-Bewegungssensor, Bewegungen zu erkennen. Sobald es eine Art von Bewegung erkennt, wird ein Stromsignal unterbrochen. Sobald dieses Signal unterbrochen ist, wird ein Flutlicht außerhalb des Hauses eingeschaltet.

So konfigurieren Sie das Flutlichtsystem:

So codieren Sie das Flutlichtsystem:

Diesmal können wir zur Timer-Eigenschaft springen, da wir keine zusätzlichen Variablen schreiben müssen.

human_detected = readDigitalPin(a, 'D2'); %Pin kann sich je nach Konfiguration ändern, wenn human_detected == 0 writeDigitalPin(a, 'D7', 1) %Pin kann sich ändern app. FloodLightStateLamp. Color = [0,47 0,67 0,19]; elseif human_detected == 1 app. FloodLightStateLamp. Color = [0.9 0.9 0.9]; writeDigitalPin(a, 'D7', 0) end

Schritt 7: Fazit

Jetzt, da Sie einen Entwurf Ihrer GUI mit dem App Designer und Ihrem Code für das Arduino haben, sind Sie bereit, Ihre eigenen Bearbeitungen vorzunehmen oder Ihr Arduino anzuschließen und loszulegen!

Empfohlen: