Do-It-Yourself Smartwatch unter 60 EUR

In den letzten Tagen habe ich unzählige Leute mit meinem Smartwatch Projekt genervt. Das will ich nun an dieser Stelle auch noch mal tun: Ja, ich habe eine Smartwatch selber gebaut, und ja, das Ding ist einigermaßen nützlich und liegt mit unter 60 EUR ganz gut in meinem jährlichen Bastelbudget. Die Firmware ist eine enorm veränderte Demo zum oLED Breakout Board des Arduinos und die Handy-App (UART Notify) ist eine angepasste App des Bluetooth-Chip Herstellers, der seine Apps auch als Quellcode auf github zur Verfügung stellt.

Ist das wirklich eine Smartwatch?

Die unterste Stufe, was man aus meiner Sicht aus Smartwatch bezeichnen kann, ist eine Uhr, die die Uhrzeit anzeigt und irgendwelche Infos mit einem Smartphone austauschen kann. Eine andere Art von Smartwatch arbeitet als Sensor, und kann einem Computer via Kabel diese aufgezeichneten Daten zur Verfügung stellen. Meine DIY-Smartwatch ist Ersteres.

Features

Sobald die App eine Verbindung zur Uhr aufgebaut hat (Smartwatch leuchtet dann blau), sendet die App (auch wenn das Handydisplay ausgeschaltet ist) die Statusmeldungen an die Smartwatch.

  • Die Smartwatch zeigt die ersten 60 Zeichen der neuen Statusmeldung sofort für 30 Sekunden an.
  • Mit kleinen Punkten wird die Anzahl der neuen Statusmeldungen auf der Smartwatch gezeigt.
  • Mit einem Tastendruck kann man die letzte Statusmeldung lesen. Erst werden die ersten 60 Zeichen, und nach 2 Sekunden die nächsten 60 Zeichen der Meldung gezeigt, falls die Meldung mehr als 60 Zeichen hat. Nach 30 Sekunden geht das Display wieder aus. Die kleinen Punkte werden dann nicht mehr gezeigt, weil die Meldung(en?) ja gelesen wurde und daher nicht neu ist.
  • Welche App eine Nachricht erzeugt, ist egal.
  • Mit einer zweiten Taste wird grob in mV die Spannung vom Akku gezeigt, um ein Gefühl für den Verbrauch zu bekommen.
  • Drückt man die "letzte Meldung lesen"-Taste länger als 2 Sekunden, wird an das Handy ein t versendet. Die Smartwatch blinkt dann rot. Das Handy sendet dann als neue Meldung das Datum und die Uhrzeit zurück an die Uhr.

Besonders der letzte Punkt kann verwirrend sein. Drückt man die Meldungstaste, sieht man zuerst die letzte Meldung - also die Zeit, wo man das letzte mal die Uhrzeit wissen wollte.

Details

Um die Statusmeldungen empfangen zu können, muss man (Android 5.1) der App UART Notify unter Einstellungen > Benachrichtigungen > Benachrichtigungszugriff das Recht geben, alle Meldungen mit lesen zu können. Ein Handy-Neustart nach dem Erteilen des Rechts ist sinnvoll.

Im Grunde besteht die Smartwatch aus Standard Komponenten. Das oLED Breakout Board (Display) ist an einem leicht veränderten Arduino-Micro (Trinket Pro 3V) angeschlossen. Die Daten kommen mit UART (also wie eine serielle Schnittstelle) über die TX/RX Anschlüsse in den Microcontroller und der wertet die aus und sendet es ans Display. Die TX/RX Datenübertragung übernimmt das Bluetooth Modul.

Verkabelung und Bild der Selbstbau Smartwatch
Verkabelung: Bittet testet selber, ob das mit TX auf RX stimmt. Leider hab ich schon alles verklebt und kann das nicht mehr checken.

Adafruit, die das Bluetooth-Modul (und den Trinket Pro) entwickelt haben, bieten für Android und iPhone eine kostenlose App an, um an das Modul Text zu senden. Weil der Quellcode dieser App mit all möglichen Funktionen bestückt ist, habe ich vom Chip-Hersteller (Nordic Semiconductor) eine reine UART-Terminal App genommen und angepasst. Dabei musste ich noch ein kleines Problem ausbügeln: Es können wohl nur 20 Zeichen in einem "Rutsch" übertragen werden. Daher zerstückel ich die Nachricht in der App, die ich UART Notify genannt habe. Ein Thread.sleep() sorgt dafür, dass zwischen diesen 20-Zeichen Paketen eine kleine Pause ist.

