Sommario:

Sensore porta alimentato a batteria con integrazione domotica, WiFi ed ESP-NOW: 5 passaggi (con immagini)
Sensore porta alimentato a batteria con integrazione domotica, WiFi ed ESP-NOW: 5 passaggi (con immagini)

Video: Sensore porta alimentato a batteria con integrazione domotica, WiFi ed ESP-NOW: 5 passaggi (con immagini)

Video: Sensore porta alimentato a batteria con integrazione domotica, WiFi ed ESP-NOW: 5 passaggi (con immagini)
Video: VECCHIO IMPIANTO trasformato in DOMOTICO e SMART SENZA OPERE MURARIE con Yubii Home di NICE 2024, Dicembre
Anonim
Image
Image

In questo tutorial ti mostro come ho realizzato un sensore porta alimentato a batteria con l'integrazione della domotica. Ho visto altri bei sensori e sistemi di allarme, ma volevo crearne uno da solo.

I miei obiettivi:

  • Un sensore che rileva e segnala un'apertura rapida della porta (<5 secondi)
  • Un sensore che rileva la chiusura della porta
  • Un sensore che funziona a batteria e funziona per alcuni mesi con una batteria

L'hardware e il software si ispirano a

  • Il trigger di Kevin Darrah (TPL5111 e TPS73733).
  • Questo video

Ho realizzato un sensore per la mia porta d'ingresso e la mia porta sul retro. L'unica differenza è la posizione del led e l'interruttore di alimentazione esterno (sul sensore backdoor).

Ho apportato diversi miglioramenti durante lo sviluppo in hardware e software, si può vedere nelle foto.

Forniture

Ho acquistato i componenti elettronici da Aliexpress, le parti principali:

  • Batteria LiPo
  • TPS73733 LDO
  • TPL5111
  • Interruttore reed
  • Mosfet canale P: IRLML6401TRPBF
  • Magnete
  • Piastra adattatore PCB per componenti SMD e altro.

Passaggio 1: Hardware - Circuito

Hardware - Circuito
Hardware - Circuito
Hardware - Circuito
Hardware - Circuito
Hardware - Circuito
Hardware - Circuito

Vedere gli schemi allegati per il circuito. Ho saldato le parti SMD su una piastra PCB dell'adattatore e ho saldato tutti i componenti a una scheda perf a doppia faccia. Ho collegato l'ESP-01 tramite intestazioni femminili, quindi ho potuto rimuoverlo per programmarlo tramite l'adattatore mostrato nel passaggio 3 di questo Instructable.

Il circuito funziona come segue:

  • Quando la porta viene aperta, il TPL5111 riceve un colpo al pin DELAY/M_DRV e abilita l'LDO TPS73733 che alimenta l'ESP-01. Per questa operazione, EN/ONE_SHOT deve essere abbassato, vedere la scheda tecnica del TPL5111.
  • Dopo che il programma è stato eseguito (vedere la fase Software), ESP-01 invia un segnale di fine al TPL5111 che disabilita il TPS73733 determinando uno stato di alimentazione molto basso per il TPL5111 e il TPS73733.

Uso interruttori reed con connessioni sia NA che NC. Ho collegato il cavo NC, poiché l'interruttore reed deve chiudere il circuito quando il magnete viene rimosso (porta aperta) e aprire quando il magnete è vicino (porta chiusa).

Per il sensore backdoor ho aggiunto alcuni condensatori e resistori quando ho scoperto alcune instabilità, tuttavia l'instabilità è stata causata dal software (esp_now_init) come ho scoperto in seguito.

Passaggio 2: Hardware - Custodia

Hardware - Custodia
Hardware - Custodia
Hardware - Custodia
Hardware - Custodia
Hardware - Custodia
Hardware - Custodia

Ho progettato la custodia in Autodesk Fusion360, ispirandomi a questo video di "il ragazzo con l'accento svizzero".

I file STL delle tre parti:

  • Scatola
  • Coperchio
  • Porta magnete

sono pubblicati sulla mia pagina Thingiverse.

Passaggio 3: software

Software
Software

Il programma è nel mio Github.

Il flusso del programma è mostrato in figura. Vedi il mio altro Instructable per la spiegazione di come utilizzo ESP-NOW.

Quando il modulo è acceso, prova prima a inviare il messaggio 'OPEN' tramite ESP-NOW. Se ciò non riesce, passa a una connessione WiFi e MQTT.

Ho scoperto che, almeno nella mia configurazione, il messaggio "CHIUSO" non è stato inviato con successo tramite ESP-NOW, quindi l'ho rimosso dal programma e utilizzo solo WiFi e MQTT.

Durante il tempo in cui la porta è aperta e il modulo è in attesa che la porta si chiuda, utilizza questo tempo per connettersi a WiFi e MQTT, quindi quando la porta è chiusa, deve solo inviare la tensione misurata e un messaggio di CHIUSURA e poi va direttamente a dormire.

Il programma verifica se il messaggio chiuso viene ricevuto dal destinatario tramite l'ascolto di un messaggio MQTT sull'argomento giusto.

Fase 4: Domotica e Telegram

Domotica e Telegram
Domotica e Telegram
Domotica e Telegram
Domotica e Telegram
Domotica e Telegram
Domotica e Telegram

I sensori della mia porta comunicano con la mia automazione domestica Openhab sul mio Raspberry Pi Zero.

Principali applicazioni:

  • Leggere lo stato della porta: APERTA o CHIUSA.
  • Avvisami tramite telegramma se viene aperta una porta (se l'allarme è attivato o la funzione Monitor è attivata).
  • Leggi l'ultima volta che una porta è stata aperta o chiusa.
  • Contare il numero di aperture che un sensore porta può gestire prima che la batteria si esaurisca.

Ad esempio, se siamo in vacanza e il vicino entra per innaffiare le piante, ricevo un messaggio. Guarda il video nell'introduzione.

I miei elementi, regole e file della mappa del sito Openhab sono nel mio Github. In questi file puoi anche vedere il mio sensore della porta del capannone, che utilizza un normale interruttore reed cablato e un piccolo interruttore di contatto (fine) da una stampante 3D nell'apertura della serratura (vedi foto).

Come utilizzare l'azione Telegram in Openhab è descritto qui.

Passaggio 5: miglioramenti e ulteriori miglioramenti

Miglioramenti e ulteriori miglioramenti
Miglioramenti e ulteriori miglioramenti
Miglioramenti e ulteriori miglioramenti
Miglioramenti e ulteriori miglioramenti

Negli ultimi mesi ho apportato il seguente miglioramento.

Gestire le aperture delle porte lunghe tramite un segnale a impulsi autocommutante

In estate, quando siamo a casa, lasciamo aperta la porta sul retro per alcune ore. L'ESP-01 in esecuzione con una connessione WiFi scaricherà inutilmente la batteria. Per questo ho incluso un interruttore on/off per poter spegnere il modulo in queste situazioni.

Tuttavia, questo a volte ha provocato un modulo spento permanentemente (quando ho dimenticato di accenderlo) e una batteria scarica dopo alcuni pomeriggi di una porta aperta e un modulo in funzione (quando ho dimenticato di spegnerlo).

Pertanto volevo essere in grado di spegnere il modulo tramite il software dopo che il modulo è rimasto acceso per un tempo predefinito (1 minuto).

Tuttavia, dove l'impulso "FATTO" dell'ESP-01 ha spento il TPL5111 quando la porta era chiusa, ho scoperto che il TPL5111 non è stato spento da un impulso "FATTO" mentre il pin DELAY/M_DRV era ALTO. Questo segnale ALTO sul pin DELAY/M_DRV è stato causato dalla porta aperta e dal contatto NC dell'interruttore reed collegato alla tensione della batteria.

Quindi, il segnale al pin DELAY/M_DRV non dovrebbe essere continuamente ALTO, ma dovrebbe essere pulsato. Nella scheda tecnica TPL5111 puoi trovare che dovrebbe essere un impulso di > 20 ms. Ho realizzato questo segnale di autocommutazione tramite un mosfet a canale P, un condensatore e un resistore da 10K e 300K, vedere lo schema incluso.

Funziona come segue:

  • Se il contatto NC dell'interruttore reed è chiuso, il Gate è BASSO e il Mosfet è acceso, determinando un segnale ALTO sul pin DELAY/M_DRV che attiva il modulo.
  • Il condensatore viene caricato rapidamente, determinando un aumento della tensione sul Gate.
  • Dopo circa 20 ms, la tensione sul Gate è il 97% della tensione della batteria (300K/(300K+10K) che è HIGH e il Mosfet è spento, risultando in un segnale LOW sul pin DELAY/M_DRV.
  • Quando il pin DELAY/M_DRV è LOW, il segnale DONE dell'ESP-01 provoca l'arresto del modulo.

Questo è implementato nel software; un ciclo while non solo controlla se la porta è ancora aperta, ma controlla anche se il modulo non è stato acceso troppo a lungo. Se acceso troppo a lungo pubblica un valore NULL (stato della porta indefinito). In questo caso non so se la porta è aperta o chiusa e non raggiungo tutti gli obiettivi menzionati nell'introduzione, ma la durata della batteria è più importante e la maggior parte delle volte apriamo di nuovo la porta più tardi quel giorno, risultando in uno stato di chiusura confermato della porta.

È importante utilizzare un Mosfet a canale P adatto all'intervallo di tensione qui utilizzato. Il Mosfet deve essere completamente acceso a un VGS di circa -3,8 V e completamente spento a un VGS di circa -0,2 V. Ho provato diversi Mosfet e ho scoperto che un IRLML6401TRPBF funziona bene per questo obiettivo in combinazione con i resistori da 10K e 300K. Un condensatore da 1 uF funziona bene per ottenere una lunghezza dell'impulso di circa 20 ms. Un condensatore più grande si traduce in un impulso più lungo, che non è necessario, poiché il TPL5111 è stato attivato. Ho usato il mio oscilloscopio DSO150 per controllare le tensioni e la lunghezza dell'impulso.

Miglioramento pianificato: aggiornamento OTA

Ho intenzione di incorporare un aggiornamento OTA tramite la seguente procedura, che è già in parte incluso nel software attuale

  • Tramite Openhab di NodeRed pubblico un messaggio di "aggiornamento" mantenuto e un "argomento di aggiornamento".
  • Se il modulo è acceso e connesso al server MQTT e sottoscritto all''argomento aggiornamento', riceve il messaggio di aggiornamento.
  • Il messaggio di aggiornamento impedirà lo spegnimento del modulo e avvierà
  • Tramite il sito Web di HTTPUpdateServer è possibile aggiornare il software.
  • Tramite Openhab di NodeRed pubblico un messaggio "vuoto" trattenuto e un "argomento di aggiornamento".

Miglioramento pianificato: spegnimento dell'hardware dopo un tempo predefinito

Nello schema attuale, utilizzo un resistore da 200K tra DELAY/M_DRV e GND del TPL5111. Questo accende il modulo per più di 2 ore (vedi 7.5.3. del datasheet TPL5111). Tuttavia, non voglio che il modulo sia acceso così a lungo, perché la batteria si scarica. Se la soluzione software (vedi sopra) non riesce a spegnere il modulo, o il messaggio di aggiornamento non intenzionale imposta il modulo nella modalità di aggiornamento, il modulo rimane acceso per lungo tempo.

Pertanto è meglio utilizzare un resistore più piccolo tra DELAY/M_DRV e GND del TPL5111, in modo che il modulo venga spento dopo poco tempo, ad esempio un resistore da 50K con conseguente attivazione di 7 minuti.

Consigliato: