Monitoraggio Radioattività IoT: Guida al Contatore Geiger con ESPHome e Home Assistant

Dopo il successo del nostro progetto scolastico per BergamoScienza e l’esplorazione dell’AI su Raspberry Pi 5, facciamo un salto di qualità nella domotica scientifica. Passiamo dal semplice kit da laboratorio a una sentinella IoT sempre connessa, capace di monitorare il fondo radioattivo naturale 24 ore su 24, 7 giorni su 7.

In questa guida pratica vedremo come configurare un contatore Geiger (basato su hardware CAJOE) utilizzando la LilyGo T-Display e la potenza di ESPHome per realizzare un vero sensore IoT di radioattività ambientale, integrabile istantaneamente in Home Assistant.

Segnaliamo un approccio alternativo, basato sull’OPEN DATA, per integrare nel dashboard Home Assistant le misure della radioattività ambientale disponibili su EURDEP : Radioattività in Home Assistant senza hardware • Henrik Sozzi TECH


Che cos’è ESPHome?

ESPHOME

Se hai mai programmato un ESP32 con l’IDE di Arduino, sai benissimo che gestire la connessione WiFi, i protocolli MQTT e le librerie per i display può diventare rapidamente un file complesso fatto di centinaia di righe di codice C(++).

ESPHome ribalta completamente questo paradigma. È un sistema open-source che permette di creare firmware personalizzati per ESP32/ESP8266 semplicemente scrivendo un file di configurazione YAML — un formato testuale leggibile e intuitivo. Non scrivi codice complesso: dichiari cosa hai collegato ai pin del tuo microcontrollore e il sistema genera il firmware per te.

I vantaggi di ESPHome per i Maker

  • Velocità di sviluppo: Firmware pronti in pochi minuti, senza preoccuparsi delle dipendenze delle librerie.
  • Integrazione nativa con Home Assistant: Il dispositivo viene riconosciuto automaticamente come nuova integrazione — zero configurazione manuale.
  • Aggiornamenti OTA (Over-The-Air): Dopo il primo flash via USB, aggiorni il firmware del tuo Geiger direttamente via WiFi. Niente più cavi.
  • Gestione WiFi robusta: ESPHome gestisce automaticamente riconnessioni e problemi di rete, rendendo il dispositivo affidabile per un monitoraggio continuo.

Sviluppo Assistito dall’AI: Il Ruolo di Claude Code

L’AI come “Compagno di Banco”: Esempi pratici con Claude Code

Claude code esempio terminal

A differenza dei chatbot tradizionali, Claude Code opera direttamente nel terminale e ha accesso ai file del progetto. Ecco alcuni esempi di prompt che abbiamo utilizzato per raffinare il firmware del contatore Geiger e che puoi replicare per i tuoi progetti.

1. Configurazione del Pinout (Hardware Awareness)

Invece di cercare lo schema della LilyGo T-Display su Google, abbiamo chiesto a Claude:

“Configura i pin SPI per il display ST7789 su una LilyGo T-Display S3 all’interno del file geiger.yaml. Assicurati che i pin CS, DC e Reset corrispondano alla documentazione ufficiale.”

2. Logica di Filtraggio Dati

I dati di un contatore Geiger sono per natura “nervosi”. Per stabilizzare la lettura senza perdere precisione, abbiamo usato questo prompt:

“Modifica il sensore pulse_counter nel file YAML: aggiungi un filtro di media mobile (sliding window) su 10 campioni e crea un sensore ‘copy’ che converta il valore in µSv/h usando il fattore 151. Formatta il risultato con 3 decimali.”

3. Design dell’Interfaccia Grafica

Scrivere il codice C++ (lambda) per disegnare su un display può essere frustrante. Abbiamo risolto così:

“Scrivi la sezione ‘display’ per mostrare il valore in µSv/h al centro dello schermo con un font grande, e i CPM in basso a sinistra con un font piccolo. Aggiungi un titolo ‘RADIAZIONI’ in alto.”

4. Debugging e Validazione

Se ESPHome restituisce un errore di compilazione, basta passare l’errore a Claude:

“ESPHome restituisce un errore di validazione sulla riga 45 del file geiger.yaml riguardo a ‘unit_of_measurement’. Analizza il file e correggi la sintassi secondo lo schema aggiornato di ESPHome.”

Perché questo workflow cambia tutto?

