การอ่านค่าจากเซ็นเซอร์ DS18B20 ด้วย ESP8266
อุปกรณ์ที่จำเป็น
บอร์ด ESP8266
Arduino IDE ที่ใช้ 2.3.2
เซ็นเซอร์ DS18B20
ตัวต้านทาน 4.7kΩ
สาย jumper
บอร์ดขนมปัง (ถ้ามี)
Computer สำหรับอัพโหลด โค้ดลงไปในบอร์ด
วิธีทำ
1.ต่อสาย
2.ติดตั้งไลบรารี DS18b20 ตัวอุณหภูมิสำหรับ ใครที่ยังไม่ได้ติดตั้งมาก่อน
"OneWire" และ "DallasTemperature" ใน Library Manager
3.เขียนโคด้และอัพโหลดเข้าบอร์ด ESP8266
1. ขั้นตอนการต่อสาย:
DS18B20 -----> ESP8266
VCC (ขา 1)---> +5V
GND (ขา 3)---> GND
DQ (ขา 2)----> ขาสัญญาณดิจิทัล D2
ต่อ ต้านทาน 4.7kΩ ระหว่าง DQ และ +5V เพื่อใช้เป็น pull-up
ต้านทาน 4.7kΩ ระหว่าง DQ และ +5V เพื่อใช้เป็น pull-up คืออะไร
คำอธิบายง่ายๆ:
คิดว่าวงจรดิจิทัลเป็นเหมือนถนนที่มีสัญญาณไฟจราจร สัญญาณไฟเหล่านี้จะบอกให้ข้อมูล
วิ่งไปตามเส้นทางที่ถูกต้อง ต้านทาน 4.7kΩ ที่เชื่อมระหว่าง DQ และ +5V
นี้ก็เหมือนกับสัญญาณไฟจราจรเล็ก ๆ ที่คอยบอกให้สัญญาณข้อมูล (ที่วิ่งอยู่ในสาย DQ) มีทิศทางที่ชัดเจน
ทำไมต้องใช้ pull-up resistor:
ป้องกันสัญญาณลอย: ถ้าไม่มีต้านทานตัวนี้ สัญญาณในสาย DQ อาจจะ "ลอย" ไม่รู้ว่าจะไปทางไหน ซึ่งอาจทำให้เกิดปัญหาในการทำงานของวงจร
กำหนดระดับแรงดันเริ่มต้น: ต้านทานตัวนี้จะดึงแรงดันในสาย DQ ให้ไปที่ +5V เมื่อไม่มีสัญญาณใดๆ มาสั่งให้เปลี่ยนแปลง ทำให้เราสามารถกำหนดค่าเริ่มต้นของสัญญาณได้
ค่า 4.7kΩ หมายถึงอะไร:
ค่าต้านทาน: 4.7kΩ คือค่าความต้านทานไฟฟ้าของตัวต้านทานตัวนี้ ยิ่งค่าสูง แรงดันที่ดึงขึ้นไปก็จะช้าลง แต่จะช่วยลดการกินกระแสไฟฟ้า
ทำไมต้อง 4.7kΩ: ค่านี้เป็นค่าที่นิยมใช้กันทั่วไปในวงจรดิจิทัล เพราะมันเป็นค่าที่เหมาะสมกับการใช้งานส่วนใหญ่
แต่ค่าที่ใช้จริงอาจแตกต่างกันไป ขึ้นอยู่กับลักษณะของวงจรและอุปกรณ์ที่ใช้
สรุป:
ต้านทาน 4.7kΩ ที่เชื่อมระหว่าง DQ และ +5V ทำหน้าที่เหมือนสัญญาณไฟจราจรเล็กๆ ที่คอยควบคุมทิศทางของสัญญาณข้อมูล ช่วยให้วงจรทำงานได้อย่างถูกต้องและมีเสถียรภาพ
2.การติดตั้งไลบรารี DS18B20 ตัววัดค่าอุณหภูมิจากเซ็นเซอร์ ใน Arduino IDE:
เปิด Arduino IDE
ไปที่เมนู Sketch > Include Library > Manage Libraries...
ค้นหา "OneWire" และ "DallasTemperature" ใน Library Manager
ติดตั้งทั้งสองไลบรารี
โค้ดตัวอย่าง:
เชื่อมต่อปกติผ่านทาง พีซี เพื่อดูข้อมูลทาง Serial Port
เชื่อมต่อ ESP8266 กับคอมพิวเตอร์ โหลดโค้ดลงไปในบอร์ด Arduino
เปิด Serial Monitor (Ctrl + Shift + M) เพื่อดูค่าที่แสดงอุณหภูมิ
นี่คือขั้นตอนและโค้ดพื้นฐานสำหรับการอ่านค่าจากเซ็นเซอร์ DS18B20 ด้วย ESP8266
///////////////////////////////////////////////////////
//https://randomnerdtutorials.com/esp32-ds18b20-temperature-arduino-ide/
//
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 4 //กำหนดขาที่จะเชื่อมต่อ Sensor ต่อขา d2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void) {
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library");
sensors.begin();
}
void loop(void) {
Serial.println("Requesting temperatures...");
sensors.requestTemperatures(); //อ่านข้อมูลจาก library
Serial.print("Temperature is: ");
Serial.print(sensors.getTempCByIndex(0)); // อ่านค่าที่ได้ (Celsius)
Serial.println(" C");
Serial.print("Temperature is: ");
Serial.print(sensors.getTempFByIndex(0)); // อ่านค่าที่ได้ (Farenheit)
Serial.println(" F");
delay(2000);
}
References:
การติดตั้ง ไดรเวอร์ DS18B20 บน Arduino IDE https://youtu.be/eMiYKM6RVno

ความคิดเห็น
แสดงความคิดเห็น