Sommario:
- Forniture
- Passaggio 1: schemi e codice sorgente
- Passaggio 2: funzionamento del circuito
- Passaggio 3: controllo dello stato di salute
- Passaggio 4: misurazioni della potenza e durata della batteria
- Passaggio 5: miglioramenti futuri
Video: Sensore porta wireless - Potenza ultra bassa: 5 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:00
L'ennesimo sensore porta!! Bene, la motivazione per me per creare questo sensore è stata che molti di quelli che ho visto su Internet avevano una limitazione o l'altra. Alcuni degli obiettivi del sensore per me sono:
1. Il sensore dovrebbe essere molto veloce, preferibilmente meno di 5 secondi
2. Il sensore dovrebbe funzionare con una batteria agli ioni di litio da 3,7 V poiché ne ho dozzine in giro
3. Il sensore dovrebbe funzionare per molti mesi con una singola carica della batteria. Dovrebbe consumare < 10uA in modalità di sospensione
4. Il sensore dovrebbe essere in grado di attivarsi per la trasmissione di dati critici come lo stato della batteria anche quando la porta non viene utilizzata per molto tempo.
5. Il sensore dovrebbe trasmettere i dati a un argomento MQTT quando la porta è aperta e quando la porta è chiusa
6. Il sensore dovrebbe consumare la stessa quantità di energia indipendentemente dallo stato della porta
Funzionamento del sensore:
Il sensore ha 2 controller principali. Il primo è il minuscolo microcontrollore ATiny 13A. Il secondo è l'ESP che di solito è in modalità di sospensione e si attiva solo quando l'ATiny lo abilita. L'intero circuito può essere realizzato anche dal solo ESP utilizzandolo in modalità sleep ma la corrente che consuma è di gran lunga maggiore di quella necessaria per far durare una batteria per mesi quindi l'ATTiny viene in soccorso. Ha solo lo scopo di svegliarsi ogni N secondi, cercare un evento porta o un evento di controllo dello stato, se ce n'è uno, tiene il pin CH_PD dell'ESP su ALTO e invia il segnale appropriato del tipo di evento all'ESP. Il suo ruolo finisce qui.
L'ESP quindi prende il sopravvento, legge il tipo di segnale, si connette a WiFi/MQTT, pubblica i messaggi richiesti compreso il livello della batteria e quindi si spegne riportando il pin EN su LOW.
Usando questi chip in questo modo sfrutto la bassa corrente di sospensione dell'ATtiny e la corrente di riposo zero dell'ESP quando il chip è disabilitato tramite il pin CH_PD.
Forniture
Pre-richiesta:
- Conoscenza della programmazione di un ATTiny & ESP 01
- Conoscenza dei componenti di saldatura su un PCB
ESP-01 (o qualsiasi ESP)
ATTiny 13A - AVR
LDO 7333-A - Regolatore di tensione Low Dropout
Resistori - 1K, 10K, 3K3
Condensatori: 100uF, 0.1 uF
Interruttore a pulsante, micro interruttore ON/OFF - (entrambi opzionali)
Diodo - IN4148 (o qualsiasi equivalente)
Batteria agli ioni di litio
Interruttore Reed
Un caso per ospitare tutto
Saldatura, PCB ecc
Passaggio 1: schemi e codice sorgente
Lo schema è come mostrato nello schema allegato.
Ho incluso un MOSFET a canale P per la protezione dall'inversione di polarità. Se non ne hai bisogno, puoi ometterlo. Qualsiasi MOSFET a canale P con Rds ON basso andrà bene.
Al momento l'ESP non ha la capacità di OTA, ma questo è per miglioramenti futuri.
Codice sorgente smart-door-sensor
Passaggio 2: funzionamento del circuito
ATTiny Flusso di lavoro
La magia qui avviene nel modo in cui ATTiny monitora la posizione dell'interruttore della porta.
L'opzione normale sarebbe quella di collegare un resistore di pull-up all'interruttore e continuare a monitorarlo. Questo ha lo svantaggio della corrente costante consumata dal resistore di pull-up. Il modo in cui questo è stato evitato qui è che ho usato due pin per monitorare l'interruttore anziché uno. Ho usato PB3 e PB4 qui. PB3 è definito come input e PB4 come output con un INPUT_PULLUP interno su PB3. Normalmente PB4 è tenuto ALTO quando ATtiny è in modalità di sospensione. Ciò garantisce che non vi sia alcun flusso di corrente attraverso il resistore di pull-up di ingresso indipendentemente dalla posizione dell'interruttore reed. cioè. Se l'interruttore è chiuso, sia PB3 che PB4 sono ALTI e quindi nessuna corrente scorre tra di loro. Se l'interruttore è aperto, non c'è percorso tra di loro e quindi la corrente è zero. Quando l'ATtiny si sveglia scrive un LOW su PB4 e poi controlla lo stato di PB3. Se PB3 è ALTO, l'interruttore reed è APERTO altrimenti è CHIUSO. Quindi riscrive un HIGH su PB4.
La comunicazione tra ATtiny ed ESP avviene tramite due pin PB1 / PB2 collegati a Tx/RX di ESP. Ho definito il segnale come
PB1 PB2 ====== Tx Rx
0 0 ====== WAKE_UP (controllo dello stato di salute)
0 1 ====== SENSOR_OPEN
1 0 ====== SENSORE_CHIUSO
1 1 ====== NON UTILIZZATO
Oltre a inviare il segnale all'ESP, invia anche un impulso HIGH su PB0 che è collegato al pin CH_PD dell'ESP. Questo riattiva l'ESP. La prima cosa che ESP fa per mantenere GPIO0 HIGH che è collegato a CH_PD garantendo così i suoi poteri anche se l'ATTiny toglie il PB0 HIGH. Il controllo ora è con l'ESP per determinare quando vuole spegnere.
Quindi si connette a WiFi, MQTT, pubblica il messaggio e si spegne scrivendo LOW su GPIO0.
ESP 01 Flusso di lavoro:
Il flusso ESP è diretto. Si sveglia e legge i valori dei pin Tx/Rx per determinare quale tipo di messaggio deve essere pubblicato. Si connette a WiFi e MQTT, pubblica il messaggio e si spegne.
Prima di spegnere, controlla nuovamente i valori dei pin di input per vedere se sono cambiati dall'ultima lettura. Questo per occuparsi di una rapida apertura e chiusura della porta. Se non hai questo controllo, in alcuni casi potresti perdere la chiusura della porta se viene chiusa entro 5-6 secondi dall'apertura. Uno scenario pratico della porta che viene aperta e chiusa entro 2 secondi circa è ben catturato dal ciclo while che continua a inviare i messaggi finché lo stato attuale della porta è diverso da quello precedente. L'unico scenario che potrebbe mancare per registrare tutti gli eventi di apertura/chiusura è quando la porta viene aperta/chiusa ripetutamente entro una finestra di 4-5 secondi, il che è un caso molto improbabile, probabilmente un caso di un bambino che gioca con la porta.
Passaggio 3: controllo dello stato di salute
Avevo anche bisogno di un modo per avere un messaggio di controllo dello stato dall'ESP in cui invia anche il livello della batteria dell'ESP per garantire che il sensore funzioni correttamente senza ispezione manuale. Per questo l'ATTiny invia un segnale WAKE_UP ogni 12 ore. Può essere configurato tramite la variabile WAKEUP_COUNT nel codice ATtiny. Questo è molto utile per porte o finestre che vengono aperte raramente e quindi potresti non sapere se qualcosa non va nel sensore o nella sua batteria.
Nel caso in cui non sia necessaria la funzionalità di controllo dello stato, l'intero concetto di utilizzo di ATTiny non è necessario. In tal caso puoi trovare altri progetti creati da persone in cui l'alimentazione all'ESP viene alimentata tramite un MOSFET e quindi puoi ottenere un assorbimento di corrente zero quando la porta non viene azionata. Ci sono altre cose di cui occuparsi come l'assorbimento di corrente per essere lo stesso in posizione porta aperta e porta chiusa - per questo da qualche parte ho visto un progetto che utilizzava un interruttore reed a 3 stati invece del solito stato 2.
Passaggio 4: misurazioni della potenza e durata della batteria
Ho misurato il consumo di corrente del circuito e ci vogliono ~30uA quando si dorme e in giro. Seguendo le schede tecniche di ATTiny, dovrebbe essere circa 1-4 uA per l'intero circuito inclusa la corrente di riposo dell'LDO, ma poi le mie misurazioni mostrano 30. Il MOSFET e l'LDO consumano corrente insignificante.
Quindi una batteria da 800 mAH dovrebbe durare a lungo. Non ho statistiche esatte ma lo sto usando su 2 delle mie porte da più di un anno e ogni cella 18650 con circa 800 mAH rimasta in esse dura circa 5-6 mesi sulla mia porta principale che si apre e si chiude a almeno 30 volte al giorno. Quello sulla porta del tetto che si apre solo poche volte in una settimana, dura 7-8 mesi.
Passaggio 5: miglioramenti futuri
1. L'ESP non riconosce la consegna del messaggio MQTT. Il programma può essere migliorato iscrivendosi all'argomento pubblica il messaggio per confermare la consegna oppure è possibile utilizzare una libreria Async MQTT per inviare un messaggio con QoS 1.
2. Aggiornamento OTA: il codice ESP può essere modificato per leggere un argomento MQTT per un aggiornamento e quindi entrare in modalità OTA per ricevere un file.
3. ESP01 può essere sostituito con ESP-12 per accedere a più PIN di input e quindi collegare più sensori allo stesso. In tal caso la comunicazione tramite il metodo a 2 bit non è possibile. Questo può quindi essere migliorato per implementare la comunicazione I2C tra ATtiny ed ESP. Questo è un po 'complicato ma praticabile. Lo faccio funzionare in un'altra configurazione in cui un ATTiny invia i valori dell'encoder rotativo all'ESP sulla linea I2C.
4. Il circuito di corrente monitora il Vcc interno dell'ESP. Se usiamo ESP12, questo può essere modificato per leggere il livello effettivo della batteria tramite il pin ADC.
5. In futuro posterò anche una modifica a questo che può essere utilizzato come sensore autonomo senza la necessità di un MQTT o di qualsiasi sistema di automazione domestica. Il sensore funzionerà autonomamente e può effettuare una telefonata quando viene attivato - ovviamente ha bisogno di una connessione Internet per questo.
6. E l'elenco potrebbe continuare…
7. Protezione inversa della batteria - FATTO (le immagini effettive del dispositivo sono vecchie e quindi non riflettono il MOSFET)
Consigliato:
Sensore per porta e serratura del capannone alimentato a batteria, solare, ESP8266, ESP-Now, MQTT: 4 passaggi (con immagini)
Sensore per porta e serratura del capannone alimentato a batteria, solare, ESP8266, ESP-Now, MQTT: In questo Instructable ti mostro come ho realizzato un sensore alimentato a batteria per monitorare la porta e lo stato di blocco del mio capannone per biciclette remoto. Non ho alimentazione di rete, quindi l'ho alimentato a batteria. La batteria viene caricata da un piccolo pannello solare. Il modulo è d
Streaming video HD 4G/5G live da DJI Drone a bassa latenza [3 passaggi]: 3 passaggi
Streaming video HD 4G/5G live da DJI Drone a bassa latenza [3 passaggi]: la seguente guida ti aiuterà a ottenere streaming video live di qualità HD da quasi tutti i droni DJI. Con l'aiuto dell'app mobile FlytOS e dell'applicazione web FlytNow, puoi avviare lo streaming video dal drone
Trasformare la porta USB delle schede basate su SAMD21 in una porta seriale hardware!: 3 passaggi
Trasformare la porta USB delle schede basate su SAMD21 in una porta seriale hardware!: Oggigiorno è standard utilizzare una porta USB di una scheda Arduino (o qualsiasi altra compatibile) come porta seriale emulata. Questo è molto utile per il debug, l'invio e la ricezione di dati dalle nostre adorabili schede. Stavo lavorando su uChip quando, esaminando il datash
Misuratore di resistenza ohmica bassa con sensore di corrente INA219: 5 passaggi
Misuratore di resistenza ohmica bassa con sensore di corrente INA219: questo è un misuratore di milliohm a basso costo che può essere assemblato utilizzando il sensore di corrente 2X INA219, Arduino nano, display LCD 2X16, resistenza di carico da 150 Ohm e semplice codice Arduino che la libreria può essere trovata online . La bellezza di questo progetto non è pre
Chi c'è alla mia porta? Progetto sensore di movimento PIR/sensore di portata: 5 passaggi
Chi c'è alla mia porta? Progetto sensore di movimento PIR/sensore di portata: il nostro progetto ha lo scopo di rilevare il movimento tramite sensori PIR e di distanza. Il codice Arduino emetterà un segnale visivo e audio per dire all'utente che qualcuno è vicino. Il codice MATLAB invierà un segnale e-mail per avvisare l'utente che qualcuno è vicino. Questo dispositivo