Un frigorifero qualsiasi diventa un dispositivo connesso e intelligente grazie a una scheda Seeed Studio XIAO ESP32C3 da circa 5 dollari e a un sensore DHT22. Il progetto di Hunter McGuire campiona la temperatura ogni 5 secondi, conserva una finestra di 30 minuti di dati sulla flash e pubblica statistiche al minuto. Il codice MicroPython è di circa 60 righe e il costo totale è di circa 10 dollari.
La scheda XIAO ESP32C3 misura 21 x 17.5 mm e monta un chip ESP32-C3 con 400 KB di SRAM e 4 MB di flash. Al boot la memoria heap libera è di 172.3 KB. Il client Tendrl occupa 25.5 KB di heap, quindi all’applicazione restano 146.8 KB. L’importazione dell’SDK richiede 152 ms. Il sensore DHT22 viene interrogato ogni 5 secondi, e una lettura su sei, quindi una ogni 30 secondi, finisce nel database.
Il database locale e l’anello buffer
Il cuore del progetto è MicroTetherDB, un database che usa un BTree sulla flash del chip. I dati storici restano sulla scheda, senza dipendere dal cloud. Il database contiene 60 record e occupa 11.4 KB di heap. Un criterio di espulsione ‘max_records’ elimina i record più vecchi e mantiene la memoria sotto controllo.
In parallelo, un anello buffer in RAM conserva tutte le letture degli ultimi 30 minuti. Contiene 360 float e occupa 1.4 KB. Grazie a questo buffer, la scheda calcola le statistiche al minuto senza interrogare il database. Infatti, una query al database costa circa 23 KB di heap transitorio, mentre l’applicazione ha circa 58 KB di heap disponibile per le query.
- Campionamento del sensore ogni 5 secondi: 17.280 letture al giorno
- Salvataggio nel database ogni 30 secondi: 60 record per la finestra di 30 minuti
- Pubblicazione di un riepilogo al minuto: 1.440 messaggi al giorno, il 92% in meno
- Soglia di allarme predefinita per l’escursione termica: 7.0 gradi Fahrenheit
Statistiche al minuto e soglie di allarme
Ogni 60 secondi, la scheda pubblica un messaggio di riepilogo con la temperatura media, minima, massima, l’escursione termica e il conteggio dei cicli del compressore. Tutto viene calcolato localmente, senza inviare i dati grezzi. Il cloud può comunque richiedere la finestra di 30 minuti di dati grezzi, circa 0.4 KB per 60 letture, e la scheda risponde dal suo storage locale.
Una nuova soglia di allarme può essere inviata alla scheda, che la salva in un file JSON sulla flash. Così la configurazione sopravvive a un taglio di corrente. Il progetto finale mostra un vero frigorifero con la scheda fuori dalla guarnizione della porta e i cavi del sensore che passano sopra il frigorifero. Chi vuole approfondire può seguire il racconto di Hunter McGuire sul suo sito.

La scheda XIAO ESP32C3 è una piattaforma molto compatta per l’IoT. Chi volesse sperimentare con un chip più recente può guardare al kit ESP32-C6-Zero, che integra Wi-Fi 6 e periferiche per lo sviluppo di progetti connessi. Per questo progetto, però, la XIAO ESP32C3 resta la scelta naturale, anche per il costo contenuto.
Il codice MicroPython usa la libreria MicroTetherDB e il client Tendrl. L’intero progetto dimostra come un microcontrollore economico possa mantenere la propria storia dati localmente, calcolare statistiche complesse e rispondere a richieste specifiche. Il traffico di rete si riduce drasticamente e la dipendenza dal cloud diminuisce. Il sito di Hunter McGuire raccoglie i dettagli del progetto per chi vuole replicarlo.
Fonte: https://tendrl.com/blog/xiao-esp32c3-keeps-its-own-history/
