Кормушка для домашних животных с RTC, сервоприводом и Ard..
На немецком языке: https://www.printables.com/model/1252458-haustierfutterautomat-fur-wellensittiche-hamster-m.
Список запчастей
9 г серводвигатель
Модуль RTC (на базе DS1307, с I2C)
Микроконтроллер (например, Arduino Uno, ESP32)
ПЭТ-бутылка для пищевых контейнеров.
3D-печатные детали (см. ниже)
Инструкции по 3D-печати
Все детали печатаются без подставок.
Для частей 3 и 4 рекомендуется использовать поля.
PLA вполне достаточно.
Выбирайте между толстой и тонкой версией части 3/4 в зависимости от размера вашего продукта.
Сборка
1. Прикрутите деталь 1 к стене или доске.
2. Вставьте часть 4 в часть 3.
3. Установите данное устройство в слот Детали 1 и закрепите винтом (отверстие входит в комплект поставки) или клеем (горячий или пластиковый клей).
4. Поместите серводвигатель в деталь 1.
5. Прикрепите деталь 2 к рупору сервопривода.
Электроника
Схема подключения: можно использовать любой микроконтроллер с поддержкой I2C. В этом примере используется Arduino Uno.
Как это работает
-Модуль RTC отслеживает время.
-В 18:00 (18:00) сервопривод ненадолго поворачивается, чтобы выпустить порцию еды.
-Вы можете настроить время и поведение в коде.
Код Arduino (пример)
// Полный исходный файл смотрите в hamster-servo-rtc.ino
Вот отрывок:
#include
#include
#include
Сервопривод мойсерво;
RtcDS1307<Двухпроводной> Rtc(Проводной);
недействительная настройка() {
Serial.begin(115200);
myservo.attach(9);
myservo.write(20);
Ртк.Начать();
RtcDateTime скомпилирован = RtcDateTime(__DATE__, __TIME__);
если (!Rtc.IsDateTimeValid()) {
Rtc.SetDateTime(скомпилировано);
}
если (!Rtc.GetIsRunning()) {
Rtc.SetIsRunning(истина);
}
RtcDateTime сейчас = Rtc.GetDateTime();
if (теперь <компилировано) {
Rtc.SetDateTime(скомпилировано);
}
Rtc.SetSquareWavePin(DS1307SquareWaveOut_Low);
}
недействительный цикл() {
RtcDateTime сейчас = Rtc.GetDateTime();
if (now.Hour() == 18 && now.Minute() == 0) {
Serial.println(">>> Уже 18:00! Выдача...");
myservo.write(15);
задержка(500);
myservo.write(90);
задержка(450);
myservo.write(15);
задержка(59000); // Подождите почти минуту, чтобы избежать повторения
} еще {
Serial.println(«Еще не время.»);
}
задержка(1000); // Проверяем каждую секунду
}
}
Вы можете настроить:
— Время
— Углы сервопривода
— Продолжительность кормления
Примечания
— Если вам это нравится, не стесняйтесь делать ремиксы, но без коммерческого использования, по��алуйста.





























