Facciamo lavorare Arduino

Arduino R4 WiFi + DHT11 + ThingSpeak 

 

Lo sketch (programma Arduino) che è stato sviluppato permette di leggere i valori di temperatura e umidità da un sensore DHT11 collegato a un Arduino UNO R4 WiFi ed inviarli ad un canale ThingSpeak per la visualizzazione grafica del servizio cloud.

 

Il sensore DHT11

 

Per consultare l'ultima versione del codice basta puntare al repository GitHub pubblico https://github.com/andreadeldottore2009/GiornataScienzaGalfer2026 e analizzare lo sketch ThingspeakR4.ino

 

Hardware richiesto

 

  • Microcontrollore: Arduino UNO R4 WiFi (identificato dalla libreria WiFiS3.h).

  • Sensore: DHT11 (Temperatura e Umidità).

  • Collegamenti:

    • Segnale (Data): Pin Digitale 2.

    • VCC: 3.3V o 5V (a seconda del modulo).

    • GND: GND

 

Librerie necessarie 

Per compilare questo codice è necessario installare le seguenti librerie tramite il Library Manager dell'IDE Arduino:

  1. WiFiS3: per il modulo WIFI, già preinstallata per Arduino R4 WiFi.

  2. ThingSpeak: libreria sviluppata da MathWorks.

  3. DHT11: Libreria specifica per il sensore DHT11.

 

Configurazione delle credenziali (arduino_secrets.h) 

Il codice utilizza un file separato, chiamato arduino_secrets.h, per proteggere le  credenziali di accesso alla rete WiFi e al servizio cloud ThigSpeak. 

Il file deve risiedere nella cartella del progetto e contenere le seguenti definizioni:

// Esempio di contenuto per arduino_secrets.h
#define SECRET_SSID "NomeWiFi"            // Nome della rete WiFi
#define SECRET_PASS "PasswordWiFi"        // Password della rete WiFi
#define SECRET_CH_ID 66070443             // Channel ID di ThingSpeak
#define SECRET_WRITE_API_KEY "KxQ5689Wd"  // Write API Key di ThingSpeak 

 

Funzionamento del codice

Il codice è strutturato in tre blocchi logici principali: Setup, Loop e Gestione Sensore.

1. Inizializzazione (setup)

  • Avvia la comunicazione seriale a 9600 baud per il debug.
  • Inizializza il client ThingSpeak.
  • Si connette alla rete WiFi specificata nelle credenziali.

2. Ciclo Principale (loop)


Il loop esegue queste operazioni ogni 15 secondi (per rispettare il limite della licenza gratuita di ThingSpeak):


  • Controllo WiFi: Se la connessione cade, tenta la riconnessione automatica.Lettura Dati: Chiama la funzione personalizzata leggiDatiDHT. Se la lettura ha successo (true), procede.
  • Preparazione Dati:
    • Campo 1: Temperatura (t).
    • Campo 2: Umidità (h).
  • Invio al Cloud: Invia i dati a ThingSpeak. Se il codice di risposta è 200, l'invio è riuscito.


3. Lettura del Sensore (leggiDatiDHT)


Questa funzione controlla il funzionamento del sensore DHT11 ed evita errori di lettura:

  1. Legge la temperatura.
  2. Pausa di stabilità: Attende 1000 ms (1 secondo) tra la lettura della temperatura e quella dell'umidità. Questo passaggio è cruciale per la stabilità del sensore DHT11.
  3. Legge il valore dell'umidità.
  4. Controllo Errori: Verifica se il sensore restituisce errori di Checksum o Timeout. Se ci sono errori, li stampa sul monitor seriale e interrompe l'invio.
  5. Debug: Se la lettura è corretta, stampa i valori su Serial Monitor.


Risoluzione problemi


Errore HTTP != 200

Errore API o Connessione, controllare la API Key e che il canale non sia bloccato. Verificare il ritardo di 15s.


Errore sensore E-DTH
Controllare i cavi e i collegamenti:  il pin dati utilizzato è il 2. 
Provare a sostituire il sensore o i cavetti jumper.
 

Mancata connessione WiFi
Credenziali errate: verificare SECRET_SSID e SECRET_PASS. 

Problema di frequenza della rete: Arduino R4 supporta connessioni sulla banda 2.4GHz.

Flowchart

 


 

 

 

 

Commenti

Post popolari in questo blog

Una sentinella in cielo: il satellite Sentinel-5P

Diario di bordo Giornata della Scienza 2026