กลับไปหน้ารวมไฟล์
wireless-pet-treat-dispenser-using-arduino-nano-rp2040-3e5e45.md

ไอเดียเจ๋งๆ มาจากไหน

เพื่อนพวกเราคนนึงเพิ่งรับน้องหมาสูงวัยชื่อ "เจลลี่" มาเลี้ยง แล้วน้องเป็นโรคกระวนกระวายเวลาอยู่ตัวคนเดียว (Separation Anxiety) เพื่อช่วยฝึกน้องเวลาต้องปล่อยให้อยู่บ้านตามลำพัง เขาก็เลยขอให้พวกเราช่วยทำเครื่องจ่ายขนมแบบไร้สาย เอาไว้คู่กับกล้องดูสัตว์เลี้ยงที่เขามีอยู่แล้ว ในวิดีโอ เราสาธิตหลักการทำงานด้วยความช่วยเหลือจาก "ทิโมธี" กระต่ายน้อยของเรา

ภาพรวมการออกแบบ

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

วิดีโอใน YouTube

ดูวิธีประกอบและเห็นมันทำงานจริงในวิดีโอของพวกเรา:

ล้วงลึกเทคนิค (Technical Deep-Dive)

ระบบ "Treat-Link" นี้เป็นโซลูชัน IoT แบบ Dual-Core สุดล้ำ สร้างบนบอร์ด Nano RP2040 Connect ที่ผสานซิลิคอนประสิทธิภาพสูงเข้ากับความปลอดภัยระดับคลาวด์เนทีฟ

  • การผสานงานของ Nano RP2040 & NINA-W102:
    • ศูนย์กลางซิลิคอน: โปรเจกต์นี้ใช้ ไมโครคอนโทรลเลอร์ RP2040 (Dual ARM Cortex-M0+) จาก Raspberry Pi ขณะที่คอร์หนึ่งจัดการสแต็ก Wi-Fi ผ่านโมดูล u-blox NINA-W102 อีกคอร์ก็จัดการจังหวะเวลาจริง (Real-time PWM timing) สำหรับเซอร์โวจ่ายขนม
    • การยืนยันตัวตนที่ปลอดภัย: RP2040 Connect มี Crypto-element ATECC608A ซึ่งเก็บคีย์ส่วนตัวที่ไม่ซ้ำใครไว้สำหรับยืนยันตัวตนกับ Arduino Cloud ทำให้การสื่อสารปลอดภัยแน่นอน
  • ตรรกะสองทางของ IoT Cloud:
    • การซิงโครไนซ์ตัวแปร: เฟิร์มแวร์ใช้ ไลบรารี ArduinoIoTCloud เมื่อตัวแปรบูลีน drop_treat ถูกสลับค่าในแอปมือถือ ข้อความจะถูกเผยแพร่ผ่าน โปรโตคอล MQTT RP2040 จะติดตาม (Subscribe) หัวข้อนี้และเรียกฟังก์ชัน onDropTreatChange() ทำงานเกือบจะทันที
    • วิดเจ็ตเทเลเมทรี: ระบบรายงานสถานะ เกจ treats_left ให้ข้อมูลย้อนกลับแบบเรียลไทม์เกี่ยวกับสถานะของช่องใส่ขนม สะท้อนดัชนีที่คำนวณได้ของช่องทั้ง 8
  • กลไกเซอร์โวและการกู้คืนข้อผิดพลาด:
    • อัลกอริทึมการหมุน: เครื่องจ่ายใช้การหมุนเพิ่มทีละ 45 องศา ($360/8$) เซอร์โวถูกขับด้วยสัญญาณ PWM 50Hz โดยที่ความกว้างพัลส์ตั้งแต่ 1000µs ถึง 2000µs จะจับคู่กับตำแหน่งช่องทางกายภาพที่แน่นอน
    • ควบคุมด้วยมือเอง: เพื่อจัดการกับปัญหาขนมติดค้าง ระบบมีวิดเจ็ต "Position Slider" นี้จะให้ผู้ใช้สามารถ "เขย่า" เซอร์โวด้วยมือผ่านระยะการหมุนของมันได้จากระยะไกล เพื่อเคลียร์ขนมที่ติดขัด

