พี่ทำเกมตีตุ่นแมวขึ้นมาอันนึง ใช้ Arduino กับ BLE (Bluetooth Low Energy) ตัวนี้ชื่อว่า "Feline-Mole" เป็นการสำรวจขั้นสูงในเรื่อง Cross-Species HMI (Human-Machine Interface) แบบจัดเต็มเลย ดีไซน์มาให้แมวบ้านเล่นโดยเฉพาะ เชื่อมต่อตรรกะการตัดสินใจจากแอพมือถือเข้ากับการเคลื่อนไหวทางกลไฟฟ้า (Mechatronic) แบบจับต้องได้
เซอร์โวมอเตอร์ 3 ตัวที่ต่อกับ Arduino ถูกควบคุมจากมือถือผ่านบลูทูธ ด้วยการเชื่อมต่อ Bluetooth Low Energy (BLE) ที่ดีเลย์ต่ำ มือถือ Android เลยกลายเป็นจอยเกม ใช้สุ่มสั่งให้ "ตุ่น" โผล่ขึ้นมาผ่านเซอร์โวที่เรียงกัน 3 แกน
ลงลึกกันแบบช่างๆ
- เจาะลึก BLE GATT Profile:
- Universal Unique Identifiers (UUIDs): ระบบสร้าง BLE Service แบบกำหนดเองขึ้นมา พร้อม Characteristics สำหรับเลือกเซอร์โว แอพ Android ทำหน้าที่เป็น GATT Client ส่งคำสั่งระดับไบต์ (เช่น [ServoID, State]) ไปให้ Arduino Nano
- จัดการดีเลย์: สถาปัตยกรรม Low-Power ของ BLE ถูกออกแบบมาให้ส่งข้อมูลเป็นช่วงสั้นๆ เฟิร์มแวร์ใช้บัฟเฟอร์แบบ non-blocking รับข้อมูลจาก Serial ไปสั่งเซอร์โว ทำให้ตุ่นโผล่ได้ภายในมิลลิวินาทีหลังกดจากมือถือ สำคัญมากถ้าอยากให้เจ้านายแมวไม่เบื่อ!
- จังหวะการเคลื่อนที่ของเซอร์โว & PWM 50Hz:
- สั่งงานหลายช่อง: การควบคุมเซอร์โว SG90 3 ตัวพร้อมกัน ต้องใช้สัญญาณ PWM ที่มีความแม่นยำรอบละ 20ms Arduino Nano แจกจ่ายสัญญาณพวกนี้ผ่านไลบรารี
Servo.hทำให้การหมุน 180° ของ "ตุ่น" เนียน ไม่กระตุก - ช่วงจู่โจม: เพื่อเลียนแบบการเคลื่อนไหวของเหยื่อ เซอร์โวจะถูกขับไปยังตำแหน่งเป้าหมายด้วยความเร็วเชิงมุมสูงสุด จากนั้นก็สุ่มดีเลย์ก่อนจะหดกลับ ทำให้แมวคาดเดาไม่ได้และท้าทายขึ้น
- สั่งงานหลายช่อง: การควบคุมเซอร์โว SG90 3 ตัวพร้อมกัน ต้องใช้สัญญาณ PWM ที่มีความแม่นยำรอบละ 20ms Arduino Nano แจกจ่ายสัญญาณพวกนี้ผ่านไลบรารี
- การออกแบบกลไฟฟ้าที่ปลอดภัยต่อสิ่งมีชีวิต:
- โครงสร้างป้องกัน: โครง 3D-Print ถูกออกแบบมาเพื่อแยกส่วนประกอบไฟฟ้าและแขนเซอร์โวออกจากสัตว์เลี้ยง มีแค่ส่วนหัว "ตุ่น" ที่เรียบลื่นโผล่ออกมาจากโครงเท่านั้น ใช้รูปทรงโค้งมนเพื่อป้องกันการบาดเจ็บ
วิศวกรรมและการนำไปใช้
- สถาปัตยกรรมระบบ (Android-to-Nano):
- Frontend: อินเทอร์เฟซที่พัฒนาด้วย Android Studio ให้ผู้ควบคุมมีปุ่มสลับโหมด "Manual" และ "Auto"
- Data Link: ใช้โปรโตคอลมาตรฐานของ BLE ในการ Advertising และ Connection เพื่อสร้างการเชื่อมต่อที่ปลอดภัยและประหยัดพลังงาน
- Backend: Arduino Nano ทำหน้าที่แยกความหมายแพ็กเก็ตข้อมูลที่ได้รับ (hex-packets) แมปไปยังพินดิจิทัลที่เกี่ยวข้อง และสั่งให้เซอร์โวขยับ (ซึ่งกินกระแสสูง)
- แยกวงจรไฟ:
- เพราะเซอร์โวสร้างแรงดันย้อนกลับ (back-EMF) จากขดลวดได้มาก เราจึงแยกวงจรไฟ 6V ของเซอร์โว ออกจากวงจรลอจิก 5V ที่บอบบางของ Nano โดยใช้กราวด์ร่วมกันแต่จ่ายไฟแยกกัน ป้องกันระบบรีเซ็ตตอนแมวตีตุ่นสุดแรง!
ซอร์สโค้ดและข้อมูลสำหรับพิมพ์ 3D มีให้ดาวน์โหลด
พี่ใช้ Arduino IDE 1.8.13 สำหรับพัฒนา Arduino และ Android Studio 4.0 สำหรับพัฒนาแอพ
ปกติพี่จะเน้นทำระบบในเซิร์ฟเวอร์กับมือถือ แต่การพัฒนา IoT แบบนี้ก็สนุกดีนะ! Feline-Mole แสดงให้เห็นศักยภาพของ IoT ในการเพิ่มความสมบูรณ์ให้ชีวิตสัตว์ (Animal Enrichment) การเชี่ยวชาญเรื่อง BLE Data Bridging และ Dynamic Kinetic Actuation จะทำให้เราสร้างสภาพแวดล้อมที่ตอบสนองและมีชีวิตชีวาขึ้นมา ท้าทายและกระตุ้นสิ่งมีชีวิตผ่านการออกแบบระบบฝังตัวและกลไฟฟ้าที่แข็งแกร่ง สู้งานนะน้อง!
Feline Kinematics: คว้าความเป็นเจ้านายของระบบ HMI สำหรับสัตว์เลี้ยงผ่านการวิเคราะห์ BLE
สวัสดีน้องๆ วัยรุ่นสายช่างทุกคน! มาถึงบทความที่มันส์ๆ กันแล้ววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววววว