กลับไปหน้ารวมไฟล์
make-an-automated-bubble-gun-using-an-ultrasonic-sensor-31cf5c.md

เกริ่นนำ

ว่าไงน้อง! ตอนเดือนมกราคมปีนี้ พี่เปิดชมรม Arduino ที่โรงเรียนพี่น่ะ พี่อยากมีอะไรโชว์ในงานชมรมสักอย่าง เลยคิดว่า "ต้องทำอะไรที่มันไม่เหมือนใครหน่อย... อะไรแบบว่า... ฟองสบู่ไง!"

ปรากฏว่าเวิร์คสุดๆ ไปเลยวัยรุ่น! เด็กๆ เข้ามาดูเป็นกลุ่มๆ ล้อมวงจับจ้องที่เซนเซอร์ อาจารย์ที่เคยได้ยินแต่ชื่อ Arduino ก็เริ่มสนใจ เดินมาถามนู่นถามนี่ ความสำเร็จที่เจ๋งสุดของโปรเจกต์นี้คือ ทั้งนักเรียนและครูที่เคยแค่ได้ยินคำว่า Arduino เริ่มเข้าใจแล้วว่า "อิเล็กทรอนิกส์เนี่ย มันทำให้ชีวิตประจำวันสนุกและหลากหลายขึ้นได้นะ" บางทีความเรียบง่ายของมันนี่แหละ ที่พังกำแพงระหว่างเด็กช่างกับวงจรไฟฟ้า ทำให้ Arduino เข้าถึงได้ง่ายขึ้น

ภาพรวมโปรเจกต์

"Bubble-Pulse" เนี่ยคือการสำรวจโลกแห่ง Social Mechatronics และ Acoustic Proximity Diagnostics แบบสนุกๆ นะน้อง โดยเราประยุกต์ปืนเป่าฟองสบู่ธรรมดาๆ ให้มีเซนเซอร์วัดระยะแบบอัลตราโซนิก ตอนนี้มันกลายเป็นประสบการณ์แบบ "Touch-Free" หรือไม่ต้องสัมผัสแล้ว! ระบบนี้ใช้หลัก Time-of-Flight (ToF) Forensics ตรวจจับว่ามีใครเข้ามาในรัศมี 30cm มั้ย พอเจอเป้าหมาย มอเตอร์เซอร์โวก็จะขยับแบบแม่นยำเพื่อกดไกปืนให้อัตโนมัติ เป็นการเชื่อมโยงระหว่างการตรวจจับแบบดิจิทัลกับการเล่นแบบมีปฏิสัมพันธ์ได้อย่างเนียนๆ

ระบบจะอ่านคลื่นอัลตราโซนิกที่ส่งออกไปและรับกลับมาผ่านเซนเซอร์วัดระยะ แล้วคำนวณหาระยะห่างจากวัตถุที่ใกล้ที่สุด เมื่อระยะห่างน้อยกว่า 30cm ตัวไมโครคอนโทรลเลอร์ก็จะสั่งให้มอเตอร์เซอร์โวหมุน เพื่อดึงไกปืนฟองสบู่นั่นเอง

พี่ใช้วงจรเดียวกันกับในรูปเลยนะ ดังนั้นขาและวิธีการต่อสายก็เหมือนกันเป๊ะ

วงจร

Circuit Diagram

ลงลึกเรื่องเทคนิค: การวัดระยะ

ในโค้ดนะ trigPin จะต่อกับส่วนส่งสัญญาณของเซนเซอร์อัลตราโซนิก ส่วน echoPin ต่อกับส่วนรับ trigPin จะส่งคลื่นไปยังวัตถุที่เราต้องการวัดระยะ จากนั้นคลื่นจะสะท้อนกลับมายัง echoPin เราก็วัดเวลา (หน่วยไมโครวินาที) ที่คลื่นใช้เดินทางไป-กลับ นำมาคูณกับความเร็วของคลื่น (0.0343 เซนติเมตรต่อไมโครวินาที) แล้วหารสอง (เพราะคลื่นเดินทางไป-กลับ) เราก็จะได้ระยะห่างระหว่างวัตถุกับเซนเซอร์แล้วล่ะ

  • Ultrasonic Proximity Forensics:
    • The Acoustic Handshake: ระบบใช้ HC-SR04 สร้างขอบเขตโซนาร์ความถี่ 40kHz Arduino จะส่งพัลส์ความยาว 10µs ออกทางขา TRIG แล้วใช้ช่วงเวลาที่ขา ECHO รับสัญญาณสูงอยู่มาคำนวณหาระยะ
    • Proximity Edge Detection: ระบบตั้งเกณฑ์ตรรกะ ($d < 30 \text{cm}$) ไว้เป็นตัวตัดสินใจแบบ binary หลักการ forensic แบบนี้ช่วยให้ระบบแยกแยะระหว่างสัญญาณรบกวนทั่วไป กับการมีผู้ใช้เข้ามาใกล้จริงๆ ("Hand Hovering") ได้ ทำให้มีกลไกการทริกเกอร์ที่เชื่อถือได้สำหรับการควบคุมระบบเมคคาทรอนิกส์ต่อไป

โค้ดส่วนนี้เป็นแบบนี้นะ:

digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration * 0.0343) / 2;
Serial.print(distance, 3);
Serial.println("cm");

ตรงนี้ pulseIn(echoPin, HIGH) จะคืนค่ามาเป็นระยะเวลาระหว่างการส่งและรับสัญญาณ

ในโค้ด หลังจากคำนวณระยะได้แล้ว เราทำการปัดเศษให้เหลือทศนิยมสามตำแหน่ง แล้วพิมพ์ผลลัพธ์ออกทาง Serial Monitor พี่ลองทำเพื่อเช็คดูว่าเซนเซอร์อัลตราโซนิกทำงานได้แม่นยำมั้ย สู้งานนะน้อง!

วิศวกรรมและการลงมือทำ: Visual Telemetry Bridge

ตอนปรับแต่งระบบ มันจะพ่นข้อมูลระยะทางดิบ (ละเอียดถึงทศนิยมตำแหน่งที่สาม) ออกมาให้ดูที่ Serial Monitor เลย ฟีเจอร์นี้ช่วยให้เราปรับรัศมีตรวจจับ (engagement radius) ให้เหมาะกับสภาพแวดล้อมได้ เช่น ใช้ในบูธงานแฟร์ที่คนเยอะๆ กับใช้ในสนามเด็กเล่นหน้าบ้านคนละ setting กันเลย จัดไปวัยรุ่น! นี่คือภาพตัวอย่างจาก Serial Monitor ของพี่:

Serial Monitor Output

ลงลึกเรื่องเทคนิค: การหมุนเซอร์โว

Servo Mechanism

พี่ลองมุมหมุนของมอเตอร์เซอร์โวหลายแบบ สุดท้ายมุมที่เวิร์คสำหรับปืนพี่คือ:

  1. ลากไกปืน: 120 องศา
  2. ปล่อยไกปืน: 30 องศา
  • Servo-Kinetic Actuation Harmonics (พูดง่ายๆคือกลไกการขับเคลื่อน):
    • Linear-to-Rotary Translation (การแปลงการเคลื่อนที่จากแนวตรงเป็นหมุน): เราเอาไม้อัดมาต่อระหว่างเซอร์โว SG90 กับไกปืนจริงๆ ระบบมันทำงานเป็น 2 สถานะ:
      • สถานะ 1 (Idle/พัก): เซอร์โวค้างไว้ที่ $30^\circ$ (ปล่อยไก)
      • สถานะ 2 (Active/ทำงาน): เซอร์โวหมุนไปที่ $120^\circ$ (ลากไก)
    • PWM Duty-Cycle Diagnostics: เราใช้ไลบรารี่ Servo.h ทำให้ Arduino ส่งสัญญาณ PWM ความถี่ 50Hz ออกไป ตัวเซอร์โวมีโพเทนชิโอมิเตอร์ในตัวคอยปรับให้มันหมุนไปหยุดที่ $120^\circ$ พอดี แรงพอจะกดไกปืนให้ชนสปริงได้โดยที่มอเตอร์ไม่ติดขัดหรือทำงานหนักเกินไป
  • HMI Engagement Loop (ลูปตรวจจับและสั่งงาน):
    • Non-Blocking Logic: เฟิร์มแวร์ใช้การตรวจสอบสถานะ (if distance < 30 && currentPos != 120) เพื่อป้องกันไม่ให้ส่งคำสั่งซ้ำๆไปหาเซอร์โวโดยไม่จำเป็น วิธีนี้ทำให้มอเตอร์ขยับเฉพาะตอนที่สถานะเปลี่ยนจริงๆ ลดการสึกหรอของชิ้นส่วนและประหยัดพลังงานด้วย สู้งานนะน้อง!

สรุปง่ายๆตาม Flow Chart ก็คือ: ถ้าระยะทางระหว่างเซนเซอร์กับวัตถุน้อยกว่า 30 เซนติเมตร และ มอเตอร์ไม่ได้ชี้ที่ 120 องศา เราจะสั่งให้มันหมุนไปที่ 120 องศา ถ้าระยะทางมากกว่าหรือเท่ากับ 30 เซนติเมตร และ มอเตอร์ไม่ได้ชี้ที่ 30 องศา เราก็จะสั่งให้มันหมุนกลับมาที่ 30 องศา

วิศวกรรมและการลงมือทำ: การติดตั้งและกลไก

  • Adhesive Calibration (การติดกาวให้มั่นใจ): ความมั่นคงของระบบขึ้นอยู่กับ "การยึด耦合 (Rigid Coupling)" ระหว่างตัวเซอร์โวกับตัวปืนเป่าฟอง เราใช้กาวสองหน้าความแข็งแรงสูงร่วมกับไม้เสริมเพื่อกระจายแรงบิด (torque) ที่เกิดจากเซอร์โว SG90 ห้ามช็อตนะตัวนี้!
  • Transducer Orientation (การจัดวางเซนเซอร์): ต้องติดตั้ง HC-SR04 ให้มี "มุมมอง (Field of View - FoV)" กว้างประมาณ 15-20 องศาโดยไม่มีอะไรมาบัง เพื่อป้องกันการตรวจจับผิดพลาดจากพื้นหรือผิวโต๊ะ

สรุป

โปรเจค Bubble-Pulse นี้แสดงให้เห็นพลังของ Interactive Mechatronics (แมคคาทรอนิกส์เชิงโต้ตอบ) ในฮาร์ดแวร์ที่ใช้งานกับคนทั่วไป เมื่อเราเข้าใจ Ultrasonic ToF Forensics (การวิเคราะห์ข้อมูลจากเซนเซอร์วัดระยะ) และ Servo-Actuated Mechanical Bridging (การใช้เซอร์โวขับเคลื่อนกลไก) แล้ว เราก็สามารถเปลี่ยนของเล่นธรรมดาๆ ให้กลายเป็น IoT Agent ที่ทั้งสนุกและให้ความรู้ได้ ผ่านลอจิกฝังตัว (embedded logic) และการแสดงออกผ่านการเคลื่อนไหว (kinetic expression) ที่ออกแบบมาอย่างดี


Kinetic Bubbles: Mastering engagement through sonar forensics. (ฟองฟิสิกส์: คว้าความสนใจด้วยศาสตร์แห่งโซนาร์)

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

apps:
  - "1x Arduino IDE"
author: "serenathejollyprogrammer"
category: "Gadgets, Games & Toys"
components:
  - "1x Arduino Uno R3 (Embedded Command Node)"
  - "1x HC-SR04 Ultrasonic Sensor (Proximity Diagnostic)"
  - "1x SG90 Micro Servo (Kinetic Trigger Actuator)"
  - "1x Bubble Gun (Legacy Hardware Subsystem)"
  - "1x Mini Breadboard (Signal Distribution Hub)"
  - "1x Wooden Alignment Rod (Mechanical Linkage)"
  - "1x 9V Battery / USB Power (Mobile Supply)"
description: "An automated kinetic toy featuring HC-SR04 sonar proximity triggering, SG90 servo-actuated trigger modulation, and interactive HMI diagnostics for public engagement."
difficulty: "Easy"
documentationLinks: []
downloadableFiles:
  - "https://projects.arduinocontent.cc/45e51084-a8cd-4e79-ad38-3493f465044d.ino"
encryptedPayload: "U2FsdGVkX18RFVBPEhos28C6qIH5EoxIR+alfFKzPFBiJKytKcoEMUqDI96w0GF5H+on2mWJOFprd062rWTPeMNjqIL5/pWcliwH/ERFCTI="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/make-an-automated-bubble-gun-using-an-ultrasonic-sensor-31cf5c_cover.jpg"
lang: "en"
likes: 0
passwordHash: "6881a88be2b7ae26d812213e87a5f58b82f6057546dd76debd30cbfb8f97e7bb"
price: 870
seoDescription: "Build an Automated Bubble Gun using Arduino and an Ultrasonic Sensor. Trigger bubbles automatically by waving your hand over the sensor."
tags:
  - "automated-toys"
  - "ultrasonic-trigger"
  - "servo-kinematics"
  - "mechatronic-actuation"
  - "interactive-gadgets"
  - "hmi-design"
title: "มาปิ๊งปิ๊ง Bubble Gun อัตโนมัติด้วย Ultrasonic Sensor กัน! งานง่ายแต่หล่อ วัยรุ่นต้องลอง"
tools:
  - "Adhesive Tape & Double-Sided Pads"
  - "Precision Scissors"
videoLinks:
  - "https://www.youtube.com/watch?v=rBiIMD0FkhE"
views: 2786