Cuprins:

Sistem Arduino Smart Home: 7 pași
Sistem Arduino Smart Home: 7 pași

Video: Sistem Arduino Smart Home: 7 pași

Video: Sistem Arduino Smart Home: 7 pași
Video: learn Arduino programming in 20 seconds!! (Arduino projects) 2024, Noiembrie
Anonim
Sistem Arduino Smart Home
Sistem Arduino Smart Home
Sistem Arduino Smart Home
Sistem Arduino Smart Home

În acest Instructable vă vom arăta cum să vă creați propriul sistem inteligent de acasă cu aplicația MATLAB's Designer cu o placă Sparkfun Red. Acest instructabil poate fi folosit pentru a obține o înțelegere de bază a proiectantului de aplicații al MATLAB, precum și pentru a utiliza un fotorezistor, servomotor și un senzor de mișcare PIR.

Pasul 1: Pentru a începe: materiale

Acest proiect necesită următoarele materiale:

- Arduino Uno (Pentru acest proiect am folosit o placă Sparkfun Red)

- Un fotorezistor

- Un mini-servomotor

- Un servomotor continuu

- Un senzor de mișcare PIR

- Un senzor de temperatură

- 2 LED-uri

- Firele și rezistențele după cum este necesar

Pasul 2: Pasul 2: Abordarea problemei de rezolvat

Scopul principal al acestui proiect a fost crearea unui sistem inteligent ușor de utilizat, prin codificarea unei plăci Arduino Uno cu MATLAB. Mai întâi ne-am gândit să lucrăm doar cu un senzor de temperatură și umiditate, totuși, dacă am rămâne cu acești doi senzori, sistemul nostru inteligent de casă nu ar putea fi comercializat cu ușurință pentru un public general. Am decis că dorim să creăm un sistem global de energie inteligentă pentru casă, care să funcționeze ca un termostat inteligent și un sistem de securitate. În cele din urmă, am vrut să lucrăm cu AppDesigner de la MATLAB, astfel încât utilizatorul să poată modifica cu ușurință casa inteligentă după bunul plac.

Pasul 3: Pasul 3: Configurarea GUI și a fluxului de cod de bază

Pasul 3: Configurarea GUI și a fluxului de cod de bază
Pasul 3: Configurarea GUI și a fluxului de cod de bază

Pentru a începe, va trebui să deschideți MATLABs AppDesigner și să plasați următoarele:

Două câmpuri de editare numerică pentru o intrare de prag cald și rece

Un buton pentru deblocarea ușii

Și patru lămpi indicatoare pentru șemineu, ușă, ventilator și lumină de inundații.

Două etichete pentru a comunica cu utilizatorul.

Pentru acest proiect, am găsit mai ușor să lucrăm cu variabile globale și funcția de pornire în cadrul proiectantului. Veți avea nevoie de aceste variabile în cadrul funcției de pornire:

globală a

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

În acest moment avem doar o sarcină pentru variabila a, astfel încât computerul dvs. să poată citi arduino. COM3 poate diferi în funcție de portul pe care îl poate utiliza computerul.

Când rulați codul, acesta va începe în cadrul funcției de pornire, creând variabilele globale și calibrând sistemul. La sfârșitul acestei funcții va exista o funcție de temporizare care apelează o proprietate numită Timer. În cadrul acestei proprietăți Timer, introducem codul care rulează sistemul de acasă, astfel încât temporizatorul să nu execute din nou codul de calibrare.

Notă: Nu am dat instrucțiuni de cablare pentru sistem. Ne-am referit la manualul care vine cu placa SparkFun Red.

Pasul 4: Pasul 3: Configurarea sistemului termostat

Pasul 3: Configurarea sistemului termostat
Pasul 3: Configurarea sistemului termostat
Pasul 3: Configurarea sistemului termostat
Pasul 3: Configurarea sistemului termostat

Funcția pentru termostat funcționează după cum urmează:

Utilizatorul va introduce ce temperatură consideră că este prea caldă sau prea rece. Odată ce termometrul a citit, dacă locuința este prea rece, atunci „șemineul” (un LED roșu) se va aprinde și va încălzi casa. Dacă locuința este prea fierbinte, atunci un "ventilator" (servomotor continuu) va porni răcirea casei.

Pentru a codifica sistemul termostat:

Vom începe în cadrul funcției de pornire pentru a afișa temperatura curentă și pentru a permite utilizatorului să introducă pragurile la rece și cald.

p = 'A0'% Pin fotorezistor

volt = readVoltage (a, temp); celc = (volt-0,5). * 100; curr_temp = celc * 9/5 + 32; app. Label_4. Text = num2str (curr_temp); % Numărul etichetei poate schimba pauza (10); % Poate vrea să se schimbe !!!!!

Apoi vom finaliza sistemul de termostat în cadrul proprietății Timer.

global curr_temp

global coldUI global a global hotUI if curr_temp hotUI app. FanStateLamp. Color = [0,47 0,67 0,19]; % Se transformă în lampă GUI verde writePWMDutyCycle (a, 'D11',.9)% Următoarele trei linii de cod execută servo pauza ventilatorului (10) writePWMDutyCycle (a, 'D11',.0) else app. FireplaceStateLamp. Color = [0,90 0,90 0,90]; % Aceasta oprește toate lămpile GUI și aplicația pentru șemineu. FanStateLamp. Color = [0,9 0,9 0,9]; writeDigitalPin (a, 'D13', 0); Sfârșit

Pasul 5: Pasul 4: Configurarea sistemului de ușă

Pasul 4: Configurarea sistemului de ușă
Pasul 4: Configurarea sistemului de ușă

Funcția pentru ușă funcționează după cum urmează:

Când rulați codul MATLAB pentru prima dată, aplicația vă va cere să deschideți ușa, astfel încât fotorezistorul să poată efectua o citire inițială a luminii. Odată ce acest lucru este finalizat, temporizatorul se va activa și fotorezistorul va efectua citiri secundare ale luminii. Dacă citirea luminii secundare este mai ușoară decât cea inițială, un servomotor va bloca ușa. Dacă utilizatorul dorește ușa deblocată, poate apăsa un buton din aplicație care va debloca ușa.

Pentru a configura servomotorul și fotorezistorul:

Pentru a codifica sistemul ușii:

Vom începe în cadrul funcției de pornire pentru a face citirile inițiale ale luminii.

s = servo (a, 'D9')% Pin se poate schimba pe baza cablării

app. Label_4. Text = 'Vă rugăm să deschideți ușa pentru a calibra sistemul'; pauză (15); % Aceasta oferă timp utilizatorului să deschidă ușa int_light = readVoltage (a, p); app. Label_4. Text = 'Puteți scoate degetul';

Apoi, vom completa codul în cadrul proprietății Timer

deblocare globală

global int_light global s global a% Obțineți o citire curentă a luminii pentru a compara curr_light = readVoltage (a, p); % - Blocați ușa - dacă int_light <curr_light writePosition (s, 1)% Pozițiile servo pot diferi în funcție de pauza motorului (0,5); app. DoorStateLamp. Color = [0,47 0,67 0,19]; end% - Deblocare ușă - dacă deblocare == 1234 pauză (0,5); writePosition (s,.52) app. DoorStateLamp. Color = [0,85 0,33 0,10]; Sfârșit

În cele din urmă vom crea butonul de deblocare callback. Odată ce utilizatorul apasă butonul de deblocare, deblocării variabilei globale i se va atribui un număr care poate completa instrucțiunea finală if din proprietatea Timer.

deblocare globală

deblocare = 1234;

Pasul 6: Pasul 6: Configurarea sistemului de lumină de inundații

Pasul 6: Configurarea sistemului de lumină de inundații
Pasul 6: Configurarea sistemului de lumină de inundații

Funcția pentru lumina de inundație funcționează după cum urmează:

Când porniți codul MATLAB, senzorul de mișcare PIR va începe să detecteze mișcarea. Odată ce detectează un anumit tip de mișcare, va întrerupe semnalul de alimentare. Odată ce semnalul este tăiat, o lumină de inundație se va aprinde în afara casei.

Pentru a configura sistemul de lumină de inundație:

Pentru a codifica sistemul de lumină de inundații:

De această dată putem trece la proprietatea Timer, deoarece nu este nevoie să scriem nicio variabilă suplimentară.

uman_detectat = readDigitalPin (a, 'D2'); % Pin se poate modifica în funcție de configurație dacă human_detected == 0 writeDigitalPin (a, 'D7', 1)% Pin poate modifica 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

Pasul 7: Concluzie

Acum, că aveți o schiță a GUI-ului dvs. cu aplicația Designer și codul dvs. pentru Arduino, sunteți gata să faceți propriile editări sau să conectați Arduino și să plecați!

Recomandat: