Chi vuole costruire un sensore di temperatura connesso, un pulsante Wi-Fi o un piccolo controller per l'irrigazione finisce quasi sempre sullo stesso componente: l'ESP32. È un microcontrollore prodotto da Espressif che integra Wi-Fi e Bluetooth in un chip economico, e attorno a cui si è formata una comunità enorme di librerie, esempi e progetti già pronti.
Che cos'è un microcontrollore
Un microcontrollore è un piccolo computer su un solo chip, con processore, memoria e periferiche, ma senza un sistema operativo tradizionale. Esegue un unico programma, si avvia in una frazione di secondo e consuma pochissimo. È la scelta naturale per compiti semplici e continui: leggere un sensore, accendere un relè, inviare un dato in rete.
ESP32, Arduino e Raspberry Pi a confronto
| Caratteristica | ESP32 | Arduino classico | Raspberry Pi |
|---|---|---|---|
| tipo | microcontrollore | microcontrollore | computer completo |
| sistema operativo | no | no | Linux |
| Wi-Fi e Bluetooth | integrati | di norma assenti | integrati |
| consumo | basso, bassissimo in sleep | basso | alto in confronto |
| avvio | istantaneo | istantaneo | decine di secondi |
| uso ideale | sensori e attuatori connessi | elettronica didattica | server, interfacce, elaborazione |
L'ESP32 sta in mezzo: semplice come un Arduino, ma già pronto per la rete. Esistono diverse varianti della famiglia, con caratteristiche differenti: alcune hanno più core, altre supportano il Bluetooth Low Energy soltanto, altre ancora la radio per Thread e Zigbee. Prima di comprare una scheda conviene verificare quale chip monta.
Come si programma
Le strade principali sono quattro.
- Arduino IDE o PlatformIO, scrivendo codice in C++ con le librerie della comunità Arduino. È il percorso più documentato.
- ESP-IDF, il framework ufficiale del produttore, più completo e più complesso.
- MicroPython, per chi preferisce Python e vuole provare il codice in modo interattivo.
- ESPHome, che non richiede di scrivere codice: si descrive il dispositivo in un file YAML e lo strumento genera e carica il firmware.
Per un progetto domotico ESPHome è spesso la scelta più rapida. Un sensore di temperatura e umidità si descrive in poche righe:
esphome:
name: sensore-camera
esp32:
board: esp32dev
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
sensor:
- platform: dht
pin: GPIO4
temperature:
name: "Temperatura camera"
humidity:
name: "Umidità camera"
update_interval: 60s
Dopo il primo caricamento via USB, gli aggiornamenti successivi possono essere inviati via Wi-Fi.
Alimentazione e batteria
Un ESP32 sempre connesso al Wi-Fi consuma troppo per durare a lungo con una batteria. La soluzione è il deep sleep: il chip si spegne quasi del tutto, si risveglia dopo un intervallo prestabilito o al cambio di stato di un pin, legge il sensore, invia il dato e torna a dormire.
Qualche indicazione concreta:
- ridurre la frequenza di invio: un dato ogni dieci minuti invece che ogni dieci secondi cambia radicalmente l'autonomia;
- usare un indirizzo IP statico, che accorcia il tempo di connessione al risveglio;
- scegliere schede progettate per il basso consumo: molte schede di sviluppo hanno LED e regolatori di tensione che consumano anche in sleep;
- per alimentazione a batteria al litio, usare un circuito di protezione e di ricarica adeguato.
Errori comuni dei principianti
- Collegare sensori a 5 V: i pin dell'ESP32 lavorano a 3,3 V. Un segnale a 5 V può danneggiarli.
- Usare pin riservati: alcuni GPIO hanno funzioni particolari all'avvio o sono collegati alla memoria flash. Le tabelle dei pin della propria scheda vanno consultate prima di saldare.
- Alimentazione insufficiente: durante la trasmissione Wi-Fi il consumo ha dei picchi. Un cavo USB scadente o un alimentatore debole causano riavvii casuali.
- Password nel codice: credenziali scritte in chiaro finiscono facilmente in un repository pubblico. Meglio un file separato di segreti, escluso dal controllo versione.
Un progetto di partenza concreto
Un buon primo progetto è un sensore di temperatura per una stanza: una scheda ESP32, un sensore digitale, tre fili e ESPHome. In un pomeriggio si ottiene un dispositivo che invia i dati al proprio hub domotico, senza cloud esterni. Da lì si passa naturalmente a relè, pulsanti, display e sensori di presenza, riutilizzando le stesse basi.
In sintesi
- L'ESP32 è un microcontrollore economico con Wi-Fi e Bluetooth integrati, ideale per l'IoT domestico.
- Si programma con Arduino, ESP-IDF, MicroPython o, senza codice, con ESPHome.
- Il deep sleep è indispensabile per i progetti alimentati a batteria.
- I pin lavorano a 3,3 V e alcuni sono riservati: verificare sempre prima di collegare.
- Un sensore di temperatura locale è un ottimo primo progetto per imparare.