Taula de continguts:

Sensor de porta alimentat per bateria amb integració domòtica, WiFi i ESP-NOW: 5 passos (amb imatges)
Sensor de porta alimentat per bateria amb integració domòtica, WiFi i ESP-NOW: 5 passos (amb imatges)

Vídeo: Sensor de porta alimentat per bateria amb integració domòtica, WiFi i ESP-NOW: 5 passos (amb imatges)

Vídeo: Sensor de porta alimentat per bateria amb integració domòtica, WiFi i ESP-NOW: 5 passos (amb imatges)
Vídeo: 15 самых радикальных электрических велосипедов 2019 - 2020 | Высокопроизводительные eBikes 2024, Desembre
Anonim
Image
Image

En aquest instructiu us mostro com he fabricat un sensor de porta amb bateria amb integració domòtica. He vist alguns altres sensors i sistemes d'alarma agradables, però volia fer-ne jo mateix.

Els meus objectius:

  • Un sensor que detecta i informa que una porta s’obre ràpidament (<5 segons)
  • Un sensor que detecta el tancament de la porta
  • Un sensor que funciona amb bateria i funciona durant uns mesos amb una bateria

El maquinari i el programari estan inspirats en

  • El quadre de comandament de Kevin Darrah (TPL5111 i TPS73733).
  • Aquest vídeo

Vaig fer un sensor per a la porta principal i la porta posterior. L'única diferència és la posició del led i l'interruptor d'alimentació extern (en el sensor de la porta posterior).

Vaig fer diverses millores durant el desenvolupament de maquinari i programari, es pot veure a les fotos.

Subministraments

Vaig comprar els components electrònics a Aliexpress, les parts principals:

  • Bateria LiPo
  • TPS73733 LDO
  • TPL5111
  • Interruptor Reed
  • Mosfet de canal P: IRLML6401TRPBF
  • Imant
  • Placa adaptadora de PCB per a components SMD i una altra.

Pas 1: Maquinari: circuit

Maquinari - Circuit
Maquinari - Circuit
Maquinari - Circuit
Maquinari - Circuit
Maquinari - Circuit
Maquinari - Circuit

Vegeu els esquemes adjunts del circuit. He soldat les peces SMD en una placa adaptadora de PCB i he soldat tots els components a una placa de perfils de doble cara. Vaig connectar l'ESP-01 mitjançant capçaleres femenines, de manera que podia eliminar-lo per programar-lo mitjançant l'adaptador que es mostra al pas 3 d'aquesta instrucció.

El circuit funciona de la següent manera:

  • Quan s’obre la porta, el TPL5111 rep un tret al pin DELAY / M_DRV i habilita el TPS73733 LDO que alimenta l’ESP-01. Per a aquesta operació, cal baixar EN / ONE_SHOT, consulteu el full de dades del TPL5111.
  • Després que el programa s'hagi executat (vegeu el pas de programari), l'ESP-01 envia un senyal Fet al TPL5111 que desactiva el TPS73733, donant lloc a un estat de potència molt baix per al TPL5111 i el TPS73733.

Faig servir interruptors reed amb connexions NO i NC. Vaig connectar el cable NC, ja que l’interruptor reed ha de tancar el circuit quan es retira l’imant (porta oberta) i s’ha d’obrir quan l’imant està a prop (porta tancada).

Per al sensor de portes posteriors, vaig afegir alguns condensadors i resistències quan vaig descobrir algunes inestabilitats, però la instabilitat va ser causada pel programari (esp_now_init) com vaig descobrir més tard.

Pas 2: maquinari: recinte

Maquinari - Tancament
Maquinari - Tancament
Maquinari - Tancament
Maquinari - Tancament
Maquinari - Tancament
Maquinari - Tancament

Vaig dissenyar el recinte a Autodesk Fusion360, inspirat en aquest vídeo de "el noi amb accent suís".

Els fitxers STL de les tres parts:

  • Caixa
  • Tapa
  • Porta imants

es publiquen a la meva pàgina de Thingiverse.

Pas 3: programari

Programari
Programari

El programa és al meu Github.

El flux del programa es mostra a la imatge. Consulteu la meva altra instrucció per obtenir informació sobre com faig servir ESP-NOW.

Quan el mòdul està engegat, primer intenta enviar el missatge 'OPEN' mitjançant ESP-NOW. Si això no funciona, passa a una connexió WiFi i MQTT.

Vaig descobrir que, almenys en la meva configuració, el missatge "TANCAT" no s'enviava correctament mitjançant ESP-NOW, així que ho vaig eliminar del programa i només utilitzo WiFi i MQTT.

Durant el temps que s’obre la porta i el mòdul espera que la porta es tanqui, utilitza aquest temps per connectar-se a WiFi i MQTT, de manera que quan la porta està tancada només ha d’enviar la tensió mesurada i un missatge TANCAT i després es dirigeix directament a dormir.

El programa comprova si el receptor rep el missatge tancat mitjançant una escolta d’un missatge MQTT sobre el tema adequat.

Pas 4: domòtica i telegrama

Domòtica i Telegram
Domòtica i Telegram
Domòtica i Telegram
Domòtica i Telegram
Domòtica i Telegram
Domòtica i Telegram

Els sensors de la porta es comuniquen amb la meva automatització domèstica Openhab al meu Raspberry Pi Zero.

Principals aplicacions:

  • Llegiu l'estat de la porta: OBERTA o TANCADA.
  • Alarma’m mitjançant telegrama si s’obre una porta (si l’alarma està activada o la funció Monitor està activada).
  • Llegiu la darrera vegada que es va obrir o tancar una porta.
  • Compteu el nombre d'obertures que un sensor de porta pot gestionar abans que s'acabi la bateria.

Per exemple, si estem de vacances i el veí entra a regar les plantes, rebo un missatge. Vegeu el vídeo a la introducció.

Els meus elements, regles i fitxers de mapes del lloc d’Openhab són al meu Github. En aquests fitxers també podeu veure el meu sensor de porta del cobert, que utilitza un interruptor de canya amb cable regular i un interruptor de contacte petit (final) d’una impressora 3D a l’obertura del pany (vegeu les imatges).

Aquí es descriu com utilitzar l’acció Telegram a Openhab.

Pas 5: millores i millores addicionals

Millores i millores addicionals
Millores i millores addicionals
Millores i millores addicionals
Millores i millores addicionals

En els darrers mesos vaig fer la següent millora.

Manejar obertures de portes llargues mitjançant un senyal d’impulsos autoconvertibles

A l’estiu, deixem la porta del darrere oberta durant unes hores quan som a casa. L’ESP-01 en funcionament amb connexió WiFi esgotaria innecessàriament la bateria. Per això, he inclòs un interruptor d’encesa / apagada per poder apagar el mòdul en aquestes situacions.

Tanmateix, això de vegades va resultar en un mòdul apagat permanentment (quan vaig oblidar-me d’encendre’l) i una bateria esgotada després d’unes tardes d’una porta oberta i un mòdul en funcionament (quan vaig oblidar apagar-lo).

Per això, volia poder apagar el mòdul mitjançant el programari després que el mòdul estigués encès durant un temps predefinit (1 minut).

No obstant això, on el pols "FET" de l'ESP-01 va apagar el TPL5111 quan la porta estava tancada, vaig descobrir que el TPL5111 no es canviava per un pols "FET" mentre el pin DELAY / M_DRV era ALT. Aquest senyal HIGH del pin DELAY / M_DRV va ser causat per la porta oberta i el contacte NC del commutador reed connectat a la tensió de la bateria.

Per tant, el senyal al pin DELAY / M_DRV no ha de ser contínuament ALTA, sinó que ha de ser pulsada. Al full de dades TPL5111 podeu trobar que ha de tenir un pols> 20 ms. Vaig fer aquest senyal d’autocomutació mitjançant un mosfet de canal P, un condensador i una resistència de 10K i 300K, vegeu l’esquema inclòs.

Funciona de la següent manera:

  • Si el contacte NC del commutador reed està tancat, la porta és BAIXA i el Mosfet està engegat, donant lloc a un senyal ALTA al pin DELAY / M_DRV que activa el mòdul.
  • El condensador es carrega ràpidament, cosa que provoca un augment de la tensió a la porta.
  • Després d'aproximadament 20 ms, el voltatge a la porta és del 97% de la tensió de la bateria (300K / (300K + 10K) que és ALTA i el Mosfet està apagat, cosa que provoca un senyal BAIX al pin DELAY / M_DRV.
  • Quan el pin DELAY / M_DRV és BAIX, el senyal FET de l’ESP-01 comporta l’aturada del mòdul.

Això s’implementa al programari; un loop de temps no només comprova si la porta encara està oberta, sinó que també comprova si el mòdul no està encès massa temps. Si s’activa massa temps, publica un valor NULL (estat no definit de la porta). En aquest cas, no sé si la porta està oberta o tancada i no arribo a tots els objectius esmentats a la presentació, però la durada de la bateria és més important i la majoria de les vegades tornem a obrir la porta més tard aquell dia, donant lloc a un estat tancat confirmat. de la porta.

És important utilitzar un Mosfet de canal P que sigui adequat per al rang de voltatge utilitzat aquí. El Mosfet ha d'estar completament encès a un VGS d'aproximadament - 3,8 V i completament apagat a un VGS d'aproximadament -0,2 V. He provat diversos Mosfets i he descobert que un IRLML6401TRPBF funciona bé per a aquest objectiu en combinació amb les resistències de 10 K i 300 K. Un condensador d’1 uF funciona bé per obtenir una longitud de pols d’uns 20 ms. Un condensador més gran resulta en un impuls més llarg, que no és necessari, ja que el TPL5111 es va activar. Vaig utilitzar el meu oscil·loscopi DSO150 per comprovar les tensions i la longitud de pols.

Millora prevista: actualització OTA

Tinc previst incorporar una actualització OTA mitjançant el següent procediment, que ja està inclòs en part al programari actual

  • A través d'Openhab de NodeRed publico un missatge d'actualització retingut i un tema d'actualització.
  • Si el mòdul està encès i connectat al servidor MQTT i està subscrit al "tema d'actualització", rebrà el missatge d'actualització.
  • El missatge d'actualització evitarà que el mòdul s'apagui i s'iniciï el servidor
  • A través del lloc web de HTTPUpdateServer, podeu actualitzar el programari.
  • Via Openhab de NodeRed publico un missatge "buit" retingut i un "tema d'actualització".

Millora prevista: aturada del maquinari després d'un temps predefinit

En l’esquema actual, faig servir una resistència de 200K entre el DELAY / M_DRV i el GND del TPL5111. Això encén el mòdul durant més de 2 hores (vegeu 7.5.3. Del full de dades TPL5111). Tanmateix, no vull que el mòdul s'encengui tant de temps, perquè la bateria s'esgota. Si la solució de programari (vegeu més amunt) no apaga el mòdul o el missatge d'actualització no desitjat posa el mòdul en mode d'actualització, el mòdul romandrà encès durant molt de temps.

Per tant, és millor utilitzar una resistència més petita entre el DELAY / M_DRV i el GND del TPL5111, de manera que el mòdul s’apaga al cap de poc temps, per exemple, una resistència de 50K que resulta en un temps d’encès de 7 minuts.

Recomanat: