Pet Feeder with RTC , Servo & Arduino/ESP
Obliczymy ostateczną cenę na podstawie wybranego pliku. Sprawdzisz ją i zaakceptujesz przed płatnością.
Zapisane na tym urządzeniu.
Timed pet feeder with RTC, servo, and PET bottle – perfect for small pets like hamsters and budgies.
- Ocena
- 0 / 5
- Polubienia
- 4
- Pobrania
- 20
- Wydruki
- 0
- Wyświetlenia
- 323
- Oceny
- 0
Aktualizacja u źródła:
Informacje o modelu
- Źródło
- Printables
- Kategoria
- Pets
- Licencja
- Creative Commons — Attribution — Noncommercial
In German: https://www.printables.com/model/1252458-haustierfutterautomat-fur-wellensittiche-hamster-m
Parts List
9g Servo Motor
RTC Module (based on DS1307, with I2C)
Microcontroller (e.g., Arduino Uno, ESP32)
PET bottle for food container
3D printed parts (see below)
3D Printing Instructions
All parts print without supports.
For Part 3 and 4, a brim is recommended.
PLA is totally sufficient.
Choose between thick and thin versions of Part 3/4 depending on your food size.
Assembly
1.Screw Part 1 to a wall or board.
2.Insert Part 4 into Part 3.
3.Mount this unit into the slot of Part 1 and secure with a screw (hole included) or glue (hot or plastic glue).
4.Place the servo motor into Part 1.
5.Attach Part 2 to the servo horn.
🔌 Electronics
Wiring:
You can use any I2C-capable microcontroller. This example uses an Arduino Uno.
How it works
-The RTC module keeps track of the time.
-At 18:00 (6 PM), the servo turns briefly to release a portion of food.
-You can customize the time and behavior in the code.
Arduino Code (Example)
// See full source file in hamster-servo-rtc.ino
Here’s an excerpt:
#include <Servo.h>
#include <Wire.h>
#include <RtcDS1307.h>Servo myservo;
RtcDS1307<TwoWire> Rtc(Wire);
void setup() {
Serial.begin(115200);
myservo.attach(9);
myservo.write(20);
Rtc.Begin();
RtcDateTime compiled = RtcDateTime(DATE, TIME);
if (!Rtc.IsDateTimeValid()) {
Rtc.SetDateTime(compiled);
}
if (!Rtc.GetIsRunning()) {
Rtc.SetIsRunning(true);
}
RtcDateTime now = Rtc.GetDateTime();
if (now < compiled) {
Rtc.SetDateTime(compiled);
}
Rtc.SetSquareWavePin(DS1307SquareWaveOut_Low);
}
void loop() {
RtcDateTime now = Rtc.GetDateTime();
if (now.Hour() == 18 && now.Minute() == 0) {
Serial.println(">>> It's 18:00! Dispensing...");
myservo.write(15);
delay(500);
myservo.write(90);
delay(450);
myservo.write(15);
delay(59000); // Wait almost a minute to avoid repeat
} else {
Serial.println("Not time yet.");
}
delay(1000); // Check every second
}
}
You can adjust:
- Time
- Servo angles
- Feeding duration
Notes
-If you like this, feel free to remix it – but no commercial use please.