Sommario:
- Forniture
- Passaggio 1: Hardware - Circuito
- Passaggio 2: Hardware - Custodia
- Passaggio 3: software
- Fase 4: Domotica e Telegram
- Passaggio 5: miglioramenti e ulteriori miglioramenti
Video: Sensore porta alimentato a batteria con integrazione domotica, WiFi ed ESP-NOW: 5 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
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
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
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
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
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
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:
Sensore di livello del collettore d'acqua alimentato a batteria: 7 passaggi (con immagini)
Sensore di livello del collettore d'acqua alimentato a batteria: La nostra casa dispone di un serbatoio dell'acqua alimentato dalla pioggia che cade sul tetto e utilizzato per il wc, la lavatrice e l'irrigazione delle piante in giardino. Negli ultimi tre anni le estati sono state molto secche, quindi abbiamo tenuto d'occhio il livello dell'acqua nel serbatoio. S
Sensore di umidità per fiori IOT WiFi (alimentato a batteria): 8 passaggi (con immagini)
Sensore di umidità per fiori WiFi IOT (alimentato a batteria): in questo tutorial presentiamo come costruire un sensore di umidità/acqua WiFi con un monitor del livello della batteria in meno di 30 minuti. Il dispositivo monitora il livello di umidità e invia i dati a uno smartphone tramite Internet (MQTT) con un intervallo di tempo prescelto. tu
Sensore porta IOT - Basato su Wi-Fi, alimentato con 2 batterie AAA: 6 passaggi
Sensore porta IOT - Basato su Wi-Fi, alimentato con 2 batterie AAA: In questo tutorial presentiamo come puoi facilmente costruire un sensore porta Wi-Fi alimentato a batteria con modulo Wi-Fi IOT Cricket. Mostriamo anche come integrare i messaggi di Cricket con IFTTT (o qualsiasi altro servizio incluso Home Assistant, MQTT o Webhooks
ESP IoT alimentato a batteria: 10 passaggi (con immagini)
ESP IoT alimentato a batteria: queste istruzioni mostrano come creare una base ESP IoT alimentata a batteria sul design nelle mie istruzioni precedenti
Design ESP alimentato a batteria: 3 passaggi (con immagini)
Design ESP alimentato a batteria: queste istruzioni mostrano come ridurre l'utilizzo della batteria durante lo sviluppo di dispositivi IoT basati su ESP non cablati