การทำโปรเจกต์ถังขยะเปิด-ปิดฝาแบบไร้สัมผัสอัตโนมัติด้วย Arduino

 การทำโปรเจกต์ถังขยะเปิด-ปิดฝาแบบไร้สัมผัสอัตโนมัติด้วย Arduino สามารถทำได้โดยใช้เซนเซอร์อินฟราเรด (IR) หรือเซนเซอร์ Ultrasonic เพื่อตรวจจับการเคลื่อนไหวของมือหรือวัตถุที่อยู่ในระยะที่กำหนด หากตรวจจับเห็นการเคลื่อนไหว ฝาถังขยะจะถูกเปิดโดยมอเตอร์ Servo และจะปิดเองหลังจากเวลาที่กำหนด โดยในโปรเจกนี้เราจะใช้ Ultrasonic 


Arduino เป็น มินิโปรเจคขนาดเล็กสามารถนำไปประยุกต์ใช้งานให้เหมาะสมตามความต้องการของเรา

สิ่งที่ต้องใช้ 
- ถังขยะแบบฝา เปิด / ปิด ขนาดเล็ก
- Arduino Nano  จำนวน 1 บอร์ด
- Sensor IR ตรวจจับวัตถุ จำนวน 1 บอร์ด
- Protoboard 400 pin จำนวน 1 บอร์ด
- Servo MG996  จำนวน 1 ตัว
- แบตเตอรี่ 18650 จำนวน 2 ก้อน
- รางถ่าน 18650 แบบ 2 ก้อน 1 ชิ้น
- สายจั๊มเปอร์ 


นักเรียนต้องเตรียม
- ถังขยะแบบฝา เปิด / ปิด ขนาดเล็ก
- Arduino Nano  จำนวน 1 บอร์ด
- Sensor IR ตรวจจับวัตถุ จำนวน 1 บอร์ด
- Protoboard 400 pin จำนวน 1 บอร์ด
- Servo MG996  จำนวน 1 ตัว
- แบตเตอรี่ 18650 จำนวน 2 ก้อน
- รางถ่าน 18650 แบบ 2 ก้อน 1 ชิ้น
- สายจั๊มเปอร์ 


ความสะอาดในการจัดการขยะเป็นสิ่งที่ควรให้ความสำคัญ โดยเฉพาะอย่างยิ่งในยุคปัจจุบันที่เราต้องเน้นความสะอาดและการไม่สัมผัสสิ่งต่างๆ เพื่อป้องกันการระบาดของเชื้อโรค มาพบกับโปรเจกต์ ถังขยะอัจฉริยะ ที่พัฒนาขึ้นโดยการใช้ Arduino และเซนเซอร์ Ultrasonic ที่จะช่วยให้ฝาถังขยะเปิดและปิดโดยอัตโนมัติเมื่อมีคนเข้ามาใกล้ ความสะอาด

การทำโปรเจกต์ถังขยะเปิด-ปิดฝาแบบไร้สัมผัสอัตโนมัติด้วย Arduino สามารถทำได้โดยใช้เซนเซอร์อินฟราเรด (IR) หรือเซนเซอร์ Ultrasonic เพื่อตรวจจับการเคลื่อนไหวของมือหรือวัตถุที่อยู่ในระยะที่กำหนด หากตรวจจับเห็นการเคลื่อนไหว ฝาถังขยะจะถูกเปิดโดยมอเตอร์ Servo และจะปิดเองหลังจากเวลาที่กำหนด โดยในโปรเจกนี้เราจะใช้ Ultrasonic 


อุปกรณ์วัสดุที่ต้องใช้
  1. Arduino board เช่น Arduino Uno
  2. เซนเซอร์ Ultrasonic HC-SR04
  3. มอเตอร์ Servo
  4. ถังขยะพร้อมฝา
  5. บอร์ดทดลอง Breadboard และสาย jumper
  6. ถ่าน 9V พร้อมขั้งถ่านแบบ DC Jack 5.5x2.1mm
ขั้นตอนการทำ
1. การต่อวงจร
เชื่อมต่อเซนเซอร์ Ultrasonic หรือ IR กับ Arduino
เชื่อมต่อมอเตอร์ Servo กับ Arduino
จ่ายไฟ 9-12V ที่ช่อง DC Jack บนบอร์ด Arduino Uno เพื่อให้ไฟเพียงพอในการขับ Servo

2. เขียนโค้ด Arduino
อ่านค่าจากเซนเซอร์ Ultrasonic หากตรวจจับเห็นการเคลื่อนไหว สั่งให้มอเตอร์ Servo เปิดฝาถังขยะ
ตั้งเวลาปิดฝาถังขยะโดยอัตโนมัติหลังจากเวลาที่กำหนด

>>>>
// กำหนด Pin สำหรับเซนเซอร์ Ultrasonic
Servo servoMotor; // สร้างออบเจกต์ servo long previousDistance = 0; int sensor = 600; // ระยะที่ให้เซนเซอร์ทำงาน mm long readUltrasonicDistance(int triggerPin, int echoPin) { pinMode(triggerPin, OUTPUT); digitalWrite(triggerPin, LOW); delayMicroseconds(2); digitalWrite(triggerPin, HIGH); delayMicroseconds(10); digitalWrite(triggerPin, LOW); pinMode(echoPin, INPUT); return pulseIn(echoPin, HIGH); } void setup() { servoMotor.attach(SERVO_PIN); // กำหนด pin ที่เชื่อมต่อกับ Servo servoMotor.write(0); // เริ่มต้นด้วยการปิดฝาถังขยะ Serial.begin(9600); } void loop() { long distance = readUltrasonicDistance(TRIGGER_PIN, ECHO_PIN); Serial.println(distance); if (distance <= sensor && previousDistance > sensor) { // หากมีวัตถุเข้ามาใกล้ในระยะ sensor servoMotor.write(90); // เปิดฝาถังขยะ } else if (distance > sensor && previousDistance <= sensor) { // หากวัตถุออกจากระยะ sensor servoMotor.write(0); // ปิดฝาถังขยะ } previousDistance = distance; delay(100); }
เขียนโค้ด Arduinoโปรแกรมที่ใช้ (ใช้ได้ทั้ง Arduino Nano และ UNO R3)
อ่านค่าจากเซนเซอร์ Ultrasonic หากตรวจจับเห็นการเคลื่อนไหว สั่งให้มอเตอร์ Servo เปิดฝาถังขยะ
ตั้งเวลาปิดฝาถังขยะโดยอัตโนมัติหลังจากเวลาที่กำหนด
#include <Servo.h> // ไลบรารี่ Servo ควรติดตั้ง Servo myservo; int State = 0; void setup() { Serial.begin(9600); pinMode(2, INPUT); pinMode(9, OUTPUT); myservo.attach(9); myservo.write(160); // Setup Servo เปิดฝาเอาขยะออก delay(10000); //หน่วงเวลา 10 วินาที myservo.write(0); // Setup กลับตำแหน่ง 0 องศา } void loop() { int Sr = digitalRead(2); // รับค่า Sensor จากขา 2 Serial.println(State); if (State == 0) { if (Sr == 1) { // เมื่อ Sr เซ็นเซอร์มีค่า = 1 myservo.write(0); // Servo อยู่ที่ตำแหน่ง 0 delay(100); } else if (Sr == 0) { // เมื่อ Sr เซ็นเซอร์มีค่า = 0 myservo.write(160); // Servo หมุนไปที่ 160 องศา State = 1; // State มีค่าเท่ากับ 1 } } if (State == 1) { // เมื่อ State = 1 delay(3000); // หน่วงเวลา 3 นาที State = 0; // State มีค่า = 0 } } // กลับไปวนลูป


3. การติดตั้ง
ติดเซนเซอร์ถังขยะในตำแหน่งที่ต้องการ
ต่อมอเตอร์ Servo กับฝาถังขยะ
ตรวจสอบและทดสอบการทำงาน

4. การใช้งาน
เมื่อเคลื่อนมือ/เท้า หรือมีวัตถุในระยะที่กำหนดไว้ ฝาถังขยะจะเปิดโดยอัตโนมัติ
หลังจากเวลาที่กำหนด ฝาถังขยะจะปิดเอง
โปรเจกต์นี้เป็นไอเดียพื้นฐานที่สามารถพัฒนาให้มีความซับซ้อนขึ้นได้ เช่น การเพิ่มระบบแจ้งเตือนเมื่อถังขยะเต็ม หรือการใช้แบตเตอรี่เพื่อให้เป็นโครงการแบบพกพา



วิธีทำถังขยะอัตโนมัติโดยใช้อาดูโน่และเซอร์โวมอเตอร์และอัลตร้าโซนิคเซนเซอร์ การทำถังขยะอัตโนมัติโดยใช้ Arduino เซอร์โวมอเตอร์ และเซ็นเซอร์อัลตราโซนิกเป็นโครงการง่ายๆ ที่สามารถทำได้ในไม่กี่ขั้นตอน นี่คือโครงร่างทั่วไปของวิธีเริ่มต้นใช้งาน: หลักการทำงานของ เซ็นเซอร์อัลตราโซนิก HC-SR04 เป็นอุปกรณ์ยอดนิยมและราคาไม่แพงที่สามารถใช้วัดระยะทางไปยังวัตถุได้ ทำงานโดยปล่อยคลื่นเสียงความถี่สูงและวัดเวลาที่คลื่นเสียงสะท้อนกลับหลังจากกระทบวัตถุ หากต้องการใช้เซ็นเซอร์อัลตราโซนิก HC-SR04 กับบอร์ด Arduino จะต้องเชื่อมต่อเข้ากับบอร์ดโดยใช้สายจัมเปอร์ HC-SR04 มี 4 พิน คือ Vcc, Trig, Echo และ GND

ตัวอย่าง Arduino Code เชื่อมต่ออัลตราโซนิคเซนเซอร์เพื่อวัดระยะทางไปยังวัตถุ

const int trigPin = 9;  
const int echoPin = 10;
void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600);
}
void loop() {
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  long duration = pulseIn(echoPin, HIGH);
  int distance = duration * 0.034 / 2;
  
  Serial.println(distance);
  
  delay(100);
}


  Arduino เป็น มินิโปรเจคขนาดเล็กสามารถนำไปประยุกต์ใช้งานให้เหมาะสมตามความต้องการของเรา