Ich habe im Oktober geheiratet und der werte Herr Brutzler war mein Trauzeuge. Als Elektronik Nerd darf natürlich auch ein subtiler Hinweis darauf nicht fehlen. Daher habe ich die PCBowTie, oder auch Blinkefliege entwickelt. Dieser wunderschöne Halsschmuck kann anstelle einer regulären Fliege oder Krawatte getragen werden. Im Gegensatz zur gewöhnlichen Stoff-Variante kommt sie allerdings mit einem Akku und WLAN daher.
Der Akku ermöglicht ein unauffällig auffälliges Blinken und das WLAN sorgt für die notwendige Updatefähigkeit. Wie jedes Projekt wurde der Funktionsumfang zu Beginn der Planungsphase festgelegt. Ziel des Projektes war:
- Eine Fliegenförmiges PCB mit 1-wire RGB-LEDS
- Akku-Versorgung aus kleinem LiPo (Eine Zelle, 3,7V)
- Embedded Python Interpreter für die Applikation
- WLAN Synchronisation aller Fliegen in Reichweite
- Farb und Musterspiel abhängig der Lautstärke/Spektrum
Mit diesen Zielen ging es dann los. Um die WLAN Funktion zu unterstützen, habe ich auf die altbewährten ESP8266 Module zurückgegriffen. Aus einem anderen Projcket habe ich noch APA106 8mm RGB LEDS mit THT Technologie übrig. Diese sind dann also zur Beleuchtung eingesetzt worden. Micro Python wurde in diesem Blog bereits mehrfach erwähnt und kommt bereits mit allen notwendigen Funktionen für den ESP8266. Also schnell noch ein Mikrophon dazu und etwas, dass die Akku Spannung auf 5V hochsetzt um die LEDs adequat zu versorgen.
Für die Versorgungsspannung kam ein TPS61022 von TI zum Einsatz. Dieser kleine aber schlagkräftige DC/DC Konverter kann aus der Batterie die notwendige Energie für die Versorgung der LEDs und den ESP zur Verfügung stellen. Um den ESP8266 zu versorgen benötigen wir noch zusätzlich 3,3V. Die stellt uns ein TLV70033 zur Verfügung. Mit einem NPN-Doppeltransistor wie dem BC846BS kann die automatische Resetschaltung für den Firmwaredownload über UART aufgebaut werden. Eine Hand voll (35 Stück) Kondensatoren mit 100nF und 1µF Kapazität und die Schaltung ist vollständig.
Das Layout wurde von der Fliegenform vorgegeben. Die genauen Abmaße haben sich aus der Größe der LEDs ergeben. Die Kaskade der LEDs war 5-4-3-2-2-3-4-5 und wurde im 10mm Raster platziert. Somit ergab sich für die Höhe der Leiterplatte 48,5mm. Das Funkmodul mit dem ESP wurde in der Mitte platziert und daraus ergab sich eine Länge von 104mm für die Leiterplatte. An der schmalsten Stelle ist die Fliege 20mm breit und kann somit das Funkmodul aufnehmen, das ist nämlich nur 16mm breit. Die Schaltung für die 5V Spannungserzeugung wird auf der Rückseite zwischen die LEDs gesetzt. Ich habe mich für ein 4-Lagen Layout entschieden. Außen sind die Signale und Innen die Versorgung (5V und GND) Für das Mikrophon habe ich eine Pfostenleiste vorgesehen, 3,3V GND und Signal. Diese Spannung wurde dann mit einem Spannungsteiler auf 1V limitiert. 1V entspricht 1024 oder 10 bit im ADC des ESP8266.
Die restliche Beschaltung wurde auf die Gegenüberliegende Seite des Funkmoduls gesetzt, ebenso wie der Programmieranschluss für den Firmwaredownload über UART.
Mit schwarzem Lötstopplack und weißem Siebdruck war auch die Leiterplatte hübsch anzuschauen. Mit Hilfe alter Leiterplatten habe ich eine Halterung für die Lötpastendruck aufgebaut. Hier konnten alle 5 Leiterplatten mit Lötpaste versehen werden ohne jedes mal aufwändig die Schablone neu zu positionieren. Danach habe ich händisch die SMD Bauteile gesetzt und im Reflowofen verlötet. Die LEDs wurde ebenfalls händisch abgelängt, bestückt und verlötet. Zeitaufwand pro Fliege ca. 2 Stunden.
Um das Einlöten der LEDs so leicht wie möglich zu gestalten habe ich von dem Kollegen von cncprint eine Vorrichtung gefräst bekommen. Darin ließ sich die Fliege mit allen bestückten LEDs super umdrehen und verlöten.
Wie es bei einem Projekt vorkommt, wenn zu wenig Zeit vorhanden ist und zu wenig Reviews stattfinden, hat sich auch diesmal ein Fehler eingeschlichen. Wenn man den DRC beachtet und die Fehler genauer anschaut, dann hätte einem auffallen können, dass die Versorgungsspannung nicht mit dem DC/DC Konverter verbungen ist. Hier muss also bei jeder Baugruppe ein ‚Aktivierungsdraht‘ angelötet werden.
Für die von mir ausgewählten Akkus gab es leider keine SMT-Buchsen und so musste ich jedem Akku einen neuen Stecker verpassen. Die von mir gewählten Stecker (ich hatte dafür Gehäuse, Kontakte und eine Crimpzange) waren aus der JST PH Serie. Leider sind die Gehäuse hinten nicht für so dicke Leitungen ausgelegt, wie sie am LiPo verdendet wurden und so haben die Kontakte ganz leicht hinten rausgeschaut, obwohl die Rastnase vorn eingerastet ist. Das ist bei einem Stationären Gerät nicht so schlimm, wie bei einem Portablen, das zusätzlich noch von einem LiPo versorgt wird. Und der LiPo ist auch noch in Kopfnähe, bzw. direkt am Hals. Also habe ich die Kontakte mit Silikon verklebt. Das hat auch beim Entfernen des Akkus geholfen, da man relativ fest an den Leitungen ziehen muss um sie aus der Buchse zu bekommen.
Die Hardware stand und es ging darum die Software zu entwickeln. Bei dem gewählten Pyhton Interpreter ist beriets eine große Menge an Bibliotheken verfügbar gewesen und somit sind war der benötigte Code für eine Initiale Funktion recht übersichtlich. Mit der NeoPixel Bibliothek konnten die LEDs angesteuert und mit WLAN konnten die Scripte über Funk erneuert werden. Mit drei verschiedenen Mustern, die alle in der gleichen Farbe abliefen ist die erste Version der Blinkfliege fertiggestellt worden. Darrauf folgte eine zweite Version, die dann bereits mir Coroutinen arbeitete. Eine für das Samplen des ADC, eine für die Ansteuerung der LEDs und eine für die Debugausgabe. Hier habe ich dann begonnen ein WLAN Broadcast System zu erstellen, dass auf Basis einer Master-Fliege die Animationsframes vorgibt und sie allen anderen zur Verfügung stellt. Das hat aber nicht unbedingt zuverlässig funktioniert (UDP und WLAN ist nicht für seine zuverlässige Datenübertragung bekannt).
Ich habe dann zusammen mit Raphael gearbeitet, um zumindest eine Funktionsfähige Version für die Hochzeit zu bekommen. Also haben wir versucht auf MQTT umzusteigen. Ein Mobiltelefon mit MQTT-Broker und die Fliegen als Clients. Da kam es aber initial zu einigen Problemen und wir haben nicht gesehen, dass es innerhalb einiger Stunden zu einem Ergebnis kommen kann. Gleiches ist uns auch beim Sound passiert. Das von mir ausgewählte Mikrophon hat komische Signale geliefert (alle 100ms vollausschlag für 1ms) und war deshalb nicht ohne Vorverarbeitung einsatzfähig. Diese hätte aber einiges an Rechenzeit des ESP gekostet und noch viel mehr an Programmierarbeit bedeutet.
Auf Grund des relativ engen Zeitplans (zwei Tage vor der Hochzeit) habe ich mich entschieden den ganzen WLAN Teil sowie Sound vorerst aufzugeben und die verschiedenen Animationen mir zufälligen Farben auf jeder Fliege unabhängig abzuspielen. Damit war eine Funktion gegeben und die Fliege konnte auf der Hochzeit zum Einsatz kommen. Der Battereilaufzeit hat das auch gut getan. Die lag bei ca. 7 Stunden mit einem 350mAh Akku.
Hier noch eine kleine Vorschau auf einige der Patterns, die im Moment unterstützt werden. Wenn es Interesse an einer neuen Version in einer höheren Auflage gibt, dann werde ich mich den Themen WLAN und Sound nocheinmal annehmen.
One thought on “PCBowTie: Das „Geheime Projekt“”