DIY-Smartwatch

Ein Arduino, drei Sensoren und ein Display: Schon hat man eine eigene Smartwatch, für die sich dank der einsteigerfreundlichen Arduino-IDE leicht eigene Apps programmieren lassen.

In Pocket speichern vorlesen Druckansicht
Eine Uhr mit gelbem Armband und Adafruit-Display.
Lesezeit: 7 Min.
Von
  • Guido Burger
Inhaltsverzeichnis

Eine Smartwatch zeichnet sich im Kern dadurch aus, dass sie eine digitale Uhr mit Sensoren ist (z.B. mit Schrittzähler), welche zusätzlich eine Funkverbindung zu einem Smartphone hat. Hierüber können weitere, optionale Funktionen aktiviert und Daten ausgetauscht werden.

Unsere Smartwatch zum Selberbauen soll dabei nicht den Wettbewerb mit kommerziellen Produkten aufnehmen, sondern vielmehr verdeutlichen, welche Technik dahinter steckt. Man muss nicht unbedingt ein Elektronik-Ingenieur mit einem teurem Labor sein, um sich selber eine Smartwatch zu bauen. Im Nachfolgenden stellen wir ein Referenzdesign mit allen verwendeten Komponenten vor.

Make 4/15

Mehr zum Thema gibt es in Ausgabe 4/15 der Make.

Die Smartwatch besteht aus einem Sony-Armband, einem Gehäuse aus dem 3D-Drucker, dem Display sowie dem Platinchen mit Arduino und einem Sensorboard.

Als Anzeige verwenden wir das SHARP Memory Display mit einer Auflösung von 96x96 Punkten. Dieses Display vereint die Vorteile eines E-Ink Displays mit einem sehr geringen Stromverbrauch (2µA refresh/4µA write) und der schnellen Reaktion eines TFT-Displays. Außerdem zeigte sich im Praxistest, dass bei voller Sonneinstrahlung das Display ein exzellentes Bild abgibt. Das Display nutzt ein „Soft“-SPI Interface zur Kommunikation mit dem Mikrocontroller. Das ausgewählte Display lässt sich komfortabel mit Bibliotheken von Adafruit ansteuern. Neben Texten lassen sich damit auch leicht eigene Grafiken auf das Display zaubern

Das Sharp Memory Display auf einem Memory Breakout-Board von Adadfruit.


Dazu muss man nur die freien Bibliotheken Adafruit_SHARP_Memory_Display und Adafruit-GFX-Library in die Arduino-IDE einbinden.

Wie eingangs erwähnt, wollen wir eine offene, schnell erweiterbar Smartwatch bauen – deshalb setzen wir auf eine MCU von Atmel, dem aus dem Arduino UNO bekannten ATmega328P mit seinem interessanten Stromspar-Modus. Im Ruhezustand nimmt er unter 2µA auf, können aber trotzdem die volle Kompatibilität zur Arduino-Welt nutzen.

Grundsätzlich benutzen wir 3V bzw. 3.3V als Spannungsversorgung und sind damit mit den später verwendeten Sensoren direkt Pegelkompatibel. Unsere Smartwatch soll auch mit einem Smartphone „verdrahtet“ werden können. Hierzu bietet sich Bluetooth 4.0 an, auch als Bluetooth Low Energy bekannt.

Wir verwenden das BLE113 (in den Bildern noch BLE112) respektive von SiliconLab (BueGiga), es lässt sich sehr leicht mit unterschiedlichen Bluetooth-Profilen bestücken, welche gut dokumentiert sind. Wir benutzen eine serielle Kommunikation (UART Profile) zwischen ATmega328P und BLE113. Dazu haben wir auf dem BLE113 bereits ein serielles Profil vorinstalliert. Auf dem Arduino können wir eine virtuelle serielle Schnittstelle auf PIN 6 und 9 einrichten. Das BLE113 von SiliconLab (BueGiga) ist bereits FCC und CE zertifiziert und hat eine Vorzertifizierung für die Bluetooth-Nutzung.

Die Vorderseite des Platinchens trägt den ATmega.

Auf der Rückseite ist bereits das Bluetooth-Low-Energy-Modul verlötet.

Auf dem ATmega ist der Arduino-Bootloader vorinstalliert. Das Platinchen gibt es bei Tindie für 41 Euro einzeln oder zusammen mit einem Sensorshield für 82 Euro (im Warenkorb auswählen)

Intelligent wird unsere Uhr erst durch das Sensorshield. Darauf sind drei unterschiedliche Sensoren verbaut: ein UV-Sensor (Sonnenbrand. LAPIS Semiconductor ML-8511), ein Barometer- (Höhe, Wetter, Bosch Sensortech BMP180) und ein 3-Achs-Beschleunigungssensor (Analog ADXL362 3D) mit dem wir Bewegungen erkennen können. Letzterer ist insbesondere interessant, da wir die Smartwatch auch schlafen lassen können, wenn sie keine Bewegung erkennt. Das Sensorshield dient auch der Stromversorgung der Uhr.

