Cuprins:

Postino: Poștașul a livrat ceva ?: 6 pași (cu imagini)
Postino: Poștașul a livrat ceva ?: 6 pași (cu imagini)

Video: Postino: Poștașul a livrat ceva ?: 6 pași (cu imagini)

Video: Postino: Poștașul a livrat ceva ?: 6 pași (cu imagini)
Video: Nicolae Guta - Fac livrare speciala [videoclip oficial] 2024, Iulie
Anonim
Postino: Poștașul a livrat ceva?
Postino: Poștașul a livrat ceva?

Nici o idee de-a mea: într-o zi, un prieten mi-a cerut o modalitate de a verifica de la distanță dacă vreun e-mail a fost depus în cutia poștală. Căsuța poștală nu se află pe calea spre ușă, așa că, fiind un băiat leneș, s-a întrebat dacă un dispozitiv tehnologic ar trebui să-l poată avertiza cu privire la vreo scrisoare în cutia poștală. Am aruncat o privire asupra pieței și nu am găsit niciun dispozitiv gata pregătit pentru nevoile sale, așa că mi-am ridicat o provocare: de ce să nu-l proiectez și să-l construiesc?

Constrângerile au fost:

  • alimentat cu baterie, cu o durată de viață rezonabilă între schimbarea bateriei;
  • Comunicare WiFi;
  • verificați doar o dată pe zi dacă există sau nu poștă;

Întrebarea principală a fost: ce tip de senzor s-ar putea potrivi cerințelor mele? Un senzor de proximitate nu putea funcționa, deoarece verificarea trebuia făcută doar o dată pe zi și nu în timp real; nici un senzor de greutate, deoarece acest lucru ar fi adăugat probleme de complexitate și sensibilitate (o foaie de hârtie ar putea fi foarte ușoară). Alegerea mea a aterizat pe un senzor Time-of-Flight (un micro laser). Odată calibrat în funcție de dimensiunea cutiei poștale, orice așezat în mijloc ar fi declanșat senzorul! Având în vedere cele 3 constrângeri, am decis să folosesc un ESP8266 (rularea software-ului și conectarea la WiFi), un senzor VL6180 Time-of-Flight pentru măsurare și un DS3231 Real Time Clock pentru a declanșa toate circuitele o dată pe zi: așa a fost Postino s-a născut!

Pasul 1: Piese și componente

  • ESP8266-01 (sau ESP-12E NodeMCU)
  • VL6108 Senzor timp de zbor
  • DS3231 Ceas în timp real
  • IRLZ44 N-canal MosFET
  • BC547 Tranzistor
  • Rezistențe
  • Baterie CR123

Pasul 2: senzorul

Senzorul
Senzorul

Inima sistemului este senzorul VL6180. Aceasta este o tehnologie inovatoare care permite măsurarea distanței absolute, independent de reflectanța țintei. În loc să estimeze distanța prin măsurarea cantității de lumină reflectată înapoi de la obiect (care este semnificativ influențată de culoare și suprafață), VL6180X măsoară cu precizie timpul necesar luminii pentru a se deplasa la cel mai apropiat obiect și a se reflecta înapoi la senzor (Timp -de-zbor). Combinând un emițător IR, un senzor de distanță și un senzor de lumină ambientală într-un pachet refluxabil gata de utilizare, VL6180X este ușor de integrat și economisește producătorului de produse finale optimizări de proiectare optică și mecanică lungi și costisitoare.

Modulul este proiectat pentru funcționare cu putere redusă. Am folosit placa de decolare Pololu care are regulatoare de tensiune la bord care îi permit să funcționeze într-un interval de tensiune de intrare de la 2,7 V la 5,5 V.

Senzorul permite 3 factori de scalare valabili care stabilesc domeniul maxim de măsurare de la 20 la 60 cm, cu sensibilități diferite. Prin configurarea unui factor de scalare a gamei, gama maximă potențială a senzorului poate fi mărită cu prețul unei rezoluții mai mici. Setarea factorului de scalare la 2 oferă o gamă de până la 40 cm cu o rezoluție de 2 mm, în timp ce un factor de scalare de 3 oferă o gamă de până la 60 cm cu o rezoluție de 3 mm. Trebuie să testați cele 3 scale cu dimensiunile cutiei poștale. Deoarece al meu avea 25 cm (H), am folosit factorul de scală = 1.

