Már régóta érdekel az okosház témakör, de a végső lökést az adta meg, amikor találkoztam a Fibaro Motion Sensor 3 funkciós szenzorral (44mm átmérőjű gömb az egész)... rögtön tudtam, hogy nekem valami ilyesmi kell. A 20 ezer forintos árcédulája már annyira nem tetszett. Aztán amikor megláttam, hogy saját Z-Wave protokollal kommunikál, kizárólag a saját szerverével, ami nagyjából ötször ennyibe kerül, már inkább azon gondolkoztam, hogy tudnám saját magam reprodukálni ezt, lehetőleg szabványos (WiFi, MQTT), és nyílt forrású (ESPEasy, Domoticz) eszközökkel. Szegény ember vízzel főz...
Természetesen a saját megoldásom 3D nyomtató híján nem lehet ilyen dizájnos, és nem minden funkciójára van szükségem, például nem vágyom rá, hogy különböző színekben világítson vagy rezgéseket érzékeljen. Maradt a mozgás-, hő- és fényérzékelő funkció, amit az alábbiakban bemutatott eszközbe építettem. Mivel már van egy Góliátom, és ezt annál lényegesen kisebbnek terveztem, adta magát a Dávid kódnév a projektnek. :)
UPDATE: időközben a javított változatát is elkészítettem, Phoenix néven.
Íme a szükséges eszközök listája és jelen áruk a nagy e-piacon:
Eszköz | Bruttó ár |
NodeMCU ESP8266 fejlesztői lap (*) | 850 Ft |
5V1A hálózati töltő, USB (*) | 360 Ft |
2m MicroUSB töltőkábel (*) | 380 Ft |
SN74LVC1G08DBVRG4 két bemenetű logikai ÉS kapu 1.65-5.5V (*) | 50 Ft |
SOT23 -> DIP10 átalakító (*) | 26 Ft |
MiniPIR (*) | 519 Ft |
RCWL-0516 (*) | 201 Ft |
DHT22 (*) | 649 Ft |
BH1750 (*) | 274 Ft |
Snody univerzális infratartó konzol | 323 Ft |
46x50mm műanyag lap, 2mm vastag | 10 Ft |
82x52x35mm műanyag műszerdoboz (*) | 263 Ft |
1db 20mm átmérőjű kerek üvegbúra (*) | 23 Ft |
Összesen: | 3928 Ft |
Hogy ne áruljak zsákbamacskát, az eredmény így néz ki:
*: a megjelölt tételek ebay-ről származnak, liciten, nagyobb mennyiség vásárlásakor akár jóval olcsóbban, Magyarországon pedig ennél jóval drágábban beszerezhetőek
Egyéb szükséges tételek: csavarok, anya, tipli, kábelek, ragasztópisztoly, forrasztópáka, fúró.
Miért éppen a NodeMCU fejlesztői lapot választottam, holott a D1 mini hossza ennek kétharmada?
- Kényelmes microUSB csatlakozás, programozáshoz és a modul táplálásához egyaránt
- A tüskéket eleve beforrasztják, nem kell sokat játszani a beüzemeléséhez
- Aránylag olcsó
- Van elég GPIO rajta a feladat ellátásához
Az SN74LVC1G08DBVRG4 nagyon jól csengő név.. mi ez?
A korábbi Raspberry projektekkel is kombináltan használtam a mozgásérzékelőket, vagyis az infra és a radar egyidejű jelzését vettem mozgásnak, viszont ott szoftveresen kombináltam ezeket, az ESP viszont relatív lassú eszköz, és az egyébként fenomenális ESPEasy-ben csak szűkre szabott szabálykészletből kell gazdálkodni, ezért inkább úgy döntöttem, hardveresen fogom közösíteni a mozgásérzékelők kimeneteit, erre kellett a hosszú nevű ÉS kapu, amivel mellesleg 1 GPIO-t megspóroltam az ESP-n.. igaz ennél a projektnél ez nem szignifikáns. Viszont amit elsőre nem sejtettem az a mérete: extrém kicsi, így szükség van egy SOT23-ról átalakító panelre, illetve biztos kézre a forrasztópákához.. vagy egy hozzáértő kollégára, akit meg lehet kérni, hogy ugyan csípje már oda az egymástól 0.95mm-re levő lábakat a kezelhetőbb 2.54mm-es kiosztásra, ahogy én tettem. :)
Bekötése és használata innentől már egyszerű:
Az A és B lábára kell kötni a két bemenetet, GND kell neki és a Vcc, ez utóbbit 3.3V-ról célszerű táplálni, mert az Y kimenet ennek értéket fogja felvenni, ha az A és B láb is logikai igaz, vagyis 1 (Vcc * 0,7V) értéket vesz fel. (megj: a Vcc 1,65-5.5V közti értékek közt mozoghat)
Mi az a MiniPIR?
Igazából típusjelet nem találtam rajta, a HC-SR505-höz hasonló átmérőjű lencsével szerelt, de annál rövidebb panelű infra érzékelő. A kis műanyag doboz miatt esett rá a választásom, csak ezzel volt esélyem mindent bezsúfolni ekkora térfogatba. 5V-ról működik, a középső lábán ad jelet, ha mozgást észlel - ami 3V3 kompatibilis jelszint, tehát közvetlenül GPIO-ra köthető. (multiméterrel teszteltem azért előbb)
UPDATE: Az érzékelési távolsága tesztjeim szerint nem több 2m-nél (sőt inkább kevesebb) így csak mérsékelten hasznos nagyobb helyiségekben!
Minek a műanyaglap?
Ennek a két oldalára rögzítettem, amit lehetett, megfelelően átfúrva a kábelek átvezetéséhez valamint a négy rögzítőcsavarnak. A korábban használt műanyag csavarok és anyák helyett mindenhol melegragasztópisztolyt alkalmaztam.
Miért nem fekete színű AM2320-at használtam a fehér DHT22 helyett?
Sajnos nem érkezett még meg. :)
Elég is a bevezetésből, lássuk az elvi bekötési rajzot:
Elölnézet:
Balra fent látszik az ÉS kapu, mellette a PIR helye kihagyva, mert az magára a fekete burkolatra lett ragasztva, középen a fényérzékelő, alul pedig a radar kapott helyet.
Hátulnézet:
Erre az oldalra rögzítettem egyszerű módon a jumper kábelek műanyag lapra ragasztásával (már-már Shield hatást keltve) az ESP lapot, gondosan ügyelve, hogy felette elférjen a PIR kábele.
Sajnos ennek hatására a mikroUSB csatlakozó annyira lentre került, hogy a doboz alját kellett átfúrnom a tápkábel bevezetéséhez, a helyett, hogy hátrafelé a Snody erre a célra szolgáló tartóján keresztül tudtam volna vezetni, vagy a doboz egyik sarkában levő gyárilag meglévő furatot használhattam volna. Így a DHT hőmérséklet szenzort is pár milliméterrel arrébb kellett költöztetnem az alján.
Némi óvatos győzködés után sikerült becsavarozni a panelt.
Szoftver
Az USB kábellel gépre kötve máris mehet a firmware feltöltése, méghozzá az ESPEasy. (A fejlesztői panelek, ha érzékelik, hogy adatkábellel lettek számítógépre kötve, azonnal belépnek flash módba, ilyenkor nem üzemel a rajta levő firmware! Normál működéshez két eres USB tápkábel kell, vagy 5V tápegységre kell kötni direktben)
https://github.com/letscontrolit/ESPEasy/releases
A Windowson és Linuxon is működőképes PyFlasher segítségével felmásoljuk a megfelelő 4MB binárist.
Sikeres felmásolás és újraindítás után (adatkábel cseréje tápkábelre) megjelenik egy ESP_xxx nevű WiFi AP, (alapjelszó configesp) amire felcsatlakozhatunk és megadhatjuk saját WiFi hálózatunk nevét és jelszavát, következő újraindítás után erre fog rácsatlakozni a kütyü, a router által kiadott DHCP listán megtalálható IP címen. Ezt az IP címet beütve a böngészőnkbe máris elérhető a menü és a további beállítások.
A Hardware menüben látható, hogy az I2C melyik lábakra van állítva (GPIO-4 és GPIO-5), ezúttal megfelelt számomra az alapértelmezés:
A Devices menüben kell beállítani az eszközöket az "Edit" gombra kattintva.. maximum 12 db-ot lehet felvenni (fenti balra-jobbra nyilakkal lehet váltani négyesével), az ESP chip szűkös memóriája miatt.
Mint látható a DHT22 a GPIO-14-re van kötve és közli is a hőmérsékletet valamint a páratartalmat, az ÉS kapu kimenete a GPIO-13-ra van kötve, ami mozgáskor "1" értéket vesz fel, normál "Switch input" eszköz. A BH1750 eszköz I2C buszra van kötve, amennyiben nem történt elkötés, ki tudjuk választani a listából és kis várakozás után már értéket is láthatunk mellette.
Amennyiben a Domoticz IDX-eket beállítottuk és a "Controllers" menüben is engedélyezve van a Domoticz MQTT, a megfelelő IP címre, akkor a beállított gyakorisággal ezek az adatok már meg is jelennek szerverünkön.
Összehasonlításképpen itt látható Dávid és Góliát:
Mehet a forgatható Snody infratartó konzol a hátuljára, aztán irány végső helye, a fal.
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.