กลับไปหน้ารวมไฟล์
automatic-no-contact-hand-sanitiser-311279.md

ช่วงนี้เป็นช่วงที่ต้องระวังตัวกันหน่อย เราเลยต้องลดการสัมผัสจากภายนอกให้ได้มากที่สุด แม้จะใช้เจลล้างมือหรือสเปรย์แอลกอฮอล์บ่อยแค่ไหน แต่การกดปุ่มหรือสัมผัสตัวเครื่องก็ยังถือเป็นการสัมผัสอยู่ดี เลยคิดว่า... ทำเครื่องจ่ายเจลอัตโนมัติขึ้นมาเองดีกว่า!

มุมมองของโปรเจกต์

เครื่องจ่ายเจลล้างมือแบบไม่ต้องสัมผัสอัตโนมัติ ตัวนี้ เป็นโครงงานพื้นฐานที่เข้าใจง่าย เหมาะมากสำหรับน้องๆ ที่เพิ่งเริ่มต้นเล่นเซนเซอร์และระบบอัตโนมัติ ด้วยการใช้ เซนเซอร์วัดระยะอัลตราโซนิค HC-SR04 และ เซอร์โวมอเตอร์ขนาดเล็ก น้องจะได้เรียนรู้วิธีสร้างเครื่องจ่ายเจลแบบไม่ต้องสัมผัส ประสิทธิภาพสูง ไว้ใช้ที่บ้านหรือที่ออฟฟิศ

วิธีทำงาน: ตรวจจับและจ่ายเจล

โปรเจกต์นี้เน้นสร้างระบบอัตโนมัติที่ใช้ง่ายและเสถียร:

  • ชั้นตรวจจับ: ใช้ เซนเซอร์วัดระยะอัลตราโซนิค (HC-SR04) โดย Arduino จะส่งสัญญาณ "ปิง" ออกไปและรอรับเสียงสะท้อน เพื่อตรวจจับเมื่อมีมือเข้ามาในระยะ 15 ซม. จากหัวจ่าย
  • ชั้นทำงาน: ใช้ เซอร์โวมอเตอร์ขนาดเล็ก (SG90) ทำหน้าที่เป็นคนดันคันโยกจริงๆ เมื่อตรวจจับมือได้ เซอร์โวจะหมุนไปยังมุมที่ตั้งไว้เพื่อดันคันโยกจ่ายเจล
  • ชั้นแจ้งเตือนด้วยเสียง: ใช้ Piezo Buzzer เพื่อส่งเสียงสั้นๆ เป็นจังหวะทุกครั้งที่จ่ายเจลสำเร็จ
  • ชั้นควบคุมเวลา: โค้ดใน Arduino จะตั้งเวลาหยุดทำงานสักพักหลังจ่ายเจลแต่ละครั้ง เพื่อป้องกันการจ่ายซ้ำจากมือที่ขยับอยู่

อุปกรณ์ที่ต้องใช้

  • Arduino Uno: เป็น "สมอง" ของโปรเจกต์ คอยจัดการการตรวจจับและสั่งงานเซอร์โวกับบัซเซอร์
  • เซนเซอร์วัดระยะอัลตราโซนิค (HC-SR04): ใช้ตรวจจับมือแบบไม่สัมผัส ให้การทำงานน่าเชื่อถือในทุกครั้งที่ใช้
  • เซอร์โวมอเตอร์ขนาดเล็ก (SG90): ให้การเคลื่อนไหวทางกายภาพเพื่อดันคันโยกจ่ายเจลในแต่ละครั้ง
  • ขวดเจลล้างมือ: แหล่งเก็บเจลล้างมือสำหรับทุกคน
  • เบรดบอร์ด: ช่วยให้ต่อวงจรแบบชั่วคราวได้ง่าย โดยไม่ต้องบัดกรี
  • แบตเตอรี่ 9V: สำคัญมากสำหรับให้พลังงาน ทำให้โปรเจกต์พกพาได้และทำงานได้เอง
  • สาย Micro-USB: ใช้สำหรับอัปโหลดโค้ดจากคอมพิวเตอร์ไปยัง Arduino และจ่ายไฟขณะโปรแกรม

วงจร:

Arduino

  • ต่อขา 5V ของ Arduino เข้ากับสายไฟบวก (+) บนเบรดบอร์ด
  • ต่อขา GND ของ Arduino เข้ากับสายไฟลบ (-) บนเบรดบอร์ด