Pasul 3: Personalizarea ceasului în timp real

Pentru RTC am folosit o placă DS3231 care include o EEPROM (inutilă pentru scopul meu) și o baterie de mărime monedă. În timp ce am decis să alimentez RTC-ul prin bateria principală a dispozitivului (un CR123 de 3v), am îndepărtat bateria monedei; pentru a economisi energie, am scos de asemenea EEPROM (prin tăierea cu atenție a știfturilor) și ledul de la bord.

Bateria de monede nu mi-a fost utilă, deoarece nu trebuia să păstrez data / ora / minutul / secunda în timp real, dar RTC a trebuit să numere doar 24 de ore și apoi să declanșeze alarma pentru a porni dispozitivul.

Pasul 4: Alte diverse la bord

Alte diverse la bord
Alte diverse la bord
Alte diverse la bord
Alte diverse la bord

Pornirea dispozitivului este realizată de un tranzistor și un circuit MosFET, declanșat de alarma RTC. Odată ce alarma este resetată, circuitul întrerupe alimentarea dispozitivului pentru încă un ciclu de 24 de ore. Când este atinsă alarma, DS3231 comută un pin de la mare la scăzut: în condiții normale, tranzistorul este saturat și scurtcircuitat la poarta MosFET la sol. Odată ce alarma aduce la masă baza tranzistorului, aceasta se deschide și permite MosFET să închidă circuitul și să dea putere restului componentelor.

În plus, am adăugat un jumper „test-1M”. Scopul acestui comutator este - dacă este activat - să schimbe ciclul de la o dată pe zi la o dată pe minut, pentru a rula testele de implementare. Pentru a schimba intervalul de la o zi la un minut, trebuie mai întâi să închideți jumperul „Test-C” timp de aproximativ 15 secunde, să ocoliți perioada de activare a alarmei ceasului și să porniți dispozitivul. Când se efectuează testele, deschideți jumperii și resetați dispozitivul (puterea ciclului).

Pasul 5: Schematic

Schematic
Schematic

Pasul 6: Software și logică

În timpul testelor am folosit (din motive practice) un controler NodeMCU, deci software-ul se ocupă de acest lucru setând variabila CHIP la „NodeMCU” sau „esp8266”.

Schița implementează biblioteca WiFiManager pentru a permite dispozitivului să se conecteze la un punct de acces WiFi valid în prima rundă. Într-un astfel de caz, dispozitivul intră în modul AP, permițându-vă să vă conectați la acesta și să alegeți rețeaua WiFi potrivită pentru a vă alătura. După aceea, configurația rețelei este salvată în EPROM pentru ciclurile următoare.

Variabila REST_MSG conține mesajul http de trimis atunci când senzorul găsește un obiect în cutia poștală. În cazul meu, trimite un mesaj către un server REST domotic, dar îl puteți schimba după cum doriți: un mesaj Telegram BOT, un eveniment IFTTT WebHook etc.

Restul schiței se află în funcția setup (), deoarece bucla nu este atinsă niciodată. După configurațiile necesare pentru mai multe biblioteci, software-ul setează ora ceasului la 00:00:01 și alarma o dată pe zi (sau o dată pe minut dacă jumperul „test-1M” este activat). Apoi face măsura, trimite notificarea (dacă se găsește vreun obiect în cutia poștală) și resetează pinul de alarmă, oprind dispozitivul. La sfârșitul ciclului, doar RTC este pornit, numărând 24 de ore. Jumperul Test-1M este conectat la pinul RX al ESP8266, utilizat ca GPIO-3 prin intermediul setării: setMode (PIN, FUNCTION_3). Datorită acestui fapt, nu puteți utiliza monitorul serial în timp ce rulați ESP8266: linia „#define DEBUG” (care permite toate tipăririle seriale din schiță) este utilizată numai atunci când este instalat un NodeMCU în locul unui ESP8266.

ESP8266 gestionează comunicația I2C cu RTC și senzorul prin pinii GPIO-0 și GPIO-2, inițializați în biblioteca Wire.

Codul complet poate fi descărcat de pe acest link.

Concurs de asistență tehnică
Concurs de asistență tehnică
Concurs de asistență tehnică
Concurs de asistență tehnică

Locul doi în concursul de asistență tehnică

Recomandat: