Sadržaj:

Zastava poštanskog sandučeta s pogonom na MQTT i Wifi: 7 koraka (sa slikama)
Zastava poštanskog sandučeta s pogonom na MQTT i Wifi: 7 koraka (sa slikama)

Video: Zastava poštanskog sandučeta s pogonom na MQTT i Wifi: 7 koraka (sa slikama)

Video: Zastava poštanskog sandučeta s pogonom na MQTT i Wifi: 7 koraka (sa slikama)
Video: KAKO OTVORITI CILINDRICNU BRAVU bez kljuca 2024, Juli
Anonim
Zastava MQTT i Wifi pogonskog pretinca
Zastava MQTT i Wifi pogonskog pretinca

Napomena: ažurirano novim firmverom, shemom i savjetima za programera

Nekoliko godina započeo sam vlastiti projekt kućne automatizacije. Započelo je izgradnjom servera upravljanog predajnika od 433 MHz sa Arduinom za prebacivanje mnogo jeftinih daljinskih prekidača zasnovanih na PT2262. Kasnije sam dodao vremensku stanicu zasnovanu na Arduinu, spojio kontrolni kontakt svog EV punjača itd. Stvari su postajale sve više isprepletene (i komplikovane!). Tako sam prije nekoliko mjeseci odlučio sve standardizirati na osnovu MQTT-a za razmjenu poruka, Node-RED za automatizaciju (oba na jednom Raspberry Pi B+) i MariaDb za logovanje (na mom Synology NAS-u). Kasnije sam premjestio posrednika MQTT (Mosquitto) i Node-RED na NAS.

Ova instrukcija opisuje blesavi projekat za zabavu koji spaja moje poštansko sanduče montirano na ulici u ovoj kućnoj infrastrukturi. Ideja je da ako netko otvori poštansko sanduče postavljeno na ogradu oko 10 metara od ulaznih vrata, to mi signalizira putem telefona i eventualno drugih uređaja.

Korak 1: Pregled, preduvjeti i dijelovi

Outline

Na visokom nivou, poštansko sanduče bi, kada se otvori, poslalo jedinstvenu MQTT poruku brokeru, kako bi pretplatnici na tu temu bili obaviješteni. Node-RED se također pretplaćuje i vrši određenu automatizaciju, u ovom slučaju šalje e-poštu i/ili push poruku na moj telefon.

Poštansko sanduče bi trebalo raditi na baterije i raditi najmanje godinu dana, a trebalo bi to učiniti pomoću moje WiFi mreže. Budući da buđenje mikrokontrolera i povezivanje na WiFi mrežu može potrajati nekoliko sekundi, nisam mogao upotrijebiti prekidač za aktivaciju da isključim napajanje. Umjesto toga, procesoru bi trebalo omogućiti da završi posao nakon što se poklopac poštanskog sandučića već zatvorio.

Preduslovi

Pretpostavljam da imate skromne vještine lemljenja, malo ste radili s Arduino IDE -om i instalirali ste ploče ESP8266 koristeći upravitelj ploča. Za programiranje mikrokontrolera morate imati i 3,3-voltni USB serijski adapter.

Takođe pretpostavljam da imate MQTT brokera i Node-RED server koji radi. Ako ne, na Internetu postoji mnogo uputa, ali savjetovao bih da krenete lijenim putem i upotrijebite izvrsnu instalacijsku skriptu Petera Scargilla ako ovo želite pokrenuti na bilo kojem Pi ili Ubuntu ili upotrijebiti sliku Andreasa Spiessa za Pi Zero W (veze u opisu tog videozapisa), što će vam uštedjeti nekoliko sati gledanja pokrenutih instalacijskih skripti. Alternativno, možete natjerati firmver da šalje e -poštu direktno, ali ćete time izgubiti mnogo fleksibilnosti.

Delovi

  • 1 zatvorena, 3 AA kutija za baterije
  • 2 AA baterije
  • 1 ESP8266 modul. Za ovaj projekat koristio sam ESP-01
  • 1 mikro prekidač
  • 1 47K otpornik
  • 1 otpornik 4M7
  • 1 2.2uF kondenzator
  • 1 tanka plastična cijev. Koristio sam olovku
  • 1 debela, duga šibica ili štapić za lizalicu. Lako bi trebao stati i premjestiti se u plastičnu cijev

Korak 2: Hardver: kutija, prekidač i ožičenje

Hardver: kutija, prekidač i ožičenje
Hardver: kutija, prekidač i ožičenje
Hardver: kutija, prekidač i ožičenje
Hardver: kutija, prekidač i ožičenje
Hardver: kutija, prekidač i ožičenje
Hardver: kutija, prekidač i ožičenje

Počeo sam sa starom kutijom za baterije iz mrtvog božićnog ukrasa. Dizajniran je za tri baterije veličine AA. Kako će ESP8266 raditi dobro na 3 V, mogao bih koristiti dvije baterije i koristiti treću poziciju za mikrokontroler. Primijetite kako je kutija imala mali dodatni pretinac koji sam mogao koristiti za prekidač za aktiviranje. Koristio sam vrlo uobičajen tip prekidača prikazan na slikama, ali sam uklonio oprugu koja ga zaključava u položaju uključeno ili isključeno. Lemio sam dvije tanke žice na NC kontakte i zalijepio ih u kutiju sa sitnom kapljicom super ljepila.

Zatim sam izbušio rupu na gornjem poklopcu koja odgovara plastičnoj cijevi uzetoj kemijskom olovkom. Rupa se točno poravnava s prekidačem i vodi klip izrađen od debelog štapa šibice.

Konačno, lemio sam još dvije žice na kontakte baterije i vodio sve četiri žice do položaja treće baterije, gdje će biti mikrokontroler.

Korak 3: Hardver: ESP-01

Hardver: ESP-01
Hardver: ESP-01
Hardver: ESP-01
Hardver: ESP-01
Hardver: ESP-01
Hardver: ESP-01

S obzirom na WiFi zahtjev, cijeli projekt uzvikuje ESP8266. Ovaj mali WiFi kontroler postao je omiljeni radni konj zajednice petljača kao modul koji se može kupiti po cijeni od 2,50 EUR i integrira potpuni WiFi i TCP/IP stek, s više nego dovoljnim kapacitetom za pokretanje vlastitih programa. Arduino IDE (ili Atom sa dodatkom PlatformIO) u potpunosti podržava ESP8266.

Obično bih uzeo ESP-12F, ali sam oko sebe položio sićušnu ploču ESP-01 koja je bila savršena za posao i lijepo se uklapa u kutiju za baterije. Jedini problem je što je prilično komplicirano fleširati firmver u ESP-01. Više o tome u sljedećem koraku. Morate napraviti jednu izmjenu: Morate ukloniti crvenu LED diodu za napajanje s ploče jer neprekidno troši 3mA. Sa uklonjenom LED diodom, modul koristi samo nekoliko desetina uA u režimu dubokog sna što će mu omogućiti da traje više od godinu dana na dvije kvalitetne AA baterije.

Ispostavilo se da bih mogao upotrijebiti dvije trake sa 4-pinskim ženskim zaglavljima i lemiti nekoliko dodatnih komponenti u slobodnom obliku kako bih mogao ukloniti ESP-01 za ažuriranje firmvera, dok bi i dalje stajao u trećem odjeljku za baterije.

Vrlo je važno pravilno spojiti ESP. Koristeći gornju varalicu, povežite je na sljedeći način.

  1. Baterija plus na Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) i otpornik od 47K.
  2. Baterija minus na GND (A1) i jedna žica prekidača.
  3. Druga žica prekidača je kondenzator od 100 nF i otpornik 4M7.
  4. Otvoreni krajevi oba otpornika i kondenzatora prema RST (C2).
  5. TXD (A2) može ostati nepovezan.

Edit: Morao sam zamijeniti ESP-01 jer sam napravio glupu grešku i uništio ga. Ispostavilo se da se na moje iznenađenje novi ESP-01 nije resetirao s originalnim kondenzatorom od 100 nF. Vjerojatno ima malo drugačiji dizajn. Zamijenio sam ga sa 2.2 uF i sada ponovo radi

Kada završite, sve se može montirati u kutiju, ali pričekajte, prvo moramo programirati modul.

Korak 4: Programiranje ESP-01

Programiranje ESP-01
Programiranje ESP-01
Programiranje ESP-01
Programiranje ESP-01
Programiranje ESP-01
Programiranje ESP-01

Da biste ažurirali firmver na svom ESP-01, možete ili izgraditi mali uređaj ili kupiti (gotovo) kompletan programator za oko 1 euro.

Hardverska oprema za programiranje

Napravite malu platformu sa ponovo dva ženska zaglavlja za ESP-01. Takođe, potreban vam je USB serijski modul, sposoban za napajanje od 3,3 volta. Imajte na umu da čip ESP8266 nije otvrdnut na 5 volti, pa bi greška ovdje mogla ubiti vaš modul. U svakom slučaju, ponovo pomoću varalice, ožičite svoj uređaj na sljedeći način:

  1. 3.3V sa USBSerial modula na Vcc, CH_PD, RST i GPIO2.
  2. GND USB serijskog modula na GND i GPIO0.
  3. TXD USB serijskog modula na RXD.
  4. RDX USB serijskog modula na TXD.

Programer za montažu

Koliko god zabavno bilo graditi vlastite stvari, lijeniji pristup je nabaviti ESP-01-serijsko sučelje sa svoje omiljene aukcijske stranice, pogledajte gornju sliku. Ovo je mnogo lakše, kompaktnije i pouzdanije od platforme. Međutim, neki od njih nisu programeri, samo serijska sučelja. Morate lemiti žičani most između GND (pin A1) i GPIO0 (pin C1) na stražnjoj strani sučelja, pogledajte drugu sliku. Imajte na umu da ESP-01 treba priključiti tako da antena bude okrenuta prema USB utikaču, a ne obrnuto!

Napomena: postoje i sa prekidačem, pogledajte treću sliku, vrlo lijepo.

Učitajte firmver

Pretpostavljajući Arduino IDE od 1.8.3 ili noviji, odaberite Alati> Ploča i odaberite ploču koju imate. Za ESP-01 kakav sam koristio, odaberite "Opći modul ESP8266" i postavite sljedeće opcije (ovo bi trebale biti sve zadane vrijednosti):

  1. Režim blica: DIO
  2. Frekvencija blica: 40MHz
  3. Frekvencija procesora: 80MHz
  4. Veličina blica: 512KB (64KB SPIFFS) Napomena: ako koristite crnu ploču ESP-01, odaberite 1 MB (64KB SPIFFS)
  5. Debug port: Disabled
  6. Nivo otklanjanja grešaka: Nema
  7. Način resetiranja: ck
  8. Brzina otpremanja 115200
  9. Port: odaberite port koji je spojen na USB serijsko sučelje. Za moj Ubuntu PC koji je bio /dev /ttyUSB0

Priključite uređaj/programator, učitajte Sketch koji možete pronaći ovdje https://gitlab.com/jeroenmeijer/Mailbox.git. Dostavite svoje vjerodajnice za WiFi i MQTT brokera i svoju IP konfiguraciju u config.h i odaberite Upload.

Korak 5: Sastavite sve

Sklapanje svega
Sklapanje svega

Izbušio sam rupu za plastičnu cijev u unutrašnjem poklopcu poštanskog sandučića, što je moguće bliže šarkama, a zatim vruće zalijepio kutiju za baterije na donju stranu poklopca. Zatim sam koristio debelu šibicu kao klip. Upotrijebio sam izrezak da odrežem šibicu po dužini tako da se prekidač otvori ako se vanjski poklopac zatvori. Provjerio sam povezanost otvaranjem poklopca dok sam pokretao mosquitto_sub za nadgledanje MQTT poruka (zamijenite mqttbroker, korisnika i lozinku svojom MQTT konfiguracijom):

$ mosquitto_sub -h mqttbroker -v -t "stat/#" -u korisnik -P lozinka

Približno šest sekundi nakon otvaranja vanjskog poklopca objavljuje se sljedeća MQTT poruka. Vrijeme se koristi za buđenje mikrokontrolera i uspostavljanje WiFi i posredničke veze.

stat/poštanski sandučić/okidač {"vcc": 3050, "flap": true, "prev": 0, "RSSI": 29, "version": "005"}

Za to vrijeme mikrokontroler je koristio približno 70 mA. Kad završi, odlazi u duboki san i u mom slučaju je potrošilo manje od 20uA. "flap" je uvijek istina, "vcc" navodi da napon baterije u mV i "prev" treba biti 0. Ako je 1 ili 2, to znači da poštanski sandučić nije mogao poslati poruku ranije, jer se nije mogao povezati s WiFi ili zato što se nije mogao povezati s posrednikom MQTT. "RSSI" je snaga WiFi signala. Oboje je vrlo zgodno za dijagnosticiranje problema.

