Arduino+DHT11+BMP180+Oled display i2c sh1106 con schermate che si alternano


In questo progetto ho realizzato una piccola weather station con Arduino nano ed i
sensori DHT11 e BMP180,visualizzando in modo alternato sul display Oled SH1106 da 1.3" le misurazioni rilevate.









    
 Ecco le due schermate che si alternano.






 


                               Di seguito lo schema di montaggio
 con la nostra solita breadboard,
arduino nano ed i due sensori collegati al nostro display oled. 































Collegamenti elettrici tramite cavetti dupont.


                                 SDA=pin A4 arduino cavo bianco
                                  SCK=pin A5 arduino cavo verde
   Sensore BMP180   Vcc=pin 5V arduino cavo rosso
                                  GND=pin GND arduino cavo nero



                                 Vcc=pin 5V arduino cavo rosso
   Sensore DHT11     OUT= pin D2 arduino cavo giallo
                                  GND=pin GND arduino cavo nero


                                     GND=pin GND arduino cavo nero
                                     VCC=pin 5V arduino cavo rosso 
 Display oled sh1106    SDA=pin A4 arduino cavo bianco
                                     SCK=pin A5 arduino cavo verde

              Lo sketch da caricare:

/*weather station ARDUINO realizzata con sensore di temperatura dht11 e sensore di pressione bmp180 
 con oled sh1106 e schermate che si alternano
*/

#include <DHT.h>
#include <Adafruit_SH1106.h>
#include <Adafruit_BMP085.h>


#define DHTPIN 2// definisco il numero di pin del sensore dht11
#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SH1106 display(OLED_RESET);

//creo do un nome al sensore barometrico

Adafruit_BMP085 BMP180;


// definisco il tipo di sensore dht utilizzato
#define DHTTYPE DHT11   // DHT 11 

// Initialize DHT sensor for normal 16mhz Arduino:
DHT dht = DHT(DHTPIN, DHTTYPE);



unsigned long time = 0 ;
unsigned long ciclo = 2000;//tempo di visualizzazione delle schermate
byte page = 0;

//================================================
// SETUP
//================================================
void setup() {

  display.begin(SH1106_SWITCHCAPVCC, 0x3C);// Connect to oled via I2C, default address 0x3c
  display.display();
  delay(1500);
  display.clearDisplay();
  display.setTextColor(WHITE);


  BMP180.begin();
  dht.begin();         //inizializziamo i sensori


  // Initiate the oled:


  display.setTextSize(1, 2);
  display.setCursor(0, 1);
  display.print("   Weather Station");
  display.setTextSize(1);
  display.setCursor(15, 20);
  display.print("    ARDUINO");
  display.setTextSize(1);
  display.setCursor(0, 30);
  display.print("   by");
  display.setTextSize(2);
  display.setCursor(0, 45);
  display.print(" LabCippo");
  display.display();
  delay(5000);

  display.clearDisplay();
}

//================================================
// LOOP
//================================================

void loop() {

  display.clearDisplay();

   // 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);


  if (millis() - time > ciclo)        //opzioni visualizazione schermate
  {
    switch (page) {


      case 0:            // schermata 1 lettura temperatura e umidità dal sensore dht11
        // display temperature
        display.clearDisplay();
        display.setTextSize(1);
        display.setCursor(1, 0);
        display.print("    Temperatura:");
        display.setTextSize(2);
        display.setCursor(20, 15);
        display.print(t);
        display.print(" ");
        display.setTextSize(1);
        display.cp437(true);
        display.write(167);
        display.setTextSize(2);
        display.print("C");

        // display humidity
        display.setTextSize(1);
        display.setCursor(0, 35);
        display.print("      Umidita:");
        display.setTextSize(2);
        display.setCursor(20, 50);
        display.print(h);
        display.print(" %");
        display.display();
        break;

      case 1:  //schermata 2 lettura sensore bmp180



        // schermata 3 lettura sensore bmp180
        display.clearDisplay();
        display.setTextSize(1);
        display.setCursor(1, 0);
        display.print("PRESSIONE.ATM: ");
        display.setTextSize(2);
        display.setCursor(10, 15);
        display.print(BMP180.readPressure());

        display.print(" PA");


        display.setTextSize(1);
        display.setCursor(1, 35);

        display.print("ALTITUDE:");
        display.setTextSize(2);
        display.setCursor(15, 50);
        display.print(BMP180.readAltitude(101500));
        display.print(" Mt");
        display.display();

    }

    time = millis();
    page++;
    if (page > 2) page = 0; // il num 2 indica le pagine da visualizzare,lo incremento se aggiungo pagine

  }

}


😃

Post popolari in questo blog

Arduino nano+Mq135+display oled 0.96" ssd1306 128x64

Arduino weather station wireless con NRF24L01+PA+LNA+dht11+bmp180+mq135+HC-05 con doppio display oled 0,96" arduino nano+mega

Modulo di contatto

Nome

Email *

Messaggio *