Spielen mit Amazon Alexa – Das Projekt Genesis

Projekt Genesis ist ein Amazon Alexa Skill. Es ist ein Spiel in dem der Spieler in die Rolle einer KI schlüpft, die versucht einen geeigneten Planeten für die 10000 Siedler an Board eines Raumschiffs zu finden. Dabei lauern viele Gefahren aber auch viele Geheimnisse in den Weiten des Universums.

Der Beta Test hat begonnen und es gibt eine spielbare Version. Wer mithelfen möchte zu testen, der kann sich unter www.projekt-genesis-spiel.de anmelden und wird dann für das Beta-Programm freigeschaltet.
Ein Spiel beginnt man, indem man sagt: „Alexa, starte Projekt Genesis„. Daraufhin startet ein neues Spiel oder setzt das vorherige Spiel fort. Ein Spiel besteht aus mehreren Spielrunden, die das Raumschiff an verschiedene Orte bringt. Das Raumschiff hat verschiedene Funktionen, die allesamt wichtig sind um eine stabile Kolonie zu errichten.
  • Stasekammern mit Siedlern
  • Planeten Scanner
  • Landungssonden
  • Wissenschaftliche Datenbank
  • Energiereserve
Ziel ist es einen geeigneten Planeten zu finden, dessen Umgebungsbedingungen den Siedlern das Leben vereinfacht. Auf den Wegen zwischen den Planeten lauern viele Gefahren aber auch Chancen. 
Ein Planet hat immer folgende Eigenschaften:
  • Gravitation
  • Atmosphäre
  • Temperatur
  • Wasser
Zusätzlich gibt es auf einigen Planeten noch verschiedene Ressourcen, die ein Leben vor Ort vereinfachen können. Sofern in der Datenbank das Wissen zur Verarbeitung noch vorhanden ist.
Im Orbit um einen Planeten könnt ihr den Planetenscanner verwenden. Dieser lässt sich mit dem Befehl „Planet Scannen“ starten. Der Scanner liefert je nach Funktionsgrad des Scanners die Information zu dem Planeten. Die Landungssonden liefern ebenfalls Scan-Ergebnisse, falls der Scanner beschädigt wurde. Eine Sonde kann mit „Sonde ausschicken“ gestartet werden.
Wenn das Schiff sich in der Umlaufbahn eines geeigneten Planeten befindet, dann kann mit dem Befehl „landen“ die Landung eingeleitet werden. Achtung! Landen ist endgültig und beendet das Spiel, daher werdet ihr gefragt, ob ihr wirklich landen wollt. Das könnt ihr mit „ja“ beantworten, oder sagt ein weiters mal „landen„.
Die Gefahren, die auf dem Weg auf euch warten sind dann eine Überraschung. 

Alexa Skill: Was würde Rolf sagen?

Icon made by monkik from
www.flaticon.com

Ich habe einen Arbeitskollegen. Nennen wir ihn der Einfachheit halber Rolf. Er verwendet eine interessante Neuinterpretierung von deutschen Redewendungen in seinem alltäglichen Sprachgebrauch. Über die Jahre haben sich einige dieser Kreationen angesammelt. Mit diesem Skill kann man man jederzeit diese und andere lustigen Wortkretaionen erleben.

„Alexa, starte Rolfs Weisheiten.“

Und schon gibt sie eines der Goldstücke zum Besten.

Skill aktivieren

PCBWay Board Quality – Leiterplatte für das Differenzielle I2C Interface

Ich habe vor einigen Tagen einen Gutschein von PCBWay bekommen. Im Gegenzug dazu veröffentliche ich auf meiner Webseite eine Rezension. Dieser Artikel ist die Rezension zu den kostenlos erhaltenen Leiterplatten. Zuerst die fertig bestückte Leiterplatte bereits auf dem RaspberryPi montiert. Wenn ihr euch über den Link anmeldet und eine Bestellung aufgebt, bekomme ich einen kleinen Bonus für weitere Platinen.

Die Leiterplatte kam in einem Fedex Paket. Als Express. Innerhalb von 5 Tagen nach Bestellung. Unglaublich schneller Service auf Seiten von PCBWay. Deutsche Leiterplatten Hersteller haben ähnliche oder längere Lieferzeit bei weit höheren Kosten.

Im Paket waren Aufkleber, ein Weihnachtsgeschenk und die Leiterplatten. Das Weihnachtsgeschenk ist ein PCB Weihnachtsmann, der über Batterie betrieben leuchtet. Die Leiterplatten sind wie üblich eingeschweißt um sie vor Korrosion und Schmutz zu schützen.

Ausgepackt zeigt sich die hervorragende Qualität der Boards. Bei der ersten Inspektion lassen sich keine Fehler erkennen. Sowohl auf der Vorder- als auch auf der Rückseite. Auch die Abmessungen der Leiterplatte ist genau getroffen, so weit ich das mit dem Messschieber nachmessen kann. Die Bilder unten zeigen die Leiterplatte von beiden Seiten. Die Fräskontur ist wie in den Gerberdaten angegeben ausgeführt. Die Kerbe an der linken Seite, sowie der Schlitz sind wie gewünscht ausgeführt.

 

Ich habe neben den Bildern noch Aufnahmen mit dem Mikroskop gemacht. Dabei zeigen sich weitere Qualitätsmerkmale der Leiterplatten.

Das oben gezeigte Bild ist mit einem USB Mikrokop aufgenommen und zeigt 0,25mm breite Leiterbahnen und Vias mit 0,4mm Loch und 0,4mm Restring. Sehr gut ist zu erkennen, dass die Löcher der Vias sehr genau in der Mitte des Rings liegt. Das ist ein Zeichen für hohe Genauigkeit beim Referenzieren der Panels bei der Fertigung. Rechts neben dem Bild sind die originalen CAD-Daten des fotografierten Ausschnitts. Gut zu sehen ist auch, wie genau der Siebdruck zu den Kupferstrukturen ausgerichtet ist.

Dieser kleine Siebdruck zeigt, wie filigran PCBWay in der Lage ist Siebdruck auf die Platine zu bringen. Für Prototypen wird meistens kein Sieb hergestellt sondern mit einem Rasterverfahren gearbeitet. Dabei geht ein Druckkopf, ähnlich wie beim Tintenstrahldrucker, Zeile für Zeile die Platine entlang und positioniert tröpfchenweise Tinte, die Später entweder getrocknet, oder über UV-Licht ausgehärtet wird.

Zum Schluss noch einige Nahaufnahmen der Lötstellen. Rechts vor und links nach dem Löten sehen die Strukturen sehr gut aus. Auch mit dem Lötkolben war es sehr angenehm zu arbeiten. Die Pads sind gut verzinnt (HASL) und nehmen Lötzinn (bleihaltig und bleifrei) sehr gut an.
PCBWay ist also ein Leiterplattenhersteller, den ich sehr empfehlen kann. Ich habe auch schon bestückte Leiterplatten bestellt. Die waren von der Qualität auch sehr zufrieden stellend.

Hier noch ein Video von der Leiterplatte im Ofen

[youtube=https://www.youtube.com/watch?v=G1L4Q1xIS-M&w=320&h=266]

Spielen mit Amazon Alexa – Developer Console

In den letzten Wochen habe ich mich in Amazons Alexa eingearbeitet. Das geht am besten, wenn man das Ganze anhand eines kleinen Projekts aufzieht. Das habe ich jetzt über Weihnachten in Ruhe fertig gestellt; oder zumindest in einen benutzbaren Zustand gebracht. Hier eine kleine Übersicht über das Projekt Genesis.

Der Alexa Skill

Nachdem man ein Entwickler-Konto bei Amazon angelegt hat, können wir einen Skill anlegen. Dieser hat dann mehrere Eigenschafte, die wir festlegen müssen.

Rufwort

Um den Skill zu aktivieren, benötigt man ein Rufwort. Das wird hier in der Developer Console eingetragen. wichtig ist dabei zu beachten, dass hier ein prägnanter, aber noch freier Name gewählt wird. Ob der Name noch frei ist, lässt sich im Skill Store von Amazon nachschauen.

Funktionen

Es gibt bereits eine Vorauswahl an Skills für kurze Nachrichten, Smart Home Integration oder Videos, die man als Vorlage nutzen kann. Ich habe mich für den Custom Skill entschieden, der ist frei konfigurierbar.Der Skill benötigt noch einen Namen und eine Sprache.
Jetzt kann der Skill bearbeitet werden. Auf der nächsten Seite befindet sich die Skill Einstellungen. Hier wird das Modell der Spracherkennung konfiguriert und die möglichen Sätze (Utterances / Äußerungen) mit den dazugehörigen Funktionen (Intents / Absichten) verbunden und beschrieben, welche Satzteile wichtige Informationen sind. So wird beschrieben, dass zum Beispiel aus dem Satz Mein Name ist Basti der Intent setName mit dem Parameter Basti abgeleitet werden soll.
Das funktioniert mit dem Web Interface ganz einfach. Hier ein Beispiel aus dem aktuellen Projekt.
Wenn alle Intents angelegt, einige Beispiel-Formulierungen hinterlegt und darin die Parameter (Slots) gekennzeichnet sind, kann das Modell erzeugt werden. Das dauert ein paar Minuten und läuft im Hintergrund ab.

Interfaces

Hier kann bestimmt werden, welche Funktionen unser Skill mitbringen soll. Zum Beispiel das Audio Player Interface, dass es uns erlaubt Audio Daten abzuspielen, oder der Video Player für Videos. 
Für die Echo Show Geräte kann auch ein Display Interface für die Anzeige von Text und Bildern auf dem Monitor gewählt werden. Für diesen Skill benötigen wir davon erst einmal nichts.

Endpoint

Um das Ganze mit Leben zu füllen, benötigen wir ein Programm, dass die Informationen, die Amazon über diesen Skill erzeugt verarbeiten kann. Das läuft bei mir unter Python. Ich verwende dazu die Bibliothek Alexandra. Zum Programm gibt es später mehr.

Test

Der Skill kann mit Hilfe von eingetippten oder gesprochenen Textstücken getestet werden. Hier kann man live die Daten, die Amazon zur Verfügung stellt und die Antwort der Software am Endpoint betrachten und debuggen. Wenn alles funktioniert wie gewünscht, kann mit der Vorbereitung der Veröffentlichung begonnen werden.

Distribution

Wenn alle diese Daten eingegeben sind, fehlen noch organisatorische Informationen. Unter dem Distribution Reiter können der öffentliche Name, eine Kurzbeschreibung, eine ausführliche Beschreibung und Beipielsätze eingetragen werden. Weiterhin benötigt der Skill ein Icon und eine Kategorie. Dieser Skill landet in Games. Schlagworte für die Suche dürfen auch nicht fehlen. Ebenso wenig wie die Privacy Policy und die Terms of Use.
Im nachfolgenden Reiter müssen wir noch die Rechtlichen Dinge klären. So muss angegeben werden, ob in dem Skill gegen reales Geld etwas gekauft werden kann, ob der Skill personenbezogene Daten speichert, ob er sich an Kinder unter 13 richtet und ob er Werbung enthält. Hier werden ebenfalls Angaben gemacht, wie der Skill von Amazon evaluiert und getestet werden kann.
Wenn alles das geklärt ist, legen wir fest, ob der Skill öffentlich, also für jeden auf den gleichen Endpunkt endet, oder ob wir kundenspezifisch einen Endpunkt festlegen wollen. Dieser Skill ist öffentlich.
Hier kann auch ein Beta Test gestartet werden. Denn der Skill sollte von einige Leuten getestet werden, um Fehler zu finden, die man selbst übersehen hat.
Eine Beschränkung auf Deutschland ist ebenfalls bei diesem Skill vorgesehen, denn er ist deutschsprachig. Ist also in Botswana nicht unbedingt nützlich.

Certification

Ist der Skill komplett, wird er erst automatisiert auf Vollständigkeit getestet, ist diese Validierung erfolgreich, kann er durch einen automatisierten Funktionstest getestet werden. Dabei wird der Endpunkt mit automatischen Aufrufen angesprochen und die Reaktion validiert. Wenn beide Tests gut getestet werden, kann der Skill schlussendlich bei Amazon zur Prüfung eingereicht werden. Dieser Prozess dauert allerdings ein paar Tage und man kann in dieser Zeit keine Veränderungen vornehmen. 
Erst wenn Amazon den Skill geprüft hat, erscheint er öffentliche im Store. Aber vorher kann ja der Beta Test herhalten. Dazu muss man seine Tester allerdings kennen.

Knöpfchenspiel 1 – Systemübersicht

Heute beschreibe ich das Knöpfchenspiel. Wie bereits im Podcast erzählt, ist das primäre Ziel das Spiel bis April fertig zu bekommen. Daher gibt es bereits einige fertige Komponenten.

Das originale Knöpfchenspiel steht meistens in Spielhallen und kann dort gegen Geldeinwurf gespielt werden. Dazu müssen die leuchtenden Knöpfe gedrückt werden. Jeder Knopfdruck gibt einen Punkt. Wenn ein nicht leuchtender Knopf gedrückt wird, wird ein Punkt abgezogen. Das sieht dann so aus:

[youtube=https://www.youtube.com/watch?v=YJpiwdkKJ-M&w=320&h=266]

Das von mir geplante System ist ähnlich aufgebaut. Nur dass die Spieler nicht gegenüber, sondern nebeneinander spielen und dass die Punkteanzahl an einem großen Fernseher dargestellt wird und nicht auf einer 7-Segementanzeige. Dazu wird das System in mehrere Submodule aufgeteilt.

  • System-Controller (Raspberry-Pi)
  • Bus-Interface (Differenzieller I²C Bus Treiber)
  • Knöpfchen-Controller (STM32F030)
  • Knöpfchen
  • LED-Band-Controller
  • Power Supply

System-Controller

Der Raspberry Pi übernimmt die Steuerung des Spiels und die Anzeige der Punkte am Bildschirm. Dazu wird das HDMI Interface in maximaler Auflösung (1920×1080) betrieben. Weiterhin hängt am Pi noch eine Webcam (USB) mit der die Spieler für die High-score Liste fotografiert werden.
Auf dem Raspberry steckt die DIIC Baugruppe. Das Bus-Interface Board
Bus-Interface

Bus-Interface

Um einen stabilen I2C Bus über alle Baugruppen zu bekommen, habe ich mich für einen Differenziellen Bustreiber entschieden. Dieser ist in der Lage die Eindraht-Signale der I2C Strecke auf zwei differenzielle Signale aufzuteilen. Diese sind wesentlich unempfindlicher gegenüber elektromagnetischer Störung. Das Bus-Interface Board besitzt die nötigen Stecker für den Knöpfchenspiel Bus, ein RJ45 Stecker, der über normale LAN-Kabel miteinander verbunden werden kann.

Knöpfchen

Das Knöpfchen ist ein 60mm durchmessender Plastik Druckknopf (Schließer), der von hinten beleuchtbar ist. Die Beleuchtung wird von einer weißen LED übernommen.

Knöpfchen Controller

Die 16 Knöpfchen sind an dem Knöpfchen-Controller angeschlossen. Der Controller ließt den Schaltzustand der Knöpfchen ein und vergleicht ihn mit den Lampen. Wenn die Lampe an war, wird der Punktestand um eins erhöht, wenn die Lampe aus war, wird der Punktestand reduziert, bis er bei 0 angekommen ist.
Auf dem Knöpfchen-Controller Board ist ein DC/DC Wandler, der die 12V Bus-Spannung auf 5V herab setzt. Die 5V werden dann mit einem linear Regler auf 3,3V für den Controller heruntergesetzt. Die Knöpfchen und Lampen in den Knöpfchen können mit 12V, 5V, oder 3,3V versorgt werden.
Der Controller besitzt ein I2C Slave-Interface, dass die Spielinformationen an den Spiel-Controller übertragen kann.

LED-Band-Controller

Um das Spiel von Außen attraktiver zu gestalten, habe ich vor eine LED-Leiste an der Kante anzubringen, ähnlich wie bei der oben gezeigten Variante. Dafür habe ich WS2812 LEDs als Leitungsband vorgesehen. Gesteuert werden die LEDs von einem eigenen Controller. Wahrscheinlich der Arduino Nano, den ich schon für die Bühnenkulisse verwendet habe. Den kann man über die USB -> UART Brücke auf dem Arduino vom Raspberry Pi ansprechen.
Für das System werden zwei AC/DC Netzteile eingesetzt. Ein 5V und ein 12V Netzteil. Das 5V Netzteil ist für die Versorgung des Raspberry Pis und LED-Band vorgesehen. Das 12V Netzteil übernimmt die Versorgung des Bus-Systems, Knöpfchen-Controller Boards und der Knöpfchen. Beide werden über den gleichen Kaltgeräte-Stecker angeschlossen und abgesichert.

World Smallest 3D Printer Hardware/Software Part1

So… es ist soweit. Die erste Platine bzw. Platinen sind gekommen. Da mir Bestückung für eine Prototypen Platine noch zu teuer ist heißt es gleich ran an`s Werk. Die Platinen incl. Bauteile hab ich bei JLCPCB bzw.  bei LCSC. Diese kammen innerhalb von 10 Tagen nach Bestellung bei mir an. Was ich sehr gut finde ist, dass JLCPCB die Ware ordentlich deklariert hat, wodurch die Post das Paket ohne Probleme weitergegeben hat. Gegen eine Extrazahlung von nochmal 19% habe ich dann das Paket vom Postboten bekommen. Naja, kam zwar ohne Probleme, aber war dann doch sehr verwirrend. Am Morgen kam ein Brief von der Zoll Stelle Leipzig, dass ich doch bitte einen Haufen Unterlagen hinschicken soll, meinen Firmennamen usw. Mittags kam dann das Paket trotzdem an. Komisch aber ich will mich nicht beschweren.

Jetzt gehts an`s Bestücken. Ich hab alles in allem für die erste Platine zwei Stunden gebraucht. Jedoch hatte ich bei den Stepperdrivern meine Probleme. Ich werde mir wohl einen Reflow Ofen zulegen müssen um diese ordentlich löten zu können.


Nachdem die Platine dann bestückt war ging es an den Bootloader vom Arduino. Was ich nicht wusste: Der Bootloader findet sich in nahezu jeder Arduinoinstallation unter *:\Arduino\hardware\arduino\avr\bootloaders. Ich habe zu Beginn versucht den Bootloader per BusPirate zu flashen. Nach mehreren Versuchen und auch mehrmaliger Kontrolle der Verbindung habe ich es nicht geschafft den Bootloader mit dem BusPirate zu flashen. Basti hat zum Glück noch einen AVRISP MK2. Nachdem ich diesen angeschlossen habe, ging das flashen ohne Probleme. Jetzt ist der Bootloader drauf und es kann losegehen. Also ein Microusb-Kabel angeschlossen und im Gerätemanager nach dem COM-Port gesucht. Bei mir wird der FDTI Driver sofort installiert und als COM13 bekannt gegeben. Ich hab dann erst mal den µSD Karten Test von Arduino aufgespielt. Eine µSD Karte gesucht und das ganze im Serialmonitor von Arduino angesehen. Und siehe da, die µSD Karte hatte ich wohl mal genutzt um einen Octopie zu booten. Sie wird direkt erkannt.

Jetzt will ich einen Port mal wackeln lassen, den H0 Pin. Da dieser der einzige ist, der eine LED hat. Also habe ich in den gleichen Sketch folgende Befehle eingebaut.

digitalWrite(H0, HIGH);
delay(500);
digitalWrite(H0, LOW);
delay(500);

Als ich den Sketch hochladen wollte hat sich Arduino nicht mit dem Bootloader verbunden. Nachdem ich mit dem AVR wieder den Bootloader geflashed habe, ging das dann wieder. Und siehe da die LED blinkt nun im Sekunden Takt. Also geht der H0 Ausgang auch schonmal. Jetzt mal sehen, warum das flashen nicht direkt funktioniert. Und siehe da, ich hab vergessen den DTR Pin mit dem RESET zu verbinden. Erst hab ich gedacht „Warum hab ich den vergessen ich hab doch alles soweit wie möglich übernommen“ doch ich weiß jetzt warum ich den nicht verbunden habe. Der FTDI230x hat diesen Pin nicht. ABER ich kann den CTS Pin hierfür nutzen. Jetzt habe ich einen Kondensator an den Reset gelötet und das hat auch „fast“ funktioniert. Der RESET wurde nicht stark genug auf Masse gezogen. Das liegt daran, dass der Chip eine 3V3 I/O Spannung hat. Da ich nicht einen zusätzlichen IC bestücken will nur um einen Pegel zu wandeln hab ich micht für einen einfachen MOSFET Pegelwandler entschieden. Einen N-KAN MOSFET habe ich schon auf der Platine, dadurch brauch ich kein extra Bauteil. Da aber beim wechsel auf High der Pegel am RESET Pin auf 5V*2 ansteigen kann, brauche ich noch eine Diode um diese Spannung abzuleiten. Da ich keine Dioden (außer LEDs) auf der Platine habe, hab ich auch hier vor einen weiteren MOSFET zu nehmen und die interne Bodydiode zu nutzen. Diese Schaltung habe ich dann mit Fädeldraht auf der Platine realisiert wodurch das Flashen jetzt ohne Probleme klappt.

Jetzt habe ich mir das Marlin runtergeladen und in einer groben Erstkonfiguration auf den MEGA geflashed. Ab jetzt kann ich mit den G-Codes arbeiten. Also fix den Befehl M105 abgesendet um die Temperaturen zu bekommen. Die Platine hat eine Temperatur von um die 20°C was in etwa dem entspricht, wass ich mit meinen Fingern ertaste. Dann hab ich die Platine mal an eine Kerze gehalten. Ja…..  also Kerze macht warm. In wie fern die Temperaturen der Realität entspricht muss ich noch ermitteln.

 Jetzt hab ich den Befehl G28 abgesendet um den Drucker „zu Homen“. Eigenltich wollte ich nur das ein Motor zuckt, ist aber nicht passiert. Also muss ich mir die Stepperdriver nochmal überprüfen.

Zusammenfassend funktioniert:
* USB => UART
* LED an H0
* µSD Interface
* NTC auf der Platine
Was noch nicht funktioniert oder noch nicht getestet ist:
* Stepper Driver
* NTC auf dem Hotend
* Ventilator Ausgang
* Hotend betreiben

Soviel erst mal

World Smallest 3D Printer


Ich hatte vor einiger Zeit die Idee, den Welt kleinsten 3D-Drucker zu entwickeln. Dieser darf nicht zu teuer werden. Er sollte für nahezu jeden, der einen Lötkolben richtig halten kann einfach zusammen zu bauen sein.

Also günstig ABER funktionstüchtig.

Da ich nicht die komplette Software neu entwickeln will, versuche ich mich auf vorhandene Software zu stützen. Meine Wahl fällt auf Marlin, was auf Arduino basiert. Die Hoffnung ist, dass ich mit geringstem Softwareaufwand den Drucker in Betrieb nehmen kann. Da ich den ATmega2560 verwenden möchte, dessen Gehäuse relativ groß ist (warum kommt später) möchte ich mich an dem Rumba orientieren. Diesen Schaltplan nehme ich als Referenz und schon habe ich das Pinout für den Controller.

Also gesagt getan. Die neuste Version von KiCad runtergeladen und los geht’s.

Erst mal den Schaltplan soweit wie nötig erstellt und „neue“ Bauteile aussuchen. Da der Drucker per USB betreiben werden soll, müssen die Stepper, Heizer, Lüfter usw. mit 5V laufen.

Als Stepper Driver wird der STSPIN220 von ST verwendet. Dieser ist super klein und läuft mit dem gewohnten Pololu Interface (STEP, DIR, EN). Als Heizelement werde ich Widerstände verwenden. In diese Flachbaugruppe schraube ich die Nozzle.

Weiter geht’s mit dem Layout. Warum ich ein großes Gehäuse nehmen möchte? Ich möchte ein „beheiztes“ Druckbett. Da liegt es nah den vorhanden µC zu nehmen. Also mir liegt dies nah ;).

Der Controller wird also das Zentrum der Leiterplatte, und der Rest muss versuchen darauf zu passen. Durch diese Einschränkung der „Druckbettgröße“ haben sich die restlichen Maße ergeben und der Drucker bekommt eine Seitenlänge von 7cm.

Da ich auch versuche in der 3D Modellierung besser zu werde, hab ich mit dem Tool FreeCAD versucht den Drucker in 3D zu modellieren.

So oder so ähnlich soll er später mal aussehen. Da ich keine Fräße habe, möchte ich alle Teile aus Flachbaugruppen erstellen und als Verbindungen keine Schrauben wählen, sondern die Teile sollen verlötet werden. Also Lötzinn als Verbindungselement nutzen. Mal sehen wie gut das funktioniert.

Schmartwatch [11]: Neue Hardware

Die erste Version der Hardware hatte einige kleine Bugs. Darunter war ein Fehler in der Booster Schaltung für VCOM des E-paper Displays, Kondensatoren, die nicht spannungsfest genug waren und kein Piezo Piepser. Alles das ist in der zweiten Version der Hardware vorhanden. Mit der Bestellung habe ich eine ganze Weile gewartet, da ich erst alle Teile der Hardware, die bereits vorhanden ist und funktioniert testen wollte. Das ist jetzt geschehen und die zweite Version kann hergestellt werden.

Die alte Version der Hardware hat einige Pinbelegungen anders als die Neuere. Daher ist die Software bereits dafür ausgelegt, die richtige Header Datei einzubinden, wenn für die eine oder andere Hardware kompiliert wird.

Hier eine Übersicht der aktuellen Funktionen.
Links oben befindet sich der Piezo Buzzer. Um dafür Platz zu machen, ist der Bewegungssensor U4 und der Mikrocontroller U3 weiter nach rechts gewandert. Die RTC, die unabhängig vom Controller läuft, ist ein wenig weiter nach unten gewandert und sitzt jetzt rechts oberhalb der Batteriehalterung. Unterhalb der Batterie befindet sich der Teil der E-paper Ansteuerung. Im Gegensatz zur Version 1 ist hier die Schaltung mit 0603 Bauelementen ausgelegt. Daher können Kondensatoren mit höheren Spannungsfestigkeiten eingesetzt werden. Ein zusätzliches Feature ist die Beleuchtung des Displays. Dafür ist ein weiterer Flat-Flex-Stecker vorgesehen: J4.

Das PCB, das ich bestellt habe wird aus 0,4 mm dickem FR4 hergestellt und kommt damit der Dicker eines Flex-Boards mit Stiffner nahe. Eventuell ist sie auch flexibel genug um für das Handgelenk gebogen zu werden. Der Stecker sollte zwar mit einem 0,3 mm dicken Flex-Board verwendet werden, aber vielleicht passt das 0,4 mm dicke ja trotzdem.

Auch hier ist die Wahl wieder auf FR4 als Boardmaterial gefallen, da die Flex Boards alle viel teurer sind. Wenn mehr als 5-10 PCBs bestellt werden können, weil ich mir sicher bin, dass es das endgültige Design ist, dann ist Flex wieder nicht zu teuer. Bis dahin wird FR4 genügen müssen.

Einer der nächsten Schritte wird es sein, die Hardware und die Software für die Veröffentlichung vorzubereiten. Im Moment schließe ich die BOM ab, sodass eine Liste aller benötigten Bauelemente zur Verfügung steht. Weiterhin kommt dann noch ein neueres 3D Modell zum Einsatz. Auch hier sind einige Design Änderungen eingeflossen, die in der ersten Version noch nicht beachtet wurden. Dazu aber später mehr.

Schmartwatch [10]: Energieverbrauch Ergebnis

Hier ist das Ergebnis des Batterie Tests. Wie anhand der Oszilloskop-Bilder zu sehn war, ist die Batterie kontinuierlich beansprucht worden. Das hat sie nicht lange mit sich machen lassen und so stand heute, als ich aus dem Urlaub zurück gekommen bind, folgendes Ergebnis fest:

Die Uhr lief genau bis zum 29.09. 02:29 Uhr. Das ist nicht besonders lange. Gerade einmal 6,5 Stunden.

Das Ergebnis zeigt, dass es noch zu viele aktive Stromverbraucher gibt. Der nächste Schritt wird sein, diese zu finden und zu beseitigen.

Schmartwatch [09]: Energieverbrauch

Ich habe jetzt Urlaub und was bietet sich da besser an, als ein Laufzeit Experiment. Die Uhr ist mit der aktuellen Software ausgestattet, das Softdevice ist initialisiert, aber nicht aktiv. Ich habe eine neue Batterie eingelegt und lasse die Uhr jetzt einfach liegen. Dank des E-Ink Displays kann man genau sehen, wie lange die Uhr lief, bevor kein Update mehr kam. Das Foto zeigt die Uhr kurz nach dem Start beim Updaten der Minute.

Testbedingungen

Test startete am  28.09.2018 19:56
Git Revision 0c692ed

Hardware:

  • FR4 Prototyp mit Display Adapter Platine
  • J-Link Adapter mit Diode
  • CR2032 Lithium Knopfzelle von EDEKA zuhause MHD: 12-2022

Zum Schluss noch einige Messungen während die Uhr läuft:

Zustand der Spule am Schaltpunkt des DCDC-Konverters während des Ruhe Betriebs.
Dieser Spannungsverlauf hat eine Einschaltdauer von 15%.
Zustand der Spule am Schaltpunkt des DCDC-Konverters während einer Aktualisierung.
Spannung an der Batterie während des Ruhe Betriebs. Spannung an der Batterie während einer Display Aktualisierung.