Tartalomjegyzék:

Arduino intelligens otthoni rendszer: 7 lépés
Arduino intelligens otthoni rendszer: 7 lépés

Videó: Arduino intelligens otthoni rendszer: 7 lépés

Videó: Arduino intelligens otthoni rendszer: 7 lépés
Videó: Zigbee LED контроллер C01Z - для диммируемых светильников, обзор и тестирование 2024, November
Anonim
Arduino intelligens otthoni rendszer
Arduino intelligens otthoni rendszer
Arduino intelligens otthoni rendszer
Arduino intelligens otthoni rendszer

Ebben az utasításban megmutatjuk, hogyan hozhat létre saját intelligens otthoni rendszert a MATLAB App Designer alkalmazásával, Sparkfun Red táblával. Ez az útmutató segíthet a MATLAB alkalmazás -tervezőjének alaposabb megértésében, valamint fotorezisztor, szervomotor és PIR mozgásérzékelő használatával.

1. lépés: Kezdés: Anyagok

Ez a projekt a következő anyagokat igényli:

- Arduino Uno (ehhez a projekthez egy Sparkfun Red táblát használtunk)

- Egy fotorezisztor

- Egy mini szervomotor

- Egy folyamatos szervomotor

- Egy PIR mozgásérzékelő

- Egy hőmérséklet -érzékelő

- 2 LED

- Vezetékek és ellenállások szükség szerint

2. lépés: 2. lépés: A megoldandó probléma megközelítése

A projekt fő célja egy könnyen használható intelligens otthoni rendszer létrehozása volt az Arduino Uno kártya MATLAB kódolásával. Először arra gondoltunk, hogy csak hőmérséklet- és páratartalom -érzékelővel dolgozunk, de ha maradunk ennél a két érzékelőnél, az intelligens otthoni rendszerünk nem lenne könnyen értékesíthető a nagyközönség számára. Úgy döntöttünk, hogy egy átfogó intelligens otthoni energiarendszert szeretnénk létrehozni, amely intelligens termosztátként és biztonsági rendszerként működik. Végül a MATLAB AppDesigner programjával akartunk dolgozni, hogy a felhasználó könnyedén megváltoztathassa az okosotthont, ahogy akarja.

3. lépés: 3. lépés: A GUI és az alapvető kódfolyamat beállítása

3. lépés: A GUI és az alapvető kódfolyamat beállítása
3. lépés: A GUI és az alapvető kódfolyamat beállítása

Az induláshoz nyissa meg a MATLABs AppDesigner alkalmazást, és helyezze el a következőket:

Két numerikus szerkesztőmező hideg és meleg küszöbértékekhez

Egy gomb az ajtó kinyitásához

És négy jelzőlámpa a kandallóhoz, az ajtóhoz, a ventilátorhoz és az árvízfényhez.

Két címke kommunikál a felhasználóval.

Ennél a projektnél könnyebbnek találtuk a globális változókkal és a tervezőn belüli indítási funkcióval való munkát. Ezekre a változókra lesz szüksége az indítási funkcióban:

globális a

a = arduino ('COM3', 'uno', 'Libraries', 'Servo'); global s global p globális hotUI globális coldUI globális feloldás globális hőmérséklet globális curr_temp globális int_light

Jelenleg csak a változóhoz van hozzárendelésünk, hogy számítógépe olvashassa az arduino -t. A COM3 a számítógép által használt porttól függően eltérő lehet.

Amikor futtatja a kódot, az az indítási funkción belül kezdődik, létrehozva a globális változókat és kalibrálva a rendszert. Ennek a funkciónak a végén lesz egy időzítő funkció, amely meghívja az időzítő nevű tulajdonságot. Ezen a Timer tulajdonságon belül beírjuk az otthoni rendszert futtató kódot, hogy az időzítő ne futtassa újra a kalibrációs kódot.

Megjegyzés: Nem adtunk semmilyen kábelezési utasítást a rendszerhez. Utaltunk a SparkFun Red táblához mellékelt kézikönyvre.

4. lépés: 3. lépés: A termosztátrendszer beállítása

3. lépés: A termosztátrendszer beállítása
3. lépés: A termosztátrendszer beállítása
3. lépés: A termosztátrendszer beállítása
3. lépés: A termosztátrendszer beállítása

A termosztát funkciója a következőképpen működik:

A felhasználó megadja, hogy milyen hőmérsékletet tart túl forrónak vagy túl hidegnek. Ha a hőmérő leolvas, és ha az otthon túl hideg, akkor a "kandalló" (piros LED) bekapcsol és felmelegíti az otthont. Ha a ház túl meleg, akkor egy "ventilátor" (folyamatos szervomotor) bekapcsolja a ház hűtését.

