Questo e’ il primo articolo riguardante una sfida (tra me e me) riguardante la costruzione di tante piccole stazioni meteo (economicissime) da posizionare in punti chiave di una rete hiperlan. Con alcuni amici abbiamo configurato una rete a 5 Ghz vasta quasi 100km…perchè non sfruttarla per fornire informazioni meteo delle zone più interessanti?
Unico requisito…funzionante via ethernet e super economica.
La testa va subito ad Arduino…ne avevo in casa uno “pluriusato”…aveva la ethernet shield…perfetto! A questo c’e’ da sommare pero’ dei sensori per rilevare le condizioni climatiche. Iniziamo con quelle basilari….Temperatura, Umidità e Luminosità.
I primi due valori si rilevano con un sensore solo…il DHT 11 , per la luminosità basta una fotoresistenza su un piedino analogico.
Se ci orientiamo sul mercato orientale…non arriviamo a 5 Euro di spesa 🙂
Iniziamo….
Come al solito mi scuso per le foto…ma sono progetti che nascono al momento e le foto sono scattate con il cellulare.
Il DHT ha una sua libreria per leggere i valori…e si collega ad un piedino digitale.
La fotoresistenza e’ in serie ad una resistenza da 100k e la lettura punta su un piedino analogico. Alimentata da un pin digitale (portato a HIGH) non fa altro che variare la tensione…e quindi restituire un valore da 0 (buio totale) a 1023 (piena luce).
Assemblo il tutto in un contenitore di recupero e inizio a scrivere il codice.
Inizio prima a provare i sensori singoli e poi passo alla connettività….cosi da non incorrere in problematiche di scrittura.

Questi dati pero’ devono essere acquisiti, lavorati e resi utilizzabili per i visitatori.
Mi avvalgo quindi THINGSPEAK … e in 10 min ho i dati trasformati in grafici …ONLINE 🙂
Per i più smanettoni allego il codice…modificabile…convertibile….condivisibile.
#include "DHT.h"
#include "ThingSpeak.h"
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
EthernetClient client;
#define DHTPIN 2 // Pin connessione DHT11
#define DHTTYPE DHT11 // modello di sensore temperatura DHT 11
DHT dht(DHTPIN, DHTTYPE);
unsigned long myChannelNumber = XXXXXXXX; // aggiungere qui il numero del canale
const char * myWriteAPIKey = "YYYYYYYYYYYYYYY"; // aggiungere qui l'api key
void setup() {
Serial.begin(9600);
Serial.println("DHTxx test!");
dht.begin();
pinMode(7, OUTPUT);
digitalWrite(7 , HIGH); // questo pin e' usato solo per alimentare il sensore di luminosità
ThingSpeak.begin(client);
connectToInternet();
}
void connectToInternet()
{
if (client.connected())
{
client.stop();
}
Serial.println("Connecting to the internet via ethernet...");
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
for(;;){
;
}
}
Serial.println(Ethernet.localIP());
}
void loop() {
delay(2000);
int sensorValue = analogRead(A0);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
ThingSpeak.setField(1, t);
ThingSpeak.setField(2, h);
ThingSpeak.setField(3, sensorValue);
ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
Serial.print("Umidità: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(" Luminosità: ");
Serial.println( sensorValue);
delay(480000);
}….a breve la seconda versione con ESP8266 🙂
Buon divertimento!