หมายเหตุ: ถ้าอยากให้โปรเจกต์พกพาได้จริง ให้ต่อขา VIN ของ Arduino เข้ากับสายบวกแทนขา 5V แล้วค่อยต่อแบตเตอรี่ 9V เข้ากับสายไฟบนเบรดบอร์ดเพื่อจ่ายไฟ

เซนเซอร์วัดระยะอัลตราโซนิค HC-SR04

  • ต่อขา VCC ของเซนเซอร์เข้ากับสายบวกบนเบรดบอร์ด
  • ต่อขา GND ของเซนเซอร์เข้ากับสายลบบนเบรดบอร์ด
  • ต่อขา Trig ของเซนเซอร์เข้ากับขา 9 บน Arduino
  • ต่อขา Echo ของเซนเซอร์เข้ากับขา 10 บน Arduino

หมายเหตุ: โปรเจกต์นี้ใช้เซนเซอร์วัดระยะแบบอื่นแทนได้ เช่น เซนเซอร์อินฟราเรด (IR)

เซอร์โวมอเตอร์

  • ต่อสายไฟกลาง (สีแดง, +5V) ของเซอร์โวเข้ากับสายบวกบนเบรดบอร์ด
  • ต่อสายไฟกราวด์ (สีน้ำตาล/ดำ) ของเซอร์โวเข้ากับสายลบบนเบรดบอร์ด
  • ต่อสายสัญญาณ (สีส้ม/เหลือง) ของเซอร์โวเข้ากับขา 2 บน Arduino

แค่นี้แหละ! การเดินสายไม่ได้ซับซ้อนเลย ง่ายๆ หน่อย

วิธีทำงาน

เริ่มต้นด้วยการเรียกใช้ไลบรารี่ New Ping และ Servo กันก่อน

#include <Servo.h>
#include<NewPing.h>

ต่อไปก็ประกาศตัวแปรทั้งหมดที่ต้องใช้

int trigPin = 9;
int echoPin = 10;
float v = 343;
float d = 0;
float pingTime = 0;
int servoPin = 2;
int servoPos = 0;
int buzzPin = 5;

สร้างออบเจ็กต์ชื่อ myServo จากไลบรารี่ servo และสร้างออบเจ็กต์ชื่อ sonar จากไลบรารี่ New Ping

Servo myServo;
NewPing sonar(trigPin,echoPin);

จากนั้นก็เซ็ตอัพออบเจ็กต์ต่างๆ กำหนดโหมดของพิน และเปิด Serial Monitor ในฟังก์ชัน void setup

void setup(){
Serial.begin(9600);
pinMode(trigPin,OUTPUT);
pinMode(echoPin,INPUT);
myServo.attach(servoPin);
myServo.write(servoPos);
pinMode(buzzPin,OUTPUT);
}

ใน void loop เราจะอ่านค่าความห่างเป็นเซนติเมตร และตรวจสอบว่าความห่างนั้นน้อยกว่าหรือมากกว่า 15 ซม.

d = sonar.ping_cm();

เราจะสั่งให้เซอร์โวหมุนไป 120 องศาถ้าความห่างน้อยกว่า 15 ซม. โดยใช้ if-else ง่ายๆ สุดท้ายก็เขียนค่าตำแหน่งไปที่มอเตอร์

 if(d < 15){
servoPos = 120;
digitalWrite(buzzPin,HIGH);
delay(100);
digitalWrite(buzzPin,LOW);
}
else{
servoPos = 0;
 }
digitalWrite(buzzPin,LOW);
myServo.write(servoPos);

หมายเหตุ: การวัดระยะด้วยเซ็นเซอร์อัลตราโซนิก ไม่จำเป็นต้องใช้ไลบรารี่ New Ping เสมอไป น้องสามารถสร้างพัลส์ที่พิน trigger และ echo แล้วคำนวณระยะห่างถึงเป้าหมาย (ในที่นี้คือมือเรา) เองก็ได้ ใช้โค้ดส่วนนี้เพื่อสร้างพัลส์และรับค่ากลับมาได้เลย

digitalWrite(trigPin,HIGH);
delayMicroseconds(10);
digitalWrite(trigPin,LOW);
delayMicroseconds(10);
pingTime = pulseIn(echoPin,HIGH);
pingTime /= 10000;
d = pingTime*343/2;

ทฤษฎีเบื้องหลัง

เซ็นเซอร์วัดระยะอัลตราโซนิก: เซ็นเซอร์นี้จะส่งพัลส์เสียงความถี่สูง (อัลตราโซนิก) ออกไปจากตัวส่ง เราเรียกการส่งนี้ว่า "ping" ตัวรับจะ "ฟัง" สัญญาณนี้และคำนวณเวลาที่ใช้ตั้งแต่ส่งออกไปจนถึงรับกลับมา เราสามารถคำนวณระยะทางได้จากสูตรนี้ (สมมติความเร็วเสียงในอากาศที่อุณหภูมิ 25⁰C = 343 m/s)

v = 2d/t

เมื่อ

  • v - ความเร็วเสียงในอากาศ
  • d - ระยะจากเซ็นเซอร์ถึงวัตถุ
  • t - เวลาที่ใช้ตั้งแต่ส่ง ping จนถึงรับกลับ

จัดรูปสมการใหม่ จะได้

d = v*t/2

ระยะทางที่ได้จะมีหน่วยเป็นเมตร [m] ดังนั้นคูณด้วย 100 ก็จะได้หน่วยเป็นเซนติเมตร [cm] จัดไปวัยรุ่น!

Working of the ultrasonic distance sensor

มอเตอร์เซอร์โว: มอเตอร์เซอร์โวเป็นมอเตอร์พิเศษที่สามารถหมุนไปหยุดที่มุมที่เราสั่งได้ ต่อวงจรและเขียนโค้ดง่ายมาก ในโปรเจคนี้เราจะใช้ไลบรารี่ Servo.h มาช่วย เราจะใช้เซอร์โวในการดึงคันโยกของเจลล้างมือ สู้งานนะน้อง ห้ามช็อตนะตัวนี้

ขั้นตอนการประกอบและเชื่อมต่อแบบ Step-by-Step

เจ้าเครื่องจ่ายเจลล้างมือตัวนี้ ออกแบบมาให้เวิร์คสุดๆ:

  1. ตั้งค่าฮาร์ดแวร์: วางเซ็นเซอร์วัดระยะ (Ultrasonic Sensor) และเซอร์โว (Servo) ให้ลงตัวบนเบรดบอร์ดหรือกล่องที่พิมพ์จากเครื่อง 3D Printer
  2. ตั้งค่าการเชื่อมต่อแบบแรงสูง: ต้องแน่ใจว่าเซอร์โวติดกับคันโยกของขวดเจลแน่นหนา โดยใช้ลวดแข็งแรงหรือชิ้นส่วนที่พิมพ์จาก 3D Printer
  3. ลูปการทำงาน: Arduino จะคอยอ่านค่าจากเซ็นเซอร์ตลอดเวลา และสั่งให้เซอร์โวทำงานทันทีเมื่อมีมือเข้ามาใกล้ในระยะ 15 ซม.
  4. การตอบสนองแบบเห็นภาพและเสียง: ดูสถานะการทำงานแบบเรียลไทม์ได้เลย เซอร์โวจะดึงคันโยกอัตโนมัติเมื่อมีมือเข้าใกล้

การทำกล่อง (Casing)

  • ใช้กระดาษแข็งตัดและพับให้เป็นกล่องสี่เหลี่ยม ขนาดพอดีที่จะใส่เบรดบอร์ดลงไปได้
  • เจาะรูบนกล่องเพื่อติดสวิตช์
  • เจาะรูอีก 2 รูสำหรับเซ็นเซอร์วัดระยะ แล้วติดเซ็นเซอร์เข้ากับกล่อง อย่าลืมตัดกระดาษแข็งให้กว้างกว่ากล่องเดิมนิดนึง จะได้มีปีกสำหรับพับติดกับกล่องได้

 กล่องที่ประกอบเสร็จพร้อมอุปกรณ์

วิธีทำให้เซอร์โวจ่ายเจลได้

  • เจาะรู 2 รูบนคันโยกของขวดเจล
  • สอดลวดทองแดงแข็งแรงผ่านรูทั้งสอง
  • ปลายลวดด้านหนึ่งให้ยึดกับรูบนแขน (Horn) ของเซอร์โว ส่วนปลายอีกด้านยึดให้แน่นกับอีกฝั่งของขวดเจล
  • ติดโฟมชิ้นหนึ่งไว้ข้างขวดเจล แล้วสอดปลายลวดทองแดงที่ว่างผ่านโฟมนั้น
  • ดัดลวดให้ขนานกับลวดอีกด้านหนึ่ง

