ขอความช่วยเหลือครับ ผมจะทำอุปกรณ์ วัดอุณหภูมิตู้เย็น และห้องครับ จาก ESP8266

ขอความช่วยเหลือครับ อาจารย์ท่านใดพอมีโค๊ดตัวอย่างบ้างไหมครับ พอดีว่าผมจะทำอุปกรณ์วัดอุณหภูมิตู้เย็นและห้องครับ โดยมีอุปกรณ์ คือ

  1. NodeMCU ESP8266
  2. Sensor DS18B20 ใช้วัดค่าอุณหภูมิในตู้เย็น
  3. DHT22 ใช้วัดค่าความชื้นและอุณหภูมิห้อง
  4. Passive Buzzer Module 3.3 - 5V DC
  5. LCD 1602 แบบ I2C
    โดยให้ NodeMCU ESP8266 รับค่าอุณหภูมิในตู้เย็นจาก DS18B20
    วัดค่าความชื้นและอุณหภูมิห้องด้วย DHT22
    จากนั้นหากอุณหภูมิเกินค่าที่กำหนด (องศา) ให้แจ้งเตือนผ่าน LINE และมีเสียงเตือนของ Buzzer
    แสดงค่าอุณหภูมิในตู้เย็นกับค่าความชื้นห้องให้ออกจอ LCD 1602 แบบ I2C
    (แต่ถ้าเป็นไปได้อยากให้แสดงค่าความเย็นห้องด้วยครับ)
    จากนั้นอัพโหลดค่าอุณหภูมิในตู้เย็น ค่าความชื้นและอุณหภูมิห้อง ขึ้น Thingspeak
    ยาวไปไหมครับ ขอบคุณล่วงหน้าเลยนะครับ :sweat_smile: :sweat_smile:

ลองดู

ใน EasyLive เมื่อคืนผมมีพูดถึงกระทู้นี้ด้วยนะครับ ลองย้อนดู

เดียวคืนนี้ 2 ทุ่มจะ Live EP.2 สามารถเข้ามาถามสดได้เลยครับ

ลองเข้าไปดูแล้วนะครับ เดี๋ยวลองศึกษาเพิ่มดูครับ ตอนนี้อยากได้ในส่วนของตัว Sensor DS18B20 ใช้วัดค่าอุณหภูมิในตู้เย็น ให้ออกจอ LCD กับส่งขึ้น Thingspeak นอกจากนั้นทำได้หมดแล้วครับ ขอบคุณครับผม

ลองติดตั้ง library DallasTemperature.h สำหรับใช้งาน DS18B20 ดูหรือยังครับ

ลองแล้วครับ ใช้งานได้ปกติครับ

เหลือแค่นี้หรอครับ

ใช่ครับ ตอนนี้เหลือเท่านี้ครับ

พอมีโค๊ดกับตัว DS18B20 ให้แสดงผลออก LCD บ้างไหมครับ ขอบคุณล่วงหน้าเลยนะครับ

ลองดูครับ

Code

#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>

#define ONE_WIRE_BUS 8
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup(void)
{
  Serial.begin(9600);
  sensors.begin();
  lcd.begin(16, 2);
  
}

void loop(void){ 
  
  sensors.requestTemperatures(); 
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Temp(C)");
  lcd.setCursor(10, 0);
  lcd.print(sensors.getTempCByIndex(0));

  lcd.setCursor(0, 1);
  lcd.print("Temp(F)");
  lcd.setCursor(10, 1);
  lcd.print(sensors.getTempFByIndex(0));
  
  delay(1000);
}

ตัวนี้สำหรับ ESP8266 ครับ ลองศึกษาดัดแปลงดู

ขอบคุณมากครับ ลืมแจ้งไปครับ ทำเสร็จแล้วครับผม ขอบคุณมากเลยนะครับ

1 Like

เยี่ยมเลยครับ มีข้อมูลดีๆ มาแชร์กันนะครับ