ชุด DIY สเปรย์แอลกอฮอล์ไร้สัมผัสและถังขยะอัฉริยะไร้สัมผัส
DIY ฉีดสเปรย์แอลกอฮอล์ไร้สัมผัส
ด้วยเซนเซอร์วัดระยะทางอูลตราโซนิค
ใช้ได้ทั้งบอร์ด Arduino Uno และ NodeMCU ESP8266
โดยใช้การดังเชือกเอ็นกดหัวฉีดสเปรย์ด้วยเซอร์โวมอเตอร์ MG996R Servo 0-180 องศา เฟืองเหล็ก แรงบิดสูง (13 kg-cm)
หรือจะใช้ความคิดสร้างสรรค์เป็นการกดทับ บีบคันโยก ได้หมด
ภาพประกอบเป็นรูปการต่อวงจร
Video
https://youtu.be/cgUaUXQ8zaU
อุปกรณ์และโค้ดโปรแกรมชุดนี้สามารถใช้ทำถังขยะอัจฉริยะไร้สัมผัส เปิดฝาอัตโนมัติเมื่อเข้าใกล้ได้ด้วย
อุปกรณ์ที่ได้รับ
1. Arduino Uno R3 พร้อมสาย USB
2. เซอร์โวมอเตอร์ MG996R 180 องศา พร้อมใบ 2 แฉก 1 แฉก และน็อตยึด
3. Ultrasonic Sensor Module
4. สายจัมเปอร์แบบผู้-ผู้ ยาว จำนวน 10 เส้น
5. สายจัมเปอร์แบบผู้-เมีย ยาว จำนวน 10 เส้น
6. เสายเอ็นใส 1 ม้วน
อุปกรณ์อื่นๆที่ต้องใช้แต่ไม่รวมในชุดที่จำหน่ายนี้ คือเพาเวอร์แบ็งค์ เทปกาว กาว น็อตสกรูสำหรับยึดเซอร์โวมอเตอร์กับขวดหรือภาชนะ
// ดาวน์โหลดไลบรารี่ Servo.h ที่ www.modela1.modernpro.co.th/download/Servo-master.zip
// ดาวน์โหลด Untouch Code & รูปวงจร www.modela1.modernpro.co.th/download/untouch.zip
#include
#define TRIGGERPIN 5 // ต่อขา 5 ของ Arduino (ขา D1 ของ NodeMCU ESP8266) เข้ากับขา Trig ของ Ultrasonic
#define ECHOPIN 4 // ต่อขา 4 ของ Arduino (ขา D2 ของ NodeMCU ESP8266) เข้ากับขา Echo ของ Ultrasonic
long duration distance;
Servo myservo; // create servo object to control a servo
int degree;
int value;
void setup()
{
Serial.begin(9600);
delay(500);
myservo.attach(12); // ต่อขา 12 ของ Arduino (ขา D6 ของ NodeMCU ESP8266) เข้ากับ Servo motor สายสีส้ม
pinMode(TRIGGERPIN OUTPUT);
pinMode(ECHOPIN INPUT);
delay(3000);
}
void loop()
{
{
digitalWrite(TRIGGERPIN LOW);
delayMicroseconds(3);
digitalWrite(TRIGGERPIN HIGH);
delayMicroseconds(12);
digitalWrite(TRIGGERPIN LOW);
duration = pulseIn(ECHOPIN HIGH);
distance = (duration/2) / 29.1;
Serial.print(distance);
Serial.println(Cm);
delay(500); // adjust for selecting movement speed
}
if ((distance < 15) && (distance > 2 )) { // ใส่ระยะห่างที่เซนเซอร์ทำงาน ตอนนี้คือ 15 ซม
degree = 1023; // องศาที่หมุน หากใส่ 1023 คือหมุน 180 องศา หากต้องการหมุนองศาน้อยกว่านี้ ก็ใส่ตัวเลขลดลงไป
degree = map(degree 0 1023 0 180); // scaling input to 0 - 180 degree
myservo.write(degree); // position of servo arm
Serial.println(Analog Value);
Serial.println(value);
Serial.println(Servo Degree);
Serial.println(degree);
Serial.println(...);
delay(1000); // เวลารอก่อนหมุนกลับ ตอนนี้คือ 1 วินาที (1000 มิลลิเซค)
degree = 0; //สั่งให้หมุนกลับไปที่ตำแหน่งเริ่มต้น
degree = map(degree 0 1023 0 180); // scaling input to 0 - 180 degree
myservo.write(degree); // position of servo arm
Serial.println(Analog Value);
Serial.println(value);
Serial.println(Servo Degree);
Serial.println(degree);
Serial.println(...);
delay(2000); // เวลารอก่อนเริ่มทำงานครั้งถัดไป ตอนนี้คือ 2 วินาที (2000 มิลลิเซค)
}
}