วิศวกรรมและการลงมือทำ

  • การเข้ารหัสสถานะ HMI:
    • ไฟ LED RGB บนบอร์ดถูกแมปกับตัวแปร Cloud ชื่อ rgb_light ตัวนี้ทำหน้าที่เป็น HMI สำหรับตรวจสอบภายใน ช่วยให้ผู้ใช้เช็คความแรงสัญญาณ Wi-Fi หรือสถานะการเชื่อมต่อได้ง่ายๆ แค่ดูจากสีของไฟที่กระพริบ (เช่น เขียว = เชื่อมต่อแล้ว, แดง = ผิดพลาด) ง่ายมั้ยล่ะ!
  • การรักษาเสถียรภาพของสายไฟเลี้ยง (Power Rail Stabilization):
    • เซอร์โวมันกินกระแสเป็นพักๆ นะเว้ย! โปรเจคนี้เลยต่อไฟเลี้ยงเซอร์โว ($V_{cc}$) เข้ากับ ขา VIN ของบอร์ด Nano (ซึ่งรับไฟมาจาก USB 5V) เพื่อให้สายไฟเลี้ยงส่วนที่ไวต่อสัญญาณรบกวน (RP2040 logic rail) แยกออกจากมอเตอร์โดยสิ้นเชิง ห้ามช็อตนะตัวนี้!
  • การออกแบบตัวถังและการติดตั้ง:
    • ดีไซน์ 8 ช่องนี้เหมาะกับขนมสัตว์เลี้ยงไซส์มินิสุดๆ ตัวเคสออกแบบมาให้มีกลไกช่วยทอร์กสูง เพื่อให้เซอร์โวตัวจิ๋วสามารถดันขนมที่ติดกับผนังกั้นได้สบายๆ ไม่มีสะดุด สู้งานนะน้อง!

การสร้างตัวถัง:

อยากรู้ว่าเราสร้างตัวถังยังไง ไปดูได้ที่ Instructable ของเราเลย (ลิงก์ด้านล่าง) แต่ออกตัวก่อนว่าเราใช้เทคนิคการผลิตที่หลากหลายกว่าที่หลายคนจะเข้าถึงได้ ดังนั้น แนะนำให้ปรับดีไซน์ให้เหมาะกับเครื่องมือและประสบการณ์ของตัวเองนะจ๊ะ

การเดินสาย Arduino:

วงจรในโปรเจคนี้เรียบง่ายมากๆ แค่ต่อสายเซอร์โวตามนี้เลย:

  • สายแดง = Vin
  • สายน้ำตาล/ดำ = GND
  • สายเหลือง/ขาว = D9

ของเราใช้วิธีบัดกรีสายเหล่านี้ผ่านแผ่น Stripboard ไปยัง Arduino

บนคอมพิวเตอร์ของคุณ:

สร้างบัญชี Arduino IoT Cloud

สร้าง "Thing" ใหม่ขึ้นมา

ในแท็บ Setup:

สร้าง Cloud Variables ทั้ง 4 ตัวนี้ขึ้นมา:

  • bool drop_treat - Read & Write - On Change
  • int position - Read & Write - On Change
  • CloudColoredLight rgb_light - Read & Write - On Change
  • int treats_left - Read Only - On Change

เชื่อมต่อบอร์ด Arduino Nano RP2040 ของคุณ ถ้ายังไม่เคยใช้ Arduino IoT Cloud มาก่อน คุณต้องทำตามขั้นตอนเพื่อติดตั้งซอฟต์แวร์ Create Agent

ตั้งค่า ชื่อ WiFi และรหัสผ่านของคุณ

ในแท็บ Sketch:

คัดลอกสคริปต์จาก GitHub repository ของโปรเจค

วางลงในตัวแก้ไขสคริปต์ (แทนที่โค้ดเดิมทั้งหมด) จากนั้นคลิกไอคอนเครื่องหมายถูกที่มุมซ้ายบนเพื่อตรวจสอบ (Verify) สคริปต์

ในแท็บ Dashboards:

สร้าง Dashboard ใหม่และตั้งชื่อให้มัน

ตรวจสอบให้แน่ใจว่าคุณอยู่ในโหมดแก้ไข (มุมซ้ายบน)

คลิกปุ่ม Add จากนั้นเลือก "Widgets" และสร้าง Widget แต่ละตัวตามนี้ โดยผูกกับตัวแปรที่กำหนด:

  • Push Button: drop_treat
  • Slider: position (ช่วงค่า: Min = 0, Max = 180)
  • Colored light: rgb_light
  • Gauge: treats_left (ช่วงค่า: Min = 0, Max = 8)
  • [Optional] Sticky note สำหรับเขียนคำอธิบายเพิ่มเติม

จัดเรียง Widget ต่างๆ ตามใจชอบได้เลย อยากให้อยู่ตรงไหนก็ลากไปวาง ง่ายๆ จัดไปวัยรุ่น!

ใน Things -> Pet feeder -> Sketch:

เสียบ Arduino Nano RP2040 Connect เข้ากับพอร์ต USB ของคอม แล้วกดปุ่ม Upload ได้เลย

ติดตั้ง:

หาที่แขวนตัวจ่ายขนมให้เหมาะกับน้องหมาน้องแมว แล้วต่อ Arduino เข้ากับแหล่งจ่ายไฟด้วยสาย MicroUSB

บนมือถือหรือแท็บเล็ต:

ดาวน์โหลดแอป Arduino IoT Remote แล้วล็อกอินด้วยบัญชีของตัวเอง

เปิด Nano Pet Feeder Dashboard แล้วลองกดๆ ทดสอบว่าแต่ละ Widget ทำงานตามที่คิดไว้มั้ย

วิธีใช้:

กดปุ่ม "Drop treat" เพื่อปล่อยขนมออกมา

ถ้าขนมติดขัด ใช้สไลด์ "Servo position" หมุนเซอร์โวเองได้ด้วยมือ

Widget ไฟ RGB ใช้ดีบั๊กเรื่องการเชื่อมต่อได้นะ มันจะเปลี่ยนสี LED บน Arduino ตามสีที่เราเลือกในตัวเลือกสี

สรุป

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


Cloud Connectivity: เสริมสร้างสายสัมพันธ์ผ่านการเสริมแรงจากระยะไกลที่ปลอดภัย

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

apps:
  - "1x Arduino IoT Cloud Remote"
  - "1x Arduino IoT Cloud"
author: "KiraKiraSoul"
category: "Internet of Things, BT & Wireless"
components:
  - "1x Solder Wire, Lead Free"
  - "1x Micro-USB to USB Cable (Generic)"
  - "1x Soldering iron (generic)"
  - "1x Arduino Nano RP2040 Connect"
  - "1x Servo Module (Generic)"
description: "ให้อาหารน้องหมาน้องแมวจากที่ไหนก็ได้ผ่านแอพ Arduino IoT Remote ควบคุมได้แบบตึงๆ วัยรุ่นเลย! ใช้เซนเซอร์กับมอเตอร์ จัดระบบด้วย Interrupt แบบเทพๆ"
difficulty: "Easy"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX19arr4HDkSYOVdp+h+rdZKWk+4+sv6S1AIVsf4CTtm7OfukZNUL6F5nYCxqURvHLhcIvS9f7AvQ5DtsuqDb4LyvGDu1ynVt6o1gOPPCeTsVnyKW8QYkYRrAOybldYEasgsk4c/PFxkbXA=="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/wireless-pet-treat-dispenser-using-arduino-nano-rp2040-3e5e45_cover.jpg"
lang: "en"
likes: 3
passwordHash: "0b921d5f8b7df5a2c6c290d77525f2f6d3dfe3f6d3c7cd35ed11550fa45b8471"
price: 1499
seoDescription: "Build a Wireless Pet Treat Dispenser with Arduino Nano RP2040. Feed your pets remotely using the Arduino IoT Remote app."
tags:
  - "home automation"
  - "internet of things"
  - "pets"
title: "ฝากเลี้ยงแบบไร้สายด้วย Arduino Nano RP2040 งานง่ายแต่หล่อ!"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/oYoICSDV7eg"
views: 2447