Arduino intelligens otthoni rendszer: 7 lépés
Arduino intelligens otthoni rendszer: 7 lépés
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: