Az ESP8266 vonalat erősíti újabb projektem, melyben 230V-os vezérlés (ventilátor) is szerepet játszik, így praktikusnak tűnt saját tápegység bevonásával erősáramú betáplálású eszközt készíteni.
A következő "okosítandó" helyiség a mellékhelyiség lett, ahová a király is gyalog jár. A szükséges szenzorok megállapításakor eléggé lecsökkentette az eszközök körét, hogy ablak nincs rajta, így a fénymérőnek nincs sok értelme, a hőmérő sem tűnt annyira hasznosnak, viszont a mozgásra ki-bekapcsoló világítás, és az elszívó ventilátor annál inkább.
A jelenlétérzékelést azért nem bíztam kizárólag a mozgásérzékelőre. Valószínűleg nem én vagyok az egyetlen, aki járt már olyan látógatóközpont mosdóban, ahol mozgásra kapcsolt be a világítás, viszont, ha az ember kényelmesen elhelyezkedett, és felhagyott a mozgással, akkor simán kikapcsolta a rendszer a világítást... ezt elkerülendő terveztem be egy ultraszónikus távolságmérőt, mert láttam egy zseniális projektet, ahol az illető távolságmérővel állapította meg, hogy áll-e kocsi a garázsban vagy sem. Ám tisztában vagyok vele, hogy az ultraszónikus érzékelőt nagyban befolyásolhatják a tereptárgyak, ezért egy ajtónyitás érzékelőt is tettem a rendszerbe, ebből a három érzékelőből már nagy biztonsággal ki lehet következtetni, hogy van-e igény a világításra.
Íme a szükséges alkatrészek listája és jelen áruk a nagy e-piacon:
Eszköz | Bruttó ár |
Nodemcu V3 ESP-12E fejlesztői lap (*) | 850 Ft |
10cm USB-microUSB kábel (*) | 199 Ft |
HLK-PM01 5VDC 3W tápegység (*) | 629 Ft |
Biztosíték foglalat, NYÁK-ba forrasztható 5x20mm | 65 Ft |
Üvegcsöves biztosíték, N400mA, 250V AC, normál sebességű kioldás, 5x20mm | 20 Ft |
275V varisztor | 95 Ft |
Protolap 5x7 cm (*) | 199 Ft |
HC-SR501 mozgásérzékelő x2 (*) | 2x 243 Ft |
HC-SR04 ultraszónikus távolságmérő (*) | 243 Ft |
2.7K ellenállás | 10 Ft |
4.7K ellenállás | 10 Ft |
Szilárdtest relé modul 5V (*) | 346 Ft |
Piezo buzzer (*) | 200 Ft |
MC-38 nyitásérzékelő (ajtó/ablak) (*) | 221 Ft |
410C4 Kötődoboz IP56 100x100x50mm | 462 Ft |
CQR JB 720 műanyag kötődoboz | 541 Ft |
Snody univerzális infratartó konzol x 2 | 2x 323 Ft |
Összesen: | 5222 Ft |
További járulékos költség:
Eszköz | Bruttó ár |
Kanlux EOL100 ventilátor (*) | 2946 Ft |
Egyéb szükséges tételek: kábelek, ragasztópisztoly, forrasztópáka, fúró, sorkapocs, érvéghüvely.
Elvi bekötési rajz:
ESP lábkiosztás:
Láb cimke | Alternatív megnevezés | Rákötött eszköz |
TX | GPIO1/D10 | - |
RX | GPIO3/D9 | Buzzer + (kimenet) |
D1 | GPIO5/SCL | külső SR501 OUT |
D2 | GPIO4/SDA | Nyitásérzékelő |
D3 | GPIO0 | - |
D4 | GPIO2 | - |
A0 | TOUT | - |
D0 | GPIO16/WAKE | - |
D5 | GPIO14 | SR04 Trigger lába |
D6 | GPIO12 | SR04 Echo lába (feszültségosztón keresztül!! 5V-os egyébként!) |
D7 | GPIO13 | beépített SR501 OUT |
D8 | GPIO15 | Relé CH1 vezérlés (kimenet) |
Az előző projektben a GPIO16-on volt a csipogó, viszont úgy minden bekapcsolásnál csippan egyet, amitől ezúttal eltekintenék, így a nem kifejezetten általános célú RX lábat definiáltam át kimenetté. Sajnos ez sem tökéletes, pl USB-n keresztüli firmware feltöltésnél minden kapott csomagnál a csipogó is zörög. De normál működés közben nincs probléma vele.
És akkor a gyakorlat:
Első lépésben jöhet a fúrás, hátul a kábeleknek kell beérkezniük, elöl kandikál majd ki az ultrahangos távolságmérő és a mozgásérzékelő, halványan arcot imitálva.
Ezután a bekötési rajznak megfelelően elhelyezzük az egyes alkatrészeket, lehetőleg úgy, hogy minél távolabb legyenek az erős és gyengeáramú kábelek végei.
Mivel az 5V eszközök működtetésében a D1 Mini nem jeleskedik, egy NodeMCU lapot tettem a dobozba, abból is egy V3 került a kezem ügyébe.
Pár szó a tápegységről: a HLK-PM01-ről egészen jó véleményeket találtam szerte a neten, viszont kiegészítésképpen javasolt egy biztosíték. Biztosítékból 200mA körüli kellhet, és normál sebességű - nekem csak 400as volt hirtelen normálból, de mivel 10A-t is bír rövid ideig az adatlapja szerint, ez nem tűnik nagy problémának. A gyors kioldású F200mA-es nem húzta sokáig, lehet az elé kötött ventillátor (19W) okozta, de a "lassú" 400-assal eddig nincs gond. A varisztor pedig a túlfeszültség ellen véd. Valamilyen érthetetlen oknál fogva az erősáramú AC lábai vannak közel egymáshoz (kb 5mm) a gyengeáramú lábai pedig távol, de azért a fenti elemek megléte nagyban megnyugtat. A PM01 gyengeáramú kimenetéről (5,08V-nak mértem egyébként) egy kettévágott mikroUSB tápkábel segítségével kapja a tápot a NodeMCU lapka.
A fedőre ragasztott HC-SR04 távolságmérő két GPIO-t igényel, igazából teljesen 5V-os, de teljesen jól működik úgy, ha 3.3V-os jelszintet ad neki az ESP modul a Trigger lábon, viszont az ECHO lábán 5V-ot küld vissza az ESP felé, így ezen javaslom a fenti bekötési rajz szerinti 2.7K/4.7K feszültségosztó alkalmazását, ha nem akarjuk kinyírni az ESP modulunkat. Alatta a szokásos SR501 kapott helyet, ez adja majd a kezdőjelet a távolságmérés megkezdésére. Csak azért került a két szemet formáló SR04 alá, hogy meglegyen az orr is az archoz. :)
A jobbra látható sorkapcsokba az erősáramú betáp érkezik, illetve megy tovább a ventilátor felé (az SSR modul közreműködésével), a balra látható sorkapocs a gyengeáramú részé, 5V táp + GND és 2 db GPIO, az egyik a fal másik oldalára helyezett külső (kiherélt CQR kötésdobozba szerelt) mozgásérzékelő felé,
a másik az ajtóra szerelt nyitásérzékelő felé megy.
A konkrét telepítés helyén ez ilyesformán néz ki felszerelve, no azért némi kötegelő még kell a bejövő kábelek rendezéséhez.
A fal másik oldalán látható a kizárólag SR501-et tartalmazó CQR kötésdoboz:
Szoftver
Természetesen a mindenre is jó ESPEasy került fel a D1 Mini-re. Az elérhető 12 darab eszközhelyből 8-at felhasználtam (kettő nem szükséges, lekapcsolt a tízből), ebből egy Dummy változó, globális változónak a szabályok számára.
A fenti elnevezéseket használó működtető kód a Rules-ba az alábbi:
On System#Boot do
TaskValueSet,8,1,0
Publish domoticz/in,{"idx":74,"nvalue":0.00,"svalue":"Off"}
gpio,15,0
gpio,3,0
endon
on pir1#Switch>0 do
if [GLOBVAR#presence]<1
Publish domoticz/in,{"idx":74,"nvalue":1.00,"svalue":"On"}
TaskValueSet,8,1,1
TaskValueSet,8,2,0
timerset 1,10
endif
endon
on rules#timer=1 do
if [GLOBVAR#presence]>0
taskrun,2
timerset 1,10
endif
endon
on dist#Distance>121 do
if [GLOBVAR#presence]>0
event,checkpres
endif
endon
on checkpres do
if [GLOBVAR#warncounter]>1
Publish domoticz/in,{"idx":74,"nvalue":0.00,"svalue":"Off"}
TaskValueSet,8,1,0
TaskValueSet,8,2,0
timerset 1,0
else
TaskValueSet,8,2,([GLOBVAR#warncounter]+1)
tone,3,1000,100
endif
endon
on System#WifiState=0 do
timerSet,2,10
endon
On Rules#Timer=2 do
If [wifiman#Connected] = 0
gpio,15,0
gpio,3,0
reboot
endif
endon
A "Publish" parancsok a 74-es Domoticz IDX-re jelzik a foglaltsági állapotot a mért távolság függvényében, ez nálam 121 cm-ben normalizálódott, de a felszerelés helyétől függ. (érdemes szerintem mennyezetre telepíteni és közvetlenül lefelé fordítani, de a lámpa miatt nekem nem igazán fért oda, így oldalfalra, rézsút fordítva próbáltam optimális szögbe fordítani, hogy a lehető legkevesebb dolog zavarja a mérést. (nem egyszerű)
Amikor mozgás van, engedélyezi a jelenlét ellenőrzést 10 másodpercenként, ilyen időközönként végeztet az 1-es timer segítségével távolságméréseket. Ha a távolság nagyobb lesz, mint 121 cm, akkor kiküldi, hogy nincs jelen senki, és átbillenti a presence állapotát, ezzel jelezve, hogy nincs szükség további mérésekre. Extraként két hibát enged, ilyenkor csippan egy rövidet, ha nem érzékel jelenlévőt. Ha változatlanul nem érzékel senkit, akkor továbbítja a vége jelet.
A végén a System#WifiState és a Rules#Timer=2 csak arra szolgál, hogyha 10 másodpercig nincs wifi kapcsolat, akkor újraindítja magát, mert ha elfogy a memória - és a newping könyvtárat használva fordításra, ami az SR04 mérési eredményeit pontosítja biztosan előfordul - akkor nem lehet elérni a webes felületet. Alapesetben az a kódrész nem csinál semmit. De a WiFiMan plugin nincs is benne az alap ESPEasy binárisban, saját fejlesztés. :)
Az ESPEasy bináris (4M flash-hez, newPing könyvtárral) igény esetén letölhető innen.
A bejegyzés trackback címe:
Kommentek:
A hozzászólások a vonatkozó jogszabályok értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a Felhasználási feltételekben és az adatvédelmi tájékoztatóban.