Az előző ESP8266 projektem sikerén felbuzdulva újabb szenzort készítettem, ezúttal kissé nagyobb dobozba és beáldoztam hozzá egy liciten, olcsón szerzett kétoldalú protolapot, amire merészen ráforrasztottam a D1 minit. (Amit kissé elhamarkodtam, mert előbb nem ártott volna összedugdosni mindent, és kipróbálni, de erre később visszatérek.)
A korábbi nagyobb NodeMCU 0.9 hardver után ezúttal a D1 Minire (klón, nem eredeti) esett a választásom, a kisebb méret és nem utolsó sorban a kedvező ár miatt, ám mint kiderült ennek feszültségszabályozója miatt nem ideális választás a radaros megoldáshoz.
A korábban használt MiniPIR-t száműztem az eszözkészletemből a rövid hatótáv miatt, és visszatértem a HC-SR501-re, ami a nagyobb dobozban kényelmesen el is fér. A SOT23->DIP10 átalakítót is mellőztem az ÉS kapuval együtt a forrasztás professzionális volta miatt, úgy döntöttem mégis inkább szoftveresen közösítem a két mozgásérzékelő jelzését.
Íme a szükséges eszközök listája és jelen áruk a nagy e-piacon:
Eszköz | Bruttó ár |
D1 Mini ESP8266 fejlesztői lap (*) | 800 Ft |
5x7cm kétoldalú protolap (*) | 200 Ft |
5V1A hálózati töltő, USB (*) | 360 Ft |
2m MicroUSB töltőkábel (*) | 380 Ft |
2x4 csatlakozós beforrasztható terminál (*) | 2 x 20Ft |
2 csatlakozós beforrasztható csavaros terminál (*) | 30 Ft |
3 csatlakozós beforrasztható csavaros terminál (*) | 49 Ft |
HC-SR501 (*) | 270 Ft |
RCWL-0516 (*) | 201 Ft |
10V 2000uF kondenzátor | 60 Ft |
10kohm ellenállás | 30 Ft |
10cm USB-microUSB kábel (*) | 200 Ft |
microUSB DIP panel (*) | 200 Ft |
DHT22 (*) | 649 Ft |
4.7K ellenállás | 10 Ft |
BH1750 (*) | 274 Ft |
Vízérzékelő 3 csatlakozós, analóg (*) | 200 Ft |
Műanyag doboz 80x50x21 (*) | 200 Ft |
Piezo buzzer (*) | 200 Ft |
300 ohm ellenállás | 10 Ft |
Egy hajlított fémlap talpnak, és nehezék az aljára ellensúlynak | ismeretlen |
135x75x50mm műanyag műszerdoboz | 813 Ft |
1db 20mm átmérőjű kerek üvegbúra (*) | 23 Ft |
Összesen: | 4999 Ft |
Az árakon látszik, hogy az ESP modul mellett a DHT22 a másik drága tétel, ám a +/- 0.5 fok mérési pontosságon alul nem akarom adni. A műanyag dobozt Magyarországon vettem. :)
Hogy ne áruljak zsákbamacskát, az eredmény így néz ki (standard műanyag doboz, egy kis festés biztos dobna rajta):
Ezúttal talpra szerelt megoldást készítettem, mivel szekrény tetejére kerül, és háttal lesz az ablaknak, így a fényérzékelő a hátuljára került. A hátul kikandikáló két kábel közül az egyik 5V táp, a másik egy 4 eres kábel (cirka 1.8m), ami a vízérzékelőhöz vezet a padlóra.
Első nekifutásra úgy tűnt még sok is a lapon található GPIO-k száma, de aztán végül csak lett mindennek célja.
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 | - |
D1 | GPIO5/SCL | BH1750-SCL |
D2 | GPIO4/SDA | BH1750-SDA |
D3 | GPIO0 | - |
D4 | GPIO2 | - |
A0 | TOUT | Vízérzékelő analóg |
D0 | GPIO16/WAKE | Buzzer + |
D5 | GPIO14 | SR501 OUT |
D6 | GPIO12 | RCWL OUT |
D7 | GPIO13 | DHT22 DATA |
D8 | GPIO15 | Vízérzékelő + |
Első lépés, némi furkálás után a HC-SR501 beillesztése, beragasztott műanyag anyákra csavarozása, DHT22 becsavarozás.
Ezek tűs csatlakozót kaptak, ami majd a panelra forrasztott csatlakozósorra illeszkedik. A panel alsó oldala, mely a szokásos rejtett radaros mozgásérzékelőt is tartalmazza így fest:
Látható, hogy sokat nem morfondíroztam a távtartók kérdésén, csavaranyák teljesen megfeleltek a célra.
A D1 Mini azért balra néz, hogy éppen a WiFi AP-ra tekintsen, egyébként fektetve is rá tudtam volna helyezni a protolapra. Bár az is igaz, hogy érdemes minél messzebb és eltérő irányban beépíteni az RCWL radarhoz képest. De még ez is kevés volt ez esetben. Használok Raspberryvel és NodeMCU-val is RCWL radart, és eddig nem volt problémám velük, a D1 mini feszültségszabályzója viszont olyannyira gyengének tűnik, hogy az RCWL-t rákötve az folyamatosan mozgást (OUT lábon 3,5V) jelzett! Megmértem, a D1 5V lábán 4,6V-ot adott le.. ezek szerint ez kevés, a NodeMCU-ra átkötöttem ugyanezt a radart és ott 5,02V-ot mértem, és rendben működött - csak mozgásra adott jelet! Némi morfondírozás után beáldoztam egy 10cm-es microUSB kábelt, félbevágtam, ráforrasztottam egy microUSB DIP adapterre, és erről vettem le egy huszáros Y elosztóval a szükséges 5V tápot (és GND-t) a radarnak. Amit először a képen látható módon megosztott az SR501-el, de ettől az lett instabil, így végül az SR501-et visszakötöttem a D1 Mini 5V és GND lábaira, így már nagyjából jónak tűnt. Annyi apró problémával, hogy a tápforrás feszültségingadozása miatt téves jelzések érkeztek a radaros érzékelőről néha, így némi utánaolvasás után az 5V és GND közé tettem egy 2000uF kondenzátort, az OUT és GND közé pedig egy 10k ellenállást, így nagyából stabilizálódott a helyzet.
Egészen addig, míg össze nem csavaroztam mindent, mert azután ismét megjelent némi zavar, de az már a WiFi miatt lehet.. 3 másodpercnél rövidebb jelzések, szoftveresen ezt megpróbálom még szűrni, bár a kombinált használati mód miatt ezek hatása csekély.
A jobb fent látható buzzer piros kábelére (+) egy 300 ohmos ellenállást is applikáltam, mivel a közös GND-n keresztül (?) némi háttérbúgást felszedett.
A doboz hátuljának kinevezett fedőn pedig a fényérzékelő látható, I2C csatlakozókra kötve.
Összességében látható, hogy ez a doboz elég tágas, 2 centivel lehetett volna alacsonyabb is, illetve mélységből is elég lett volna a fele, ha nem 90 fokkal elforgatva szerettem volna látni a D1 mini modult.
És végül a 4 eres kábellel külön kis dobozba helyezett vízérzékelő:
A felirat feletti elektronikát nem tervezték úgy, hogy víz érje, így vízálló FBS ragasztóval vízhatlanítottam, a réz érzékelők lefelé állnak, a dobozt pedig alul és oldalt megfúrtam, hogy befolyjon a víz.
És hogy minek a vízérzékelő?
Nos jelentem csőtörés esetére, csaptelep mellé szerintem praktikus. Inkább ne legyen szükség rá, de én speciel az alattam levő lakás eláztatásával kapcsolatos újrafestést kihagynám az éves költségkeretemből.
Szoftver
Természetesen a mindenre is jó ESPEasy került fel a D1 Mini-re. Az elérhető 12 darab eszközhelyből 11-et felhasználtam, ebből kettő Dummy változó, globális változónak a szabályok számára.
A szabályok még fejlesztés alatt, jelen változatban az alábbit használom:
- az 1-es időzítő figyeli és állítja vissza a kombinált mozgásérzékelés jelzését, ha valamelyik (PIR vagy radar) szerint már nincs mozgás
- a 2-es időzítő kapcsolja be a vízérzékelő tápellátását, majd ha az analóg érték nagyobb mint 20, jelzi a víz jelenlétét
On System#Boot do
gpio,16,0
gpio,15,0
settx,1
TaskValueSet,8,1,0
TaskValueSet,8,4,0
Publish domoticz/in,{"idx":61,"nvalue":0.00,"svalue":"Off"}
Publish domoticz/in,{"idx":64,"nvalue":0.00,"svalue":"Off"}
timerset,2,60
endon
on pir#Switch>0 do
if [radar#Switch]>0
event,motiondetected
endif
endon
on radar#Switch>0 do
if [pir#Switch]>0
event,motiondetected
endif
endon
on radar#Switch<1 do
event,radarnomotion
endon
on motiondetected do
if [motion#Y]<1
TaskValueSet,8,1,1
Publish domoticz/in,{"idx":61,"nvalue":1.00,"svalue":"On", "RSSI": [RSSI#RSSI]}
timerSet,1,15
endif
endon
on Rules#Timer=1 do
TaskValueSet,8,2,([pir#Switch]+[radar#Switch])
if [motion#S]<2
TaskValueSet,8,1,0
Publish domoticz/in,{"idx":61,"nvalue":0.00,"svalue":"Off", "RSSI": [RSSI#RSSI]}
else
timerSet,1,10
endif
endon
on Rules#Timer=2 do
gpio,15,1
endon
on checkwater do
if [motion#B]<1
Publish domoticz/in,{"idx":64,"nvalue":0.00,"svalue":"Off", "RSSI": [RSSI#RSSI]}
else
Publish domoticz/in,{"idx":64,"nvalue":1.00,"svalue":"On", "RSSI": [RSSI#RSSI]}
endif
endon
on waterpower#Switch>0 do
taskrun,5
if [water#Analog]>20
TaskValueSet,8,4,1
else
TaskValueSet,8,4,0
endif
gpio,15,0
TaskValueSet,11,1,([motion#A]+[motion#B])
if [global#C]=1.0
event,checkwater
TaskValueSet,8,3,[motion#B]
endif
timerset,2,60
endon
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.