A termosztát rendszer kódolása:

Kezdjük az indítási funkción belül, hogy megjelenítse az aktuális hőmérsékletet, és hagyja, hogy a felhasználó beírja a hideg és meleg küszöbértékeket.

p = 'A0' %Fotorezisztor csap

volt = olvasott feszültség (a, temp); celc = (volt-0,5).*100; curr_temp = celc*9/5+32; app. Label_4. Text = szám2str (curr_temp); %Címke száma megváltoztathatja a szünetet (10); %Lehet változtatni akar !!!!!

Ezután befejezzük a termosztát rendszert az Időzítő tulajdonságon belül.

globális curr_temp

global coldUI global a global hotUI if curr_temp hotUI app. FanStateLamp. Color = [0,47 0,67 0,19]; %Zöldre váltja a GUI lámpát írásbanPWMDutyCycle (a, 'D11',.9) %A következő három kódsor futtatja a szervóventilátor szünetét (10) writePWMDutyCycle (a, 'D11',.0) else app. FireplaceStateLamp. Color = [0,90 0,90 0,90]; %Ez kikapcsolja a GUI lámpákat és a kandalló alkalmazást. FanStateLamp. Color = [0,9 0,9 0,9]; writeDigitalPin (a, 'D13', 0); vége

5. lépés: 4. lépés: Az ajtórendszer beállítása

4. lépés: Az ajtórendszer beállítása
4. lépés: Az ajtórendszer beállítása

Az ajtó funkciója a következőképpen működik:

Amikor először futtatja a MATLAB kódot, az alkalmazás felkéri Önt, hogy nyissa ki az ajtót, hogy a fotorezisztor kezdeti fénymérést végezzen. Amint ez befejeződött, az időzítő aktiválódik, és a fényellenállás másodlagos fénymérést végez. Ha a másodlagos fényjelzés könnyebb, mint a kezdeti, akkor egy szervomotor zárja be az ajtót. Ha a felhasználó szeretné kinyitni az ajtót, megnyomhat egy gombot az alkalmazásban, amely kinyitja az ajtót.

A szervomotor és a fényellenállás konfigurálása:

Az ajtórendszer kódolása:

Az indítási funkción belül kezdjük el a kezdeti fényjelzéseket.

s = szervo (a, 'D9') %A tű a vezetékektől függően változhat

app. Label_4. Text = 'Kérjük, nyissa ki az ajtót a rendszer kalibrálásához'; szünet (15); %Ez időt ad a felhasználónak, hogy kinyissa az ajtót int_light = readVoltage (a, p); app. Label_4. Text = 'Eltávolíthatja az ujját';

Ezután befejezzük a kódot az Időzítő tulajdonságon belül

globális feloldás

globális int_light globális s globális a %Szerezzen aktuális fényértéket a curr_light = readVoltage (a, p) összehasonlításához; % - Ajtó zárása - ha int_light <curr_light writePosition (s, 1) % A szervo pozíciók motor szünetenként eltérhetnek (0,5); app. DoorStateLamp. Color = [0,47 0,67 0,19]; end % - Ajtó kinyitása - ha kinyit == 1234 szünet (0,5); writePosition (s,.52) app. DoorStateLamp. Color = [0,85 0,33 0,10]; vége

Végül elkészítjük a feloldógomb visszahívását. Amint a felhasználó megnyomja a feloldó gombot, a globális változó feloldása egy számot kap, amely befejezi a végső if utasítást az Időzítő tulajdonságban.

globális feloldás

feloldás = 1234;

6. lépés: 6. lépés: Az árvízfény rendszer beállítása

6. lépés: Az árvízfény rendszer beállítása
6. lépés: Az árvízfény rendszer beállítása

A fényszóró funkciója a következőképpen működik:

Amikor elindítja a MATLAB kódot, a PIR mozgásérzékelő elkezdi érzékelni a mozgást. Miután észlelt bizonyos típusú mozgást, megszakítja a tápellátást. Miután ezt a jelet megszüntették, az árvízlámpa kigyullad a házon kívül.

A fényszóró rendszer konfigurálása:

A fényszóró rendszer kódolása:

Ezúttal átugorhatjuk az Időzítő tulajdonságot, mert nincs szükség további változók írására.

human_detected = readDigitalPin (a, 'D2'); %Pin változhat a konfigurációtól függően, ha human_detected == 0 writeDigitalPin (a, 'D7', 1) %Pin változhat 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) vége

7. lépés: Következtetés

Most, hogy megvan a GUI tervezete az App Designerrel és az Arduino kódja, készen áll a saját szerkesztések elvégzésére, vagy csatlakoztassa az Arduino -t, és menjen!

Ajánlott: