Eine smarte Katzenklappe

Hallo und willkommen zu einer neuen und spannenden zweiteiligen Blogreihe. In dieser Kurzreihe dreht es sich diesmal um unsere 4-beinigen (Lieblings-)Mitbewohner. Gemeint sind Katzen, auch wenn natürlich Hunde auch dazu gehören 😊

Die Idee für diesen Blog lieferte mir diesmal ein Arbeitskollege. Er liest ab und an mal meine Blogs und ist selbst ein großer Smart-Home Fan. Nun sprach er mich kürzlich darauf an, dass er gerne auf seinem Handy eine Benachrichtigung hätte, wenn seine Katze von Ihren „Streifzügen“ heimkommt bzw. auf Streifzug geht. Er erzählte mir, dass er bereits auf dem Markt nach einer Katzenklappe mit entsprechender Funktionalität gesucht hätte aber nichts Passendes gefunden hätte. Ob ich nicht eine Lösung für das Problem bauen könnte. Natürlich kann ich und hier ist Sie:

Das Prinzip unserer smarte Katzenklappe basiert darauf, dass unsere Katze beim herein- oder herauskommen durch die Katzenklappe die Klappe in der Tür jedes Mal in eine andere Richtung (nach rechts oder links) „hochdrücken“ muss, um die Klappe zu passieren.

Da die Richtung der Klappenbewegung abhängig ist von dem Weg der Katze, können wir so durch eine einfache Anordnung von 2 Tastern an der Klappe alle nötigen Informationen bekommen. Folgendes Schaubild verdeutlicht dies in der prinzipielle mechanische/elektrische Funktionsweise.

Funktionsweise

Es ist ersichtlich, das die Katze beim durchlaufen durch die Katzenklappe entweder den Taster „Katze kommt“ oder den Taster „Katze geht“ betätigt, je nachdem in welcher Richtung sie Die Klappe passiert.

Diese beiden „Richtungs-“ Taster werden nach dem mechanischen Aufbau wie in folgendem Fritzing Plan verdrahtet:

 

Fritzing Plan

Beide Taster schließen kurz nach Plus (3,3 Volt), wenn sie betätigt werden. Pull down Wiederstände von 330 KOhm ziehen ansonsten die Ports nach unten.

Die Hardwareliste gestaltet für dieses Projekt erfreulich übersichtlich:

 

  • 2x 330 KOhm Wiederstand
  • 1x ESP32
  • 2xTaster
  • 1x Netzteil oder Powerbank

Nachdem wir nun die Hardware und die Mechanik fertig aufgebaut haben, geht es an die Konfiguration bzw. die Vorbereitung unseres Handys. Dazu laden wir uns die App „Blynk“ aus dem App Store auf unser Handy. Die APP selbst ist kostenlos und kann für den beschriebenen Anwendungsfall auch ohne weitere zusätzliche Kosten für die App betrieben werden.

Es fallen aber unabhängig davon Kosten für die Datenübertragung von unserer Katzenklappe zum Handy an. Bitte berücksichtigt diese Kosten bei dem Nachbau des Projektes!

Nachdem wir also die App Blynk aus dem Store heruntergeladen haben und diese zum ersten Mal starten, müssen wir uns zuerst einmal einen Account anlegen. Dazu tippen wir auf „Create New Account“

 

Blynk - Konto registrieren

Wir registrieren uns mit der eigenen E-Mail-Adresse und vergeben ein Passwort:

 

Blynk Konto Erstellen - 2

 

Danach klicken wir auf neues Projekt:

 

Blynk - Neues Projekt erstellen

 

Wir landen in dem Dialog zur Anlage eines neuen Projektes. Hier müssen die Basisdaten des Projekts eingeben, wie z.B. den Projektnamen, unsere ESP32 Entwicklungsplattform und die gewünschte Verbindungsform. Es können dabei verschiedene Verbindungsparameter mitgegeben werden, wie Z.B Bluetooth oder auch WLAN.

Um jedoch auch Mobil unterwegs Daten empfangen zu können, muss der Verbindungstyp GSM gewählt werden. Nachfolgend werden die Einstellungen, die ich für das Projekt gewählt habe, gezeigt:

 

Blynk - Neues Projekt erstellen - Angaben zum Projekt

 

Wir bestätigen die Angaben mit „Create“ und landen in einem leeren Projekt.

Wir fügen nun unser erstes Aktives Element in unsere App über das „Plus“ Symbol in der Titelleiste hinzu:

 

Blynk - Element hinzufügen

 

Als erstes Element wählen wir „Notfication“ aus, und konfigurieren das Element.

 

Blynk - Widget hinzufügen

Hier sind die Details der Einstellungen des Elementes zu sehen:

 

Blynk - Benachrichtigungseinstellungen

Wir bestätigen die Einstellungen mit dem Pfeil links, und landen dann wieder in der Hauptansicht der APP:

Blynk - Das wars!

Das wars!

Die App können wir jetzt erst mal wieder schließen. Kommen wir nun zu dem Mikrocontroller Teil. Wir müssen jetzt unsere Arduino IDE und den ESP Code an unsere APP anpassen.

Dazu installieren wir zunächst in der Arduino IDE über den Bibliotheksverwalter die Blynk Bibliothek in der aktuellsten Version:

Blynk Bibliothek in Arduino installieren

 

Anschließend passen wir den Code an unser Projekt an. Die Anpassung unseres Codes erfolgt an folgenden Stellen:

//Global Variables
char auth[] = "11111111111111111111111111"; // Hier lt. Anleitung Auth Token deiner Blynk App eintragen (E-Mail). Auth Token ist ein Dummy !

// Deine WiFi Zugangsdaten.
char ssid[] = "***********";
char pass[] = "**************"; // Set password to "" for open networks.

Nachdem der Code an die eigenen WLAN– und Auth Token Parameter angepasst wurde kann dieser auf den ESP hochgeladen werden:

 

#include <WiFi.h>
#include <BlynkSimpleEsp32.h>

// Portedefinierung Taster
#define Cat_Go_SW  15    // Katze geht
#define Cat_Comes_SW 2    // Katze kommt

#define BLYNK_PRINT Serial
#define BLYNK_NO_BUILTIN
#define BLYNK_NO_FLOAT
#define Switch_Poll_Interval 200
//#define BLYNK_DEBUG

//Global Variables
char auth[] = "11111111111111111111111111"; // Hier lt. Anleitung Auth Token deiner Blynk App eintragen (E-Mail).

// Deine WiFi Zugangsdaten.
char ssid[] = "***********";
char pass[] = "**************";  // Set password to "" for open networks.
unsigned long Switch_ServiceCall_Handler = 0;  // Delay Variable for Delay between Moisure Readings
bool State_Cat_Go_old = false;
bool State_Cat_Comes_old = false ;

void setup() {
  pinMode(Cat_Go_SW, INPUT);
  pinMode(Cat_Comes_SW, INPUT);
  Serial.begin(9600);   // initialize serial communication at 115200 bits per second:
  Serial.print(F("Verbindung zu WLAN"));
  delay(500);
  Blynk.begin(auth, ssid, pass);  // Initalize WiFi-Connection over Blynk Library
  Serial.println(F(" erfolgreich."));
}

void Run_Check_Switches ()   //
{
  bool State_Cat_Go = false;
  bool State_Cat_Comes = false;
  if (millis() -  Switch_ServiceCall_Handler >= Switch_Poll_Interval)
  {
    Switch_ServiceCall_Handler = millis();
    State_Cat_Go = digitalRead(Cat_Go_SW);
    State_Cat_Comes = digitalRead(Cat_Comes_SW);
    if (State_Cat_Go && (!State_Cat_Go_old))
    {
      State_Cat_Go_old = true;
      Blynk.notify ("Hinweis: Katze geht");
      delay(1000);
    } else if ((!State_Cat_Go) && State_Cat_Go_old)
    {
      State_Cat_Go_old = false;
      delay(1000);
    } else if (State_Cat_Comes && (!State_Cat_Comes_old))
    {
      State_Cat_Comes_old = true;
      Blynk.notify ("Hinweis: Katze kommt");
      delay(1000);
    } else if ((!State_Cat_Comes) && State_Cat_Comes_old)
    {
      State_Cat_Comes_old = false;
      delay(1000);
    }
  }
}

// Main Loop
void loop()
{
  Run_Check_Switches();
  Blynk.run();   // Execute Blync Basic- Functions
}

 

 

Fertig!

Wenn wir jetzt Port 2 kurz mit Plus zum Testen verbinden, erhalten wir folgende Nachricht auf das Handy:

Funktionstest: Katze kommt

Nun verbinden wir Port 15 kurz mit Plus zum Testen. Wir sollten jetzt folgende Nachricht auf dem Handy sehen:

Funktionstest - Katze geht. :'(

etzt müssen wir nur noch die Elektronik bzw. die Mechanik an der Katzenklappe anbringen und bekommen jetzt immer eine Nachricht, wenn unser Stubentiger die Klappe benutzt. Ich wünsche viel Spaß beim Nachbauen.

Bis zum nächsten Teil der Reihe und viel Spaß beim Nachbauen!

 

Letzter Artikel Eine berührungsempfindliche Lampe
Neuer Artikel Unsere Discobrille gibt Feedback!

Kommentar

Sascha - November 12, 2019

Echt eine tolle Sache!
Würde es auch gerne mit dem RFID Chip am Halsband realisieren, da die Katze eh schon einen hat, um die Klappe zu öffnen.
Wenn es dafür auch noch eine Lösung gäbe, wäre es echt ein Traum.
Vllt. mit 2 RFID Lesern. Einer kommt ganz an den Anfang der Klappe und einer an das Ende.
Je nach dem in welcher Reihenfolge die Leser ausgelöst werden, ist die Katze dann eben drin oder draußen.

Dirk Zwijas - Oktober 7, 2019

Wäre das ganze nicht leichter mit einem RFID Chip im Katzenhalsband zu realisieren ?

Hinterlasse einen Kommentar

Kommentare müssen vor der Veröffentlichung überprüft werden

Erforderliche Angabe