Gyrocroquette (Gyrokibbles) – Bộ phóng kibble điều khiển Arduino Uno R4
Gyrocroquette (Gyrokibbles) là máy phát snack cho mèo chạy Arduino Uno R4: nhấn nút đỏ hoặc kích từ xa qua Arduino IoT Cloud để motor quay, văng kibble tứ tung bằng lực ly tâm, vừa cho ăn vừa chơi.
Mô tả
Gyrocroquettes (hoặc Gyrokibble) là một bộ phát snack “hỗn loạn” chạy bằng Arduino Uno R4. Một vỏ case in 3D giấu toàn bộ điện tử bên trong và có nút đỏ to kiểu “emergency”; khi nhấn sẽ gửi tín hiệu qua dây tới một module gắn tường. Module đó sẽ quay một hộp đựng hạt ở tốc độ cao, văng snack tứ tung nhờ lực ly tâm. Mèo bị đánh lạc hướng liền, biến giờ ăn thành một màn “săn đồ ăn” náo nhiệt. Thiết bị cũng có thể kích hoạt từ xa qua Arduino IoT—rất hợp cho mấy buổi sáng lười hoặc về nhà trễ.
Functions
Key features and functionalities of the project :
● Theo dõi một nút nhấn vật lý kiểu emergency để kích hoạt tại chỗ.
● Theo dõi một nút ảo (virtual button) qua Arduino IoT Cloud để kích hoạt từ xa.
● Kích motor quay hộp đựng kibble, rải snack ngẫu nhiên để vừa cho ăn vừa cho mèo “giải trí”.
Hardware and Software Used
Hardware:
● Arduino Uno R4 WiFi
● Vỏ/enclosure in 3D (module nút bấm và cụm flinger rải kibble)
● Đáy chai nước ngọt nhựa tái chế (dùng làm hộp đựng kibble an toàn thực phẩm)
● Transistor NPN, diode và các linh kiện điện tử cơ bản khác
● Dây điện để nối giữa module nút bấm và bộ phát snack
● Pin 9V kèm đầu nối
● Nguồn USB cho Arduino
Software:
● Arduino IDE
● Arduino IoT Cloud (điều khiển từ xa)
Wiring Diagram
Phần sau mô tả cách đi dây cho Gyrokibble:
Pin 2 của Arduino nối vào một bên của nút nhấn.
Pin 5 của Arduino nối vào điện trở 1kΩ, rồi từ đó nối vào base (B) của transistor NPN.
GND của Arduino được nối tới:
- Bên còn lại của nút nhấn.
- emitter (E) của transistor NPN.
- Cực âm (-) của pin 9V.
collector (C) của transistor NPN được nối tới:
- Một đầu của DC motor.
- anode của diode (để chống flyback).
Cực dương (+) của pin 9V được nối tới:
Đầu còn lại của DC motor.
- cathode của diode.

