/*
wemos_d1_mini_dht11.ino
In questo esempio utilizziamo il modulo WeMos D1 mini
per leggere i dati di temperatura ed umidità forniti
dallo shield sensore DHT11 e invieremo i dati sul canale
Thinkspeak, che è una piattaforma Internet che consente
di raccogliere e memorizzare i dati del sensore nel cloud
e di sviluppare applicazioni IoT.
Sono utilizzati i seguenti pin
Pin +3.3V -> Alimentazione shield DHT11
Pin GND -> GND shield DHT11
Pin Digital D4 -> ingresso dati DHT11
Creato il 10/8/2017 da Adriano Gandolfo
This example code is in the public domain.
*/
#include <DHT.h>
#include <ESP8266WiFi.h>
// Inserire la chiave API del proprio canale, il nome
// del proprio SSID con relativa password
String apiKey = "xxxx";
const char* ssid = "xxxx";
const char* password = "xxxx";
const char* server = "api.thingspeak.com";
#define DHTPIN D4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
WiFiClient client;
void setup()
{
Serial.begin(115200);
delay(10);
dht.begin();
WiFi.begin(ssid, password);
Serial.println();
Serial.println();
Serial.print("Connessione ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connessa");
}
void loop()
{
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t))
{
Serial.println("Fallito lettura dati da sensore DHT!");
return;
}
if (client.connect(server, 80)) {
String postStr = apiKey;
postStr += "&field1=";
postStr += String(t);
postStr += "&field2=";
postStr += String(h);
postStr += "\r\n\r\n";
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(postStr.length());
client.print("\n\n");
client.print(postStr);
Serial.print("Temperatura: ");
Serial.print(t);
Serial.print(" °C Humidità ");
Serial.print(h);
Serial.println("Invio dati a Thingspeak");
}
client.stop();
Serial.println("Attesa di 20 sec");
// thingspeak richiede almeno un ritardo di 15 secondi
// tra gli aggiornamenti, 20 secondi per essere sicuri
delay(20000);
}
Dopo qualche minuto di funzionamento del nostro dispositivo, potremo vedere riportate nel nostro canale i risultati della lettura del nostro canale.
Wemos D1 Mini e sensore TSL2561
Il di luminosità TSL2561 è un sensore avanzato per il controllo della luminosità in modalità digitale ideale per essere utilizzato in una vasta gamma di condizioni di luce, rispetto alle fotoresistenze questo sensore è più preciso e consente di misurare direttamente in lux e può essere configurato per differenti range di misura in modo da rilevare una vasta gamma di condizioni di luminosità (da 0,1 a 40.000 lux), inoltre questo sensore è in grado di vedere sia la luce visibile sia l'infrarosso consentendo la misura separata di entrambe le intensità
Il sensore si collega alla Wemos D1 Mini tramite una interfaccia I2C, possiede 3 indirizzi che permettono di gestire 3 sensori e all'interno è presente un convertitore ADC, l'assorbimento di corrente è estremamente contenuto: circa 0,5mA durante la misura e meno di 15uA a riposo.
Connessioni da effettuare sulla breadboard
Immagine dei collegamenti sulla breadboard
Lista delle connessioni:
Pin WeMos D1 Mini
|
Pin Sensore TSL2561
|
D2
|
SDA
|
D1
|
SCL
|
+ 3.3V
|
VCC
|
GND
|
GND
|
Nel programma di test il valore della luminosità viene mostrato all'interno della finestra del Monitor seriale, la lettura è effettuata ogni 250mS.
I pin SCL e SDA del sensore sono collegati rispettivamente a D1 e D2 del modulo Wemos D1 Mini e gestiti dalla libreria Wire.
Programma di test
/*
wemos_d1_mini_TSL2561.ino
In questo esempio utilizziamo il modulo WeMos D1 mini
per leggere i dati di luminosità forniti
dal sensore TSL2561.
Sono utilizzati i seguenti pin
Pin +3.3V -> Alimentazione TSL2561
Pin GND -> GND TSL2561
Pin D1 -> pin SCL TSL2561
Pin D2 -> pin SDA TSL2561
Creato il 14/8/2017 da Adriano Gandolfo
This example code is in the public domain.
*/
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_TSL2561_U.h>
Adafruit_TSL2561_Unified tsl = Adafruit_TSL2561_Unified(TSL2561_ADDR_FLOAT, 12345);
void setup(void)
{
Serial.begin(9600);
Serial.println("Test sensore TSL2561");
Serial.println("");
/* Iinzializzazione sensore */
if (!tsl.begin())
{
Serial.print("TSL2561 non trovato");
while (1);
}
tsl.enableAutoRange(true);
tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_13MS);
Serial.println("");
}
void loop(void)
{
/* Get a new sensor event */
sensors_event_t event;
tsl.getEvent(&event);
/* Mostra il risultato (luce misurata in lux) */
if (event.light)
{
Serial.print(event.light);
Serial.println(" lux");
}
else
{
Serial.println("Sensore fuoriscala");
}
delay(250);
}
Tutti i prodotti Wemos sono disponibili da homotix