Erste Software

Habe die Hardware etwas erforscht: im Inneren des simblee ist ein nRF51822 von Nordic, in der dritten Revision, beim RFduino war es die erste. Der nRF51822 ist sehr preisgünstig (3, 4 Franken), dazu kommt noch die Antenne. Der simblee kostet viel mehr, 20 Franken, hat aber schon alles dabei, und ein Bootloader, ein kleines Stück Software auf dem Chip, das beim Programmieren hilft. Auch dadurch ist er sehr gut in Arduino integriert, einem Werkzeug, um Mikrocontroller zu programmieren, das viel von der Komplexität verpackt und versteckt.

Die Programmierung erfolgt in C, wobei eigentlich ist es C++ (dessen Eigenheiten aber kaum genutzt werden), oder besser einem Ardunio-Derivat davon: So sind die Einstiegspunkt die Funktion setup und loop, anstelle des klassischen main, auch hilft Arduino mit praktischen Konstanten und Funktionen. Der Prozess, wie der Code zu etwas maschinenenlesbarem umgewandelt und dann auf den Chip übertragen wird, ist bei Arduino zwar untransparent aber auch einfach.

Ich möchte mich irgendwann davon emanzipieren, also auf dem reinen, preisgünstigen Chip aufbauen und „nur“ die Entwicklungswerkzeuge von Nordic nutzen – aber erst im nächsten Projekt: aktuell bin ich dankbar für die einfache Welt von simblee und Arduino.

Heute habe ich an zwei Bereichen weitergearbeitet:

  • Für den Mac eine Software (in Swift) geschrieben, die alle Bluetooth Geräte in der Umgebung findet, vor allem natürlich die Amulette. Wenn seit dem letzten Advertising mehr als 20 Sekunden vergangen sind, werden sie nicht mehr angezeigt, sonst sauber aufgelistet. Diese Software wird am Ende die Geräte beim Ein- und Ausgang auslesen, die Begegnungen sammeln und visualisieren.
  • Das Amulett mit dieser zentralen Software verknüpft: Um Strom zu sparen begibt es sich für 10 Sekunden in einen Tiefschlaf, dann weckt es sich selbst, sendet 0.3 Sekunden recht intensiv, insgesamt 10 Impulse – und geht wieder schlafen. In diesem Signal (dem sogenannten Advertising) ist auch gleich die Information verpackt, wieviele Begegnungen es seit dem letzten Auslesen gespeichert hat und der Zentrale übermitteln möchte. Gut gefällt mir: Da diese Information bereits beim Advertising mitgegeben wird, erspare ich mir viel Kommunikation. Denn nur wenn wirklich Daten vorhanden sind, muss sich der Mac mit dem Amulett verknüpfen um es auszulesen. Diese Funktion kommt nun als nächstes an die Reihe.

Hardware

Die Hardware ist gekommen: Soweit ich verstanden habe ist simblee (RFD77101) der Nachfolger vom RFduino, von der gleichen Firma gemacht und aktueller: Ich versuche es mit dem. Das Programmieren hat fast auf Anhieb geklappt, ich nutze dafür Arduino und ein USB-Shield, das ursprünglich für den RFduino gedacht war. Ich wollte zuerst meinen eigenen Programmer nutzen (USBTinyISP), aber der hat 5V und der RFD77101 läuft mit 3V.

Für einen ersten Versuch habe ich eine RGB-LED angeschlossen: Der RFD77101 kann nur 5mA Strom und auch nur an 3 Pins ausgeben, das reicht aber knapp. Da mir noch  die passenden Wiederstände fehlen, ist alles noch etwas zu blau, aber immerhin im erlaubten Spannungsbereich. Am Ende möchte ich alle Farben „mischen“ können: ein Prozessor kann zwar kein analoges Signale ausgeben, aber durch einen Trick (PWM, man schaltet den Strom schnell an und aus) und weil LEDs etwas träge sind, kann man variablen Strom, oder in diesem Fall mehr oder weniger von jeder Farbe, doch erzeugen.

Hier der Zwischenstand: zuunterst das Breadboard, mit LED, Wiederständen und Verkabelung, darauf der eigentliche Prozessor und obendrauf das Interface zum Computer. Am Ende wird dann alles schrumpfen und nur der eigentliche Prozessor, die LED, eine Knopfzellenbatterie und etwas Kleinzeug auf einer massgeschneiderten Platine übrig bleiben.

IMG_3584