L’uso di Claude Code trasforma il Maker in un “Direttore d’Orchestra”. Non perdi più ore a cercare una virgola fuori posto o il nome esatto di una variabile: descrivi l’intento logico e l’AI si occupa della sintassi specifica di ESPHome.

Questo permette di concentrarsi sulla parte più divertente: sperimentare con l’hardware e analizzare i dati scientifici.


Tutorial: Configurazione del Software con ESPHome

Il file di riferimento che utilizzeremo è esphome-lilygo-tdisplay-cajoe-geiger.yaml, disponibile nel repository ufficiale del FabLab Bergamo su GitHub.

1. Il Sensore: Configurazione del Pulse Counter

Il cuore del sistema è il componente pulse_counter. Il tubo Geiger genera un impulso elettrico per ogni particella ionizzante rilevata; ESPHome conta questi eventi e calcola i CPM (Counts Per Minute), ovvero la misura grezza della radioattività rilevata.

sensor:
  - platform: pulse_counter
    pin:
      number: GPIO12  # Uscita "VIN" del kit Geiger CAJOE
      inverted: true
      mode: INPUT_PULLUP
    unit_of_measurement: 'CPM'
    name: "Radiazioni CPM"
    update_interval: 60s
    id: geiger_cpm

2. Conversione Scientifica in µSv/h

Per rendere il dato comprensibile e confrontabile con gli standard internazionali, convertiamo i CPM nell’unità di misura della dose equivalente. Per i tubi cinesi J305/M401 montati sui kit CAJOE, il fattore di conversione standard è 151.

La formula applicata è:

µSv/h = CPM ÷ 151

  - platform: copy
    source_id: geiger_cpm
    name: "Livello Radiazioni"
    unit_of_measurement: "µSv/h"
    accuracy_decimals: 3
    filters:
      # Calibrazione specifica per il tubo J305/M401
      - lambda: return x / 151.0;
      # Media mobile per stabilizzare il grafico ed eliminare i falsi picchi
      - sliding_window_moving_average:
          window_size: 10
          send_every: 1
    id: geiger_value

3. Visualizzazione sul Display Integrato

Grazie al driver st7789v integrato in ESPHome, configurare la visualizzazione sullo schermo TFT della LilyGo T-Display è sorprendentemente semplice. Il codice seguente mostra i valori aggiornati in tempo reale:

display:
  - platform: st7789v
    backlight_pin: GPIO4
    # Configurazione pin SPI della LilyGo T-Display
    cs_pin: GPIO5
    dc_pin: GPIO16
    reset_pin: GPIO23
    lambda: |-
      it.printf(0, 0, id(font_title), "RADIAZIONI");
      it.printf(0, 40, id(font_value), "%.3f uSv/h", id(geiger_value).state);
      it.printf(0, 100, id(font_small), "CPM: %.0f", id(geiger_cpm).state);

Integrazione in Home Assistant

Una volta completato il flash del firmware via USB, apri la dashboard di Home Assistant: riceverai automaticamente una notifica che ti invita a configurare il nuovo dispositivo. Da quel momento potrai sfruttare l’intero ecosistema di automazione:

  • Grafici storici: Analizza come varia la radioattività di fondo nel tempo e individua eventuali anomalie con i grafici integrati di Home Assistant.
  • Automazioni smart: Ad esempio, invia una notifica push sullo smartphone se il livello supera la soglia di attenzione di 0,5 µSv/h, o fai lampeggiare le luci di casa in rosso.
  • Monitoraggio remoto: Controlla lo stato radiologico della tua zona ovunque tu sia, tramite l’app ufficiale di Home Assistant.
EspHome ESP32 Geiger radioattività monitoraggio ambientale

Conclusione: Dal Prototipo Didattico al Sensore IoT Permanente

Trasformare un progetto didattico in un dispositivo IoT sempre attivo è il modo migliore per testare sul campo le proprie competenze di elettronica e programmazione embedded. Grazie a strumenti come ESPHome e al supporto dell’intelligenza artificiale, la barriera tra idea e prototipo funzionante non è mai stata così sottile.

Vuoi costruire il tuo contatore Geiger IoT?

Ti aspettiamo al FabLab Bergamo per saldare i componenti, programmare il tuo ESP32 e discutere insieme dei prossimi sviluppi — come la realizzazione di un case stagno in stampa 3D per installazioni permanenti all’esterno.

Link Utili

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. Per maggiori informazioni.

Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo. Privacy Policy di FABLAB BERGAMO

Chiudi