ผู้เขียนบทความ : 043 นายศิวัช คำคง COE#15
คณะวิศวกรรมศาสตร์ : สาขาวิศวกรรมคอมพิวเตอร์
วิชา : 04-514-201 การโปรเเกรมคอมพิวเตอร์ขั้นสูง 1/2566
1.ความเป็นมา
ในปัจจุบันนั้นระบบอัตโนมัติในบ้านได้รับความนิยมอย่างมากซึ่งทำให้เกิดการตอบสนองของความต้องการ ระบบถังขยะนั้นเป็นระบบที่ตอบสนองความต้องการได้ดีอย่างมากเพราะจากเดิมที่เราต้องเปิดปิดเองนั้น ไม่จำเป็นอีกต่อไปเพราะระบบนี้จะเปิดปิดอัตโนมัติซึ่งลดโอกาศการสัมผัสที่อาจเกิดการติดต่อจากโรคโควิด19ได้ดีอีกด้วย จึงทำให้ผู้จัดทำได้คิดค้นถังขยะอัจฉริยะนี้ขึ้นมาที่จะเพิ่มความสดวกสบายเเละลดโอกาศการสัมผัสเเถมยังเเจ้งเตือนปริมาณผ่านทางไลน์ให้เราได้ทราบอีกด้วยว่าถังขยะนั้นจะเต็มหรือยัง ซึ่งโครงการชิ้นนี้เป็นส่วนหนึ่งในรายวิชาไมโครคอนโทรลเลอร์ โดย อ.สิทธิโชค อุ่นแก้ว และ ในรายวิชาการโปรแกรมคอมพิวเตอร์ขั้นสูง โดย อ.สันติ สถิตวรรธนะ เป็นผู้สอนและที่ปรึกษาโครงงานย่อยชิ้นนี้
2.วัตถุประสงค์
2.1ถังขยะเปิดปิดเองได้อัตโนมัติ
2.2สามารถวัดปริมาณได้
2.3เพื่อนำความรู้การเขียนโปรเเกรมArduinoไปประยุกต์ใช้ได้จริง
3.ขอบเขต
3.1เมื่อเซนเซอร์ตรวจพบวัตถุถังขยะจะเปิด
3.2เมื่อเซนเซอร์ไม่พบวัตถุถังขยะจะปิด
3.2สามารถเเสดงค่า Open/Close ผ่านหน้าจอ Lcd ได้
3.3สามารถวัดปริมาณขยะ เเสดงค่าปริมาณผ่านจอ Lcd เเละ เเจ้งเตือนผ่านLine
4.ประโยชน์ที่คาดว่าจะได้รับ
4.1เพิ่มความสดวกสบายต่อผู้ใช้
4.2ได้ใช้ความรู้และพัฒนา ESP32
4.3สามารถทราบปริมาณผ่านทางไลน์โดยไม่ต้องไปดูเองได้
5.ความรู้ที่เกี่ยวข้อง
5.1โมดูล E18
เป็นเซนเซอร์ที่ใช้หลักการยิงแสงอินฟาเรดออกไป หากมีวัตถุขวางจะมีการสะท้อนกลับมาเพื่อใช้แทนสวิทช์เซนเซอร์ว่าขณะนี้มีสิ่งกีดขวาง หรือวัตถุอยู่หน้าเซนเซอร์หรือไม่ ซึ่งระยะทำการอยู่ที่ 3-80cm โดยใช้ไฟเลี้ยงแค่ 5v จาก arduino ได้ทันที โดยใช้ไฟเลี้ยงแค่ 5v จาก arduino ได้ทันที ซึ่งให้ค่าออกมาเป็นสัญญาณ on-off โดย off คือมีสิ่งกีดขวาง, on คือไม่มีสิ่งกีดขวาง
โค้ดที่ใช้จะเขียนคือกำหนดค่า Val ให้เป็น 0 เมื่อเซ็นเซอร์ได้ค่ารับ 0 จะส่งค่าไปที่ Servo ถังขยะก็จะเปิด เเต่หาก ไม่ได้รับค่า 0 จะส่งค่าไปที่ Servo ให้ถังขยะปิด
5.2โมดูล Servo
เซอร์โวมอเตอร์ขนาดเล็กที่เหมาะกับงานหุ่นยนต์หรือควบคุมการทำงานด้วยสัญญาณ PWM สามารถสั่งงานผ่านไมโครคอนโทรลเลอร์ เพื่อควบคุมตำแหน่งได้ โดยใช้ไฟเลี้ยงเเค่ 3v
โค้ดที่จะเขียนคือการรับค่ามาจาก Sensor E18 เมื่อได้รับค่าจาก E18 ว่าตรวจสอบพบการวัตถุจะทำการเปิดถังขยะโดยหันไปที่ 0 องศา โดยเราจะเซ็ตไว้ที่ -60 องศา หากไม่พบการเคลื่อนไหวจะทำการปิดฝาถังขยะ โดยหันไปที่ 90 องศา
5.3จอเเสดงผล Lcd
ในการควบคุมหรือสั่งงาน โดยทั่วไปจอ LCD จะมีส่วนควบคุม (Controller) อยู่ในตัวแล้ว ผู้ใช้สามารถส่งรหัสคำสั่งสำหรับควบคุมการทำงานของจอ LCD (I2C) เช่นเดียวกันกับจอ LCD แบบธรรมดา รูปแบบ I2C ใช้ขาในการเชื่อมต่อกับ Arduino เพียง 4 ขา (แบบ Parallel ใช้ 16 ขา)
โดยโค้ตที่ใช้นี้ จอ Lcd นี้จะรับค่ามาจาก Sensor E18 เมื่อตรวจสอบพบวัตถุจะทำการเเสดงหน้าจอว่า Open โดยจะเซ็ตเป็น ช่องที่ 5 เเถว 0 (บรรทัดเเรก ) เเต่ถ้าหากไม่ ก็จะเเสดงคำว่า Close นั้นเอง
ตัวอย่าง Code
if (val == 0) {
Serial.println("OPEN");
lcd.setCursor(5, 0);
lcd.print(" OPEN");
myservo.write(0);
else {
Serial.println("CLOSE");
lcd.setCursor(5, 0);
lcd.print("CLOSE");
myservo.write(60);
5.4Vl53
โมดูลวัดระยะทางและตรวจจับท่าทางด้วยแสงเลเซอร์ ความยาวคลื่น 940 นาโนเมตร ซึ่งมองไม่เห็นด้วยตาเปล่า มีความปลอดภัยต่อสายตา ใช้ชิฟ VL53L0X สื่อสารแบบ I2C วัดได้ระยะสูงสุด 1.2 เมตร ความคลาดเคลื่อน 5% ขึ้นอยู่กับสภาพแวดล้อมและสีของวัตถุทีวัด
ตัวอย่าง Code
if (measure.RangeStatus != 4) {
Serial.print(F("Free (%): "));
Serial.println(measure.RangeMilliMeter);
lcd.setCursor(0, 1);
lcd.print("Free: ");
lcd.print(measure.RangeMilliMeter);
lcd.print("%");
// Check and send Line Notify alert if garbage exceeds the threshold.
if (measure.RangeMilliMeter > garbageThreshold) {
sendLineNotify("ปริมาณขยะตอนนี้: " + String(measure.RangeMilliMeter) + " mm");
5.5LINE Notify Platform Line Notify
เป็นบริการที่ให้ Line users สามารถสร้างและส่งการแจ้งเตือน (notifications) ไปยังแอพพลิเคชัน Line ของพวกเขาผ่าน API (Application Programming Interface) ของ Line Notify. ผู้ใช้สามารถใช้บริการนี้เพื่อรับข้อมูลการแจ้งเตือนเกี่ยวกับเรื่องต่าง ๆ เช่นข่าวสาร, ข้อมูลสภาพอากาศ, การแจ้งเตือนจากเว็บไซต์, และอื่น ๆ ผ่านแอพ Line ที่พวกเขาใช้ประจำ สำหรับโปรแกรมเมอร์ นักพัฒนาซอฟต์แวร์นั้นมักใช้ในการนำไปใช้ต่อยอดพัฒนาโปรเจคต่างๆ เชื่อมต่อกับเว็บเซอร์วิส เช่น Github IFTTT และ Mackerl สร้างการแจ้งเตือนแบบข้อความไปยังกลุ่มหรือบัญชีส่วนตัวได้โดยไม่เสียค่าใช้จ่าย
6.ผลการดำเนินงาน
6.1หลักการทำงานของโมดูล
6.2หลักการทำงานของถังขยะอัจฉริยะ
การทำงานของถังขยะก็เริ่มต้น โดยที่เซนเซอร์ E18 ตรวจสอบวัตถุหากเจอจะทำการสั่ง Servo ให้เปิดฝาถังขยะ จากนั้นจะเเสดงผ่านจอ Lcd Open/Close ต่อมาการทำงานของ Vl53 จะตรวจวัดปริมาณ เเละจอ Lcd กับ line จะรับค่าเเล้วเเสดงผ่านทางหน้าจอส่วน Line ก็จะเเจ้งเตือนผ่านทาง Line notify
ตัวอย่าง Code
if (val == 0) {
Serial.println("OPEN");
lcd.setCursor(5, 0);
lcd.print(" OPEN");
myservo.write(0);
VL53L0X_RangingMeasurementData_t measure;
lox.rangingTest(&measure, false);
if (measure.RangeStatus != 4) {
Serial.print(F("Free (%): "));
Serial.println(measure.RangeMilliMeter);
lcd.setCursor(0, 1);
lcd.print("Free: ");
lcd.print(measure.RangeMilliMeter);
lcd.print("%");
// Check and send Line Notify alert if garbage exceeds the threshold.
if (measure.RangeMilliMeter > garbageThreshold) {
sendLineNotify("ปริมาณขยะตอนนี้: " + String(measure.RangeMilliMeter) + " mm");
}
}
} else {
Serial.println("CLOSE");
lcd.setCursor(5, 0);
lcd.print("CLOSE");
myservo.write(60);
}
6.3การทดลอง
การทดลองนี้จะเเบ่งเป็น 2ส่วน
1.การทดสอบการทำงานของเซนเซอร์ตรวจจับเเละการทำงานของ Servo ในการเปิดปิดฝา
2.การทดสอบการทำงานของVl 53 เซนเซอร์วัดปริมาณเเละเเสดงผลผ่านทางจอLcdพร้อมเเจ้งเตือนผ่านทางLine
การทดลองการทำงานของการเปิดปิดฝาถังเมื่อเซนเซอร์ตรวจพบวัตถุจะทำการเปิดเเละเเสดงจอว่า Open
เเต่หากไม่พบจะทำการปิดฝาถังขยะเเละเเสดงหน้าว่า Close
การทดลองการทำงานการวัดปริมาณ
เมื่อ Vl53 พบขยะ จอ Lcd จะรับค่าโดยเเสดงผลทางจอ Lcd เเละคิดเป็น % ของขยะในถัง
Line ที่รับค่ามาจาก Vl53 ก็จะส่งค่าเเจ้งเตือนผ่านทาง Line notify เพื่อที่จะได้ทราบถึงปริมาณของถังขยะ
ตารางทดสอบการวัดปริมาณ
ตารางที่1
*หมายเหตุ เซ็นเซอร์อาจมีความคลาดเคลื่อนเนื่องจากเซ็นเซอร์ติดอยู่ที่ขอบถังหากทิ้งทางตรงกันข้ามเซ็นเซอร์ก็จะตรวจจับไม่ได้
*เเต่ถ้าหากทิ้งเเนวราบเซ็นเซอร์ก็จะสามารถตรวจวัดปริมาณได้ตามปกติ
ตารางที่2
7.สรุปผลเเละข้อเสนอเเนะ
1.สรุปผล
ถังขยะอัตโนมัติที่จะทำให้เราใช้งานได้อย่างสดวกสบายเเละลดโอกาศการสัมผัสที่จะเกิดโรคติดต่อ(โควิด19)อีกทั้งยังสามารถดูปริมาณที่จะเเสดงผ่านทางหน้าจอเเละLine ได้อีกด้วยว่าถังเต็มหรือยังเพื่อที่เราจะนำไปทิ้งโดยที่เราไม่ต้องลุกไปดูด้วยตนเองนั้นเอง
2.ข้อเสนอเเนะ
2.1สามารถเพิ่มระบบของการเเจ้งเตือนผ่านเสียงได้เมื่อถังขยะเปิด
2.2เชื่อมต่อกับเว็บเเคมเพื่อที่จะสามารถดูว่าบุคคลนั้นๆทิ้งขยะลงถังหรือไม่
8.ข้อมูลอ้างอิง
8.1 NoneTech สร้างถังขยะ เปิด / ปิด แบบอัตโนมัติ
(สืบคนวันที่ 18 ตุลาคม 2566) https://www.youtube.com/watch?v=D2u9Jm_kpio&t=43s
8.2 Robojax Arduino code for VL53L1X Time-of-Flight 400cm Laser distance sensor (สืบค้นวันที่ 20 ตุลาคม 2566) https://www.youtube.com/watch?v=Sc_iVfeocvg
8.3 JINNY MARKETING Line notify Token (สืบค้นวันที่ 23 ตุลาคม 2566)
https://www.youtube.com/watch?v=LWNNOgc4MqY
คลิปอธิบาย Youtube
ถังขยะอัจฉริยะเเละเเจ้งเตือนผ่านไลน์