Sisukord:
- 1. samm: ülevaade, eeltingimused ja osad
- Samm: riistvara: karp, lüliti ja juhtmestik
- Samm: riistvara: ESP-01
- 4. samm: ESP-01 programmeerimine
- Samm: koguge see kokku
- 6. samm: sõlme-punase kasutamine MQTT-sõnumil tegutsemiseks
- 7. samm: järelmõtted
Video: MQTT ja WiFi -toega postkasti lipp: 7 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
Märkus: värskendatud uue püsivara, skeemi ja näpunäidetega programmeerijale
Paar aastat alustasin oma koduautomaatika projektiga. Alustuseks ehitati Arduino abil serveriga juhitav 433 MHz saatja, mis lülitab palju odavaid PT2262 -põhiseid kauglüliteid. Hiljem lisasin oma ilmajaamale Arduino -põhise vastuvõtja, ühendasin oma EV laadija juhtkontakti jne. Asjad kasvasid üha enam (ja keeruliseks!). Niisiis otsustasin paar kuud tagasi standardiseerida kõik sõnumite saatmiseks MQTT, automatiseerimiseks Node-RED (mõlemad töötavad ühe Raspberry Pi B+) ja logimiseks MariaDb (töötab minu Synology NAS-il). Hiljem kolisin MQTT maakleri (Mosquitto) ja Node-RED ka NAS-i.
See juhend juhendab tobedat ja lõbusat projekti, mis haakis minu tänavale paigaldatud postkasti sellesse koduinfrastruktuuri. Idee on selles, et kui keegi avab aiaga kinnitatud postkasti umbes 10 meetri kaugusel välisuksest, annab see mulle märku minu telefonist ja võib -olla ka muudest seadmetest.
1. samm: ülevaade, eeltingimused ja osad
Kontuur
Kõrgel tasemel peaks postkast avamisel saatma maaklerile ainulaadse MQTT -sõnumi, nii et selle teema tellijaid teavitatakse. Sõlm-RED tellib ka ja automatiseerib, sel juhul saadab minu telefonile e-kirja ja/või tõuketeate.
Postkast peaks töötama patareidega ja töötama vähemalt aasta ning seda tuleks teha minu WiFi -võrgu abil. Kuna mikrokontrolleri äratamine ja WiFi-võrguga ühenduse loomine võib võtta mitu sekundit, ei saanud ma toite katkestamiseks aktiveerimislülitit kasutada. Selle asemel tuleks protsessoril lubada oma äri lõpetada pärast seda, kui postkasti kaas on juba suletud.
Eeltingimused
Eeldan, et teil on tagasihoidlikud jootmisoskused, olete natuke töötanud Arduino IDE -ga ja paigaldanud ESP8266 tahvlid Boards Manageri abil. Mikrokontrolleri programmeerimiseks peab teil olema ka 3,3-voldine USB-jadaadapter.
Samuti eeldan, et teil töötab MQTT maakler ja Node-RED server. Kui ei, siis Internetis on palju juhiseid, kuid ma soovitaksin kasutada laiskateed ja kasutada Peter Scargilli suurepärast installiskripti, kui soovite seda mis tahes Pi või Ubuntus käivitada või kasutada Pias Zero W (Andreas Spiess) pilti. selle video kirjelduses olevad lingid), mis säästab paar tundi installiskriptide töötamise vaatamist. Teise võimalusena võite panna püsivara saatma e -kirja otse, kuid kaotate sellega palju paindlikkust.
Osad
- 1 suletud, 3 AA patareikarp
- 2 AA patareid
- 1 ESP8266 moodul. Selle projekti jaoks kasutasin ESP-01
- 1 mikrolüliti
- 1 47K takisti
- 1 4M7 takisti
- 1 2.2uF kondensaator
- 1 õhuke plasttoru. Kasutasin pliiatsit
- 1 paks, pikk tikutops või pulgakomm. See peaks plasttorus kergesti sobituma ja liikuma
Samm: riistvara: karp, lüliti ja juhtmestik
Alustasin vanast akukarbist, mis pärineb kadunud jõulukaunistustest. See oli mõeldud kolmele AA suurusega patareile. Kuna ESP8266 töötab kenasti 3 voltil, saaksin kasutada kahte akut ja kasutada mikrokontrolleri kolmandat positsiooni. Pange tähele, kuidas karbil oli väike lisaruum, mida saaksin aktiveerimislüliti jaoks kasutada. Kasutasin piltidel näidatud väga levinud tüüpi lülitit, kuid eemaldasin vedru, mis lukustab selle sisse või välja. Jootsin kaks õhukest traati NC kontaktide külge ja liimisin selle karbi sisse pisikese tilga superliimiga.
Järgmisena puurisin ülemisse kaanesse augu, mis sobib pastapliiatsist võetud plasttoruga. Auk joondub täpselt lülitiga ja juhib paksust tikupulgast valmistatud kolbi.
Lõpuks jootsin veel kaks juhet aku kontaktide juurde ja juhtisin kõik neli juhtmest kolmanda aku asendisse, kus mikrokontroller pidi olema.
Samm: riistvara: ESP-01
Võttes arvesse WiFi nõuet, hüüab kogu projekt ESP8266. Sellest väikesest WiFi -kontrollerist on saanud nokitsejate kogukonna lemmikhobune moodulina, mille saab osta alla 2,50 euro ja mis sisaldab täielikku WiFi- ja TCP/IP -virna, kus on rohkem kui piisavalt ruumi oma programmide käivitamiseks. Arduino IDE (või Atom koos PlatformIO pistikprogrammiga) toetab täielikult ESP8266.
Tavaliselt võtaksin ESP-12F, kuid mul oli ümber pisike ESP-01 plaat, mis sobis selle töö jaoks ideaalselt ja mahub kenasti akukasti. Ainus probleem on see, et ESP-01 püsivara välk on üsna keeruline. Sellest lähemalt järgmises etapis. Tuleb teha üks muudatus: peate eemaldama plaadilt punase toite LED, kuna see tõmbab pidevalt 3mA. Kui LED on eemaldatud, kasutab moodul sügavas unerežiimis vaid mõnikümmend uA -d, mis tagab kahe kvaliteetse AA -patareiga kestmise üle aasta.
Selgus, et võin vabas vormis kasutada paari riba 4-pin naissoost päiseid ja jootmist mõne lisakomponendi peale, et saaksin püsivara värskendamiseks ESP-01 eemaldada, samal ajal kui see mahuks veel kolmandasse patareisahtlisse.
Väga oluline on ESP õigesti ühendada. Kasutage ülaltoodud petulehte, ühendage see järgmiselt.
- Aku pluss Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) ja 47K takisti.
- Aku miinus GND (A1) ja lüliti üks juhe.
- Lüliti teine juhe on 100nF kondensaator ja 4M7 takisti.
- Mõlema takisti ja kondensaatori avatud otsad RST -le (C2).
- TXD (A2) võib jääda ühendamata.
Edit: pidin ESP-01 välja vahetama, sest tegin rumala vea ja hävitasin selle. Selgus, et minu üllatuseks ei taastatud uut ESP-01 algse 100 nF kondensaatoriga. Tõenäoliselt on sellel veidi erinev disain. Vahetasin selle 2.2 uF vastu ja nüüd töötab jälle
Kui see on tehtud, saab kõik kasti paigaldada, kuid pidage kinni, kõigepealt peame mooduli programmeerima.
4. samm: ESP-01 programmeerimine
ESP-01 püsivara vilkumiseks võite ehitada väikese seadme või osta (peaaegu) täieliku programmeerija umbes 1 euro eest.
Riistvara programmeerimine
Ehitage ESP-01 jaoks väike rig koos kahe naispeaga. Lisaks vajate USB -jadamoodulit, mis suudab toita 3,3 volti. Pange tähele, et ESP8266 kiip ei ole 5 volti karastatud, nii et viga võib teie mooduli tappa. Igatahes, kasutades uuesti petulehte, ühendage oma seade nii:
- 3.3V USBSerial moodulist Vcc, CH_PD, RST ja GPIO2.
- USB -seriaalmooduli GND GND -le ja GPIO0 -le.
- USBSerial mooduli TXD RXD -le.
- USB -seriaalmooduli RDX TXD -le.
Ehitamise eelprogrammeerija
Nii lõbus kui ka oma asju ehitada, laisem lähenemisviis on hankida oma lemmikoksjonisaidilt ESP-01-jadaliides, vt ülaltoodud pilti. See on palju lihtsam, kompaktsem ja usaldusväärsem kui rig. Kuid mõned neist ei ole programmeerijad, vaid jadaliidesed. Peate jootma traadisilla GND (tihvt A1) ja GPIO0 (tihvt C1) vahel liidese tagaküljel, vt teist pilti. Pange tähele, et ESP-01 tuleb ühendada nii, et antenn on suunatud USB-pistiku poole, mitte vastupidi!
Märkus: need on olemas ka lülitiga, vaata kolmandat pilti, väga kena.
Laadige püsivara
Eeldades, et Arduino IDE on 1.8.3 või uuem, valige Tools> Board ja valige tahvel, mis teil on. ESP-01 jaoks, nagu ma kasutasin, valige "Generic ESP8266 Module" ja määrake järgmised valikud (need peaksid olema kõik vaikeseaded):
- Välgurežiim: DIO
- Välgu sagedus: 40 MHz
- Protsessori sagedus: 80 MHz
- Välgu suurus: 512 KB (64 KB SPIFFS) Märkus: kui kasutate musta ESP-01 plaati, valige 1 MB (64 KB SPIFFS)
- Silumisport: keelatud
- Silumise tase: puudub
- Lähtestusmeetod: ck
- Üleslaadimiskiirus 115200
- Port: valige USB -jadaliidesega ühendatud port. Minu Ubuntu arvuti jaoks oli see /dev /ttyUSB0
Ühendage seade/programmeerija, laadige eskiis, mille leiate siit https://gitlab.com/jeroenmeijer/Mailbox.git. Esitage konfiguratsioonis h oma WiFi ja MQTT maakleri mandaadid ning oma IP -konfiguratsioon ja valige Laadi üles.
Samm: koguge see kokku
Puurisin oma postkasti sisemisse kaane sisse plasttoru jaoks augu võimalikult hinge lähedusse, seejärel liimisin kuumalt aku kaane selle kaane alla. Järgmisena kasutasin kolbina paksu tikku. Lõikasin tiku pikkusega nii, et lüliti avaneks, kui väliskaas suletakse. Ma kontrollisin ühenduvust, avades kaane mosquitto_sub töötamise ajal MQTT -sõnumite jälgimiseks (asendage mqttbroker, kasutaja ja parool oma MQTT -konfiguratsiooniga):
$ mosquitto_sub -h mqttbroker -v -t "stat/#" -u kasutaja -P parool
Umbes kuus sekundit pärast välimise kaane avamist avaldatakse järgmine MQTT -teade. Aega kasutatakse mikrokontrolleri äratamiseks ning WiFi ja maakleriühenduse loomiseks.
stat/mailbox/trigger {"vcc": 3050, "klapp": tõsi, "eelmine": 0, "RSSI": 29, "versioon": "005"}
Selle aja jooksul kasutas mikrokontroller umbes 70 mA. Kui see on tehtud, läheb see sügavasse unne ja minu puhul kasutas see alla 20uA. "klapp" on alati tõsi, "vcc" märgib aku pinget mV -s ja "prev" peaks olema 0. Kui see on 1 või 2, tähendab see, et postkast ei saanud sõnumit varem saata, kuna see ei saanud ühendust luua WiFi või kuna see ei saanud ühendust MQTT maakleriga. "RSSI" on WiFi -signaali tugevus. Mõlemad on probleemide diagnoosimisel väga käepärased.
Mõistlik on jälgida aku pinget paar päeva, et veenduda, et seade töötab ettenähtud viisil ega tühjenda seda mingil põhjusel.
Püsivara on võimeline ennast ka õhu kaudu värskendama (OTA), kuid see jääb natuke sellest juhendist välja. Huvilistele on OTA konfiguratsioon ka config.h.
6. samm: sõlme-punase kasutamine MQTT-sõnumil tegutsemiseks
Lõpuks lõin Node-RED-is lihtsa voo. Esimene sõlm tellib postkasti teema (stat/postbox/trigger). Kui sõnum on vastu võetud, vormindab teine sõlm e -kirja *). Viimane sõlm saadab selle minu gmaili aadressile, kasutades gmaili SMTP -serverina. Mu telefon teavitab mind uutest kirjadest.
Olen lisanud Node-RED voo gitlabi katkendisse, et saaksite selle oma Node-RED voogudesse importida.
Muidugi saate lisada veel mõned sõlmed, näiteks postkasti sündmuste logimiseks MariaDb või SqlLite'i või luua täiendavaid häireid, kui aku pinge langeb alla 2,7 volti.
Head postijahti!
*) Vt järgmist lehte, ma kasutan e -posti asemel praegu PushBulleti.
7. samm: järelmõtted
Alati on selline tunne, et asju oleks saanud paremini teha.
Lüliti
Oleksin eelistanud mõnevõrra kohmaka kolvikäsitluse asemel kasutada (super) magnetit ja pillirookontakti. Põhjusi oli kaks. Üks on see, et ma ei suutnud kuidagi seda tööd teha, kui kontakt avanes ja kui see oli alati suletud, tähendas see alati väikest voolu. Tagantjärele ei oleks 4M7 takisti kaudu voolav vähem kui 1uA aku kestvuse seisukohalt suur asi olnud. Teine oli praktilisem. Ma koostasin selle projekti laupäeval ja kirjutasin tarkvara, ehitage see kõik pühapäeval sellest, mis ümberringi oli. Mul lihtsalt polnud prügikastis pilliroo kontakti.
Märkus: nagu diy_bloke kommenteeris, on pilliroo kontaktidel kalduvus pikaks ajaks magnetiseerimisel kleepuvaks muutuda, nii et võib -olla polnud kolb üldse nii halb mõte. Eks me näe. *)
Sõnum tühjendamise kohta
Ka postkast saadab tühjendamisel sõnumi välja. See ei ole suur asi, kuid kui rohkem inimesi majas hoiatust saab, võib lõppeda silmus, mis kontrollib postkasti, trotsides selle kogu eesmärki! Selle vältimiseks on mitu võimalust, näiteks kontrollida, kas sisemine kaas on üles tõstetud ja kui jah, siis ärge saatke sõnumit. Või selle asemel, et kasutada kaane lülitit, paigaldage detektor postkasti alla. Või tühjendamisel vajutada väikest lähtestusnuppu. Kõik aga teeks asja keerulisemaks ja tõenäoliselt halvendaks töökindlust.
Sõnumid
E -kirjade saatmine on üsna tõhus, kuid ebaviisakas viis hoiatuse kustutamiseks. Elegantsem viis oleks telefonirakendus, kuid ma ei ole leidnud Androidi MQTT armatuurlauarakendust, mida saab konfigureerida käivitama operatsioonisüsteemi hoiatuse teatud sõnumi saabumisel. Kui see on ümberringi, lisage see kommentaaridesse. **)
*) Pärast enam kui aastast töötamist selgub, et minu kasutatud pulgakommipulgal, põhimõtteliselt kõvasti rullitud paberil, on kalduvus lülitusvedru pideva rõhu all lüheneda. Pärast mõningaid tõrkeotsinguid asendasin selle puupulgaga.
**) Ma kasutan PushBulletit nüüd tõukesõnumite jaoks, eraldi MQTT armatuurlaualt. Pisikesed Node-RED madalad liidesed API-ga leiate siit. Veenduge, et sisestate sõlmes "Valmistuge tõukeks" juurdepääsuloa ja sõlme "Proovi uuesti" jaoks oma e -posti aadressi varukoopiate tegemiseks.
Soovitan:
Postkasti andur Arduino abil: 4 sammu
Postkasti andur Arduino kasutamisel: Tere, ma loodan, et teil läheb kõik hästi. Täna näitan teile, kuidas arduino tahvli ja IDE abil anduriga postkasti teha. See projekt on väga lihtne ja enamik tarvikuid on saadaval enamikus kodudes. Tea, et Covid-19 on meid tabanud
MQTT meeleolu tuled ESP32 abil: 4 sammu (piltidega)
MQTT meeleolutuled koos ESP32 -ga: mul oli juba pikka aega kiusatus hüpata LED -vaguni peale, nii et jooksin välja ja võtsin mänguasja jaoks LED -riba. Lõpuks tegin need meeleolutuled. Neid saab juhtida MQTT abil, mis võimaldab lisada igasuguseid nutikaid. See on
MQTT basseini temperatuurimonitor: 7 sammu (piltidega)
MQTT basseini temperatuurimonitor: see projekt on kaaslane minu teiste koduautomaatika projektidega Smart Data- Logging Geyser Controller ja mitmeotstarbeline ruumivalgustus ja seadme kontroller. See on basseini äärde paigaldatud monitor, mis mõõdab basseini vee temperatuuri, välisõhku
Lugege oma peamist elektriarvestit (ESP8266, WiFi, MQTT ja Openhab): 6 sammu (koos piltidega)
Lugege oma peamist elektriarvestit (ESP8266, WiFi, MQTT ja Openhab): selles juhendis saate teada, kuidas ma oma maja peamise elektrienergia tarbimist lugesin, ja avaldan selle oma Openhabi koduautomaatikas ESP8266, Wifi, MQTT kaudu. Mul on nutikas arvesti ISKRA tüüp MT372, kuid seda pole lihtne eksportida
Prantsuse lipp / vabaduslipp: 6 sammu
Prantsuse lipp / vabaduslipp: Prantsuse lipp on hüüdnimi, mis on antud kaameratööriistale, mida kasutatakse soovimatu valguse takistamiseks läätses, mis tavaliselt põhjustab objektiivi põletust või muudab mustuse objektiivil nähtavamaks. Tahtsin korrata Prantsuse lippu, mis leiti saidilt filmtools.com