หมายเหตุ: เวลายึดลวดเข้ากับเซอร์โวและขวดเจล ต้องรักษาความตึงของลวดไว้ให้ดีนะตัวนี้ อย่าให้หย่อน!

การติดโฟมเข้ากับขวดเจล

ไอเดียอัพเกรดในอนาคต (จัดไปวัยรุ่น!)

  • เพิ่ม OLED Status Dashboard: ใส่จอ OLED ขนาดเล็กเพื่อแสดง "ระดับน้ำยาเหลือ" (%) และ "จำนวนครั้งที่จ่ายไปแล้ว"
  • เพิ่ม Cloud Interface: ใส่โมดูล WiFi (ESP8266/ESP32) แล้วเชื่อมต่อกับแดชบอร์ดบนคลาวด์ เพื่อติดตามและบันทึกพฤติกรรมการใช้เจลจากมือถือได้แบบเป๊ะๆ
  • เพิ่ม Multi-sensor Bio-Security: ต่อเซ็นเซอร์หลายๆ ตัว (เช่น เซ็นเซอร์วัดอุณหภูมิ) เพื่อสร้างจุดตรวจสุขภาพ "ล้างมือและสแกน" ที่สมบูรณ์แบบขึ้น
  • ปรับแต่ง Advanced Velocity Profile: เพิ่มสไลด์หรือโพเทนชิออมิเตอร์เล็กๆ สำหรับปรับ "ปริมาณการจ่าย" จากขวดด้วยมือได้

เครื่องจ่ายเจลล้างมืออัตโนมัติแบบไม่ต้องสัมผัสนี้ เป็นโปรเจกต์ที่เพอร์เฟกต์มากสำหรับสายอิเล็กทรอนิกส์ที่อยากได้เครื่องมือเพื่อสุขภาพที่โต้ตอบได้และน่าสนุก! สู้งานนะน้อง

Libraries:

  • ดึงไลบรารีเซอร์โว (Servo) ได้ที่นี่
  • ดึงไลบรารีนิวพิง (NewPing) ได้ที่นี่

จะดาวน์โหลดจากเว็บก็ได้ หรือจะลงผ่าน Arduino IDE เลยก็ง่ายกว่าแค่คลิก Tools -> Manage Libraries... รอหน้าต่างเด้งขึ้นมา แล้วก็เสิร์ชหาไลบรารีที่ต้องการได้เลย ง่ายๆ

Install and include libraries in Arduino

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Arduino IDE"
  - "1x NewPing Library (Arduino)"
  - "1x Servo Library (Arduino)"
author: "aman_a_shastry"
category: "Home & Automation"
components:
  - "1x Soldering iron (generic)"
  - "1x SG90 Micro-servo motor"
  - "1x Arduino Nano R3"
  - "1x Tape, Electrical"
  - "1x Jumper wires (generic)"
  - "1x Solder Wire, Lead Free"
  - "1x 9V Battery Clip"
  - "1x 9V battery (generic)"
  - "1x Male/Female Jumper Wires"
  - "1x Switch"
  - "1x Buzzer"
  - "1x Ultrasonic Sensor - HC-SR04 (Generic)"
description: "มาประดิษฐ์เครื่องแจกเจลอัตโนมัติตึงๆ ด้วย Arduino กัน! ใช้เซนเซอร์ตรวจจับมือ แล้วสั่งงานมอเตอร์ให้ปั๊มเจลออกมาเองเลย ไม่ต้องสัมผัส ช่วยลดเชื้อโรคได้แบบเทพๆ งานนี้จัดไป!"
difficulty: "Easy"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX193+rFOTCEj4NFqUbQ6+g8eP6sGrj3KGlm5IELExozyVRvxdDvzaEacHaTcTZd3mlJNQseweISr1VmgoyHzQ0xfO6oumkzwbJo="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/automatic-no-contact-hand-sanitiser-311279_cover.jpg"
lang: "en"
likes: 0
passwordHash: "5539410c24dcc3695477ecc7e7b0f44035f50609a4afb120d7d659d5d33907d1"
price: 1120
seoDescription: "An intuitive and simple automatic hand sanitizer dispenser for beginners interested in Arduino ultrasonic projects."
tags:
  - "sanitiser"
  - "no-contact"
  - "automatic"
  - "ultrasonic"
  - "arduino"
  - "beginners"
title: "เครื่องแจกเจลล้างมืออัตโนมัติ งานง่ายแต่หล่อ วัยรุ่นต้องมี!"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/DwR6aLcuRk0"
views: 1342