WhatsApp Image 2019 03 11 at 22.34.47

Collegare un display OLED e un sensore BME280 alla scheda ESP8266/Wemos D1 Mini – Salvare i dati in un database remoto MySQL Parte 1

Ho trovato su Amazon un piccolo Kit che comprende un display OLED da 0,96″IIC da 128X64 pixel, un sensore di
Pressione Atmosferica, Temperatura e umidità BME280 e una scheda Wemos D1 Mini per soli 16,99€ e ho deciso di acquistarlo subito.

L’idea è quella di costruire una sonda che si colleghi in internet e invii periodicamente i dati ad una pagina PHP che li memorizzi in un database MySQL

.Cominciamo collegando il display OLED. Questo si fa in modo veramente semplicissimo seguendo questo schema

Mentre il sensore BME280 si collega usando questi PIN che sono gli stessi dello schermo OLED comunicando entrambe con il protocollo I2C

Wemos D1BME280OLED Display
GNDGNDGND
3.3VVCC
5VVCC
D2 (gpio0)SDASDA
D1 (gpio2)SCLSCL

Come potete notare ho usato il 5V per l’alimentazione dello schermo mentre il 3.3V per quella del sensore dato che lo schermo OLED potrebbe consumare di più e non risente assolutamente ad essere alimentato a 5V

Successivamente, è necessario aggiungere le librerie Adafruit all’IDE di Arduino per controllare il display.
Apri l’IDE Arduino e fai clic su Sketch -> Includi libreria -> Gestisci librerie.
Cerca Adafruit e scorri verso il basso fino alla libreria Gfx di Adafruit e installala dopo di che installa anche la libreria Adafruit SSD1306.

Una volta installate le librerie dello schermo OLED passeremo ad installare quelle per il sensore BME280 della SparkFun nello stesso di modo dei precendete. Fatto anche questo sarà possibile utilizzare il seguente codice per visualizzare la temperatura e l’umidità corrente sullo schermo:

#include <Wire.h> //Inizializzo la libreria Wire
#include "SparkFunBME280.h" //Inizializzo la libreria per il sensore BME280
#include <Adafruit_GFX.h> //Inizializzo le libreria per il display OLED
#include <Adafruit_SSD1306.h>
#define OLED_Address 0x3C //Indirizzo I2C del display OLED

Adafruit_SSD1306 oled(1);
BME280 mySensorB;
//Variabili che conterranno le letture della Temperatura (3) e la temperatura totale
float T1,T2,T3,Ttot; 

void setup()
{ 
  Serial.begin(9600); //Incizializzo il monitor seriale
  Wire.begin();
  mySensorB.setI2CAddress(0x76); //Incizializzo il sensore BME280 con indirizzo I2C 0x76
  if(mySensorB.beginI2C() == false) Serial.println("Sensor connect failed"); //Controllo che il sensore sia collegato
  oled.begin(SSD1306_SWITCHCAPVCC, OLED_Address); //Incizializzo lo schermo OLED con indirizzo I2C 0x3C
}

void loop()
{
  oled.clearDisplay(); // Pulisco lo schermo OLED
  oled.setTextSize(2); // Imposto la dimensione del testo a 2
  oled.setCursor(0, 0); // Sposto il cursore nella posizione x0, y0
  

  
  Serial.print(" Hum: "); // Scrivo sulla seriale Umidità e Pressione
  Serial.print(mySensorB.readFloatHumidity(), 0);
  Serial.print(" Pres: ");
  Serial.print(mySensorB.readFloatPressure(), 0);
  // Effettuo 3 letture consecutive a 200ms della temperatura
  T1 = mySensorB.readTempC();
  delay(200);
  T2 = mySensorB.readTempC();
  delay(200);
  T3 = mySensorB.readTempC();
  // Faccio la media delle 3 letture per avere un dato più "stabile"
  Ttot = (T1+T2+T3)/ 3;
  // Scrivo sulla seriale la Temperatura media
  Serial.print(" Temp: ");
  Serial.print(Ttot, 1);

  // Scrivo sul display OLED la Temperatura media
  oled.print("Temp ");
  oled.print(Ttot, 1);
  oled.print("C");
   // Scrivo sul display OLED l'umidità %
  oled.print("Hum ");
  oled.print(mySensorB.readFloatHumidity(), 0);
  oled.print("%");
 
  oled.display();
  // Attendo 600ms prima di ripetere le operazioni nel loop
  delay(600);
}

Per questa puntata è tutto, la prossima volta inizieremo aggiungendo la connettività wi-fi e poi lo faremo comunicare con una pagina web che salverò per noi i dati.

Ciao a tutti!!

1 commento su “Collegare un display OLED e un sensore BME280 alla scheda ESP8266/Wemos D1 Mini – Salvare i dati in un database remoto MySQL Parte 1”

  1. con il kit che ho ordinato da Amazon:
    https://www.amazon.it/gp/product/B07KYJKK8V/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1
    che probabilmente differisce leggermente dal vostro, il programma non visualizza nulla !

    Fortunatamente ho trovato che va aggiunto solo:

    oled.setTextColor(WHITE);

    inoltre c’e’ ancora un problema con la definizione dei caratteri, ho trovato un commento in proposito:
    https://www.instructables.com/id/Fun-With-OLED-Display-and-Arduino/
    ma non sono riuscito a sistemare…

    spero che pubblicherete presto il nuovo tutorial per la connettivita’ wifi, grazie ciao Mario

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Torna su