Gyrocroquette ( Gyrokibbles )
Obliczymy ostateczną cenę na podstawie wybranego pliku. Sprawdzisz ją i zaakceptujesz przed płatnością.
Zapisane na tym urządzeniu.
A remote-controlled (Arduino uno r4) cat feeder that flings kibbles everywhere to distract cats via centrifugal chaos.
- Ocena
- 0 / 5
- Polubienia
- 3
- Pobrania
- 6
- Wydruki
- 0
- Wyświetlenia
- 118
- Oceny
- 0
Aktualizacja u źródła:
Informacje o modelu
- Źródło
- Printables
- Kategoria
- Pets
- Licencja
- Creative Commons — Attribution — Noncommercial — Share Alike
Gyrocroquettes (or Gyrokibble) is a chaotic treat dispenser powered by an Arduino Uno R4. A 3D-printed case hides the electronics and features a big red emergency-style button that, when pressed, sends a signal through a cable to a wall-mounted module. That module spins a kibble container at high speed, launching treats everywhere via centrifugal force. Cats are instantly distracted, turning mealtime into a wild scavenger hunt. The device can also be triggered remotely via Arduino IoT—perfect for lazy mornings or late returns home.
Functions
Key features and functionalities of the project :
● Monitors a physical emergency-style button for local activation.
● Monitors a virtual button via Arduino IoT Cloud for remote activation.
● Triggers a motor that spins a kibble container, scattering treats randomly to both feed and entertain cats.
Hardware and Software Used
Hardware:
● Arduino Uno R4 WiFi
● 3D-printed enclosures (button module and kibble flinger unit)
● Recycled plastic soda bottle bottom (used as food-safe kibble container)
● NPN transistor, diode, and other basic electronic components
● Electrical wiring to connect button module and dispenser
● 9V battery with connector
● USB power supply for Arduino
Software:
● Arduino IDE
● Arduino IoT Cloud (for remote control)
Wiring Diagram
The following describes the wiring setup for Gyrokibble:
Pin 2 of the Arduino is connected to one side of the push button.
Pin 5 of the Arduino is connected to a 1kΩ resistor, which is then connected to the base (B) of the NPN transistor.
GND of the Arduino is connected to:
- The other side of the push button.
- The emitter (E) of the NPN transistor.
- The negative (-) terminal of the 9V battery.
The collector (C) of the NPN transistor is connected to:
- One terminal of the DC motor.
- The anode of a diode (for flyback protection).
The positive (+) terminal of the 9V battery is connected to:
The other terminal of the DC motor.
- The cathode of the diode.

This configuration allows the Arduino to control the motor by switching the transistor on and off. The push button provides a local activation method, while remote control is handled via Arduino IoT Cloud.
Arduino powered via USB
DC motor powered via a separate 9V battery to prevent voltage drops on the Arduino
Diode used as a flyback diode to protect the circuit from voltage spikes generated by the motor.
Code
The code enables two activation methods for the kibble flinger: a local physical button and a remote virtual button via Arduino IoT Cloud. When triggered, the Arduino Uno R4 powers a motor for a short duration, launching treats through centrifugal force.
Code Highlights:
- Monitors a physical button on pin 2 using a falling-edge detection method.
- Listens for changes to a cloud variable (triggerMotor) for remote activation.
- Activates the motor via an NPN transistor connected to pin 5.
- Uses a short delay (1.5 seconds) to control the motor run time.
- Includes basic LED feedback for debugging.
/*
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
This project includes two main 3D-printed parts: the main control box with the emergency-style button and the wall-mounted kibble flinger unit.
Suggested print settings:
● Filament Material: PLA (easy to print and suitable for indoor use).
● Layer Height: 0.2 mm for a good balance between detail and speed.
● Infill: 20% is sufficient for structural strength.
● Supports: Most parts require support.
Assembly Instructions
- 3D print all required parts (control box, kibble flinger unit, etc.) using the recommended print settings.
- Configure your Arduino Cloud dashboard, including setting up the boolean variable for remote control.
- Upload the Arduino sketch to the Arduino Uno R4 via the Arduino cloud.
- Test the full circuit and components on a breadboard to ensure everything functions correctly.
- Solder components onto a prototyping board, paying close attention to the placement of the push button.
- If available, laser cut and heat-bend a PMMA cover for the control box lid to create a sleek, transparent finish. (gyrocroquette_capot.svg)
- Cut the bottom of a plastic soda bottle to serve as the kibble container — it's food-safe and lightweight.
- Mount the soda bottle onto the motor shaft securely (use glue gun).
- Install the motor and kibble container inside the flinger module.
- Connect the prototyping board to the Arduino following the wiring diagram.
- Place the Arduino, 9V battery, and circuit board inside the main button module enclosure.
- Find the best place to position your gyrokibbles. It should be placed out of reach from the cats, but you should reach it easily to refill kibbles. Pay attention to the environment : you do not want kibbles to land in your shoes, bags, plants or fragile decorations.
- Mark your drilling positions using plan_percage__wallMounting.pdf. It should be horizontal.
- Drill holes in your wall and place screws (test them before to check if the head is big enough to hold the module)
- Mount your gyrokibbles to the wall.
And that’s it — your Gyrokibble is ready to fling food all around!















Additional Notes or Tips
● Be cautious when positioning the kibble launcher module. Kibble will fly in all directions, so avoid placing it near fragile or hazardous areas — especially power strips, plants, or shelves with unstable objects.
● Keep shoes, bags, and open containers away from the launch zone to prevent surprise snacks in unintended places.
● Secure the flinger module firmly to the wall to avoid vibration or tipping when the motor activates.
● Double-check wiring if the motor doesn’t spin or the button isn’t responsive — especially around the transistor and motor connections.