Winkekatzen, original „Maneki-neko“ sind ja mittlerweile auch schon in unserem Kulturkreis bekannt. Klassischerweise aus Keramik und mit einem unbeweglichen Arm, so gibt es sie auch schon seit geraumer Zeit in Plastik mit einem elektrisch winkenden Arm.
Im Chaos-Umfeld werden die Winkekatzen insbesondere mit dem VOC, dem Video Operation Center, das auf Chaosveranstaltungen wie dem Chaos Communication Congress für Videoaufnahmen und Streams zuständig ist, in Verbindung gebracht. Das liegt daran, dass auf den Rednerpulten immer eine solche elektrisch betriebene Winkekatze steht. Damit kann man immer sehen, ob bei einer Kamera gerade das Bild eingefroren ist, selbst wenn sich sonst nichts auf der Bühne bewegt. Die Winkekatze hat es sogar ins Logo des VOC geschafft, unter dem Namen „Voctocat“ (CC BY-SA 4.0 by blinry ):
Auf dem 39C3 bin ich dann einem Freund begegnet, den ich vom Rollenspielen kenne. Dessen Assembly hat ein Projekt mit Winkekatzen, die alle mit dem Internet verbunden sind und auf Kommando alle gleichzeitig winken und mit den Augen leuchten. Dazu werden handelsübliche Winkekatzen mit beweglichen Armen genommen, mit einem Mikrocontroller versehen, an den Augen operiert (LEDs) und ans Internet angeschlossen.
Jede Katze kriegt einen eigenen Namen. Im Internet kann man dann auf www.winkekatze24.de entweder alle Katzen gleichzeitig zum Winken bringen, oder nur eine spezielle, denn alle angemeldeten Winkekatzen sind dort aufgelistet. Als Backend für Statusupdates und Winkbefehle wird in beide Richtungen MQTT verwendet. Natürlich kann man auch ohne Probleme einen eigenen Server aufsetzen, aber der Spaß ist ja, dass alle Katzen gleichzeitig winken. Wenn ich sehe, dass meine Katze winkt, weiß ich, dass die Katze bei meinem Rollenspielfreund auch winkt, eine Katze in einem hackspace in Birkenhead und einige mehr.
So eine Katze wollte ich auch haben. Und bisher ist es so mäßig gelaufen. Aber ich gebe nicht auf.
Meine eigene Winkekatze
Das Bauset für eine wolche Katze ist eigentlich ganz simpel. Ein Board, ein Mikrocontroller mit integriertem Wlan-Modul, zwei Neopixel-LEDs, ein Transistor und ein paar Widerstände. Sollte selbst für einen Grobmotoriker wie mich machbar sein. Ich habe mir also auf dem 39C3 ein Set besorgt. Die Belichtung dort war aber eher schlecht, also habe ich nach ein paar angelöteten Teilen aufgegeben um die Katze zu Hause weiter zu verarbeiten. Es gibt ja auch genug andere Dinge, die man auf dem Congress tun kann. Ich war die erste volle Januarwoche noch in Hamburg (ohne Lötausrüstung), also musste ich abwarten. Zurück in meiner Wohnung habe ich dann angefangen:

Ich habe eine Weile gelötet und war irgendwann bereit, die Software aufzuspielen, um das Ganze zu testen. Nur: Der Microcontroller (ein Arduino-Derivat) hat zwar einen eigenen USB-Port, aber es ist ein Micro-USB. Kein Problem. Mal schnell das Micro-USB-Kabel gesucht und… Hmm… nicht da. Micro-USB-Netzteil? Ja. USB-A zu: USB-B? Ja. USB-C? Ja. Mini-USB? Ja. Komische proprietäre Anschlüsse? Ja. Micro-USB? Nein.
Ich war mir sicher, dass ich ein solches Kabel hatte. Aber ich habe es nicht gefunden (später hat sich herausgestellt, dass ich es bei meiner Mutter habe lieben lassen). Also ein neues Kabel. Mit über einer Woche Verzögerung konnte ich also weitermachen.
Firmware-woes
Die Software selber war das nächste Problem: Das auf der Website zu dem Zeitpunkt verlinkte Repo auf Github hatte nur eine Uralt-Version. Nun muss man wissen, dass es zwei Varianten gibt, den Arm der Katze zu betreiben: Mit einem Servomotor, an dem direkt der Arm montiert ist, und mit einem Magnetpendel, das durch eine Spule angetrieben wird. Die alte Variante ist die mit dem Servomotor. Die neue ist die mit dem Magnetpendel, und die hat einige Vorteile. Zum einen ist das der Weg, wie die meisten dieser Katzen in der Grundausstattung sowieso arbeiten. Dann ist das Magnetpendel leiser, und zuletzt ist die Bewegung flüssiger.
Der Nachteil ist, dass mein ein paar mehr Teile braucht (u.a. einen Transistor) und die Software anders aussieht (ggf. noch mit einem Hack, um den Arm überhaupt zu starten). Das war in dem alten Repo nicht drin. Dann gab es noch eine Version auf Gitlab. Die war aber nur minimal neuer. Wir hatten auch die ganzen Repos nach Codeberg umgezogen, und dort war jetzt die alte Github-Version. Bei der Bastelanleitung, die ich zu der Katze bekommen habe, war dann auch der richtige Code dabei, den ich allerdings in keinem Repo finden konnte. Wie sich herausgestellt hat, hat jede und jeder, die oder der am Projekt beteiligt war, eine eigene Codeversion gepflegt.
Mit der Version konnte ich dann aber auch noch nicht ohne Weiteres arbeiten. Denn der Code war für eine andere Pinbelegung geschrieben. Keine große Änderung im Code, aber ich musste mich durch das Datenblatt wühlen und die Pins auf die entsprechenden Pin-IDs im Code mappen.
Dann konnte ich den Code installieren und es lief… nur halb. Immerhin: Der Magnet funktionierte korrekt, die Katze hat ordentlich gewunken. Die LED-Augen wiederum gingen nicht.
Augenprobleme
Ich hatte die Augen falsch verlötet und dabei eine der LEDs gehimmelt. Mist. Die andere LED ging noch, und ich hatte ja noch eine ganze Rolle Neopixel-kompatibler LEDs, also könnte ich ja damit weitermachen, oder?
Nein. Was ich auch tat, wie sehr ich auch alle Verbindungen und Schaltkreise überprüfte, die LEDs leuchteten entweder nicht in der korrekten Farbe, nicht hell genug, nur weiß… es war zum Mäusemelken. Ich habe es mit verschiedenen LEDs ausprobiert, nichts funktionierte. Ich habe den Code überprüft. Ich habe die Spezifikation der LEDs überprüft. Ich habe mir Rat bei den Leuten geholt, die diese Katzen entwickelt haben. Keine Lösung.
Am Ende habe ich dann im Februar, als ich in Hamburg war, die Katze dem Freund aus der Rollenspielrunde gegeben, damit er sich die anschauen konnte. Der hat sich die angeschaut und hatte nach eigenen Angaben eine wirklich verzweifelnde Debug-Session, bevor er zum Schluss kam, dass meine Ersatz-LEDs wohl mit dem Controller einfach nicht richtig funktionieren. Er hat die LEDs ersetzt und mir die Katze zugeschickt.
Die ist dann Anfang März wieder bei mir angekommen, und diese Woche bin ich dann dazu gekommen, die Katze zusammenzubauen. Ich musste noch die zweite LED anlöten, und dann gingen die LEDs auch.
Armlähmung
Nun musste ich die Katze nur noch wieder zusammensetzen. Es war ein bisschen Fummelei, die Kabel so zu führen, dass der Arm nicht behindert wird, aber das ging auch. Wieder zusammenschrauben konnte ich die Katze auch nicht, weil ich keinen Schraubendreher hatte, der lang und dünn genug war, um in die Löcher reinzupassen.
Das Bord und der Controller passen auch nicht in die Katze (das geht nur bei größeren Modellen, also habe ich einen kleinen Karton genommen, ein Loch in die Mitte gemacht und die Katze draufgestellt. Das geht.
Das Einzige, was nicht geht, ist der Arm. Obwohl er schon einmal funktioniert hat, und auch bei dem Freund in Hamburg funktioniert hat, ist er hier bewegungslos. Es ist auch kein Softwareproblem. Die Spule kriegt einfach keinen Strom. Die Kabel selber sind in Ordning. Der Pin ist korrekt. Die Lötstellen auch.
Das Proble: Ein winziger, wortwörtlich haardünner Kupferlackdraht, der zur Spule führt, ist durchtrennt. Muss beim Transport passiert sein. Und das kriege ich ums Verrecken nicht repariert. Zumal dieses Mini-Ding ja auch lackiert ist, den Lack müsste ich also vorher irgendwie abkriegen.
Aber vielleicht finde ich eine Ersatzkatze. Die Dinger sind ja billig. Und tatsächlich: Ein Kitschladen hier im Ort hatte welche, in verschiedenen Größen. Ich habe eine in vergleichbarer größe zu meiner jetzigen geholt und… kriege sie nicht aufgeschraubt, weil ich keinen Schraubendreher habe, der lang und dünn genug ist. Bis ich an einen komme, kann gerne noch einmal eine Woche vergehen. Die Ersatzkatze steckt bis dahin in ihrem Ersatzkatzenkasten, der aber nicht mit Ersatzkatzenkastenmatratzen ausgekleidet ist.
Die aktuelle Katze kann immerhin mit den Augen leuchten:

Schlusswort
Ich wollte eigentich schon viel früher darüber schreiben, aber ursprünglich wollte ich warten, bis die Katze fertig und einsatzbereit ist. Ich habe in der Zeit, in der ich mit der Katze nicht weiterkam, auch ein paar andere Sachen an dem Projekt gemacht, zum Beispiel die Website überarbeitet (WIP), ein Favicon zur Website hinzugefügt, eine kleine Rust-Bibliothek für die Katze geschrieben (WIP) und eine virtuelle Katze gebaut (WIP). Dazu schreibe ich dann später mehr. Besonders das Favicon war ein Drama, gemessen daran wie klein die Änderung eigentlich war.
Trotz des ganzen Ärgers, den ich damit hatte (ich komme halt mehr mit Software klar als mit Hardware) ist es eine lustige Idee, die natürlich dadurch besser wird, wenn mehr Leute sich so eine Katze basteln, aufstellen und mit den anderen Katzen verbinden. Lasst euch also nicht von meinen Unglücken abschrecken.
Zum Abschluss aber noch ein paar Links (teilweise wiederholt)
- Die Steuerungs-Website für die Winkekatzen: Hier kann man die Katzen zusammen aber auch einzeln winken lassen.
- die Bastelanleitung für die Winkekatze
- ein halbwegs aktuelles Repo mit Winkekatzencode
- eine Liste von verwandten Repos
- eine Linksammlung, die aber nicht mehr ganz aktuell ist