Projekt 6: ESP8266 szenzor jelenlétérzékeléssel (Disturbia)
2018. február 28. írta: eNeS

Projekt 6: ESP8266 szenzor jelenlétérzékeléssel (Disturbia)

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:

p6_bekotesi.jpg

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.

p6_0_doboz.jpg

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.

p6_1_doboz.jpg

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é,

pir2_0.jpg

a másik az ajtóra szerelt nyitásérzékelő felé megy.

mc38.jpg

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.

p6_2_inplace.jpg

 

A fal másik oldalán látható a kizárólag SR501-et tartalmazó CQR kötésdoboz:

pir2_1.jpg

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.

p6_espe.jpg

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:

https://bitekmindenhol.blog.hu/api/trackback/id/tr10013693898

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.

Nincsenek hozzászólások.