วัดอุณหภูมิด้วย DHT22 และการแจ้งเตือนโดย Buzzer
มินิโปรเจค Arduino วัดอุณหภูมิด้วย DHT22 และการแจ้งเตือนโดย Buzzer
ประโยชน์และการนำโปรเจคไปพัฒนาต่อ
เช่น..เครื่องควบคุมอุณหภูมิเป็นอุปกรณ์ที่ใช้ในการควบคุมอุณหภูมิให้ได้ตามค่าอุณหภูมิที่กำหนดไว้ โดยจะนำมาใช้ในการสั่งการให้กับอุปกรณ์สำหรับทำความร้อนหรืออุปกรณ์ทำความเย็น ทำงาน ตามที่ได้ตั้งค่าอุณหภูมิไว้ การนำมาใช้งานและการควบคุมก็ขึ้นอยู่กับจุดประสงค์ของการใช้งาน
เครื่องวัดอุณหภูมิก็จะมีส่วนที่รับอุณหภูมิ (Input) จากหัววัดอุณหภูมิ หรือที่เรียกกันว่าเซ็นเซอร์วัดอุณหภูมิแล้วมาแสดงผลที่หน้าจอ Display พร้อมกับควบคุมอุณหภูมิให้ได้ตามค่าที่ได้กำหนดไว้ หากอุณหภูมิไม่ได้ตามที่กำหนดไว้ก็จะมีในส่วนของการสั่งงาน (Output) สั่งงานให้อุปกรณ์สำหรับทำความร้อนหรืออุปกรณ์ทำความเย็นทำงานให้ได้ตามค่าที่กำหนดไว้
เหมาะสำหรับงานใน ห้องควบคุมอุณหภูมิความชื้น, อุตสาหกรรมอาหาร,ห้องอบ, ห้องแช่เย็น,ห้องแล็ป,ห้องควบคุมระบบคอมพิวเตอร์, Clean Room, Warehouse ที่มี ปัญหาในการควบคุมอุณหภูมิ หรือความชื้น ทำให้เกิดความเสียหายต่ออุปกรณ์ หรือวัสดุที่ต้องการควบคุมอุณหภูมิ ความชื้น เป็นต้น
เป้าหมายและหลักการทำงานของโปรเจค
ให้เซ็นเซอร์วัดอุณหภูมิ DHT22 เป็นส่วนที่รับอุณหภูมิ (Input) ส่งให้ บอร์ด Arduino สั่งให้แสดงค่าอุณหภูมิที่วัดได้ ที่บรรทัดที่ 1 ของหน้าจอ LCD Display และ ต้องการควบคุมอุณหภูมิให้ได้ตามค่าที่ได้กำหนด โดยการเขียนโค้ดกำหนดไว้ โดยให้แสดงที่บรรทัดที่ 2 ของหน้าจอ LCD Display
โดยเมื่ออุณหภูมิวัดค่าได้เท่ากับหรือมากกว่าค่าที่กำหนดในตัวอย่างคือ 40 องศาเซลเซียส Arduino จะไปสั่งงาน (Output) คือ ให้ออด Buzzer แสดงการแจ้งเตือน และเมื่ออุณหภูมิวัดค่าได้น้อยกว่า 40 องศาเซลเซียส ให้ ออด Buzzer หยุดการแจ้งเตือน
อุปกรณ์ที่ใช้ในโปรเจค
1. Arduino UNO R3
2. โมดูล I2C LCD พร้อมหน้าจอ LCD 1602
3. Jumper (F2F) 20cm Female to Female
4. Sensor Shield V 5.0
5. DHT22 Temperature and Humidity Sensor + PCB
6. Keyestudio Passive Buzzer Alarm Module
*** การใช้งานแบบไม่ต้องการเชื่อมต่อสาย USB กับ คอมพิวเตอร์ ให้ใช้ Adapter DC 9V 1A Power Supply เป็นแหล่งจ่ายไฟ เสียบเข้ากับ DC Power Jack ของ บอร์ด Arduino ***
ขั้นตอนการทำโปรเจค
1. ต่อใช้งาน จอ LCD กับ Arduino
1.1 ยึดบอร์ด Arduino UNO
1.2 ประกอบ Sensor Shield V 5.0
1.3 เชื่อมต่อสาย LCD
1.4 ดาวน์โหลด Arduino I2C Library สำหรับ LCD
https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
1.5 ติดตั้ง I2C Library สำหรับ LCD
1.5.1 เชื่อมต่อสาย USB ระหว่าง คอมพิวเตอร์ กับ บอร์ด Arduino
1.5.2 เปิดโปรแกรม Arduino IDE
1.5.3 ไปที่ Skecth -> Include Library -> Add .ZIP Library...
1.5.4 ไปที่ ไลบรารี Arduino-LiquidCrystal-I2C-library-master.zip ที่เรา ดาวน์โหลด มา -> Open
1.5.5 ตรวจสอบที่ Skecth -> Include Library จะพบ ไลบรารี Arduino-LiquidCrystal-I2C-library-master เพิ่มเข้ามาใน Arduino IDE ของเรา
1.6 อัพโหลดโค้ด
1.6.1 เขียนโค้ดดังนี้
1.6.2 ไปที่ Tools > Board เลือกเป็น Arduino/Genuino UNO
1.6.3 ไปที่ Tools > Port แล้วเลือกพอร์ตที่ปรากฏ (กรณีใช้เครื่องคอมพิวเตอร์ที่มี COM Port มากกว่าหนึ่ง ให้เลือกตัวอื่นที่ไม่ใช่ COM1)
ในตัวอย่างเลือกเป็น "COM6"
(ถ้ายังว่าง หรือ เป็น COM1 ให้ตรวจสอบการติดตั้งไดร์เวอร์ การต่อสาย USB ของ Arduino UNO)
1.6.4 กดปุ่ม เพื่ออัพโหลด
1.6.5 หากสามารถอัพโหลดโปรแกรมลงบอร์ดได้สำเร็จ จะแสดงคำว่า Done uploading. ที่แถบด้านล่าง
1.7 ปรับความสว่างหน้าจอ LCD
2. เชื่อมต่อสาย DHT22
3. เชื่อมต่อสาย Keyestudio Buzzer
4.7 ไปที่ช่องค้นหา พิมพ์ DHT (เพื่อค้นหา DHT sensor library )
4.8 เลื่อนเมาส์ไปที่ DHT sensor library แล้ว คลิก Install
4.10 ตรวจสอบที่ Skecth -> Include Library จะพบ ไลบรารี DHT sensor library เพิ่มเข้ามาใน Arduino IDE ของเรา
5. ติดตั้ง Adafruit Unified Sensor Library
5.1 ดาวน์โหลด Library
https://github.com/adafruit/Adafruit_Sensor
5.2 ไปที่ Clone or download -> Download ZIP
5.3 ไปที่ Skecth -> Include Library -> Add .ZIP Library...
5.4 ไปที่ ไลบรารี Adafruit_Sensor-master ที่เรา ดาวน์โหลด มา -> Open
5.5 ตรวจสอบที่ Skecth -> Include Library จะพบ ไลบรารี Adafruit Unified Sensor เพิ่มเข้ามาใน Arduino IDE ของเรา
6. ภาพรวมการต่อโปรเจค
7. อัพโหลดโค้ด
ประโยชน์และการนำโปรเจคไปพัฒนาต่อ
เช่น..เครื่องควบคุมอุณหภูมิเป็นอุปกรณ์ที่ใช้ในการควบคุมอุณหภูมิให้ได้ตามค่าอุณหภูมิที่กำหนดไว้ โดยจะนำมาใช้ในการสั่งการให้กับอุปกรณ์สำหรับทำความร้อนหรืออุปกรณ์ทำความเย็น ทำงาน ตามที่ได้ตั้งค่าอุณหภูมิไว้ การนำมาใช้งานและการควบคุมก็ขึ้นอยู่กับจุดประสงค์ของการใช้งาน
เครื่องวัดอุณหภูมิก็จะมีส่วนที่รับอุณหภูมิ (Input) จากหัววัดอุณหภูมิ หรือที่เรียกกันว่าเซ็นเซอร์วัดอุณหภูมิแล้วมาแสดงผลที่หน้าจอ Display พร้อมกับควบคุมอุณหภูมิให้ได้ตามค่าที่ได้กำหนดไว้ หากอุณหภูมิไม่ได้ตามที่กำหนดไว้ก็จะมีในส่วนของการสั่งงาน (Output) สั่งงานให้อุปกรณ์สำหรับทำความร้อนหรืออุปกรณ์ทำความเย็นทำงานให้ได้ตามค่าที่กำหนดไว้
เหมาะสำหรับงานใน ห้องควบคุมอุณหภูมิความชื้น, อุตสาหกรรมอาหาร,ห้องอบ, ห้องแช่เย็น,ห้องแล็ป,ห้องควบคุมระบบคอมพิวเตอร์, Clean Room, Warehouse ที่มี ปัญหาในการควบคุมอุณหภูมิ หรือความชื้น ทำให้เกิดความเสียหายต่ออุปกรณ์ หรือวัสดุที่ต้องการควบคุมอุณหภูมิ ความชื้น เป็นต้น
เป้าหมายและหลักการทำงานของโปรเจค
ให้เซ็นเซอร์วัดอุณหภูมิ DHT22 เป็นส่วนที่รับอุณหภูมิ (Input) ส่งให้ บอร์ด Arduino สั่งให้แสดงค่าอุณหภูมิที่วัดได้ ที่บรรทัดที่ 1 ของหน้าจอ LCD Display และ ต้องการควบคุมอุณหภูมิให้ได้ตามค่าที่ได้กำหนด โดยการเขียนโค้ดกำหนดไว้ โดยให้แสดงที่บรรทัดที่ 2 ของหน้าจอ LCD Display
โดยเมื่ออุณหภูมิวัดค่าได้เท่ากับหรือมากกว่าค่าที่กำหนดในตัวอย่างคือ 40 องศาเซลเซียส Arduino จะไปสั่งงาน (Output) คือ ให้ออด Buzzer แสดงการแจ้งเตือน และเมื่ออุณหภูมิวัดค่าได้น้อยกว่า 40 องศาเซลเซียส ให้ ออด Buzzer หยุดการแจ้งเตือน
อุปกรณ์ที่ใช้ในโปรเจค
1. Arduino UNO R3
2. โมดูล I2C LCD พร้อมหน้าจอ LCD 1602
3. Jumper (F2F) 20cm Female to Female
4. Sensor Shield V 5.0
5. DHT22 Temperature and Humidity Sensor + PCB
6. Keyestudio Passive Buzzer Alarm Module
*** การใช้งานแบบไม่ต้องการเชื่อมต่อสาย USB กับ คอมพิวเตอร์ ให้ใช้ Adapter DC 9V 1A Power Supply เป็นแหล่งจ่ายไฟ เสียบเข้ากับ DC Power Jack ของ บอร์ด Arduino ***
ขั้นตอนการทำโปรเจค
1. ต่อใช้งาน จอ LCD กับ Arduino
1.2 ประกอบ Sensor Shield V 5.0
1.3 เชื่อมต่อสาย LCD
1.4 ดาวน์โหลด Arduino I2C Library สำหรับ LCD
https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
1.5 ติดตั้ง I2C Library สำหรับ LCD
1.5.1 เชื่อมต่อสาย USB ระหว่าง คอมพิวเตอร์ กับ บอร์ด Arduino
1.5.2 เปิดโปรแกรม Arduino IDE
1.5.3 ไปที่ Skecth -> Include Library -> Add .ZIP Library...
1.5.4 ไปที่ ไลบรารี Arduino-LiquidCrystal-I2C-library-master.zip ที่เรา ดาวน์โหลด มา -> Open
1.5.5 ตรวจสอบที่ Skecth -> Include Library จะพบ ไลบรารี Arduino-LiquidCrystal-I2C-library-master เพิ่มเข้ามาใน Arduino IDE ของเรา
1.6 อัพโหลดโค้ด
1.6.1 เขียนโค้ดดังนี้
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { lcd.begin(); lcd.backlight(); lcd.print("Hello, world!"); } void loop() { }
1.6.2 ไปที่ Tools > Board เลือกเป็น Arduino/Genuino UNO
1.6.3 ไปที่ Tools > Port แล้วเลือกพอร์ตที่ปรากฏ (กรณีใช้เครื่องคอมพิวเตอร์ที่มี COM Port มากกว่าหนึ่ง ให้เลือกตัวอื่นที่ไม่ใช่ COM1)
ในตัวอย่างเลือกเป็น "COM6"
(ถ้ายังว่าง หรือ เป็น COM1 ให้ตรวจสอบการติดตั้งไดร์เวอร์ การต่อสาย USB ของ Arduino UNO)
1.6.5 หากสามารถอัพโหลดโปรแกรมลงบอร์ดได้สำเร็จ จะแสดงคำว่า Done uploading. ที่แถบด้านล่าง
1.7 ปรับความสว่างหน้าจอ LCD
2. เชื่อมต่อสาย DHT22
3. เชื่อมต่อสาย Keyestudio Buzzer
4. ติดตั้ง DHT sensor library
4.3 เปิดโปรแกรม Arduino IDE
4.3 เปิดโปรแกรม Arduino IDE
4.4 ไปที่ Skecth -> Include Library -> Add .ZIP Library...
4.5 ไปที่ ไลบรารี DHT-sensor-library-master ที่เรา ดาวน์โหลด มา -> Open
4.5 ไปที่ ไลบรารี DHT-sensor-library-master ที่เรา ดาวน์โหลด มา -> Open
4.6 ไปที่ Tools -> Manage Libraries...
4.7 ไปที่ช่องค้นหา พิมพ์ DHT (เพื่อค้นหา DHT sensor library )
4.8 เลื่อนเมาส์ไปที่ DHT sensor library แล้ว คลิก Install
4.9 คลิก Close
4.10 ตรวจสอบที่ Skecth -> Include Library จะพบ ไลบรารี DHT sensor library เพิ่มเข้ามาใน Arduino IDE ของเรา
5.1 ดาวน์โหลด Library
https://github.com/adafruit/Adafruit_Sensor
5.2 ไปที่ Clone or download -> Download ZIP
5.3 ไปที่ Skecth -> Include Library -> Add .ZIP Library...
5.4 ไปที่ ไลบรารี Adafruit_Sensor-master ที่เรา ดาวน์โหลด มา -> Open
5.5 ตรวจสอบที่ Skecth -> Include Library จะพบ ไลบรารี Adafruit Unified Sensor เพิ่มเข้ามาใน Arduino IDE ของเรา
6. ภาพรวมการต่อโปรเจค
7. อัพโหลดโค้ด
/*
Temperature Monitoring With DHT22 & Arduino
For more details visit:
https://miniarduino.blogspot.com/2019/04/dht22.html
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>;
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
float temp;
float set_temp;
int buzzer = 8;
void setup()
{
dht.begin();
lcd.begin();
lcd.backlight();
pinMode(buzzer, OUTPUT);
set_temp = 40;
}
void loop()
{
temp = dht.readTemperature();
if (temp >= set_temp) {
lcd.setCursor(0, 0);
lcd.print("TEMP: = " + String(temp) + " C");
lcd.setCursor(0, 1);
lcd.print("SET : = " + String(set_temp) + " C");
buzzer_on();
}
else {
lcd.setCursor(0, 0);
lcd.print("TEMP: = " + String(temp) + " C");
lcd.setCursor(0, 1);
lcd.print("SET : = " + String(set_temp) + " C");
}
delay(1);
}
void buzzer_on()
{ unsigned char i, j;
{ for (i = 0; i < 80; i++)
{ digitalWrite(buzzer, HIGH);
delay(1);//delay1ms
digitalWrite(buzzer, LOW);
delay(1);//ms delay
}
for (i = 0; i < 100; i++)
{
digitalWrite(buzzer, HIGH);
digitalWrite(buzzer, LOW);
delay(2);
}
}
}
ความคิดเห็น
แสดงความคิดเห็น