Wireless meteo

Share

Ecco un esempio di codice Arduino per la comunicazione wireless di dati meteo utilizzando due moduli Arduino con trasmettitore e ricevitore RF (ad esempio, moduli RF433 o NRF24L01). In questo esempio, uno dei moduli Arduino raccoglie dati meteo (come la temperatura e l’umidità) da un sensore e li invia all’altro modulo Arduino, che riceve i dati e li visualizza sul monitor seriale.

Assicurati di aver collegato correttamente i moduli RF ai tuoi Arduino prima di eseguire il codice.

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(9, 10); // Collega il modulo NRF24L01 ai pin 9 (CE) e 10 (CSN)

struct DatiMeteo {
  float temperatura;
  float umidita;
};

DatiMeteo dati;

void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.openWritingPipe(0xF0F0F0E1E2LL); // Indirizzo del canale di trasmissione
  radio.setPALevel(RF24_PA_HIGH); // Imposta la potenza di trasmissione al massimo
}

void loop() {
  // Simula la raccolta dei dati meteo (da sostituire con il tuo sensore)
  dati.temperatura = 25.5;
  dati.umidita = 55.0;

  // Invia i dati
  radio.write(&dati, sizeof(DatiMeteo));
  Serial.println("Dati inviati: ");
  Serial.print("Temperatura: ");
  Serial.println(dati.temperatura);
  Serial.print("Umidità: ");
  Serial.println(dati.umidita);

  delay(5000); // Attendi 5 secondi prima di inviare nuovamente i dati
}

Ora, dovresti caricare questo codice sull’Arduino che raccoglie i dati meteo e collegarlo al modulo NRF24L01 o RF433 configurato come trasmettitore.

Qui di seguito, puoi trovare il codice per l’Arduino che riceve i dati e li visualizza sul monitor seriale:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(9, 10); // Collega il modulo NRF24L01 ai pin 9 (CE) e 10 (CSN)

struct DatiMeteo {
  float temperatura;
  float umidita;
};

DatiMeteo dati;

void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.openReadingPipe(1, 0xF0F0F0E1E2LL); // Imposta l'indirizzo del canale di ricezione
  radio.startListening();
}

void loop() {
  if (radio.available()) {
    radio.read(&dati, sizeof(DatiMeteo));
    Serial.println("Dati ricevuti: ");
    Serial.print("Temperatura: ");
    Serial.println(dati.temperatura);
    Serial.print("Umidità: ");
    Serial.println(dati.umidita);
  }
}

Carica questo codice sull’Arduino che riceve i dati meteo e collega il modulo NRF24L01 o RF433 configurato come ricevitore.

Ora, quando avvii entrambi gli Arduino, il sensore invierà i dati meteo al ricevitore wireless, che li visualizzerà sul monitor seriale. Assicurati che entrambi i moduli NRF24L01 o RF433 siano configurati con gli stessi indirizzi del canale di trasmissione e ricezione per far funzionare correttamente la comunicazione wireless.