Arduino nano con bluetooth HC-05+BMP180+DHT11 wireless weather station su smartphone android
In questo progetto colleghiamo la nostra semplice weather station fatta con arduino nano un sensore di temperatura dht11 ed un sensore di pressione atmosferica BMP180 al modulo bluetooth HC05,in modo da poter visualizzare sul nostro smartphone i dati relativi alle letture dei sensori.Il modulo HC05 ci permette di comunicare in modo semplice ed economico con dispositivi dotati di bluetooth come tablet ,pc o smartphone,ed è possibile utilizzarlo sia come master che come slave.Utilizzandolo con uno smartphone occorre scaricare un app (ce ne sono tantissime)nel mio caso ho utilizzato BLUESERIAL BETA,ma va benissimo anche BLUETOOTH TERMINAL HC-05,entrambe scaricabili da google play.Una volta avviata l'app vedrete il modulo hc05 nella lista dei dispositivi (se non è presente, dovrete collegarvici prima dalle impostazioni del bluetooth, la password di default è 1234).Fatto questo passiamo allo schema di montaggio .
ATTENZIONE VERIFICATE SEMPRE I PIN DEI VOSTRI COMPONENTI CHE POTREBBERO DIFFERIRE DA QUELLI RIPORTATI NELLO SCHEMA.
IMPORTANTE RICORDATEVI DI SCOLLEGARE IL MODULO HC-05 PRIMA DI CARICARE OGNI SKETCH PER NON INCORRERE IN ERRORI.
CONNESSIONI:
Modulo HC05
RXD=al pin TX di arduino cavo blu
TXD=al pin RX di arduino cavo giallo
GND=al pin GND di arduino cavo nero
VCC=al pin 5V di arduino cavo rosso
DHT11
VCC=al pin 5V di arduino cavo rosso
OUT=al pin 2 di arduino cavo viola
GND=al pin GND di arduino cavo nero
BMP180
VCC=al pin 5V di arduino cavo rosso
GND=al pin GND di arduino cavo nero
SCL=al pin A5 di arduino cavo verde
SDA=al pin A4 di arduino cavo bianco
IL CODICE:
//includo le librerie
#include <Adafruit_BMP085.h>
#include <DHT.h>
#define DHTTYPE DHT11 // DHT 11
#define DHTPIN 2// Set DHT pin:
//creo un nome al sensore barometrico
Adafruit_BMP085 BMP180;
// Initialize DHT sensor for normal 16mhz Arduino:
DHT dht = DHT(DHTPIN, DHTTYPE);
void setup()
{
// Setup sensor:
dht.begin();
BMP180.begin();
//inizializzo la seriale
Serial.begin(9600);
}
void loop()
{ delay(3000);
// Read the humidity in %:
float h = dht.readHumidity();
// Read the temperature as Celsius:
float t = dht.readTemperature();
// Read the temperature as Fahrenheit:
float f = dht.readTemperature(true);
// Compute heat index in Fahrenheit (default):
float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius:
float hic = dht.computeHeatIndex(t, h, false);
//scrivo sul seriale
Serial.println("*****************");
Serial.println("lettura dati");
//pressione atmosferica
Serial.print("Pressione atmosferica = ");
Serial.print(BMP180.readPressure());
Serial.println(" Pa (Pascal)");
//altitudine
Serial.print("Altitudine = ");
Serial.print(BMP180.readAltitude());
Serial.println(" metri");
//pressione atmosferica dal livello del mare
Serial.print("Pressione dal livello del mare (calcolata) = ");
Serial.print(BMP180.readSealevelPressure());
Serial.println(" Pa");
//altitudine reale
Serial.print("Altitudine reale = ");
Serial.print(BMP180.readAltitude(101500));
Serial.println(" metri");
//Temperatura e umidità
Serial.print(F("Umidità: "));
Serial.print(h);
Serial.println(F(" %"));
Serial.print("Temperatura: " );
Serial.print(t);
Serial.println(F(" °C"));
}
Ora con l'app blueserial collegatevi al modulo e godetevi le letture dei sensori.