An dieser Stelle muss ich sagen: Diese App ist nicht schön von mir angepasst worden. Ich habe noch nie eine Android-App programmiert oder mit Android Studio vorher gearbeitet. Mein letzter Kontakt mit Java-Programmierung liegt auch fast 7 Jahre zurück. Trotzdem habe ich in wenigen Tagen alles ans laufen bekommen, weil alles bereits sehr gut dokumentiert ist.

Wo es noch Probleme gibt

Bisher komme ich mit ca 2m Abstand und zwei Nachrichten pro Stunde auf eine Akku-Laufzeit von ca. 10 Stunden. Das kann man bestimmt mit ein paar Tricks, die der Chip des Arduino bereitstellt, verlängern. Ablöten von LEDs kann auch was bringen - ich rate aber eher davon ab. Das Bluetooth-Modul habe ich bereits etwas schwächer konfiguriert, weil ich nicht eine Verbindung von 10m durch eine 40cm Mauerwerk hindurch brauche. Der Funktionsumfang ist auch noch recht gering. Mehr als nur die EINE letzte Nachricht anzeigen (z.B. die letzte Uhrzeit-Anfrage) wäre sinnvoll. Anstelle der Android-App, die die ganze Zeit läuft, wäre ein reiner Dienst/Service auch eleganter. Ebenso fehlt ein automatisches Verbinden mit der Uhr. Security-Aspekte, die das Übertragen von Daten an die Uhr betreffen, sind ebenfalls nicht behandelt worden. Das Design der Smartwatch bleibt auch den (unfähigen) Händen des Bastlers überlassen - eine 3D Druck Datei, ein Layout für eine Papp-, Stoff- oder Lederhülle wäre eine feine Sache. Andere Projekte (z.B. rePhone) liefern sowas.

In der App ist auch ein Filter fest einprogrammiert, um so Statusmeldungen zum Aktualisieren der Postfächer von k9-Mail zu ignorieren. Das sollte vom User der App in Einstellungen oder sowas konfiguriert werden können.

Bisher wird leider noch nicht gezeigt, ob und wie viele Anrufe verpasst wurden.

Das Laden via USB ist sehr schlecht/langsam. leider muss man den Akku mit einem 2. Anschluss an der Uhr laden (UPDATE: Ich habe die Leitungen aus dem Gerät herausgeführt, wo ich den Akku ausgebaut habe. Damit lade ich (ca. 2h lang)). Die Spannung, die mit der 2. Taste angezeigt wird, ist die regulierte Spannung und kann daher nicht gut als Ladestandsanzeige genutzt werden.

Umlaute und das ß fehlt noch. Derzeit wird in der App aus allen Umlauten ein " und aus ß ein /3 gemacht. Smilies gehen auch noch nicht und werden als Sonderzeichen dargestellt. (UPDATE: Im Pimp-Branch habe ich das hinbekommen!).

Aktuell gibt es bereits Smartwatches für 10 EUR - also warum selber bauen?

Positiv bleiben!

Da jeder Quellcode zur Verfügung steht, hat man die Möglichkeit, bestimmte Funktionen selber nach zu rüsten. Wer z.B. einen eleganteren Nachrichten-Counter will, mehr Tasten, mehr Funktionen, ein Poti zum Scrollen durch die Nachrichten oder eine multicolor-Benachrichtigungs-LED, der kann das tun - es sind am Trinket Pro noch genug Pinne frei! Der Preis steigt durch diese Features nicht wirklich an, und für den Preis eine Smartwatch zu haben: Das kann nicht jeder!

Fazit

Grundsätzlich ist der derzeitige Funktionsumfang für mich ausreichend. Extra LEDs, Vibrieren oder Piepen brauche ich nicht. Mich hat es in der Vergangenheit immer geärgert, dass mein Smartphone zu groß für die Hosentasche war. Ich hörte im Rucksack oder in einer Innentasche ein Piepen, holte das Smartphone raus, musste es evtl. noch entsperren um dann sowas zu lesen "eMail: Änderung der Prüfungsordnung von Fachbereich, den du nicht studierst". Damit ist nun Schluss, weil ich jetzt beim Piepen des Handys auf meine Uhr schauen kann und getrost auf das nächste Piepen warten kann (mit einer evtl. wichtigen Nachricht).

Kosten

Das Ganze besteht aus folgenden Komponenten:

  • 7 bis 10 EUR Mikrocontroller Board Trinket Pro 3V (Arduino kompatibel)
  • 13 bis 16 EUR oLED Display (viele, gut dokumentierte Arduino-Beispiele)
  • ca 5 EUR für eine 3,7 V (180mA) Akku
  • 20 EUR für Bluetooth 4.0 Low Energie UART Friend
  • Zusammen ca 8 EUR für Taster, Schalter, Armband, Kleber

