Sadržaj:

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

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

Video: Zastava poštanskog pretinca s pogonom na MQTT i Wifi: 7 koraka (sa slikama)
Video: Веб-разработка – информатика для руководителей бизнеса 2016 2024, Srpanj
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. Počelo je izgradnjom poslužitelja kontroliranog 433 MHz odašiljača s Arduinom za prebacivanje mnogo jeftinih daljinskih sklopki temeljenih na PT2262. Kasnije sam za svoju meteorološku stanicu dodao prijemnik zasnovan na Arduinu, spojio kontrolni kontakt svog EV punjača itd. Stvari su postajale sve više isprepletene (i komplicirane!). Tako sam prije nekoliko mjeseci odlučio sve standardizirati na temelju MQTT-a za razmjenu poruka, Node-RED za automatizaciju (oba na jednom Raspberry Pi B+) i MariaDb za bilježenje (na mojem Synology NAS-u). Kasnije sam premjestio posrednika MQTT (Mosquitto) i Node-RED na NAS.

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

Korak 1: Pregled, preduvjeti i dijelovi

Obris

Na visokoj razini, poštanski sandučić trebao bi, kada se otvori, poslati jedinstvenu MQTT poruku posredniku, tako da će pretplatnici na tu temu biti obaviješteni. Node-RED se također pretplaćuje i vrši određenu automatizaciju, u ovom slučaju šalje e-poruku i/ili push poruku na moj telefon.

Poštanski sandučić trebao bi raditi na baterije i raditi najmanje godinu dana, a trebao bi to učiniti pomoću moje WiFi mreže. Budući da buđenje mikrokontrolera i povezivanje s WiFi mrežom 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.

Preduvjeti

Pretpostavljam da imate skromne sposobnosti lemljenja, malo ste radili s Arduino IDE -om i instalirali ste ploče ESP8266 pomoću upravitelja ploča. Također morate imati 3,3 voltni USB serijski adapter za programiranje mikrokontrolera.

Također pretpostavljam da imate MQTT brokera i poslužitelj Node-RED. 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 Spiess 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 izravno šalje e -poštu, ali ćete time izgubiti mnogo fleksibilnosti.

Dijelovi

  • 1 zatvorena, 3 AA kutija za baterije
  • 2 AA baterije
  • 1 modul ESP8266. Za ovaj projekt koristio sam ESP-01
  • 1 mikroprekidač
  • 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 lijepo raditi na 3 volti, mogao bih koristiti dvije baterije i koristiti treći položaj 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. Zalemio 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.

Na kraju sam lemio još dvije žice na kontakte baterije i sve četiri žice vodio do položaja treće baterije, gdje će se nalaziti 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 zahtjev za WiFi, cijeli projekt viče 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 puni WiFi i TCP/IP hrpu, s više nego dovoljnim kapacitetom za pokretanje vlastitih programa. Arduino IDE (ili Atom s 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 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. Postoji jedna izmjena: Morate ukloniti crvenu LED diodu za napajanje s ploče jer neprekidno troši 3 mA. S uklonjenom LED diodom, modul koristi samo nekoliko desetaka uA u načinu dubokog sna što će ga izdržati 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 47K otpornik.
  2. Minus baterije do GND (A1) i jedna žica prekidača.
  3. Druga žica prekidača na kondenzator od 100nF 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 je. Ispostavilo se da se na moje iznenađenje novi ESP-01 nije resetirao s originalnim kondenzatorom od 100nF. Vjerojatno ima malo drugačiji dizajn. Zamijenio sam ga sa 2.2 uF i sad opet radi

Kad je gotovo, 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 malu platformu ili kupiti (gotovo) potpuni programator za oko 1 euro.

Hardverska oprema za programiranje

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

  1. 3.3V iz USB serijskog 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 predgradnju

Koliko god zabavno bilo graditi vlastite stvari, ljenjivi pristup je nabaviti sučelje ESP-01-za-serijsko s vašeg omiljenog aukcijskog mjesta, 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 bi ESP-01 trebao biti priključen tako da antena bude okrenuta prema USB utikaču, a ne obrnuto!

Napomena: postoje i s prekidačem, pogledajte treću sliku, jako lijepo.

Učitajte firmver

Pretpostavimo da je Arduino IDE 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. Način bljeskalice: DIO
  2. Frekvencija bljeskalice: 40 MHz
  3. Frekvencija procesora: 80MHz
  4. Veličina bljeskalice: 512KB (64KB SPIFFS) Napomena: ako koristite crnu ploču ESP-01, odaberite 1 MB (64KB SPIFFS)
  5. Debug port: Onemogućen
  6. Razina otklanjanja pogrešaka: Nema
  7. Način resetiranja: ck
  8. Brzina prijenosa 115200
  9. Port: odaberite priključak koji je spojen na vaše USB serijsko sučelje. Za moje Ubuntu računalo koje je bilo /dev /ttyUSB0

Priključite opremu/programator, učitajte Sketch koji možete pronaći ovdje https://gitlab.com/jeroenmeijer/Mailbox.git. Unesite 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šila sam rupu za plastičnu cijev u unutarnjem poklopcu poštanskog sandučića, što je moguće bliže šarkama, a zatim vruće zalijepila baterijsku kutiju na donju stranu tog poklopca. Zatim sam koristio debelu šibicu kao klip. Isječkom sam izrezao šibicu na duljinu 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 konfiguracijom MQTT):

$ 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 veze i veze posrednika.

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 točno, "vcc" navodi napon baterije u mV, a "prev" bi trebao 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. Obje su vrlo zgodne 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 isprazni bateriju.

Firmver se također može ažurirati bežičnim putem (OTA), ali to je malo izvan opsega ove upute. 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štanski pretinac/okidač). Kad primi poruku, drugi čvor oblikuje e -poruku *). Posljednji čvor šalje ga na moju gmail adresu, koristeći gmail kao SMTP poslužitelj. Telefon će me tada upozoriti na novu poštu.

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

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 se stvari mogle učiniti bolje.

Sklopka

Ja bih radije upotrijebio (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 kad je kutija otvorena, a ako je uvijek zatvoren, to znači da će uvijek 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. Smislio sam ovaj projekt u subotu i napisao softver, a sve to izgradio u nedjelju prema onome što je ležalo uokolo. Jednostavno nisam imao kontakt trske u kutiji za smeće.

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štanski sandučić šalje poruku i kad ga ispraznite. To nije velika stvar, ali s više ljudi u kući koji dobiju upozorenje, netko bi mogao završiti u petlji provjeravajući poštanski sandučić prkoseći njegovoj svrsi! Postoji nekoliko načina da se to zaobiđe, poput provjere je li unutarnji poklopac podignut, a ako je tako, nemojte slati poruku. Ili umjesto da koristite prekidač za poklopac, instalirajte detektor na dnu poštanskog sandučića. Ili mali gumb za poništavanje koji ćete pritisnuti prilikom pražnjenja. Međutim, sve bi zakompliciralo stvari i vjerojatno pogoršalo pouzdanost.

Slanje poruka

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 nadzorne ploče za Android MQTT koja se može konfigurirati za aktiviranje upozorenja operacijskog sustava 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 skraćivanja pod stalnim pritiskom opruge prekidača. Nakon rješavanja problema zamijenio sam ga drvenim štapom.

**) Sada koristim PushBullet za push poruke, odvojeno od nadzorne ploče MQTT. Sićušno nisko sučelje Node-RED za API može 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 ponovno".

Preporučeni: