INHOUDSOPGAWE:

Arduino Smart Home System: 7 stappe
Arduino Smart Home System: 7 stappe

Video: Arduino Smart Home System: 7 stappe

Video: Arduino Smart Home System: 7 stappe
Video: Быстрая укладка плитки на стены в санузле. ПЕРЕДЕЛКА ХРУЩЕВКИ от А до Я #27 2024, November
Anonim
Arduino Smart Home System
Arduino Smart Home System
Arduino Smart Home System
Arduino Smart Home System

In hierdie instruksies sal ons u wys hoe u u eie slimhuisstelsel kan skep met die MATLAB se App Designer met 'n Sparkfun Red -bord. Hierdie instruksies kan gebruik word om 'n basiese begrip van die MATLAB se App Designer te verkry, sowel as die gebruik van 'n fotoresistor, servomotor en 'n PIR -bewegingsensor.

Stap 1: Om te begin: materiaal

Hierdie projek benodig die volgende materiaal:

- Arduino Uno (Vir hierdie projek het ons 'n Sparkfun Red -bord gebruik)

- Een fotoresistor

- Een mini-servomotor

- Een deurlopende servomotor

- Een PIR -bewegingsensor

- Een temperatuur sensor

- 2 LED's

- Drade en weerstande soos benodig

Stap 2: Stap 2: Benader die probleem om op te los

Die hoofdoel van hierdie projek was om 'n maklik gebruikbare slimhuisstelsel te skep deur 'n Arduino Uno -bord met MATLAB te kodeer. Ons het eers daaraan gedink om net met 'n temperatuur- en humiditeitsensor te werk, maar as ons by die twee sensors bly, sou ons slimhuisstelsel nie maklik aan 'n algemene gehoor bemark kan word nie. Ons het besluit dat ons 'n algehele stelsel vir slim huishoudelike energie wil skep wat as 'n slim termostaat en sekuriteitstelsel werk. Uiteindelik wou ons saam met MATLAB se AppDesigner werk sodat die gebruiker die slimhuis maklik kan verander soos hy wil.

Stap 3: Stap 3: Konfigureer die GUI en basiese kodevloei

Stap 3: Konfigureer die GUI en basiese kodevloei
Stap 3: Konfigureer die GUI en basiese kodevloei

Om te begin, moet u die MATLABs AppDesigner oopmaak en die volgende plaas:

Twee numeriese wysigingsvelde vir 'n warm en koue drempelinvoer

'N Knoppie om die deur oop te sluit

En vier aanwyserlampe vir die kaggel, deur, waaier en vloedlig.

Twee etikette om met die gebruiker te kommunikeer.

Vir hierdie projek het ons dit makliker gevind om met globale veranderlikes en die opstartfunksie binne die ontwerper te werk. U benodig hierdie veranderlikes binne die opstartfunksie:

globale a

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

Op die oomblik het ons slegs 'n opdrag vir die a -veranderlike, sodat u rekenaar die arduino kan lees. COM3 kan verskil, afhangende van watter poort u rekenaar moontlik gebruik.

As u die kode gebruik, begin dit binne die opstartfunksie, wat die globale veranderlikes skep en die stelsel kalibreer. Aan die einde van hierdie funksie sal daar 'n timerfunksie wees wat 'n eiendom wat ons Timer genoem het, noem. Binne hierdie Timer-eiendom plaas ons die kode wat die tuisstelsel bestuur, sodat die timer nie die kalibreringskode herlaai nie.

Opmerking: ons het geen bedradinginstruksies vir die stelsel gegee nie. Ons het verwys na die handleiding wat by die SparkFun Red -bord verskyn.

Stap 4: Stap 3: Die opstel van die termostaatstelsel

Stap 3: Die opstel van die termostaatstelsel
Stap 3: Die opstel van die termostaatstelsel
Stap 3: Die opstel van die termostaatstelsel
Stap 3: Die opstel van die termostaatstelsel

Die funksie vir die termostaat werk soos volg:

Die gebruiker sal invoer watter temperatuur hulle as te warm of te koud beskou. As die termometer eers lees, as die huis te koud is, sal die "kaggel" ('n rooi LED) aanskakel en die huis verhit. As die huis te warm is, sal 'n "waaier" (deurlopende servomotor) die huis laat afkoel.

Om die termostaatstelsel te kodeer:

Ons begin binne die opstartfunksie om die huidige temperatuur te wys en laat die gebruiker hul koue en warm drempels invoer.

p = 'A0' %Fotoresistorpen

volt = lees Spanning (a, temp); celc = (volt-0,5).*100; curr_temp = celc*9/5+32; app. Label_4. Text = num2str (curr_temp); %Etiketnommer kan pouse verander (10); %Kan wil verander !!!!!

Dan sal ons die termostaatstelsel binne die Timer -eiendom voltooi.

globale curr_temp

global coldUI global a global hotUI if curr_temp hotUI app. FanStateLamp. Color = [0.47 0.67 0.19]; %Skakel GUI lamp groen writePWMDutyCycle (a, 'D11',.9) %Die volgende drie reëls kode voer die servo fan pouse (10) writePWMDutyCycle (a, 'D11',.0) anders app. FireplaceStateLamp. Color = [0,90 0,90 0,90]; %Dit skakel alle GUI -lampe en kaggel -app uit. FanStateLamp. Color = [0.9 0.9 0.9]; writeDigitalPin (a, 'D13', 0); einde

Stap 5: Stap 4: Die opstel van die deurstelsel

Stap 4: Die opstel van die deurstelsel
Stap 4: Die opstel van die deurstelsel

Die funksie vir die deur werk soos volg:

As u u MATLAB -kode die eerste keer gebruik, sal die app u vra om die deur oop te maak sodat die fotoresistor 'n aanvanklike liglesing kan doen. Sodra dit voltooi is, sal die timer geaktiveer word en die fotoresistor sal sekondêre ligmetings neem. As die sekondêre liglesing ligter is as die aanvanklike, sal 'n servomotor die deur sluit. As die gebruiker die deur wil ontsluit, kan hy op die knoppie in die app druk wat die deur sal ontsluit.

Om die servomotor en fotoresistor op te stel:

Om die deurstelsel te kodeer:

Ons begin binne die opstartfunksie om die aanvanklike ligmetings te doen.

s = servo (a, 'D9') %Speld kan verander op grond van bedrading

app. Label_4. Text = 'Maak asseblief die deur oop om die stelsel te kalibreer'; pouse (15); %Dit gee die gebruiker tyd om die deur oop te maak int_light = readVoltage (a, p); app. Label_4. Text = 'U mag u vinger verwyder';

Vervolgens voltooi ons die kode binne die Timer -eiendom

globale ontsluiting

global int_light global s global a %Kry 'n huidige ligmeting om curr_light = readVoltage (a, p) te vergelyk; % - Slotdeur - as int_light <curr_light writePosisie (s, 1) % Servoposisies kan verskil per motorpouse (0.5); app. DoorStateLamp. Color = [0.47 0.67 0.19]; eind % - Ontgrendel deur - as ontsluit == 1234 pouse (0,5); writePosition (s,.52) app. DoorStateLamp. Color = [0.85 0.33 0.10]; einde

Uiteindelik skep ons die terugbelknoppie. Sodra die gebruiker op die ontsluitknoppie druk, kry die globale veranderlike ontsluit 'n nommer wat die finale if -verklaring in die Timer -eiendom kan voltooi.

globale ontsluiting

ontsluit = 1234;

Stap 6: Stap 6: Die opstel van die Flood Light System

Stap 6: Die opstel van die Flood Light System
Stap 6: Die opstel van die Flood Light System

Die funksie vir die vloedlig werk soos volg:

As u die MATLAB -kode begin, sal die PIR -bewegingsensor beweging begin opspoor. Sodra dit 'n soort beweging opspoor, sny dit 'n kragsein. Sodra die sein afgesny is, sal 'n vloedlig buite die huis brand.

Om die vloedligstelsel op te stel:

Om die vloedligstelsel te kodeer:

Hierdie keer kan ons oorgaan na die Timer -eiendom omdat ons geen ekstra veranderlikes hoef te skryf nie.

human_detected = readDigitalPin (a, 'D2'); %Pin kan verander op grond van konfigurasie as human_detected == 0 writeDigitalPin (a, 'D7', 1) %Pin kan app. FloodLightStateLamp. Color = [0.47 0.67 0.19] verander; elseif human_detected == 1 app. FloodLightStateLamp. Color = [0,9 0,9 0,9]; writeDigitalPin (a, 'D7', 0) einde

Stap 7: Gevolgtrekking

Noudat u 'n konsep van u GUI met die App Designer en u kode vir die Arduino het, is u gereed om u eie bewerkings uit te voeren of uw Arduino aan te sluiten!

Aanbeveel: