Hier ist mein kostengünstiger, automatischer und "intelligenter" Katzenfutterautomat.
Features :
- füttere deine Katze zweimal am Tag
- Liefern Sie nur die "empfohlene" Ration.
- erkennen, dass deine Katze isst, und eine Benachrichtigung auf deinem Handy erhalten
- sieh deine Katze beim Fressen
Spezifikationen:
- Behälter für Katzenfutter mit hoher Kapazität (~ 1 Monat)
- Anti-Störsystem
- Anti-Ameisen-System
- Anti-Überlauf-System
Preis: weniger als 40€ (ja sicher ... siehe BoM-Datei)
Übersicht
2017 veröffentlichte ich daserste Iteration dieses Projekts. Und seitdem hat der Katzenfutterautomat täglich funktioniert. Die Mechanik ist immer noch dieselbe und hat seine Zuverlässigkeit über Jahre hinweg bewiesen.
Die Software hat sich geändert, erst wurde KI eingesetzt (was damals ein Fehlschlag war), dann wurde ein altes Smartphone als Webcam verwendet. Und jetzt wird eine viel kompaktere und billigere Lösung eingesetzt!
Hier ist, wie es 2017 aussah:
Leider ist Chicha (meine Katze im Video) letztes Jahr gestorben und wird heute nicht für ein weiteres Video da sein...
Gelernte Lektionen
Hier sind die Lektionen, die während 8 Jahren täglicher Betriebszeit gelernt wurden:
- Ameisen lieben Katzenkuscheln... Wenn das Geschirr auf dem Boden liegt, wird es am nächsten Tag voller Ameisen sein. Also muss das Geschirr in der Luft "schweben".
- Die Katze ist ein Jäger, sie bevorzugt immer Eichhörnchen, Vögel oder Mäuse gegenüber Kätzchen. Wenn man sie mit der gleichen Menge an Futter füttert, wird das Futter am nächsten Tag überlaufen (und die Ameisen werden davon gefüttert!).
- Kibbles sind wie ein "3D-Tetris-Spiel", sie neigen dazu, herunterzufallen und sich zu verschlingen und den Feeder zu blockieren. Eine zuverlässige Anti-Stau- Funktion ist unerlässlich.
- Hochkapazitive Futterautomaten sind ein Muss, um zum Beispiel einen Monat Urlaub zu nehmen... Aber es ist auch notwendig zu erkennen, wenn der Futterautomat leer ist.
- Eine Benachrichtigung, dass deine Katze isst, ist lustig, aber sie sollte nur auftreten, wenn deine Katze isst, und nicht, wenn jemand vor dem Futterbecken steht!
- Deine Katze beim Fressen zu sehen, ist eine clevere Funktion, nicht wirklich zwingend erforderlich, aber so lustig!
Wir werden sehen, wie diese Bedenken angegangen wurden.
Mechanisches Design
Das mechanische Design basiert auf einem pyramidenförmigen Trichter, der die Kroketten auf eine große Schneckenförderer fallen lässt.
Die Wurm-Schraube wird von einem 360° RC-Servo und zwei Zahnrädern angetrieben.
Ein 360°-Servo ermöglicht eine kontinuierliche Rotation in beide Richtungen, im Uhrzeigersinn oder gegen den Uhrzeigersinn.
Und benutze ein paar Schrauben, um die Abdeckung zu befestigen und die Zahnräder an ihrem Platz zu halten!
Antijamming:
Um zu verhindern, dass das Schneckengetriebe blockiert wird, wird die Bewegung in beide Richtungen per Software gesteuert (schauen Sie sich das erste Video an). Dies wird die Kroketten "schütteln" und ihnen helfen, aus dem Trichter in das Schneckengetriebe zu fallen.
Um zu verhindern, dass das Zahnrad bei "Vorwärtsbewegung" blockiert wird, wird eine Gummilippe auf die Vorderseite des Trichters geklebt. Diese weiche Lippe wird alle Einschränkungen absorbieren und zusammen mit der Hin- und Herbewegung jegliches Blockieren verhindern. Vertrau mir, es funktioniert!
Wie Sie auf diesem Bild sehen können, wird ein PVC-Rohr um das Schneckengetriebe eingeführt, und ein Schlitz wird darüber geschnitten, damit Kroketten in das Schneckengetriebe fallen können.
PVC ist perfekt, um eine reibungslose Bewegung in das Rohr zu ermöglichen. Es ist stark, sehr weich und natürlich glänzend (fast "geölt").
Das Gericht wiegen
Das Wiegen des Gerichts ist eine Idee, die viele der oben erläuterten Bedenken beseitigt!
- Das Gericht wird über dem Boden "schweben", was Ameisen daran hindert, die Kibbles zu essen.
- Wenn die Katze isst, nimmt das Gewicht des Tellers ab. Es ist eine elegante Methode, das Ereignis "Katze isst" zu erkennen.
- Wenn die Kroketten fallen, können wir den genauen Anteil, den wir der Katze liefern wollen, messen und die Bewegung der Wurm-Schraube stoppen.
- Wenn das Gericht nicht leer ist, füllen wir es nur bis zur genauen Ration, um ein "Überlaufen" zu verhindern.
- Wenn die Kibbles nicht fallen, ist es entweder eine Stausituation oder eine leere Trichtersituation. Eine Benachrichtigung kann an Ihr Smartphone gesendet werden.
- Schließlich sitzt das grüne Gericht des Videos über dem 3D-gedruckten. Sie können es leicht zum Waschen entfernen und es sauber halten.
Also wird eine Wägezelle unter dem Trichter hinzugefügt, die als Küchenwaage fungiert!
Montage der Außenwände
Schließlich werden, wie auf dem Bild gezeigt, Holzwände um den Trichter hinzugefügt. Sie werden mit 3D-gedruckten Füßen und 5mm Holzschrauben zusammengefügt. Die Abmessungen zum Schneiden des 18mm Sperrholzes sind im Paket der 3D-gedruckten Teile (.dxf-Dateien) angegeben.
Hier ist eine Explosionsansicht: Die Montage all dieser Teile ist ziemlich einfach und unkompliziert.
Wie Sie sehen können, werden Löcher in die Vorderwand gebohrt, um die Kamera und den Bewegungsmelder (IR-Sensor) unterzubringen.
Drucken des Katzenfütterers
Die meisten Teile werden mit PLA-Filament gedruckt.
Der größte ist der Hopper! Er kann jedoch direkt auf meinem Prusa i3 Mk2.s-Drucker ohne jegliche Unterstützung gedruckt werden.
Die Schnecke muss so stark wie möglich und so glatt wie möglich sein. Aus diesen Gründen wird sie mit ABS-Filament gedruckt.
Um es stärker zu halten und Stützen zu vermeiden, wird die Schnecke in zwei Hälften horizontal gedruckt. Dann wird sie mit Aceton geklebt. Und sie wird auch mit Aceton geglättet (sieheHier, wie man es macht.)
Das Drucken aller anderen Teile ist unkompliziert und erfordert auch keine Unterstützung!
Das große Zahnrad wird ebenfalls in ABS gedruckt und dann auf die Schnecke geschraubt und geklebt.
Achtung, das Drucken von ABS ist nicht ganz einfach und erfordert, dass Ihr Drucker in einem Gehäuse sitzt, um Verformungen zu vermeiden. SieheDieser Link, um einen einfachen zu machen.!
Das Cover ist auch in PLA gedruckt, es wird in 4 Teile geschnitten, um zu meinem Prusa i3 mk2.S zu passen, dann werden die Teile auf einer flachen Oberfläche mit Epoxy zusammengeklebt.
Um alle Teile zu drucken: Öffnen Sie die .3mf-Dateien, wechseln Sie den Filament, wenn Sie möchten (PETG kann eine gute Wahl sein, wenn Sie kein ABS oder PLA haben), ändern Sie bei Bedarf den Düsendurchmesser (ich benutze eine 0,6 mm große, es ist schneller, Teile zu drucken) und drucken Sie!
Wenn all das erledigt ist, ist dein Katzenfutterautomat fast fertig... Nun, es fehlen noch ein paar elektronische Dinge!
Elektronik
Schematiken
Mikrocontroller
Das Herz des Systems ist einAi-Thinker ESP32-CAM Mikrocontroller. Es ist ein billiger, aber leistungsstarker 32-Bit-Dual-Core-Mikrocontroller, den Sie einfach programmieren können.Arduino IDE
Dieser MCU hat eine winzige 2xMPixel-Kamera OV2640, die perfekt sein wird, um unsere Katze zu überwachen!
Einige IO-Pins sind für DIY-Projekte verfügbar.
Ich habe die meisten von ihnen benutzt!
- IO12 und IO13 zur Steuerung des Lastzellen-Treibers HX711
- IO15 zur Steuerung des RC-Servos.
- IO12, um das PIR-Sensor-Signal zu erhalten.
- IO1, IO2 und IO0, um die Firmware zu flashen.
- IO14 zum Konfigurieren von WLAN und zur Kalibrierung der Wägezelle.
verwendete Sensoren
360°-Servo:
Ein 360°-Servo erlaubt eine kontinuierliche Rotation in beide Richtungen, entweder im Uhrzeigersinn oder gegen den Uhrzeigersinn. Das PWM-Signal ermöglicht nur die Steuerung der Rotationsrichtung und -geschwindigkeit (nicht der Position).
Diese Servos sind leicht zu beschaffen:Servo bei Aliexpress
Ihre Abmessungen sind standardmäßig: 40,8*20,2*28,5 mm.
Ein Modell mit Metallzahnrädern und einem Drehmoment > 10kg.cm wird benötigt. Das Schneckengetriebe kann beim Auftreten von Störungen viel Kraft auf die Kibbles ausüben...
PIR-Sensor
Das MCU wird die meiste Zeit schlafen, um Energie zu sparen.
Es wird durch einen Infrarotsensor über ein Unterbrechungssignal aufgeweckt werden.
Das Modell, das ich gewählt habe, ist das billigste:HC-SR501
Der weiße Radom kann entfernt werden, so dass der Sensor in das 3D-gedruckte Teil passt und die Katze von der Innenseite der Vorderwand aus betrachten kann.
Jedes Mal, wenn etwas vor dem Feeder vorbeigeht, wird der Ausgang des PIR-Sensors "hoch" und weckt den ESP32.
Wägezelle
Die Wägezelle wird das Gewicht des Essens messen.
Ich habe eine 1-kg-Lastzelle gewählt. Dieses Gerät benötigt einen Verstärker HX711, um seinen Wert anzupassen.
Die Verbindung zwischen Wägezelle und Verstärker folgt diesem Schema:
Programmierung des ESP32-CAM
Leider ist dieser MCU nicht mit einem integrierten USB-zu-Seriellen Adapter ausgestattet. Wir werden einen externen Adapter verwenden müssen, um unseren CatFeeder zu programmieren.
Es gibt viele Lösungen. Ich habe diese gewählt:CP2102 USB zu seriell
Wir werden später sehen, wie man es benutzt.
Leiterplatte
Ich habe eine schöne und kompakte Leiterplatte entworfen, die es ermöglicht, den ESP32 einzubauen und alle Sensoren anzuschließen.
Meine erste Version verwendete kein PCB, alles war "drahtgebunden im Betrieb"! Mehrere Benutzer baten mich, eines zu bauen. Es ist jetzt fertig und sehr einfach zu montieren, das muss ich zugeben!
Das PCB wurde freundlicherweise von PCBWay gesponsert und ist wie immer von ausgezeichneter Qualität.
Du kannst es hier bestellen:Gemeinsames Projekt von PCBWay. Es ist billig, wird sehr schnell geliefert und sieht so professionell aus!
Und wenn du neu bei PCBWay bist, benutze bitte diesen angeschlossenen Link:https://pcbway.com/g/o35z4O
Dieses PCB zeigt alle nativen Anschlüsse für die verschiedenen verwendeten Module. Es ist sehr, sehr einfach zu löten!
Nur der USB-Anschluss ist "schwierig" zu löten, aber das ist nicht erforderlich (siehe unten).
Die vollständige Stückliste ist im Abschnitt "Dateien" dieser Website verfügbar.
Machtbetrachtungen
Das Board verwendet eine 5V-DC-Stromversorgung für den ESP32 und alle Sensoren. Der Servo wird ebenfalls mit 5V betrieben und kann 1 oder mehr Ampere Strom verbrauchen. Daher können Sie das System mit einem Smartphone-Ladegerät betreiben, sofern es mehr als 1A liefern kann. (2A ist eine perfekte Wahl).
Du kannst die 5V direkt an den USB-Anschluss (PW) oder an die Pin-Header (PW1) der PCB anschließen.
Software: ESP32-Firmware
Die Firmware für den catFeeder ist verfügbar aufMeine Github-Seiten
Du wirst dort alles finden, was zum Kompilieren und Konfigurieren deines catFeeder benötigt wird.
Arduino-Installation
Du wirst die Aduino IDE installieren müssen:https://www.arduino.cc/en/software
Dann solltest du einen Verweis auf dein ESP32-Board hinzufügen. Öffne einfach die Einstellungen und füge diesen Link zu den "Zusätzlichen URLs des Boards-Managers" hinzu:https://espressif.github.io/arduino-esp32/package_esp32_index.json
Dann solltest du dein ESP32-Board im Board Manager-Menü sehen.
Die Installation der Buchhändler
Du musst ein paar Bibliotheken installieren, bevor du deinen CatFeeder kompilierst... Die meisten von ihnen werden über den Bibliotheksmanager installiert.
Tickerwird für die Servosteuerung verwendet.
WifiManagerum Ihre WLAN-Zugangsdaten zu konfigurieren.
ZeitFür NTP-Zeitsynchronisation.
URL-EncodierungFür WhatsApp-Benachrichtigung
Nachdem all das getan wurde, solltest du in der Lage sein, deinen Katzenfutterautomaten ohne Fehler zu kompilieren!
Entpacke denGitHub-Projektund öffne es in der IDE.
Du solltest 5 geöffnete Dateien sehen.
Ich habe nur die .ino-Datei geändert. Alle 4 anderen sind Originaldateien aus demAI-Thinker-Repository. Sie könnten "alte" Versionen sein, aber sie funktionieren mit meinem Board!
Du kannst versuchen, es zu kompilieren, es sollte funktionieren, aber wir müssen in den Quellcode eintauchen, um einige Parameter zu ändern.
Und ich muss immer noch erklären, wie man die Firmware flasht...
Das Firmware-Update durchführen
Verbinden Sie Ihren USB-zu-Seriellen Dongle mit Ihrem Katzenfutterautomaten. Vergessen Sie nicht, den Jumper JP1 zu überbrücken. Dies wird GIO0 auf Masse zwingen und es dem ESP32 ermöglichen, in den Bootloader-Modus zu booten.
Verbinden Sie weder die 5V noch die +3,3V auf dem Dongle (aber natürlich stecken Sie ihn in den USB-Port Ihres PCs!). Stattdessen stecken Sie die +5V auf Ihrem Board und klicken nun auf den Kompilierungs-Button. Ein paar Sekunden später wird die Firmware hochgeladen.
Entferne den Jumper auf JP1 und setze den ESP32 zurück (oder trenne/verbinde den +5V). Dein Katzenfutterautomat wird hochfahren!
Das WLAN konfigurieren.
Um das WLAN zu konfigurieren, folgen Sie einfach dieser Prozedur:
Ich habe den verwendet.ESP32 WifiManager-BibliothekFähigkeiten, WLAN-Zugangsdaten auf dem ESP32-Board einzugeben.
Also, wenn du das Board bootest (oder es mit dem Reset-Button zurücksetzt)während er das "CAL50"-Touchpad auf der PCB berührt,Dann stellt der ESP32 einen WLAN-Hotspot mit dem Namen "JP eCatfeeder" zur Verfügung, mit dem Sie jedes Smartphone (oder PC) verbinden können.
Die Verbindung damit wird automatisch ein Konfigurationsfenster öffnen.
Klicken Sie auf die Schaltfläche "WLAN konfigurieren", um ein bestehendes WLAN-Netzwerk auszuwählen, für das Sie die Zugangsdaten haben, und geben Sie diese ein! ESP32 wird neu starten und sich mit Ihrem Router verbinden.
Dein ESP32-Board ist jetzt so konfiguriert, dass es mit WLAN läuft, und du möchtest deine Katze überwachen und Benachrichtigungen erhalten!
Wenn du kein WLAN hast, kein Problem, dein Katzenfutterautomat wird immer noch funktionieren, aber ohne die "intelligenten Funktionen"!
WhatsApp-Benachrichtigungen
Deine Katze kann dir WhatsApp-Benachrichtigungen schicken!
Es ist einfach... Ich habe den CallMeBot-Service verwendet, um Textbenachrichtigungen an mein Handy zu senden.
Gehe zumCallMeBot-Seiteund folge den Anweisungen, indem du WhatsApp auf deinem Handy verwendest.
Du wirst eine Nachricht mit dem API-Schlüssel erhalten.
Sobald Sie CallMeBot erlaubt haben, Ihnen Benachrichtigungen zu senden, müssen Sie Ihre Telefonnummer und Ihren API-Schlüssel in den Quellcode (Zeile 145) konfigurieren.
//WhatsApp Callmebot :https://www.callmebot.com/blog/free-api-whatsapp-messages/
// +internationaler Ländercode + Telefonnummer
// Frankreich +33, Beispiel: +36010100101
String phoneNumber = "+DEINE_TELEFONNUMMER";
String apiKey = "IHR_APIkey";
Jetzt kannst du deinen Code erneut kompilieren, und du solltest in der Lage sein, Nachrichten von deiner Katze zu empfangen!
Kalibrierung der täglichen Ration.
Wie bei jeder Waage muss auch Ihr Katzenfutterautomat kalibriert werden:
- Die Tarierung sollte mit einem leeren Teller auf der Waage durchgeführt werden. Also, führen Sie den Katzenfutterautomaten aus, lassen Sie ihn hochfahren und bevor er in den Tiefschlaf geht (40 Sekunden), berühren Sie das CAL50-Touchpad auf der PCB für 4 Sekunden (mehr als 3 Sekunden und weniger als 6 Sekunden). Das ist so einfach wie das!
- Die tägliche Ration sollte nach der Tarierung kalibriert werden. Legen Sie die gewünschten Kroketten auf den Teller, starten Sie den Katzenfutterautomaten, lassen Sie ihn hochfahren und drücken Sie 7 Sekunden lang auf das CAL50-Touchpad (mehr als 6 Sekunden).
Für jede dieser Aktionen erhältst du eine WhatsApp-Benachrichtigung, um die Kalibrierungen zu bestätigen.
Die Fütterungszeiten sind im Code festgelegt, aber Sie können sie leicht ändern (Zeile 255/256).
FeedHour1 = preferences.getInt("FeedHour1", 7);
FeedHour2 = preferences.getInt("FeedHour2", 20);
Ich füttere meine Katze um 7 Uhr morgens und um 20 Uhr abends! Das bedeutet, dass der Katzenfutterautomat seine Uhr mit der NTP-Zeit synchronisieren wird (schau dir den Code an, du wirst ihn finden!).
Du wirst vielleicht auch bemerken, dass ich meinen Feeder mit einer Ration von 50 g kalibriert habe. Aber da das Gewicht nie angezeigt wird, kannst du die Ration, die du willst, einstellen, und die Kalibrierung wird auch dann funktionieren, wenn du sagst, dass 80 g 50 g sind :-)
Deine Katze zu sehen, wenn sie frisst.
Wenn du hier bist, am Ende dieser langen Beschreibung, dann willst du belohnt werden und deine Katze beim Fressen beobachten.
Wie funktioniert es?
1)Der PIR-Sensor erkennt etwas und startet deinen ESP32.
Das wird mit 2 Zeilen Code gemacht!
Du definierst eine Bitmaske für deinen GPIO:
#define PIR_PIN_BITMASK 0x4 // 2^2 (der Exponent ist die GPIO-Nummer) in Hexadezimal
und du aktivierst externe Unterbrechungen, um den ESP32 aus dem Tiefschlaf zu wecken, wenn dieser GPIO auf "high" geht.
esp_sleep_enable_ext1_wakeup(PIR_PIN_BITMASK, ESP_EXT1_WAKEUP_ANY_HIGH); // Dies wird der Code sein, um in den Tiefschlaf zu gehen und mit einem hohen Wert des GPIO2-Pins aufzuwachen.
2)Der ESP32 ist jetzt hochgefahren und betritt die Einrichtungsroutine.
3)So wiegt ihr den Teller.Kurz nach der Bootzeit in die Setup-Routine.
Durchschnittliches Gewicht = GetRawWeight();
Durchschnittliches Gewicht = Kalibrierungsnullpunkt - Durchschnittliches Gewicht;
Durchschnittsgewicht = Durchschnittsgewicht * 50,0 / Kaliber;
RealTimeWeight = Durchschnittsgewicht;
4)Du machst dasselbe wiederholt innerhalb der Schleifenroutine.
Und wenn du eine Gewichtsveränderung feststellst, dann isst deine Katze (oder die des Nachbarn!).
wenn ((abs(AverageWeight - RealTimeWeight) > 10.0) && (SendEating == true)) // wenn das Gewicht um mehr als 10g geändert hat, dann isst die Katze {
SendAlarm = true;
Mess = "Die Katze isst. Live-Stream hier \n\"http://";
Mess += IpAddress2String(WiFi.localIP());
Mess += ":81/stream\"";
SendEating = false; // lösche das Flag, um nur eine Benachrichtigung zu senden! }
RealTimeWeight = AverageWeight; // und aktualisiere das Echtzeitgewicht
5)Der Katzenfutterautomat wird eine Benachrichtigung senden.(nur einmal)
6) Und wenn du der URL folgstDu wirst Zugang zum Live-Stream deiner Katze haben.:
Wie ich schon sagte, ist meine Katze Chicha gestorben, also habe ich das erste Bild, das ich im Internet gefunden habe, gefilmt (und es ein wenig verschwommen, um Urheberrechtsprobleme zu vermeiden!)... Tut mir leid, Joseph!
Beachte, dass die URL eine lokale ist. Wenn du deine Katze von überall auf der Welt aus dem Internet sehen möchtest, dann muss ich das anwenden.Port-Weiterleitung"Auf deinem WLAN-Router, um diese Adresse außerhalb deines Hauses zu exponieren. (Es ist einfach, aber es hängt von deinem Router ab, also werde ich das hier nicht erklären!)
7) Schließlich, am Ende der Schleife,Der ESP32 wird in den Tiefschlaf gehen.Wenn du nicht mit dem Livestream verbunden bist (50-sekündiger Timeout) und wenn sich nichts vor dem PIR-Sensor bewegt.
Der ESP32 wird entweder mit dem PIR-Sensor aufwachen oder zu den genauen Stunden, die gewählt wurden, um deine Katze zu füttern!
wenn ((millis() - Timeout) > 50000) //wenn mehr als 40 Sekunden ohne Verbindung, dann schlafen {
#if defined DEBUG_OUT
Serial.println("Zeitüberschreitung der Verbindung --> stoppe jetzt");
#endif
DoStop = 1; //Zwangsstopp }
Wenn ((doStop == 1) und (digitalRead(PIR_PIN) == LOW)) {
float hourDec = hour() + float(minute()) / 60. + float(second()) / 3600.;
float timeToSleepDec;
Wenn (hourDec > FeedHour2) ist, dann ist timeToSleepDec = 24 + FeedHour1 - hourDec;
Andernfalls, wenn hourDec kleiner als FeedHour1 ist, ist timeToSleepDec gleich FeedHour1 minus hourDec.
Ansonsten ist timeToSleepDec = FeedHour2 - hourDec;
Serial.print("wird schlafen (Stunde) : ");
Serial.println(timeToSleepDec);
timeToSleep = 3600 * timeToSleepDec;
Serial.print("wird schlafen (Sekunden) : ");
Serial.println(timeToSleep);
esp_sleep_enable_timer_wakeup(timeToSleep * uS_TO_S_FACTOR); //Erlaube Timer-DeepSleep
Serial.println("Ich gehe jetzt schlafen");
Verzögerung(200);
esp_deep_sleep_start(); //Gehen Sie in den Tiefschlafmodus, wenn der PIR-Sensor ausgeschaltet ist und die Zeitüberschreitung eintritt.
)
Теги
Источник модели
