Nota

Ciao, benvenuti nella Comunità degli Appassionati di SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Approfondisci la tua conoscenza di Raspberry Pi, Arduino e ESP32 con altri appassionati.

Perché unirsi?

  • Supporto Esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra comunità e del nostro team.

  • Impara & Condividi: Scambia consigli e tutorial per migliorare le tue competenze.

  • Anteprime Esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e anteprime esclusive.

  • Sconti Speciali: Goditi sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni Festive e Regali: Partecipa a regali e promozioni festive.

👉 Pronto a esplorare e creare con noi? Clicca [qui] e unisciti oggi!

Lezione 48: Monitoraggio Meteo con ThingSpeak

Questo progetto raccoglie dati di temperatura e pressione utilizzando un Sensore di Pressione Atmosferica. I dati raccolti vengono poi trasmessi alla piattaforma cloud ThingSpeak tramite un modulo ESP8266 e una rete Wi-Fi a intervalli regolari.

Componenti Necessari

Per questo progetto, abbiamo bisogno dei seguenti componenti.

È decisamente conveniente acquistare un kit completo, ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK

Universal Maker Sensor Kit

94

Universal Maker Sensor Kit

Puoi anche acquistarli separatamente dai link sottostanti.

Introduzione ai Componenti

Link di Acquisto

Arduino UNO R3 o R4

ACQUISTA

Breadboard

ACQUISTA

Modulo ESP8266

-

Sensore di Temperatura, Umidità e Pressione (BMP280)

-

Cablaggio

../_images/Lesson_48_Iot_weather_monitor_uno_bb.png

Configurazione di ThingSpeak

ThingSpeak ™ è un servizio di piattaforma analitica IoT che ti permette di aggregare, visualizzare e analizzare flussi di dati in tempo reale nel cloud. ThingSpeak fornisce visualizzazioni istantanee dei dati inviati dai tuoi dispositivi a ThingSpeak. Con la possibilità di eseguire codice MATLAB® in ThingSpeak, puoi eseguire analisi e elaborazioni dei dati in tempo reale. ThingSpeak è spesso utilizzato per prototipi e sistemi IoT di prova del concetto che richiedono analisi.

../_images/signup_tsp_ml.png

1) Creazione dell’account ThingSpeak

La prima cosa da fare è creare un account su ThingSpeak. Dalla collaborazione con MATLAB, puoi utilizzare le tue credenziali MathWorks per accedere a ThingSpeak .

Se non ne possiedi uno, devi creare un account con MathWorks e accedere all’applicazione ThingSpeak.

../_images/05-thingspeak_signup_shadow.png

2) Creazione del canale

Dopo aver effettuato l’accesso, crea un nuovo canale per archiviare i dati andando su «Canali» > «I Miei Canali» e cliccando su «Nuovo Canale».

../_images/05-thingspeak_channel_1_shadow.png

Per questo progetto, dobbiamo creare un canale chiamato «Weather Monitor» con due campi: Campo 1 per «Temperatura» e Campo 2 per «Pressione Atmosferica».

../_images/05-thingspeak_channel_2_shadow.png

Codice

  1. Apri il file Lesson_48_Iot_Weather_Monitor.ino nel percorso universal-maker-sensor-kit\arduino_uno\Lesson_48_Iot_Weather_Monitor, o copia questo codice nell”Arduino IDE.

    Nota

    Per installare la libreria, utilizza il Gestore Librerie di Arduino e cerca «Adafruit BMP280» e installala.

  2. Devi inserire il mySSID e il myPWD del WiFi che stai utilizzando.

    String mySSID = "your_ssid";     // SSID WiFi
    String myPWD = "your_password";  // Password WiFi
    
  3. Devi anche modificare il myAPI con la tua chiave API del canale ThingSpeak.

    String myAPI = "xxxxxxxxxxxx";  // Chiave API
    
    ../_images/05-thingspeak_api_shadow.png

    Qui puoi trovare la tua unica CHIAVE API che devi mantenere privata.

  4. Dopo aver selezionato la scheda corretta e la porta, clicca sul pulsante Upload.

  5. Apri il monitor seriale (imposta il baudrate a 9600) e attendi un prompt come una connessione riuscita che appaia.

    ../_images/05-ready_1_shadow.png ../_images/05-ready_2_shadow.png

Analisi del Codice

  1. Inizializzazione e configurazione del Bluetooth

    // Impostazione della comunicazione con il modulo Bluetooth
    #include <SoftwareSerial.h>
    const int bluetoothTx = 3;
    const int bluetoothRx = 4;
    SoftwareSerial bleSerial(bluetoothTx, bluetoothRx);
    

    Iniziamo includendo la libreria SoftwareSerial, utile per la comunicazione Bluetooth. I pin TX e RX del modulo Bluetooth sono quindi definiti e associati ai pin 3 e 4 sull’Arduino. Infine, inizializziamo l’oggetto bleSerial per la comunicazione Bluetooth.

  2. Definizioni dei pin dei LED

    // Numeri dei pin per ciascun LED
    const int rledPin = 10;  //rosso
    const int yledPin = 11;  //giallo
    const int gledPin = 12;  //verde
    

    Qui, definiamo a quali pin dell’Arduino sono connessi i nostri LED. Il LED rosso è sul pin 10, il giallo sul 11 e il verde sul 12.

  3. Funzione setup()

    void setup() {
       pinMode(rledPin, OUTPUT);
       pinMode(yledPin, OUTPUT);
       pinMode(gledPin, OUTPUT);
    
       Serial.begin(9600);
       bleSerial.begin(9600);
    }
    

    Nella funzione setup(), impostiamo i pin dei LED come OUTPUT. Avviamo anche la comunicazione seriale sia per il modulo Bluetooth che per la seriale di default (collegata al computer) con un baud rate di 9600.

  4. Ciclo principale loop() per la comunicazione Bluetooth

    void loop() {
       while (bleSerial.available() > 0) {
          character = bleSerial.read();
          Serial.println(character);
    
          if (character == 'R') {
             toggleLights(rledPin);
          } else if (character == 'Y') {
             toggleLights(yledPin);
          } else if (character == 'G') {
             toggleLights(gledPin);
          }
       }
    }
    

    All’interno del nostro loop() principale, controlliamo continuamente se sono disponibili dati dal modulo Bluetooth. Se riceviamo dati, leggiamo il carattere e lo visualizziamo nel monitor seriale. A seconda del carattere ricevuto (R, Y, o G), attiviamo il rispettivo LED usando la funzione toggleLights().

  5. Funzione Toggle Lights

    void toggleLights(int targetLight) {
       digitalWrite(rledPin, LOW);
       digitalWrite(yledPin, LOW);
       digitalWrite(gledPin, LOW);
    
       digitalWrite(targetLight, HIGH);
    }
    

    Questa funzione, toggleLights(), spegne prima tutti i LED. Dopo aver verificato che siano tutti spenti, accende il LED target specificato. Questo garantisce che solo un LED sia acceso alla volta.