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.