Der Energiehaushalt einer Smartwatch bekommt besondere Aufmerksamkeit. Es kann generell ein LiPo-Akku oder auch eine Knopfzelle zum Einsatz kommen. Wir entscheiden uns in diesem Projekt für eine Knopfzelle aus zwei Gründen: eine Knopfzelle hat im Vergleich zu einem LiPo einen relativ höhere Energiedichte und da wir durchweg Komponenten mit 3V Spannungsversorgung benutzen, entfällt auch ein Spannungswandler. Es muss aber auf die polrichtige Einsetzten der Batterie geachtet werden! Der Pluspol muss von der Platine weg zeigen. Falsch herum reingesteckt, kann die Batterie die Elektronik beschädigen. Künftige Boarddesigns werden einen Verpolungsschutz enthalten

Der Aufbau der Sensoreinheit und ihre Anschlüsse.

Für die Sensoren müssen drei Librarist für den ADXL362, den BMP180 und den ML8511 zur Arduino-IDE hinzugefügt werden.

Nun haben wir alle Zutaten – wir müssen sie nur noch in der richtigen Reihenfolge zusammensetzen und verlöten. Anschliessend muss man die Arduino-Beispielanwendung aufspielen (Download)!

Schritt 1: Die Sensoreinheit ist die zentrale Platine, auf ihr werden in den nächsten Schritten die Rechen- und Kommunikationseinheit und das Display verlötet.

Alle elektronischen Zutaten in der Übersicht.

Schritt 2: Als erstes setzen wir die Rechen- und Kommunikationseinheit (rechts im Bild) in genau der abgebildeten Orientierung in die Sensoreinheit ein und verlöten es auf der Rückseite. Unten im Bild sieht man den 6 poligen FTDI-Anschluss.

Die Sensoreinheit ist die zentrale Platine.

Das Ergebnis sollte nun so aussehen:

Sensorboard und Platinchen sind verlötet.

Schritt 3: Nun wird das Display eingesetzt und verlötet. Dazu wird die Sensoreinheit umgedreht und wie in einem „Sandwich“ fügen sich nun das Display und die Sensoreinheit zusammen. Es ist auch eine parallel Ausrichtung der beiden Platinen zu achten.

Das Sensorboard und das Display-Breakout-Board werden per Stiftleiste verlötet.

Das Ganze sieht nun so aus:

Ein erster Funktionstest.

Schritt 5: Nun geht es an die Programmierung unserer SmartWatch! Wir benötigen eine Arduino IDE mit den eingespielten Bibliotheken. Als „Board“ wählen wir „Arduino Pro Mini (3.3V, 8Mhz) w/ ATmega328“ – bitte genau dieses Board auswählen!

Die Einstellung für das Platinchen in der Arduino-IDE

Nur noch das Beispiel- Programm laden und überspielen, hierzu ist ein 3.3V-FDTI-Adapter notwendig. Die Belegung der Adapter ist genorm und passt zum Layout auf dem Platinchen. Zum Anschluss nutzt man entweder eine Stiftleiste, die man während der Übertragung auf die Kontakte drückt oder sogenannte Federkontaktstifte (Pogo Pins), die durch ihre integrierten Federn eine schiefe Auflage ausgleichen. Vor dem Programmieren muss man die Batteriezelle entfernen.

Das Beispielprogramm wird übersetzt und hochgeladen.

Fertig! Unsere Smartwatch lebt und zeigt 3D-Sensordaten als auch Batterie und UV Index an.

Der UV-Sensor misst den ultravioletten Lichtanteil. Das Display zeigt den Index an.

Achtung: beim Design ist uns leider ein kleiner Fehler unterlaufen – der UV Sensor befindet sich im Gehäuse, eine äußerst ungünstige Position um Sonnenstrahlen zu messen. Wer den Sensor nutzen will kann entweder eine Öffnung im Gehäuse vorsehen oder das Modul einfach mit der Rückseite in die Sonne halten!

Als Armband haben wir das "SONY Smartwatch 2" verwendet. Es hält des Gehäuse zur Aufnahme der Uhr am Handgelenk.

Das Gehäuse mit Armband.

Das Gehäuse stammt aus dem 3D-Drucker, die Dateien dafür stehen zum Download bereit.

Das Uhrengehäuse von oben.

Das Gehäuse von unten

Das Gehäuse kommt ans Armband, in das Gehäuse befestigt man die Smartwatch, je nach Gusto mit Klettband oder man konstruiert sich zusätzlich einen Deckel.

In Anlehnung an das Motto "If You Can't Open It, You Don't Own It" stellen wir hier noch die Schaltpläne der Uhr zur Verfügung: "Nur wer die Details kennt, hat es unter Kontrolle"

Platinchen: blueIOT_Watch

Sensorboard: watch_shield

Weitere Infos zum Platinchen sowie eine Demo-App zur Kommunikation zwischen Android und Platinchen finden sich in auf der Tindie-Seite des Projekts. (dab)