ผู้เขียนบทความ : นายรัฐภาคย์ รามอินทร์ COE#15
นายอิทธิกร กาญจนโรจน์ COE#15
คณะวิศวกรรมศาสตร์ สาขาวิศวกรรมคอมพิวเตอร์
วิชา : 04513201 การโปรแกรมคอมพิวเตอร์ขั้นสูง 1/2566
1.ความเป็นมา
ปัจจุบันการรับประทานอาหารนั้นผู้คนส่วนใหญ่ก็ต้องการรับประทานอาหารที่มีรสชาติสดใหม่เหมือนกับที่พึ่งผ่านการปรุงมา แต่บางครั้ง ผู้คนไม่ได้ปรุงอาหารแล้วรับประทานเลยในทันทีหรือไม่ก็มีการซื้อมา ซึ่งบางครั้งอาหารนั้นไม่ได้ปรุงสดใหม่ ผ่านการกักเก็บจนเสียรสชาติที่ดีที่สุดไปแล้ว หรือในอาหารบางอย่างเมื่อคุณภาพของอาหารลดลงไปแล้ว อาจมีสารที่ไม่ดีต่อร่างกาย หลั่งออกมาจากอาหารนั้น และทำให้เสียรสชาติที่ควรไปได้ อาจส่งผลให้ร่างกายของเราหลังจากรับประทานไปแล้ว อาจจะทำให้ระบบในร่างกาย มีปัญหาและส่งผลต่อการเจ็บป่วยของเราได้
2.วัตถุประสงค์
2.1 เพื่อสร้างเครื่องถนอมคุณภาพอาหาร
2.2 เพื่อให้ผู้ใช้ได้รับประทานอาหารที่สดใหม่และมีคุณภาพ
2.3 เพื่อป้องกันการเกิดปัญหาต่อระบบในร่างกายที่เกิดจากการกินอาหาร
2.4 เพื่อพัฒนาทักษะการเขียนโปรแกรม Arduino IDE
2.5 เพื่อเรียนรู้การใช้อุปกรณ์และเซ็นเซ็นเซอร์ต่างๆ
2.6 เพื่อเรียนรู้การออกแบบวงจรและการสร้างวงจร
3.ขอบเขต
3.1 สามารถอุ่นอาหารได้
3.2 สามารถปรับความร้อนตามชนิดของอาหารได้
3.3 สามารถแสดงค่าอุณภูมิในห้องอบได้
3.4 สามารถแสดงอุณภูมิผ่านมือถือระยะไกลได้
3.5 สามารถทำให้อาหารมีคุณภาพที่ดีได้นานขึ้น
3.6 ชะลอการเน่าเสียของอาหารได
4.ประโยชน์ที่คาดว่าจะได้รับ
4.1 ช่วยลดการสูญเสียอาหาร
4.2 คงความอร่อยของอาหาร
4.3 ถนอมอาหารทำให้อาหารสามารถเก็บรักษาได้นานขึ้น
4.4 ถนอมอาหารให้ร้อนๆเหมือนทำขึ้นใหม่
5.ทฤษฎีและงานอื่นที่เกี่ยวข้อง
5.1 เซนเซอร์DHT 22 เป็นโมดูลวัดอุณหภูมิและความชื้นที่ความละเอียดและช่วงการวัดที่สูงกว่า DHT11 ใช้ไฟได้ 3-5V สามารถวัดอุณหภูมิได้ตั้งแต่ -40 ถึง 80°C ที่ความแม่นยำ ±0.5°C และความชื้น 0-100% คลาดเคลื่อน 2-5% อัตราการอ่านค่าอุณหภูมิและความชื้นสูงสุด 0.5Hz โมดูล DHT22 ใช้งาน
5.2 ESP32 เป็นชิปไมโครคอนโทรลเลอร์ที่มาพร้อม WiFi มาตรฐาน 802.11 b/g/n และบลูทูธเวอร์ชั่น 4.2 เป็นรุ่นต่อยอดความสำเร็จของ ESP8266 โดยในรุ่นนี้ได้ออกมาแก้ไขข้อเสียของ ESP8266 ทั้งหมด
5.3 RELAY รีเลย์ คืออุปกรณ์อิเล็กทรอนิกส์ที่ทำหน้าเปรียบเสมือนสวิตซ์สำหรับตัดต่อในวงจรควบคุมอัตโนมัติ
5.4 line notification ออกแบบมาเพื่อใช้สำหรับการแจ้งเตือนต่าง ๆ โดยเฉพาะ สามารถส่งข้อความเพื่อแจ้งเตือนไปยังกลุ่ม หรือบุคคลก็ได้ ทั้งนี้ LINE Notify จะมีข้อจำกัดการใช้งานอยู่ที่ จะสามารถใช้งานได้กับบุคคลเดียวเท่านั้น หรือกลุ่มเดียวเท่านั้น การติดต่อกับ LINE จะใช้โปรโตคอล HTTPS ในการติดต่อ และใช้สิ่งที่เรียกว่า Token เป็นรหัสผ่านเข้าไปขอส่งข้อความเข้า LINE
5.5 หลอดไฟให้ความร้อน 100 wat ให้แสงสว่างโดยการให้ความร้อนแก่ไส้หลอดที่เป็นลวดโลหะกระทั่งมีอุณหภูมิสูงและเปล่งแสง หลอดแก้วที่เติมแก๊สเฉื่อยหรือเป็นสุญญากาศป้องไม่ให้ไส้หลอดที่ร้อนสัมผัสอากาศ ในหลอดฮาโลเจน
5.6 ตัวต้านทานปรับค่าได้ เป็นอุปกรณ์ที่ใช้กันมาก ในวงจรอิเล็กทรอนิกส์ ตัวต้านทานจะมีหน้าที่เป็นตัวจำกัดการไหลของกระแสไฟฟ้าและแรงเคลื่อนไฟฟ้า ตามจุดต่างๆ ที่กำหนดไว้ในวงจร
5.7 จอ LCD เป็นจอที่แสดงผลเป็นตัวอักษรตามช่องแบบตายตัว เช่นจอ LCD ขนาด 16×2 หมายถึงใน 1 แถวมีตัวอักษรใส่ได้ 16 ตัว และมีทั้งหมด 2 บรรทัดให้ใช้งาน ส่วน 20×4 จะหมายถึงใน 1 แถวมี ตัวอักษรใส่ได้20 ตัว และมีทั้งหมด 2 บรรทัด
6.ผลการดำเนินงาน
Diagram : การทำงานของระบบ
การทำงานของระบบ
การทำงานของระบบแจ้งเตือนการรับประทานยาจะอธิบายการทำงานร่วมกันของอุปกรณ์และวิธีการทำงานของชุดคำสั่ง
โดยแบ่งเป็นหัวข้อดังนี้
1.ภาพรวมการทำงานของอุปกรณ์
ภาพรวมการทำงานของระบบคือเซ็นเซอร์จะจับอุณภูมิถ้าเกินกว่ากำหนดจะหยุดการจ่ายไฟให้หลอดไฟถ้าต่ำกว่าจะจ่ายไฟอีกครั้ง แต่หากไม่สามารถทำอุณภูมิภายใน 1 นาทีระบบจะส่งการแจ้งเตือนไปยังผู้ใช้ให้รีบตรวจสอบ
2. ทฤษฎีที่เกี่ยวข้อง
การเขียนโปรแกรมแบ่งเป็น คือการเขียนโปรแกรมในESP32 เพื่อรับและสั่งอุปกรณ์ต่างๆ โดยใช้โปรแกรม Arduino IDE ในการเขียนโปรแกรม
3.Line notify
Line notify บริการการแจ้งเตือนจากแอพพลิเคชั่น Lineโดยการเชื่อมต่อคือ ต้อสร้างโปรเจคและนำ Token มาเชื่อมต่อ
กับงานของเรา โดยเราต้องเขียนชุดคำสั่ง ซึ่งสามารถส่งได้ทั้งข้อความ อีโมจิ และสติ๊กเกอร์ ได้ด้วย ขึ้นอยู่กับผู้สร้างต้องการแบบไหน ส่งในเวลาใด ซึ่งการทำงานก็มีความเสถียรไม่น้อยเลยสามารถแจ้งเตือนระยะไกล ใกล้ก็ได้ขอแค่เชื่อมต่อกับเครือข่ายอินเตอร์เน็ต สามารถส่งได้อย่างรวดเร็วในทันที
4.เซนเซอร์DHT 22
DHT22 เป็นโมดูลวัดอุณหภูมิและความชื้นที่ความละเอียดและช่วงการวัดที่สูงกว่า DHT11 ใช้ไฟได้ 3-5V สามารถวัดอุณหภูมิได้ตั้งแต่ -40 ถึง 80°C ที่ความแม่นยำ ±0.5°C และความชื้น 0-100% คลาดเคลื่อน 2-5% อัตราการอ่านค่าอุณหภูมิและความชื้นสูงสุด 0.5Hz โมดูล DHT22 ใช้งาน
5.รีเลย์
รีเลย์ (Relay) คืออุปกรณ์อิเล็กทรอนิกส์ที่ทำหน้าที่คล้ายสวิตซ์ในการควบคุมการจ่ายพลังงานไฟฟ้า รีเลย์จะมีแรงดันที่ใช้ในการขับอยู่เช่นเดียวกัน และตัวรีเลย์เองก็ถือเป็นอุปกรณ์กำลังสูงที่ต้องใช้ทรานซิสเตอร์มาช่วยขับด้วย แต่ในการใช้งานมักจะเลือกใช้งานแบบโมดูลสำเร็จรูปเพียงต่อสัญญาณเข้า ไฟเลี้ยงและอุปกรณ์ที่ต้องการควบคุมก็สามารถใช้งานได้ทันทีรีเลย์จะแบ่งเป็น 2 แบบ ดังนี้
รีเลย์แบบขดลวด – เป็นรีเลย์ที่มีส่วนประกอบของขดลวดเหนี่ยวนำ และหน้าคอนเทค หลักการคือเมื่อเกิดความเหนี่ยวนำขึ้นจะทำให้คอนเทคถูกดึงด้วยสนามแม่เหล็กมาชนกัน ทำให้พลังงานไฟฟ้าสามารถไหลผ่านไปได้ ทั้งนี้ข้อเสียของรีเลย์แบบนี้คือเมื่อหน้าคอนเทคมีการสัมผัสกันจะทำให้เกิดการอาร์คขึ้นรวมทั้งต้องใช้กระแสไฟฟ้าจำนวนหนึ่งในการจ่ายไปให้ขดลวดเหนี่ยวนำ
รีเลย์แบบขดลวดจะแบ่งย่อยได้ตามหน้าคอนเทคที่มีภายในสำหรับรีเลย์ที่นิยมใช้มักมีหน้าคอนเทคเดียวและมีขาต่อใช้งานจำนวน 5 ขา คือ ขาขดลวดเหนี่ยวนำ 2 ขา และขาควบคุมอุปกรณ์อื่นจำนวน 3 ขา ขาควบคุมอุปกรณ์อื่นจะแยกได้เป็นขาNC (Normally Close) COM (Common) และ NO(Normally Open) การใช้งานส่วนใหญ่จะใช้ขา NO และ COMการใช้งานโมดูลรีเลย์สำเร็จรูปจะคำนึงถึงแรงดันไฟฟ้าที่ใช้ขับรีเลย์ และจำนวนรีเลย์ที่ต้องการใช้เป็นหลัก สำหรับ ESP32 ไม่มีโมดูลรีเลย์สำเร็จรูปที่ใช้แรงดันไฟฟ้า 3.3V แต่สามารถใช้รีเลย์สำเร็จรูปที่ใช้แรงดันไฟฟ้า 5V ได้ โดยสามารถดึงแรงดันไฟฟ้า5V มาจ่ายให้กับโมดูลรีเลย์ได้จากช่อง Vin ของบอร์ดNodeMCU-32S ซึ่งแรงดันไฟฟ้า 5V จะมาจากพอร์ตMicroUSB
โค้ดในส่วนของ Main Code
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <WiFi.h>
#include <TridentTD_LineNotify.h>
#define SSID "Wow"
#define PASSWORD "12345678"
#define LINE_TOKEN "e15PN1f9YTDMb4Dm5mDkXuDcWzRQ5mgsfHpTTJssbgE"
class TemperatureController {
public:
TemperatureController() : dht(DHTPIN, DHTTYPE), lcd(0x27, 16, 2) {}
void setup() {
Serial.begin(115200);
dht.begin();
lcd.init();
lcd.backlight();
lcd.clear();
pinMode(controlPin, OUTPUT);
// Connect to Wi-Fi
WiFi.begin(SSID, PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting WiFi...");
lcd.setCursor(0, 0);
lcd.print("Connecting WiFi...");
}
Serial.println("Connected WiFi");
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Connected WiFi");
delay(1000);
lcd.clear();
// Record the start time
startTime = millis();
LINE.setToken(LINE_TOKEN);
// Send Line Notify message
LINE.notify("Welcome");
}
void loop() {
float temperature = readTemperature();
updateDisplay(temperature);
controlHeater(temperature);
checkAndNotify(temperature);
delay(5000); // 5-second delay
}
private:
const int controlPin = 17;
const int DHTPIN = 19;
const int DHTTYPE = DHT22;
DHT dht;
LiquidCrystal_I2C lcd;
unsigned long startTime = 0;
float readTemperature() {
return dht.readTemperature();
}
void updateDisplay(float temperature) {
lcd.setCursor(0, 0);
lcd.print("Temp = " + String(temperature, 1) + " C");
}
void controlHeater(float temperature) {
if (temperature >= 65) {
digitalWrite(controlPin, LOW);
lcd.setCursor(0, 1);
lcd.print("Heater = OFF");
} else if (temperature < 60) {
digitalWrite(controlPin, HIGH);
lcd.setCursor(0, 1);
lcd.print("Heater = ON");
}
}
void checkAndNotify(float temperature) {
if (millis() - startTime >= 60000 && temperature < 40) {
String message = "Heating failed. Please check the heater ><";
LINE.notify(message);
}
}
};
TemperatureController tempController;
void setup() {
tempController.setup();
}
void loop() {
tempController.loop();
}
การทดสอบ
ส่วนนี้จะกล่าวถึงการทดสอบโดยแบ่งการทดลองออกเป็น 2 ส่วนดังนี้
1. การทดสอบการควบคุมความร้อนตามที่ต้องการ
ทดลองการทำงานของระบบ ESP32 โดยการเปิดหลอดทำความร้อน
ทดสอบเปิดหลอดไฟ
สถานการณ์ทำงาน และ ตัวปรับอุณภูมิ
เมื่ออุณภูมิเมื่อถึง 67 องศา ระบบจะสั่งหยุดจ่ายไฟให้หลอดไฟ และเมื่ออุณภูมิต้ำกว่า 60 องศา ระบบจะสั่งให้หลอดไฟเปิดอีกครั้งจะคุมอุณภูมิไปเรื่อยๆ
2. ทดสอบการแจ้งเตือนไปยังผู้ใช้
โดยทดสอบการไม่จ่ายไป 220 v ไปยังหลอดไฟเพื่อไม่ให้สามารถควบคุมอุณภูมิได้และเมื่อครบ 1 นาทีจะส่งข้อความยังผู้ใช้ เพื่อให้มาเช็คระบบ
ทดสอบการแจ้งเตือนเมื่อเริ่มเปิดเครื่อง
ทดสอบการแจ้งเตือนเมื่อไม่สามารถทำความร้อนได้
บันทึกผลการทดลองของการใช้เครื่องถนอมอาหารโดยใช้ความร้อน
บันทึกผลการทดลองของการทดลองรีเลย์
ทดสอบ | ผลทดสอบ | เปอร์เซ็นความถูกต้อง |
10 | 10 | 100% |
บันทึกผลการทดลองของการทดสอบการแจ้งเตือนผ่านไลน์
ทดสอบ | ผลทดสอบ | เปอร์เซ็นความถูกต้อง |
5 | 5 | 100% |
บันทึกผลการทดลองการใช้งานเครื่องถนอมอาหารโดยใช้ความร้อน
ทดสอบ | ผลทดสอบ | เปอร์เซ็นความถูกต้อง |
5 | 5 | 100% |
สรุปผลการทดสอบ
จากผลการทดสอบของระบบเครื่องถนอมอาหารแล้ว จะสามารถทำงานได้ตามต้องการดังนี้ ได้แก่
1) สามารถปรับความร้อนของหลอดไฟให้ความร้อนตามที่เราต้องการได้
2) สามารถถนอมอาหารให้มีความอุ่นได้ตามต้องการ
3) ระบบแจ้งเตือนเมื่อเกิดข้อผิดพลาดให้ผู้ใช้ได้รับรู้ได้
4) สามารถแสดงสถานะ เปิด-ปิด ขึ้นตรงจอ LCD ได้ตรงที่ทำงาน
7.สรุปผลและข้อเสนอแนะ
จากการทดลองในส่วนต่างๆของอุปกรณ์ สามารถปรับความร้อนของหลอดไฟให้ความร้อนตามที่เราต้องการได้ ส่วนต่อไปคือสามารถถนอมอาหารให้มีความอุ่นได้ตามต้องการ และส่วนสุดท้ายคือระบบแจ้งเตือนเมื่อเกิดข้อผิดพลาดให้ผู้ใช้ได้รับรู้ได้ แสดงสถานะ เปิด-ปิด ขึ้นตรงจอ LCD ได้ตรงที่ทำงาน
8.ข้อมูลอ้างอิง
1.การใช้งานอุปกรณ์ไมโครคอนโทรลเลอร์ต่างๆ
[1] การถนอมอารโดยรักษาความร้อน
https://www.innnews.co.th/lifestyle/news_38617/
[2] สอนใช้งาน ESP32 แสดงข้อความออกจอ LCD 1602
https://www.cybertice.com/article/628/สอนใช้งาน-
[3] สอนใช้งาน ESP32 DHT22 AM2302 Module
https://www.cybertice.com/article/439/สอนใช้งาน-
2.อ้างอิงรูปภาพ
เซนเซอร์DHT 22 :
ESP32 :
https://th.cytron.io/p-nodemcu-esp32
RELAY รีเลย์ :
https://www.robotsiam.com/product/98/relay-1-channel-dc-5v-low-level-trigger
line notification :
หลอดไฟให้ความร้อน 100 wat :
https://www.lazada.co.th/products/philips-100-w-e27-i3083981806.html
ตัวต้านทานปรับค่าได้ :
จอ LCD :
วีดีโอการทำงานของเครื่องถนอมอาหารโดยใช้ความร้อน