Bilo bi dobro pratiti napon baterije nekoliko dana kako biste osigurali da uređaj radi kako je predviđeno i da iz nekog razloga ne prazni bateriju.

Firmver se također može ažurirati bežičnim putem (OTA), ali to je malo izvan opsega ovog uputstva. Za one koji su zainteresirani, OTA konfiguracija je također u config.h.

Korak 6: Upotreba Node-RED za djelovanje na MQTT poruku

Korištenje Node-RED za djelovanje na MQTT poruku
Korištenje Node-RED za djelovanje na MQTT poruku

Konačno, stvorio sam jednostavan tok u Node-RED-u. Prvi čvor pretplaćuje se na temu poštanskog sandučića (stat/poštansko sanduče/okidač). Kada primite poruku, drugi čvor oblikuje e -poruku *). Posljednji čvor šalje ga na moju gmail adresu, koristeći gmail kao SMTP server. Telefon će me tada upozoriti na novu poštu.

Dodao sam Node-RED tok u gitlab isječak tako da ga možete uvesti u svoje Node-RED tokove.

Naravno, možete dodati još neke čvorove, na primjer za bilježenje događaja poštanskog sandučića na MariaDb ili SqlLite, ili stvoriti dodatne alarme kada napon baterije padne ispod 2,7 volti.

Sretan lov na poštu!

*) Pogledajte sljedeću stranicu, sada koristim PushBullet umjesto e -pošte.

Korak 7: Poslije razmišljanja

Uvijek postoji osjećaj da su stvari mogle biti bolje.

Switch

Više bih volio koristiti (super) magnet i kontakt trske umjesto pomalo nespretnog pristupa klipom. Postojala su dva razloga. Jedan je, nije bilo načina da to učinim tako da se kontakt zatvori kada je kutija otvorena, a ako je uvijek zatvoren, uvijek će teći mala struja. U retrospektivi, manje od 1uA koje protiče kroz otpornik 4M7 ne bi bilo velika stvar u smislu trajanja baterije. Drugi je bio praktičniji. Ovaj projekt sam izmislio u subotu i napisao softver, a sve to izgradio u nedjelju prema onome što je lebdjelo okolo. Jednostavno nisam imao kontakt sa trskom u kutiji za otpatke.

Napomena: kako je komentirao diy_bloke, kontakti od trske imaju tendenciju da se ljepe pri dugom magnetiziranju, pa možda klip uopće nije bio tako loša ideja. Vidjet ćemo. *)

Poruka o pražnjenju

Poštansko sanduče šalje poruku i prilikom pražnjenja. Ovo nije velika stvar, ali s obzirom na to da više ljudi u kući dobije upozorenje, netko bi mogao završiti u petlji provjeravajući poštansko sanduče prkoseći njegovoj svrsi! Postoji nekoliko načina da se to zaobiđe, poput provjere da li je unutrašnji poklopac podignut, a ako jeste, nemojte slati poruku. Ili umjesto prekidača za poklopac, instalirajte detektor na dnu poštanskog sandučića. Ili malo dugme za poništavanje koje ćete pritisnuti prilikom pražnjenja. Međutim, sve bi zakompliciralo stvari i vjerovatno pogoršalo pouzdanost.

Poruke

Slanje e -pošte prilično je učinkovit, ali grub način iznošenja upozorenja. Elegantniji način bila bi aplikacija za telefon, ali nisam pronašao aplikaciju za Android MQTT nadzornu ploču koja se može konfigurirati za pokretanje upozorenja operativnog sistema kada se primi određena poruka. Ako postoji neki u blizini, dodajte ga u komentare. **)

*) Nakon više od godinu dana rada, pokazalo se da štapić za lizalicu koji sam koristio, u osnovi tvrdi valjani papir, ima tendenciju da se skraćuje pod stalnim pritiskom opruge prekidača. Nakon rješavanja problema zamijenio sam ga drvenim štapom.

**) Sada koristim PushBullet za push poruke, odvojeno od MQTT nadzorne ploče. Mali Node-RED niski interfejsi za API mogu se pronaći ovdje. Provjerite jeste li unijeli pristupni token u čvor "Pripremi se za pushbullet" i svoju adresu e -pošte za rezervne svrhe u čvoru "Pokušaj ponovo".

Preporučuje se: