Dieser Blogpost erzählt die Geschichte, wie ich mir eine per iPhone-App bedienbare Bluetooth-Lichterkette bastelte. Ich war mir im Vorfeld nicht ganz sicher, ob ich das als knuspermagierTV Classic HD-Video oder in Form eines 12-teiligen Softwareentwicklungstutorials machen soll — entschied mich jetzt aber einfach für die Form “Geschichtenerzählblogpost”, weil ich es sonst wahrscheinlich nie machen würde.

IMG_4376

Vor ein paar Wochen, so zum Beginn der Weihnachtszeit, fragte ich mich mal wieder, warum es eigentlich keine Lichterketten gibt, die man irgendwie per Bluetooth cool programmieren kann.

Kurz darauf viel mir dann ein, dass ich ja genau vor einem Jahr in ein Kickstarter-Ding investierte… Espruino. Ein Microcontroller, der mit Javascript programmierbar ist.

Damals klickte ich das einfach aus Interesse an und entschied mich sogar für das 70 Pfund-Paket, das neben der Hauptplatine einigen Kram, wie zum Beispiel einen WS2811 LED-Strip enthielt. Das lief alles gut und wurde auch Anfang des Jahres geliefert — wie das so ist mit Spielzeug, lag es dann aber erstmal rum, weil ich keine Idee hatte, was ich damit nun machen sollte.

Doch jetzt! Ich kombinierte in meinem Kopf. Microcontroller… check! Individuell adressierbare LEDs… check! Fehlt nur noch Bluetooth — nach etwas Recherche fand ich den passenden Chip, der per Bluetooth 4.0 LE auch mit dem iPhone kommunizieren kann und bestellte ihn direkt 2x bei irgendeinem Billoshop in Hong Kong.

Weil ich das ganze noch vor Weihnachten fertig haben wollte gab ich noch Unmengen für einen 3-5 Tage Expressversand aus, wartete 3-5 Tage und holte eines Abends den Lötkolben aus seinem Versteck. Meine Lötskills sind nicht wirklich ausgebildet, aber irgendwie schaffte ich alles korrekt zu verbinden und es funktionierte!

Hardware fertig, nun fehlte noch die Software. Durch geschicktes googeln und kopieren softwareentwickeln schaffte ich es in kurzer Zeit eine App zu bauen, die sich per CoreBluetooth verbinden und Befehle senden konnte. Etwas Javascript-Gemurkse auf der anderen Seite sorgte dann auch dafür, dass die entsprechenden LEDs die richtige Farbe zeigten.

Dann war erstmal kurz Ruhe. Meine interne “Projekt beenden”-Hürde nahm wieder Überhand. Immerhin hatte ich bewiesen, dass es möglich ist, ich hatte ja sogar GELÖTET. Handwerkliche Arbeit ist ja immer schonmal ziemlich zufriedenstellend.

Am Ende sind die 25 LEDs, die ich habe eh viel zu wenig und eigentlich will man die Lichter am Baum auch gar nicht ständig verändern und das ganze “ordentlich” zu machen würde jetzt auch soviel Zeit kosten und eigentlich will ich auch lieber Factorio spielen.

bluelight2

Am Ende ließ es mir dann aber doch keine Ruhe und ich wollte das ganze Konstrukt doch irgendwie in eine “Form” bringen, die ich hier bloggen, oder nächstes Jahr an den Baum hängen kann (nachdem ich nochmal ein paar LEDs dazu gekauft habe). Also habe ich gestern nochmal ein paar Stunden investiert und sowohl die App, als auch den Espruino-Code etwas hübscher und benutzbarer gemacht.

Man kann nun, sobald man sich mit der Lichterkette verbunden hat, jede LED einzeln einfärben. Oder halt alle gleichzeitig! Außerdem sind insgesamt drei hochspannende Animationsmuster eingebaut, durch die man durchschalten kann! (Die ich alle aus dem Espruino-LED-Tutorial kopiert habe)

Damit gebe ich mich jetzt erstmal zufrieden, archiviere das Projekt im Kopf und freue mich, wieder was neues gelernt zu haben. CoreBluetooth, Löten, (wahrscheinlich total bescheuerte) Binär-Protokolle erfinden, Espruino programmieren.

Damit man sich das ganze besser vorstellen kann, hier noch ein unscharfes Video:

Für den unwarscheinlichen Fall, dass das jemand genau nachbauen will habe ich es mal in ein Github-Repository verfrachtet und dort auch kurz beschrieben, welche Teile und Tutorials man so braucht.

Nun noch ein inspirierender Abschluss-Satz:

Bestellt euch auch mal Espruino, Arduino oder vergleichbares und macht irgendein Quatschprojekt. Es macht ne Menge Spaß und ist mal was anderes!

Anhang 1 – Dinge, die ich noch einbauen könnte:

  • Die Lichterkette könnte ihren aktuellen Status speichern, damit sie korrekt weitermacht, nachdem der Strom weg war. Das sollte nicht so kompliziert sein.
  • Ich habe es nicht hinbekommen, einen vernünftigen Rückkanal zur Kommunikation aufzubauen. Die Lichterkette kann der App beim Verbinden also nicht sagen, welche Farben die LEDs aktuell haben. Das wäre natürlich cool.
  • Die App könnte eine Möglichkeit bieten irgendwie so Animationsmuster zu definieren, die dann übertragen werden können. Vielleicht einfach ein Textfeld für Javascript, der auf dem Espruino geevalt wird. Juchu, Scriptsprachen.