ผู้เขียนบทความ : 067 นายนันทพัฒน์ แซ่เฮง COE#15
คณะวิศวกรรมศาสตร์ : สาขาวิศวกรรมคอมพิวเตอร์
วิชา : 04-513-201 การโปรเเกรมคอมพิวเตอร์ขั้นสูง 1/2566
1.ความเป็นมาและความสำคัญของปัญหา
เนื่องด้วยประเทศไทยตั้งอยู่ในเขตที่ร้อนมีแสงแดดที่ค่อนข้างมาก การจำเป็นในการใช้พัดลมระบายอากาศเป็นสิ่งสำคัญเป็นอย่างมาก แต่เดิมการใช้งานจะต้องเดินไปกดปุ่มเปิด-ปิด และระดับความแรงของพัดลมอาจไม่เป็นไม่ตามที่เราต้องการ ทำให้เสียเวลาที่จะเดินไปกดสวิตซ์ เปิด-ปิดหรือปรับระดับของพัดลม การทำงานให้มีการปรับระดับของพัดลมระบายอากาศถือเป็นเทคโนโลยีด้านสิ่งแวดล้อม เพื่อพัฒนาสภาพอากาศในห้องช่วยลดอุณหภูมิและกลิ่นอันไม่พึงประสงค์ โครงงานนี้เกิดจากแนวคิดที่ต้องการสั่งการและควบคุมพัดลมระบายอากาศได้อย่างสะดวกและรวดเร็ว จึงได้ประยุกต์เทคโนโลยีทางด้านควบคุมและทางด้านประมวลผล เพื่อใช้ใการสั่งการพัดลมระบายอากาศให้ทำงานโดยไม่ต้องเดินไปกดสวิตช์ ซึ่งโครงงานนี้จัดขึ้นเพื่อแก้ไขปัญหาในการปรับอากาศและให้พัดลมระบายอากาศได้มีการปรับระดับของพัดลมได้และพัฒนาการทำงานของพัดผมจากระบบmanualเป็นระบบอัตโนมัติ โดยจะผสมกับระบบmanualเข้าไปด้วย การทำงานของระบบอัตโนมัติให้พัดลมทำงานเองตามที่กำหนดไว้ และปิดอัตโนมัติเมื่อไม่มีค่าจากเซนเซอร์ และระบบmanual สามารถกดเปิด-ปิด ได้ตลอดเวลา
2.วัตถุประสงค์
2.1เพื่อศึกษาระบบSenser ตรวจจับคนเข้า-ออก
2.2เพื่อพัฒนาระบบพัดลมให้เป็นระบบอัติโนมัติ
2.3เพื่อควบคุมการทำงานพัดลมอัติโนมัติ
3.ขอบเขต
พัดลมระบายอากาศ ทำงานอัติโนมัติด้วยเซนเซอร์Sharp Infrared โดย
-เมื่อเซนเซอร์ตรวจจับคนเข้าห้อง0-2 พัดลมจะไม่ทำงาน
-เมื่อเซนเซอร์ตรวจจับคนเข้าห้อง3คน พัดลมจะทำงานระดับ1
-เมื่อเซนเซอร์ตรวจจับคนเข้าห้อง5คน พัดลมจะทำงานระดับ2
4.ประโยชน์ที่คาดว่าจะได้รับ
4.1สามารถควบคุมพัดลมได้ ด้วย senser
4.2ช่วยลดกลิ่นไม่พึงประสงค์ภายในห้อง
4.3ช่วยให้อากาศถ่ายเทได้สะดวก
4.4ช่วยให้สะดวกสบายขึ้น
4.5ลดการใช้เเรงงานคน
4.6ช่วยอำนวยความสะดวก
4.7สามารถนำความรู้การเขียนโปรแกรมภาษา python ไปประยุกต์ใช้ได้จริง
4.8ได้ศึกษาเเละเข้าใจในการเขียนภาษาpython เพื่อให้พัดลมทำงานตามจำนวนคน
5.ความรู้ที่เกี่ยวข้อง
1.L298N Motor Driver Module โมดูลขับมอเตอร์ ควบคุมมอเตอร์ L298N เป็นโมดูลขับมอเตอร์ ใช้ชิฟ L298N สามารถขับมอเตอร์ได้ 2 ตัวแบบแยกอิสระ สามารถควบคุมความเร็วมอเตอร์ได้ ใช้ไฟ 5 โวลต์ สามารถรับไฟเข้า 7-35 โวลต์ได้ มีวงจรเรกูเลตในตัว ขับมอเตอร์กระแสสูงสุดได้ 2A (ควบคุมเเรงพัดลมเบา-เเรง)
2.ESP32 ถูกนำไปใช้งานในหลายรูปแบบ ตั้งแต่การทำ อุปกรณ์สมาร์ทโฮม จนถึงใช้งานในระดับอุตสาหกรรม จากความสามารถในการใช้งานร่วมกับเซ็นเซอร์ต่างๆ เช่น วัดอุณหภูมิและความชื้น วัดกระแสไฟฟ้า วัดระยะทางต่อกับ สวิทช์หรือรีเลย์เพื่อควบคุมการเปิดปิดการทำงานของอุปกรณ์ การส่งข้อมูลผ่าน wifi เข้า server การแจ้งเตือนผ่าน Line, email และอื่นๆอีกมากมาย (ตัวประมวลผล)
3.Sharp Infrared Sensor อุปกรณ์นี้ใช้ในการวัดระยะจากวัตถุ ที่อยู่ในทิศทางการวัด โดยใช้ Infrared เป็นสื่อในการวัด โดยให้สัญญาณวัดเป็นแบบ Analog และให้ค่าวัดตลอดเวลา โดยมีย่านวัดที่ 10 – 80 ซม. ใช้งานได้กับหุ่นยนต์ หรือ การประยุกต์ใช้การวัดระยะทางโดยไม่ต้องมีการสัมผัสจุดที่ต้องการวัดระยะ(ใช้ตรวจจับคนเข้า-ออก)
4.จอLcd จอแสดงผลผลึกเหลว (LCD) คือจอแสดงผลแบบแบนหรืออุปกรณ์ทางออปติคอื่นๆ ที่มีการมอดูเลตทางไฟฟ้าซึ่งใช้คุณสมบัติในการปรับเปลี่ยนแสงของผลึกเหลว ผลึกเหลวไม่สามารถเปล่งแสงได้ด้วยตนเอง แต่จะใช้ไฟส่องสว่างด้านหลังหรือตัวสะท้อนเพื่อสร้างภาพสีหรือภาพขาวดำ LCD (ใช้เเสดงค่าคนเข้า-ออก)
5.พัดลมระบายอากาศขนาดเล็ก 12V 2ตัว (เป็นตัวoutput)
6.เพาเวอร์ซัพพลาย หรือแหล่งจ่ายไฟ เป็นส่วนประกอบที่สำคัญส่วนหนึ่งทำหน้าที่แปลงสัญญาณ ไฟฟ้ากระแสสลับจากแหล่งกำเนิดให้เป็นไฟฟ้ากระแสตรงด้วยความต่างศักย์ที่เหมาะสมก่อนเข้าสู่คอมพิวเตอร์ โดยมีสายเชื่อมต่อไปยังอุปกรณ์ประกอบต่าง ๆ จะช่วยเสริมประสิทธิภาพการทำงานของคอมพิวเตอร์โดยรวม ให้มีความสมบูรณ์มากยิ่งขึ้น
7.การเขียนโปรแกรมเชิงวัตถุ ( Object-oriented programming, OOP) คือหนึ่งในรูปแบบการเขียนโปรแกรมคอมพิวเตอร์ ที่ให้ความสำคัญกับ วัตถุ ซึ่งสามารถนำมาประกอบกันและนำมาทำงานรวมกันได้ โดยการแลกเปลี่ยนข่าวสารเพื่อนำมาประมวลผลและส่งข่าวสารที่ได้ไปให้ วัตถุ อื่นๆที่เกี่ยวข้องเพื่อให้ทำงานต่อไป
6.การดำเนินงาน
โดยในโครงงานนี้ได้ออกแบบพัดลมระบายอากาศปรับระดับตามคน โดยรับค่าจากตัวเซนเซอร์shap infrared 2 เพื่อสามารถตรวจจับคน และส่งค่าไปยังesp32 ที่เป็นตัวประมวลผลตามที่ได้โปรแกรมไว้ เมื่อตรงตามเงื่อนไขจะส่งค่าไปยังมอดูลขับมอเตอร์เบอร์L298N ซึ่งเป็นตัวขับมอเตอร์จำนวณ 2 ตัว และอีกอย่างนึงตัวสวิตซ์กดปุ่มเปิด-ปิด 1ตัว และแสดงผลบนจอ LCD
การทำงาน
การทำงานจะมีอยู่2ระบบ คือ ระบบอัติโนมัติ เเละ ระบบmanual
ระบบอัติโนมัติ
จะเป็นการควบคุมพัดลม โดยเงื่อนไขมีอยู่ว่า เมื่อมีคนเข้าห้อง>=3 พัดลมจะทำงานอัติโนมัติ เเละเมื่อมีคนเข้าห้อง>=5 ความเร็วของพัดลมจะเเรงขึ้น
ระบบmanual
จะเป็นการควบคุมการเปิด-ปิดของพัดลม เมื่อเราต้องการเปิด-ปิด ก็สามารถกดได้เลย ไม่ต้องรอให้ระบบอัติโนมัติทำงาน
การออกเเบบระบบ
การทำงานจะมีส่วนหลักๆอยู่4หลักคือ
- Input = sharp infrared
- Process = Node MCU ESP32
- Output = L298N Fan
- การเเสดงผลบนจอ LCD
6.1#include เพื่อรวมไลบรารี
การประกาศสําหรับฟังก์ชันการทํางานของระบบ
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
6.2 โค้ดสำหรับการกำหนดขาสัญญาณต่างๆ การกำหนดขา input-output
class SmartfanController {
public:
SmartfanController(int switchPin, int sensorPin1, int sensorPin2, int dirPin1, int dirPin2, int dirPin3, int dirPin4)
: swPin(switchPin), sensorPin1(sensorPin1), sensorPin2(sensorPin2), dirPin1(dirPin1), dirPin2(dirPin2), dirPin3(dirPin3), dirPin4(dirPin4) {}
void setup() {
Serial.begin(115200);
pinMode(swPin, INPUT);
pinMode(sensorPin1, INPUT);
pinMode(sensorPin2, INPUT);
pinMode(dirPin1, OUTPUT);
pinMode(dirPin2, OUTPUT);
pinMode(dirPin3, OUTPUT);
pinMode(dirPin4, OUTPUT);
lcd.begin();
lcd.backlight();
}
6.3 โค้ดของตัวเซนเซอร์เเละเเสดงผลบนจอLCD การกำหนดเงื่อนไขของเซนเซอร์
void operate() {
int valPin1 = digitalRead(sensorPin1);
int valPin2 = digitalRead(sensorPin2);
int SWe = digitalRead(swPin);
if (SWe == 0) {
if (valPin1 > valPin2) {
peo = peo - 1;
Serial.print("peo = ");
Serial.println(peo);
delay(600);
}
if (valPin1 < valPin2) {
peo = peo + 1;
Serial.print("peo = ");
Serial.println(peo);
delay(600);
} else {
Serial.print("peo = ");
Serial.println(peo);
}
6.4 โค้ดคำสั่งการทำงานของพัดลม เราสามารถปรับระดับได้ตามความต้องการ ค่าของพัดลมจะอยู่ที่20-255 ที่ใช้งานได้ ขึ้นอยู่กับการใช้งานของเรา
if (peo > 1) {
setMotorSpeed(20);
}
if (peo > 2) {
setMotorSpeed(255);
} else {
setMotorSpeed(0);
}
6.5 โค้ดเงื่อนไขของสวิตซ์ การเเสดงของระบบmanual โค้ดเงื่อนไขของจอLCD
lcd.setCursor(2, 0);
lcd.print("Member :");
lcd.setCursor(11, 0);
lcd.print(peo);
lcd.setCursor(1, 1);
lcd.print("Manual Systems");
}
if (SWe == 1) {
setMotorSpeed(255);
lcd.setCursor(2, 0);
lcd.print("Member :");
lcd.setCursor(11, 0);
lcd.print(peo);
lcd.setCursor(2, 1);
lcd.print("Auto Systems");
}
lcd.clear();
}
6.6โค้ดการกำหนดตัวเเปรของตัวที่ใช้งานของระบบ นอกจากนี้ private ยังมีประโยชน์ในการควบคุมการเข้าถึงและการปรับเปลี่ยนข้อมูลภายในคลาส, ซึ่งช่วยให้คลาสมีความเป็นอิสระและมีความปลอดภัยมากขึ้น int swPin ตัวแปรนี้เป็นการกําหนดพินที่เชื่อมต่อกับสวิตช์ (switch) int sensorPin1 และ int sensorPin2 ตัวแปรเหล่านี้เป็นการกําหนดพินที่เชื่อมต่อกับเซนเซอร์ 1 และเซนเซอร์ 2, int dirPin1 int dirPin2 int dirPin3 และ int dirPin4 ตัวแปรเหล่านี้เป็นการกําหนดพินที่เชื่อมต่อกับมอเตอร์หรืออุปกรณ์ที่ใช้ควบคุมทิศทาง (ทิศทาง)
private:
int swPin;
int sensorPin1;
int sensorPin2;
int dirPin1;
int dirPin2;
int dirPin3;
int dirPin4;
LiquidCrystal_I2C lcd{0x27, 16, 2}; // LCD instance
int peo = 0;
void setMotorSpeed(int speed) {
analogWrite(dirPin1, speed);
analogWrite(dirPin2, 0);
analogWrite(dirPin3, speed);
analogWrite(dirPin4, 0);
}
};
// Create an instance of the SmartfanController class
SmartfanController myRobot(13, 26, 34, 4, 0, 2, 15);
void setup() {
myRobot.setup();
}
void loop() {
myRobot.operate();
}
7. ผลการดำเนินงาน
7.1ทดลองการรับค่าจากตัวเซนเซอร์ Sharp Infrared
7.2ทดลองการทำงานของพัดลมปรับระดับตามวัตถุ
7.3ทดลองระบบ Mamual
7.4 ผลการทดลอง
จากผลการทดลอง
1.ทดลองการตรวจจับของเซนเซอร์ตั้งเเต่0-2คน ทดลอง10ครั้ง ผลทดลองที่ได้10ครั้ง คิดเป็นร้อยละ 100 พบว่ากับการตรวจจับเซนเซอร์มีความถูกต้องเเละตรงตามเงื่อนไขที่กำหนดไว้
2. ทดลองการตรวจจับของเซนเซอร์ตั้งเเต่>=3คน ทดลอง10ครั้ง ผลทดลองที่ได้10ครั้ง คิดเป็นร้อยละ 100 พบว่ากับการตรวจจับเซนเซอร์มีความถูกต้องเเละตรงตามเงื่อนไขที่กำหนดไว้
3.ทดลองการตรวจจับของเซนเซอร์ตั้งเเต่>=5คน ทดลอง10ครั้ง ผลทดลองที่ได้10ครั้ง คิดเป็นร้อยละ 100 พบว่ากับการตรวจจับเซนเซอร์มีความถูกต้องเเละตรงตามเงื่อนไขที่กำหนดไว้
4.ทดลองระบบmamual ทดลอง10ครั้ง ผลทดลองที่ได้10ครั้ง คิดเป็นร้อยละ 100 พบว่าการเปิด-ปิดพัดลม มีความถูกต้องเเละตรงตามเงื่อนไข
8.สรุปผล
จากการทดลองระบบควบคุมความเร็วของพัดลม สรุปได้ว่า การรับค่าจากตัวเซนเซอร์Sharp Infrared, การเเสดงสถานะของพัดลม,การกดสวิตซ์เปิด-ปิด, การทำงานของตัวควบคุมมอเตอร์L298N,เเละการเเสดงผลออกทางหน้าจอLcd,อการทำงานของระบบมีการรับค่าจากตัวเซนเซอร์ที่ถูกต้องเพื่อทำตามเงื่อนไขที่กำหนดไว้ เเละเเสดงค่าเซนเซอร์เเละระบบที่ได้ ไปยังจอLcd ได้ตามที่กำหนดไว้ในเเผนการทำงาน ดังนั้นผู้จัดทำพบว่าการทดลองระบบควบคุมความเร็วของพัดลมโดยอัตโนมัติตามวัตถุ ช่วยให้ความสะดวกสบายมากขึ้นในชีวิตประจําวันโดยขจัดความไม่สะดวกในการเคลื่อนที่ไปรอบ ๆ เพื่อควบคุมตัวควบคุมพัดลม
9.อ้างอิง
[1] นายจักรกรินทร์ มงคลมาตย์.โครงงานพัดลลมอัตโนมัติปรับระดับตามอุณหภูมิ.2562. สืบค้นเมื่อวันที่ 19 ตุลาคม 2566
[2] S. Ragul, Yuvaraj. S. IoT based Smart Controller for Ceiling Fan.2023 7th International Conference on Trends in Electronics and Informatics (ICOEI),2023,8-13
doi: 10.1109/ICOEI56765.2023.10125708