ESP8266 ต่อจอ Oled 0.96 อ่านค่าจาก DHT22

 



ESP8266 ต่อจอ  Oled 0.96 อ่านค่าจาก DHT22

อุปกรณ์ที่จำเป็น

1.บอร์ด ESP8266 

2.จอ oled0.96 128x64 pixels  I2C

3.Breadboard (ถ้ามี)

4.สาย Jumper

5.เซ็นเซอร์ DHT22 Module

6.แหล่งจ่ายไฟ (ถ้าไม่ใช้จาก adaptor power) usb ต่อคอมพิวเตอร์


การเชื่อมต่อ

ESP8266   -> Oled 0.96

D1(GPIO5) -> SCL

D2(GPIO4) -> SDA

3V        -> VCC

GND       -> GND

ติดตั้ง ไลบราลี่ที่จำเป็น Oled0.96 ในโปรแกรม Arduio IDE 

1. Open your Arduino IDE and go to Sketch > Include Library > Manage Libraries

2. Type “SSD1306” in the search box and install the SSD1306 library from Adafruit.

3. Type “GFX” in the search box and install the library.


ESP8266    -> DHT22

D4 (GPIO2) -> OUT

3V         -> +

GND        -> -

ติดตั้ง ไลบราลี่ใน DHT22 ในโปรแกรม Arduio IDE 

Tools->Manage Libraries->DHT เลือก DHT sensor library by Adafruit


วิธีทำ 

1.เขียนโค้ด เชื่อมต่อ บอร์ด ESP8266 Oled 0.96 

สร้าง เทมเพลต สำหรับแสดงค่าข้อมูลอุณหภูมิและความชื้น


#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>


#define SCREEN_WIDTH 128

#define SCREEN_HEIGHT 64


Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);


void setup() {

  Serial.begin(115200);

  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))  { // Address 0x3D for 128x64

    Serial.println(F("SSD1306 allocation failed"));

  }

  display.display(); //Display logo

  delay(1000); 

  display.clearDisplay();

}

 

void loop() {

  delay(1000);

  display.setTextSize(1);

  display.setTextColor(WHITE);

  display.setCursor(0, 0);   

  display.print("Temperature");  

  display.setCursor(0, 15);     

  display.print("30.15");    

  display.print(" C");    

  display.setCursor(50, 15);       

  display.print("80.00");    

  display.print(" F");    

  display.setCursor(0, 30);       

  display.print("Humidity: ");    

  display.print("57.01");    

  display.print(" %");    

  display.setCursor(0, 45);         

  display.print("39.15");    

  display.print(" C");    

  display.setCursor(50, 45);           

  display.print("89.15");    

  display.print(" F");    

  display.display();

  

}


2.เขียนโค้ด เชื่อมต่อ บอร์ด ESP8266 and DHT22 Module

#include "DHT.h"

#define DHTPIN 2     // GPIO4 

#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321

DHT dht(DHTPIN, DHTTYPE);

void setup() {

  Serial.println(F("DHT22 test!"));

  dht.begin();

}

void loop() {

  delay(2000);

  float h = dht.readHumidity();

  float t = dht.readTemperature();

  float f = dht.readTemperature(true);

  if (isnan(h) || isnan(t) || isnan(f)) {

    Serial.println(F("Failed to read from DHT sensor!"));

    return;

  }


  float hif = dht.computeHeatIndex(f, h);

  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print(F("Humidity: "));

  Serial.print(h);

  Serial.print(F("%  Temperature: "));

  Serial.print(t);

  Serial.print(F("°C "));

  Serial.print(f);

  Serial.print(F("°F  Heat index: "));

  Serial.print(hic);

  Serial.print(F("°C "));

  Serial.print(hif);

  Serial.println(F("°F"));

}

/////////////////

// complete code 

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128

#define SCREEN_HEIGHT 64

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);


#include "DHT.h"

#define DHTPIN 2     // GPIO4 

#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321

DHT dht(DHTPIN, DHTTYPE);


void setup() {

  Serial.begin(115200);

  Serial.println(F("DHT22 test!"));

  dht.begin();


  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))  { // Address 0x3D for 128x64

    Serial.println(F("SSD1306 allocation failed"));

//    for(;;);

  }

  display.display(); //Display logo

  delay(1000); 

  display.clearDisplay();

}

 

void loop() {

  display.clearDisplay();  

  delay(2000);

  float h = dht.readHumidity();

  float t = dht.readTemperature();

  float f = dht.readTemperature(true);

  if (isnan(h) || isnan(t) || isnan(f)) {

    Serial.println(F("Failed to read from DHT sensor!"));

    return;

  }


  float hif = dht.computeHeatIndex(f, h);

  float hic = dht.computeHeatIndex(t, h, false);


delay(1000);

  display.setTextSize(1);

  display.setTextColor(WHITE);

  display.setCursor(0, 0);   

  display.print("Temperature");  

  display.setCursor(0, 15);     

  display.print(t);    

  display.print(" C");    

  display.setCursor(50, 15);       

  display.print(f);    

  display.print(" F");    

  display.setCursor(0, 30);       

  display.print("Humidity: ");    

  display.print(h);    

  display.print(" %");    

  display.setCursor(0, 45);         

  display.print(hic);    

  display.print(" C");    

  display.setCursor(50, 45);           

  display.print(hif);    

  display.print(" F");    

  display.display();

  

}

///////////////////////////////////

Relate Link :

https://randomnerdtutorials.com/esp8266-0-96-inch-oled-display-with-arduino-ide/


ความคิดเห็น