Damit kommt man maximal auf 59 EUR. Ich hatte Glück, und hab 2 Sachen im Ausverkauf bekommen und einen Akku hatte ich auch noch. 2 Taster sowie ein Schalter lagen bei mir noch rum (ca Gesamtwert 3 EUR). Dafür habe ich mir aber für 6,30 EUR transparentes Silikon als Kleber bzw. für die Hülle der Smartwatch gekauft. Mit einem nassen Finger kann man das relativ gut platt drücken und formen.

Der Quellcode ist bei meinem dummer.click Git-Server zu finden.

8 Gedanken zu “Do-It-Yourself Smartwatch unter 60 EUR

    • Ich war noch etwas zurückhaltend mit dem Silikon und habe vorher mit Panzertape und Tesafilm die Bauteile ummantelt. Damit wollte ich verhindern, dass zu viel Silikon an die Platinen kommt. So bekomme ich es im Notfall alles wieder auseinander. Dadurch sind ein paar Ritzen mehr da, in die Wasser eindringen könnte. Die Taster sind komplett im Silikon eingelassen und würden mit Spritzwasser klar kommen. Das Display ist ganz gut mit Tesafilm ummantelt und daher auch gut geschützt. Das Trinket Pro Board ist auch gut mit Tesafilm und Silikon ummantelt. Was aus meiner Sicht wirklich kein Wasser abbekommen sollte, dass ist das Bluetooth Modul - das ist aber in der Bauweise in der Mitte der Uhr und daher auch am besten geschützt. Kurz: Dieser Prototyp würde ein paar Regentropfen aushalten. Mit noch mehr Silikon bekäme man es auch Wasserdicht.

  1. In meinem Pimp-Branch habe ich nun auch Umlaute, eine analoge Darstellung der Uhrzeit, ein paar Emojis werden als ASCII Smielies dargestellt und ein paar andere Sachen implementieren können (und Bugs beseitigt).

  2. Die RGB Farb-Benachrichtigung habe ich inzwischen ebenfalls übertragen. Die Smartwatch leuchtet also in der selben Farbe. Einen PowerSave Modus teste ich grade und hoffe, damit auf deutlich über 11h Laufzeit zu kommen.

  3. Hallo,

    vielen Dank für deine tolle Seite:)

    ich bin auch gerade dabei mir eine Smartwatch selbst zu bauen. Allerdings tüfftel ich noch an einigen Problemen.

    Liebe Grüße
    Jochen

    • Hallo Dieter. Ich weiß zwar nicht genau, was du mit "zweite Art" meinst, aber der Preisunterschied zwischen der Farb-Version und der Monochrom-Version liegt bei ca 7 EUR. Weiterhin ist das Problem, beim Farbdisplay kreativ zu werden. Ein "Scrolltext" ist nicht so gut und ein Seitenblättern wäre besser. Ein Farbdisplay ist einfach zu langsam, um viel Text zu scrollen. Mit allen Kleinteilen komme ich bei der Monochrom-Version mit 10-13 EUR aus für einen "Neubau". Achso: für Andere baue ich nix - es heißt ja "Do it Yourself".

      Die Energiespar-Version kostet nicht mehr Geld - allerdings kann man dann nicht mehr bei neuen Nachrichten die Smartwatch blinken lassen. Mit einem guten Ladechip kam ich mit der google-play-Version (mit 180mAh Lipo) wieder auf 10h statt nur 6h Laufzeit. Die Energiespar-Version hat da nur 3-5 Stunden länger gehalten.

      Aktuell spiele ich mit dem Gedanken, die Firmware für den Bluetooth-Chip selber zu machen. Ein passendes Entwicklungsboard hab ich bestellt. Aber ab morgen fängt Uni an - da wird sich alles noch deutlich in die Länge ziehen. Bei der Version kann ich dann ca. 1,60 EUR einsparen und es wird noch kleiner baubar.

      Ein weiterer Schritt wäre, mit einem MPU6050 einen Schrittzähler in die Uhr zu bauen, der aber auch in der Lage ist, die "Ich gucke auf die Uhr" Armbewegung zu erkennen. Der Chip ist für unter 1,50 EUR zu bekommen und wäre ein echter Mehrwert. Die Frage ist aber, ob die Erschütterung eines Schritts auch am Handgelenk messbar ist. Vermutlich muss ich da eher die deutlich mehr Stromverbrauchenden Gyroskop-Funktion des MPU6050 nutzen - damit könnte ich eine Art "Pendelbewegung" der Arme erkennen.

      Kurz: Die Hardwarekosten bleiben minimal - der Aufwand wirklich gute Firmware und App dazu zu entwickeln, ist mehr ausschlaggebend. Immerhin ist Code, Schaltplan und alles nötige für eine funktionierende Basis-Version von mir bereits entwickelt und veröffentlicht - Hier sollte jeder/jede selbst kreativ werden dürfen 😀

Schreibe einen Kommentar