Cấu hình này cho phép Arduino điều khiển motor bằng cách bật/tắt transistor. Nút nhấn là cách kích hoạt tại chỗ, còn điều khiển từ xa thì xử lý qua Arduino IoT Cloud.
Arduino cấp nguồn qua USB
DC motor dùng pin 9V riêng để tránh sụt áp trên Arduino
Diode dùng làm flyback diode để bảo vệ mạch khỏi xung áp do motor tạo ra.
Code
Đoạn code cho phép 2 cách kích hoạt bộ văng kibble: nút bấm vật lý tại chỗ và nút ảo từ xa qua Arduino IoT Cloud. Khi được kích, Arduino Uno R4 sẽ cấp điện cho motor chạy trong thời gian ngắn, làm văng snack nhờ lực ly tâm.
Code Highlights:
-
Theo dõi nút vật lý ở pin 2 bằng phương pháp phát hiện sườn xuống (falling-edge).
-
Lắng nghe thay đổi của một biến trên cloud (triggerMotor) để kích hoạt từ xa.
-
Kích motor thông qua transistor NPN nối với pin 5.
-
Dùng delay ngắn (1,5 giây) để khống chế thời gian motor chạy.
-
Có phản hồi LED cơ bản để debug.
/* Sketch generated by the Arduino IoT Cloud Thing "gyrokibbles"
Arduino IoT Cloud Variables description
The following variables are automatically generated and updated when changes are made to the Thing
bool triggerMotor;
Variables which are marked as READ/WRITE in the Cloud Thing will also have functions which are called when their values are changed from the Dashboard. These functions are generated with the Thing and added at the end of this sketch. */
include "thingProperties.h"
const int buttonPin = 2; // Physical button const int motorPin = 5; // PWM-capable digital pin, transistor activated motor
bool buttonPressed = false;
void activateMotor() { digitalWrite(LED_BUILTIN, HIGH); // this is just to check, this can be commented digitalWrite(motorPin, HIGH); delay(1500); digitalWrite(LED_BUILTIN, LOW); // this is just to check, this can be commented digitalWrite(motorPin, LOW); }
void setup() { // Initialize serial and wait for port to open: Serial.begin(9600); // This delay gives the chance to wait for a Serial Monitor without blocking if none is found delay(1500);
// Defined in thingProperties.h initProperties();
// Connect to Arduino IoT Cloud ArduinoCloud.begin(ArduinoIoTPreferredConnection);
/ The following function allows you to obtain more information related to the state of network and IoT Cloud connection and errors the higher number the more granular information you’ll get. The default is 0 (only errors). Maximum is 4 / setDebugMessageLevel(2); ArduinoCloud.printDebugInfo();
pinMode(buttonPin, INPUT_PULLUP); // Button connected between pin and GND pinMode(motorPin, OUTPUT);
pinMode(LED_BUILTIN, OUTPUT); // TEMPORARY, for tests
}
void loop() { ArduinoCloud.update();
// Detecting physical button (falling edge) bool lastState = HIGH; bool currentState = digitalRead(buttonPin);
if (lastState == HIGH && currentState == LOW) { activateMotor(); } lastState = currentState;
}
/ Since TriggerMotor is READ_WRITE variable, onTriggerMotorChange() is executed every time a new value is received from IoT Cloud. / void onTriggerMotorChange() { if (triggerMotor) { activateMotor(); triggerMotor = false; // Reset for next clic }
}
Printing Instructions
Dự án này có hai phần in 3D chính: hộp điều khiển chính kèm nút đỏ kiểu emergency và cụm “kibble flinger” gắn tường.
Thiết lập in gợi ý:
● Vật liệu filament: PLA (dễ in, phù hợp dùng trong nhà).
● Layer Height: 0.2 mm để cân bằng giữa chi tiết và tốc độ.
● Infill: 20% là đủ cho độ cứng kết cấu.
● Supports: Đa số chi tiết cần support.
Assembly Instructions
- In 3D toàn bộ chi tiết cần thiết (hộp điều khiển, cụm flinger, v.v.) theo thiết lập in khuyến nghị.
- Cấu hình Arduino Cloud dashboard, bao gồm tạo biến boolean để điều khiển từ xa.
- Upload sketch Arduino lên Arduino Uno R4 thông qua Arduino cloud.
- Test toàn bộ mạch và linh kiện trên breadboard để chắc chắn mọi thứ chạy đúng.
- Hàn linh kiện lên board prototype, chú ý kỹ vị trí nút nhấn.
- Nếu có, cắt laser và uốn nhiệt một nắp PMMA cho nắp hộp điều khiển để có lớp hoàn thiện trong suốt, gọn đẹp. (gyrocroquette_capot.svg)
- Cắt phần đáy của chai nước ngọt nhựa để làm hộp đựng kibble — an toàn thực phẩm và nhẹ.
- Gắn đáy chai lên trục motor cho chắc (dùng keo nến/súng bắn keo).
- Lắp motor và hộp đựng kibble vào trong module flinger.
- Nối board prototype với Arduino theo sơ đồ đi dây.
- Đặt Arduino, pin 9V và mạch vào trong vỏ module nút bấm chính.
- Chọn vị trí đặt gyrokibbles hợp lý: để ngoài tầm với của mèo, nhưng vẫn tiện cho bạn châm thêm kibble. Để ý môi trường xung quanh: bạn không muốn kibble bay vô giày, túi, chậu cây hoặc đồ trang trí dễ vỡ.
- Đánh dấu vị trí khoan bằng plan_percage__wallMounting.pdf. Cần canh cho ngang.
- Khoan tường và bắt vít (nhớ thử trước để coi đầu vít có đủ to để giữ module không).
- Gắn gyrokibbles lên tường.
Vậy là xong — Gyrokibble của bạn sẵn sàng “quăng” đồ ăn khắp nơi!









Additional Notes or Tips
● Cẩn thận khi chọn vị trí đặt module phóng kibble. Kibble sẽ bay mọi hướng, nên né mấy chỗ dễ bể hoặc nguy hiểm — đặc biệt là ổ điện/ổ cắm nối dài, chậu cây, hoặc kệ có đồ để không vững.
● Để giày dép, túi xách và các hộp đang mở tránh xa vùng phóng để khỏi có “snack bất ngờ” rơi vô chỗ không mong muốn.
● Cố định module flinger thật chắc lên tường để tránh rung hoặc bị nghiêng khi motor chạy.
● Kiểm tra lại wiring nếu motor không quay hoặc nút không ăn — nhất là các mối nối quanh transistor và phần nối motor.
Giấy phép
Tác phẩm này được cấp phép theo
Creative Commons — Attribution — Noncommercial — Share AlikeCC-BY-NC-SA
File mô hình
Chưa có bản in nào được khoe. Hãy là người đầu tiên!
Chưa có bình luận nào. Hãy là người đầu tiên!