ผู้เขียนบทความ :
นายเอกบุรุษ มุสะระ COE#16
นายปุญณวิช ชูมนต์ COE#16
นายจัทรกานต์ ม่วงโพธิ์หวั่น COE#16
นายคมชาญ พงศาการ COE#16
คณะวิศวกรรมศาสตร์ สาขาวิศวกรรมคอมพิวเตอร์
วิชา : 04-513-201 การโปรเเกรมคอมพิวเตอร์ขั้นสูง
1.ความเป็นมา
การพัฒนาอุปกรณ์ตรวจวัดอุณหภูมิและความชื้นแบบอัตโนมัติเริ่มเป็นที่นิยมมากขึ้น เนื่องจากความต้องการในการเฝ้าระวังสภาพแวดล้อมในสถานที่ต่าง ๆ เช่น โรงงานอุตสาหกรรม ฟาร์มเกษตร ห้องเซิร์ฟเวอร์ หรือในครัวเรือนทั่วไป อุปกรณ์เหล่านี้สามารถช่วยในการควบคุมและตรวจสอบสภาพอากาศภายในพื้นที่ที่ต้องการ รวมถึงช่วยป้องกันปัญหาที่อาจเกิดขึ้นจากสภาพอุณหภูมิและความชื้นที่ไม่เหมาะสม
เทคโนโลยีไมโครคอนโทรลเลอร์ เช่น ESP32 ได้รับความนิยมอย่างมากในการนำมาใช้พัฒนาอุปกรณ์ IoT (Internet of Things) เนื่องจากมีความสามารถในการเชื่อมต่ออินเทอร์เน็ตและรองรับการทำงานร่วมกับเซ็นเซอร์หลากหลายชนิด เช่น DHT11 สำหรับการวัดอุณหภูมิและความชื้น รวมถึง DS18B20 ซึ่งเป็นเซ็นเซอร์วัดอุณหภูมิที่มีความแม่นยำสูง
การรวมเซ็นเซอร์เหล่านี้เข้ากับระบบ Home Assistant ผ่าน ESPHome ทำให้สามารถเฝ้าระวังข้อมูลแบบ real-time ได้อย่างง่ายดาย ทั้งยังสามารถตั้งค่าการแจ้งเตือน หรือสั่งการอุปกรณ์ควบคุมอื่น ๆ ตามค่าที่วัดได้ นอกจากนี้ การใช้หน้าจอแสดงผล LCD1602 ช่วยให้สามารถแสดงผลข้อมูลอุณหภูมิและความชื้นได้ในสถานที่จริงโดยไม่ต้องเชื่อมต่อกับระบบอินเทอร์เน็ต
การพัฒนาอุปกรณ์ในลักษณะนี้ไม่เพียงแต่ช่วยเพิ่มความสะดวกในการตรวจสอบสภาพแวดล้อม แต่ยังเป็นการสร้างระบบอัตโนมัติที่มีความแม่นยำสูง ช่วยลดความเสี่ยงและปรับปรุงการจัดการในหลายภาคส่วน
2.วัตถุประสงค์
1.เพื่อตรวจสอบอุณหภูมิและความชื้น: ทำการวัดอุณหภูมิและความชื้นในพื้นที่ที่ต้องการ เช่น ในห้องฟาร์ม โรงงาน ห้องเซิร์ฟเวอร์ หรือในบ้าน และแสดงผลข้อมูลแบบ real-time ผ่านหน้าจอแสดงผลหรือระบบ Home Assistant
2.เพื่อพัฒนาระบบแจ้งเตือน: เมื่ออุณหภูมิหรือความชื้นเกินขอบเขตที่กำหนด ระบบสามารถส่งการแจ้งเตือนไปยังผู้ใช้งานผ่าน Home Assistant หรือตั้งค่าให้สั่งการอุปกรณ์อื่น ๆ ในการควบคุมสภาพแวดล้อม
3.เพื่อปรับปรุงการจัดการสภาพแวดล้อม: ช่วยให้สามารถปรับสภาพแวดล้อมให้เหมาะสมกับความต้องการ เช่น การควบคุมความชื้นในห้องเก็บอาหารหรือการควบคุมอุณหภูมิในฟาร์มเพื่อประสิทธิภาพในการเลี้ยงสัตว์หรือปลูกพืช
4.เพื่อลดความเสี่ยงจากสภาพแวดล้อมที่ไม่เหมาะสม: ช่วยป้องกันความเสียหายที่อาจเกิดจากสภาพอุณหภูมิหรือความชื้นที่สูงหรือต่ำเกินไป เช่น อุปกรณ์อิเล็กทรอนิกส์ที่อาจเสียหายจากความร้อนเกินไป หรือผลผลิตในฟาร์มที่ได้รับผลกระทบจากความชื้น
5.เพื่อสร้างระบบตรวจวัดที่มีความแม่นยำและเชื่อถือได้: ด้วยการใช้เซ็นเซอร์ที่มีความแม่นยำสูงเช่น DS18B20 ทำให้การวัดผลเป็นไปอย่างแม่นยำและเสถียร
3.ขอบเขต
1.ใช้ ESP32 ร่วมกับเซ็นเซอร์ DHT11 และ DS18B20 เพื่อวัดอุณหภูมิและความชื้น
2.แสดงผลข้อมูลบนหน้าจอ LCD1602 และส่งข้อมูลไปยัง Home Assistant ผ่าน ESPHome
3.เพิ่ม buzzer สำหรับการแจ้งเตือนเมื่ออุณหภูมิหรือความชื้นเกินขอบเขตที่กำหนด
4.รองรับการอัปเดตเฟิร์มแวร์ผ่าน OTA และการควบคุม/ตรวจสอบข้อมูลผ่าน Home Assistant
4.ประโยชน์ที่คาดว่าจะได้รับ
1.การเฝ้าระวังสภาพแวดล้อม: สามารถติดตามอุณหภูมิและความชื้นในพื้นที่ต่าง ๆ ได้แบบ real-time ช่วยให้ผู้ใช้งานสามารถทำการควบคุมและปรับสภาพแวดล้อมให้เหมาะสมกับความต้องการ
2.การแจ้งเตือนอัตโนมัติ: Buzzer จะทำงานเมื่ออุณหภูมิหรือความชื้นเกินขอบเขตที่กำหนด ช่วยให้ผู้ใช้งานได้รับข้อมูลทันที เพื่อป้องกันปัญหาที่อาจเกิดขึ้น
3.การเพิ่มประสิทธิภาพในการจัดการ: ช่วยให้การควบคุมสภาพแวดล้อมในฟาร์ม โรงงาน หรือห้องเก็บผลิตภัณฑ์มีความแม่นยำมากขึ้น ช่วยลดความเสี่ยงและการสูญเสียที่เกิดจากสภาพอากาศไม่เหมาะสม
4.การบันทึกข้อมูลและวิเคราะห์: การบันทึกค่าอุณหภูมิและความชื้นช่วยให้ผู้ใช้งานสามารถวิเคราะห์แนวโน้มและปรับกลยุทธ์ในการจัดการได้อย่างมีประสิทธิภาพ
5.การสร้างระบบอัตโนมัติ: สามารถเชื่อมต่อกับ Home Assistant เพื่อสร้างระบบอัตโนมัติในการควบคุมอุปกรณ์ต่าง ๆ ตามค่าที่วัดได้ ทำให้การดำเนินชีวิตสะดวกสบายขึ้น
6.การเรียนรู้และพัฒนาเทคโนโลยี: เป็นโครงการที่ช่วยให้ผู้ใช้งานได้เรียนรู้และเข้าใจการทำงานของอุปกรณ์ IoT และการพัฒนาเฟิร์มแวร์ รวมถึงการนำเทคโนโลยีใหม่ ๆ มาใช้ในชีวิตประจำวัน
5.ความรู้ที่เกี่ยวข้อง
1.การทำงานของไมโครคอนโทรลเลอร์: ความรู้พื้นฐานเกี่ยวกับการทำงานของไมโครคอนโทรลเลอร์ เช่น ESP32 รวมถึงการโปรแกรมและการเชื่อมต่อกับอุปกรณ์เสริม
2.การใช้เซ็นเซอร์ต่าง ๆ: การทำงานของเซ็นเซอร์ DHT11 และ DS18B20 โดยเฉพาะวิธีการวัดอุณหภูมิและความชื้น รวมถึงวิธีการเชื่อมต่อและการตั้งค่าเซ็นเซอร์กับไมโครคอนโทรลเลอร์
3.การสื่อสารข้อมูล: ความรู้เกี่ยวกับการสื่อสารข้อมูลผ่าน Wi-Fi โดยใช้ ESPHome และการเชื่อมต่อกับ Home Assistant เพื่อการควบคุมและตรวจสอบข้อมูลแบบ real-time
4.การแสดงผลข้อมูล: การใช้งานหน้าจอ LCD1602 เพื่อแสดงผลข้อมูลที่วัดได้ รวมถึงการตั้งค่าการแสดงผลผ่านการเขียนโปรแกรมใน ESPHome
5.การทำงานของระบบอัตโนมัติ: ความรู้เกี่ยวกับการสร้างระบบอัตโนมัติใน Home Assistant เช่น การตั้งค่า Automation และการควบคุมอุปกรณ์อื่น ๆ ตามค่าที่วัดได้
6.การจัดการพลังงาน: การเข้าใจการจัดการพลังงานในระบบ IoT เพื่อให้แน่ใจว่าอุปกรณ์สามารถทำงานได้อย่างมีประสิทธิภาพและประหยัดพลังงาน
7.การบำรุงรักษาและการอัปเดต: ความรู้เกี่ยวกับการอัปเดตเฟิร์มแวร์ผ่าน OTA และการบำรุงรักษาอุปกรณ์เพื่อให้ทำงานได้อย่างต่อเนื่อง
8.การวิเคราะห์ข้อมูล: ความรู้เกี่ยวกับการบันทึกและวิเคราะห์ข้อมูลที่ได้จากเซ็นเซอร์ เพื่อการตัดสินใจที่ดีขึ้นในการจัดการสภาพแวดล้อม
การทำงานของระบบ
CODE
esphome:
name: temproom
friendly_name: TEMPROOM
esp32:
board: esp32doit-devkit-v1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "zHFm4ntUyl/UYsGHL3T3+vSffs5u5U6Ga0Xei0UZodQ="
ota:
- platform: esphome
password: "2ee32afb994a4d5662cbe8c8471d0e93"
wifi:
ssid: TAN
password: "11111111t"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Temproom Fallback Hotspot"
password: "EWiWiX92jFDv"
captive_portal:
web_server:
sensor:
- platform: dht
pin: 13
temperature:
name: "Living Room Temperature"
id: living_room_temperature
humidity:
name: "Living Room Humidity"
id: living_room_humidity
update_interval: 30s
- platform: dallas_temp
address: 0x412f5dd44629b828
name: "Dallas Temperature"
id: temp_dallas
update_interval: 30s
output:
- platform: ledc
pin: 18
id: rtttl_out
rtttl:
output: rtttl_out
button:
- platform: template
name: "Play Module!"
on_press:
then:
- rtttl.play: 'mission_imp:d=16,o=6,b=95:32d,32d#,32d,32d#,32d,32d#,32d,32d#,32d,32d,32d#,32e,32f,32f#,32g,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,a#,g,2d,32p,a#,g,2c#,32p,a#,g,2c,a#5,8c,2p,32p,a#5,g5,2f#,32p,a#5,g5,2f,32p,a#5,g5,2e,d#,8d'
- platform: template
name: "Stop!"
on_press:
then:
- rtttl.stop
# Check temperature and play sound if above threshold
interval:
- interval: 30s
then:
- if:
condition:
sensor.in_range:
id: living_room_temperature
above: 30
then:
- rtttl.play: 'mission_imp:d=16,o=6,b=95:32d,32d#,32d,32d#,32d,32d#,32d,32d#,32d,32d,32d#,32e,32f,32f#,32g,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,a#,g,2d,32p,a#,g,2c#,32p,a#,g,2c,a#5,8c,2p,32p,a#5,g5,2f#,32p,a#5,g5,2f,32p,a#5,g5,2e,d#,8d'
- interval: 30s
then:
- if:
condition:
sensor.in_range:
id: temp_dallas
above: 30
then:
- rtttl.play: 'mission_imp:d=16,o=6,b=95:32d,32d#,32d,32d#,32d,32d#,32d,32d#,32d,32d,32d#,32e,32f,32f#,32g,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,a#,g,2d,32p,a#,g,2c#,32p,a#,g,2c,a#5,8c,2p,32p,a#5,g5,2f#,32p,a#5,g5,2f,32p,a#5,g5,2e,d#,8d'
# I2C settings for the LCD
i2c:
sda: 21
scl: 22
# LCD display settings
display:
- platform: lcd_pcf8574
dimensions: 16x2
address: 0x27
id: lcd_screen
update_interval: 30s
lambda: |-
it.printf(0, 0, "Temp: %.1f C", id(temp_dallas).state);
auto current_time = id(esptime).now();
it.printf(0, 1, "Time: %02d:%02d", current_time.hour, current_time.minute);
one_wire:
- platform: gpio
pin: 32
# Time synchronization from Home Assistant
time:
- platform: homeassistant
id: esptime
timezone: Asia/Bangkok
การทดลอง
ทดลองเพิ่มอุณหภูมิว่าระบบ ทำงานได้ไหม ผลคือ เมื่ออุณหภูมิถึงที่กำหนดไว้ buzzer จะส่งเสียงเตือน
ปพร้อมทั้งมีข้อ
สรุปผลการทดลอง
การพัฒนาโครงการนี้มีปัญหาทางเทคนิคที่ต้องการการแก้ไขและปรับปรุงหลายจุด โดยการทำงานร่วมกับอุปกรณ์หลายตัวและเครือข่าย ทำให้ต้องปรับปรุงทั้งในด้านฮาร์ดแวร์และซอฟต์แวร์ เพื่อให้ระบบแจ้งเตือนอุณหภูมิทำงานได้เสถียรและตอบสนองต่อสถานการณ์ต่าง ๆ ได้อย่างรวดเร็วและแม่นยำ
ข้อมูลอ้างอิง
1.Bartek, M. (2021). Home Assistant for Beginners: Setting up ESPHome. Retrieved from https://www.home-assistant.io
2.Espressif Systems. (2020). ESP32 Technical Reference Manual. Retrieved from https://www.espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_en.pdf
3.Al-Hussain, S., & Al-Khateeb, R. (2020). “Design and Implementation of a Low-Cost Temperature Monitoring System Using DHT11 Sensor and ESP32 Microcontroller,” International Journal of Engineering Research & Technology (IJERT), 9(2), 112-118.
4.Lim, S. (2022). A Comprehensive Guide to Using DS18B20 Temperature Sensor with ESP32. Retrieved from https://randomnerdtutorials.com
5.Green, A. (2019). LCD1602 Module: Interfacing with Microcontrollers. Retrieved from https://learn.adafruit.com
6.Shrivastava, P. (2020). Building IoT Projects with ESP32 and ESPHome. Retrieved from https://esphome.io