Neuer Alexa Skill

Ich habe heute einen neuen Alexa Skill veröffentlicht. Unter dem Namen Projekt Genesis findet ihr ein Spiel in dem ihr in die Rolle einer Schiffs-KI schlüpft um zu bewerten, ob der gefundene Planet geeignet ist um als neue Heimat für die Menschheit zu dienen.

Ich habe im Februar bereits darüber geschrieben:
Spielen mit Amazon Alexa – Das Projekt Genesis

Alle Mann und Frau an Board, wir fliegen ab mit:

Alexa, starte Projekt Genesis

Werbung

Schmartwatch [15]: Python Support

Vor einige Jahren wurde Python auf Mikrocontrollern portiert. Damit ist die Programmierung von embedded Applikationen wesentlich einfacher und schneller möglich. Applikationslogik kann auf dem PC getestet werden, bevor sie auf das Target gespielt wird. Testen ist auf dem PC auch wesentlich einfacher und schneller als auf der echten Hardware. Somit spricht eigentlich nichts dagegen, Python auch für die Schmartwatch zu bauen.

Eine funktionierende Schmartwatch mit flexibler Leiterplatte ist leider immer noch nicht komplett bestückt. Das liegt einerseits daran, dass auf den flexiblen Leiterplatten der DCDC Konverter, (6 Bällchen, 2×3 mm) sehr schlecht bestückbar ist, andererseits aber auch daran, dass ich auf noch keiner manuell gelöteten Platte das Funkmodul ansprechen konnte. Diese Tatsache verzögert alles auf eine ungewisse Zeit, bis ich den Prozess der Lötung unter Kontrolle habe. Genügend Bauteile habe ich, es fehlt lediglich die Zeit für langwierige Versuche. In der Zwischenzeit habe ich mich mit einem anderen Aspekt des Projekts beschäftigt. Wir versuche also diesmal den Python Interpreter in der Micropython nRF52 Variante auf der Schmartwatch zu installieren.

Code downloaden

Dazu Klonen wir das Projekt aus dem Github Repository, laden die Module und starten den Prozess.

$ git clone https://github.com/micropython/micropython.git micropython
$ cd micropython
$ git submodule update --init
$ make -C mpy-cross

Jetzt baut das Projekt einmal komplett durch, das dauert einige Zeit. Wenn das Grundsystem steht, wechseln wir in den Pfad mit der nRF Portierung.

$ cd ports/nrf/
$ make

Wenn es hier zu einem Fehler kommt, ist wahrscheinlich der arm-gcc nicht installiert. Wie das geht kann man zum Beispiel hier nachlesen.

Standartmäßig wird die Portierung für das PCA10040 Board gebaut, darauf befindet sich ein nRF52832, also genau der Chip, der auch auf der Schmartwatch das Sagen hat. Somit ist eigentlich schon alles erledigt und mit einem simplen flash Befehl kann der Chip programmiert werden.

$ make flash

Code anpassen

Die Platformspezifischen Konfigurationen befinden sich in dem Ordner boards/pca10040, also kopieren wir diesen

$ cd boards
$ cp pca10040 schmartwatch -r

Hier kann die Modulauswahl und Pinbelegung angepasst werden. Dazu bearbeiten wir die mpconfigboard.h entsprechend der Schmartwatch Konfiguration

#define MICROPY_HW_BOARD_NAME       "Schmartwatch"
#define MICROPY_HW_MCU_NAME         "NRF52832"
#define MICROPY_PY_SYS_PLATFORM     "nrf52-DK"

#define MICROPY_PY_MACHINE_UART     (0)
#define MICROPY_PY_MACHINE_HW_PWM   (1)
#define MICROPY_PY_MACHINE_HW_SPI   (1)
#define MICROPY_PY_MACHINE_TIMER    (1)
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
#define MICROPY_PY_MACHINE_I2C      (1)
#define MICROPY_PY_MACHINE_ADC      (1)
#define MICROPY_PY_MACHINE_TEMP     (1)
#define MICROPY_PY_RANDOM_HW_RNG    (1)

#define MICROPY_HW_HAS_LED          (1)
#define MICROPY_HW_LED_COUNT        (1)
#define MICROPY_HW_LED_PULLUP       (0)

#define MICROPY_HW_LED1             (8) // Frontlight LED

// SPI0 config
#define MICROPY_HW_SPI0_NAME        "SPI0"
#define MICROPY_HW_SPI0_SCK         (27)
#define MICROPY_HW_SPI0_MOSI        (25)

#define MICROPY_HW_PWM0_NAME        "PWM0"
#define MICROPY_HW_PWM1_NAME        "PWM1"

#define HELP_TEXT_BOARD_LED         "1"

Somit haben wir die Bedingungen geschaffen, die Basisfunktionen der Schmartwach nutzen zu können. Jetzt müssen wir den Kompiliervorgang noch für unsere Hardware durchführen, das geht auch wieder mit make.

$ make BOARD=schmartwatch

Das nächste mal betrachten wir, wie der Code dann auf der Schmartwatch sinnvoll einsetzbar ist, denn es gibt zum Beispiel keine UART, die über die Schmartwatch nach außen geschaltet ist. Wir müssen also das Projekt so bearbeiten, dass es die REPL anstatt über die UART Peripherie über Semihosting ausgibt.

Jetzt wird’s bunt

Am Prime Day diesen Jahres habe ich mir eine neue Beleuchtung für den Schreibtisch und die Terrasse gegönnt.

Für den Schreibtisch wollte ich eine indirekte Beleuchtung der Tastatur und Umgebung, das habe ich mit Hilfe der Phillips Hue Ambient* Lichter erreicht. Diese stehen hinter den Monitoren und strahlen an die Wand. Dadurch entsteht ein dimmbares und in der Farbe anpassbares Licht, dass sich mit Hilfe der Hue App, oder von Home Assistant einstellen lässt.

Für die Terrasse habe ich einen wasserdichten RGB LED Streifen* gekauft, dieser wird über WLAN angebunden und kann auch von Home Assistant gesteuert werden. Ähnlich der Schreibtischbeleuchtung ist der Leuchtstreifen in der Farbe anpassbar. Somit kann im Garten eine stimmungsvolle Beleuchtung erreicht werden, ohne zu viele verschiedene Apps zu verwenden.

Home Assistant Konfiguration

Die Konfiguration für Home Assistant zur Unterstützung von Hue ist denkbar einfach. Im Integrationsmenü muss lediglich die Adresse der Hue Bridge im lokalen Netzwerk ausgewählt werden und schon stehen alle Geräte, die normalerweise über die Hue App gesteuert werden müssen auch in Home Assistant zur Verfügung.

Ähnlich ist es mit der Aktivierung des RGB LED Streifens. Die kleine Box, die die Ansteuerung übernimmt, und die von vielen asiatischen Anbietern in unterschiedlicher Ausführung verkauft wird, ist als Flux LED unterstützt. Um die Komponente zu aktivieren, muss in der configuration.yaml diese Zeilen in der light Kategorie hinzugefügt werden:

# Example configuration.yaml entry
light:
  - platform: flux_led
    automatic_add: true

Anschließend Home Assistant neu starten und die Lampen sind als Elemente für die Oberfläche verfügbar.

* alle Produkte sind Amazon Affiliate Links

Neuer Anstrich für den Kurzschluss Blog

Ich habe den Kurzschluss Blog nach vielen Jahren von der Blogger Plattform zu WordPress.com umgezogen. Ich hoffe ich hab alle Umzugsproblemchen beheben können, wenn euch noch ein Fehler auffällt, dann lasst es mich bitte wissen.

Es fehlen noch ein paar Kleinigkeiten, die auf der Blogger Webseite vorhanden waren, aber alles in allem bin ich mit dem Umzug zufrieden. Auch sind wir dabei mehr Inhalt für den Blog zu erstellen. Bei den Kurzschluss Junkies geht es weiter und es ist etwas neues in Planung. Mehr dazu in einigen Wochen. Es wird sich aber weiterhin um die gleichen Themen drehen, die ihr hier bereits lesen könnt.

NAGCL [I]

In dem Eingangsartikel zu meinem Software-Projekt NAGCL (das habe ich jetzt als Interimsnamen auserkoren) bin ich kurz auf die angedachten Features des Programms eingegangen, sowie auf die Historie und Motivation dazu.
In diesem Artikel möchte ich ein kurzes Update zum aktuellen Stand des Projekts geben, sowie ein paar Implementierungsdetails vorstellen.

Für die wichtigsten Elemente des Programms bestehen mittlerweile erweiterbare Gerüste. Das trifft vor allem auf die Benutzung im Shell-Modus und auf die Übergabe von Parametern beim Programmaufruf zu.
Ebenfalls kann bereits eine Textdatei mit Pfaden zu git-Repositories eingelesen werden. Diese Pfade werden auf Existenz, Zugriffsrechte und ob diese auf ein gültiges git-Repository zeigen geprüft.

Um alle Einträge der Textdatei verwalten zu können, werden diese in einer einfach verlinkten Liste (Linked List) abgelegt. Diese Liste wird bei jedem Programmaufruf bzw. -start neu angelegt.
Im Shell-Modus bzw. als Parameter beim Programmaufruf können Elemente der Liste hinzugefügt oder entfernt werden. Ob die Liste verändert wurde, wird beim Beenden des Programms dem Nutzer gemeldet. Als letzter Schritt wird die Textdatei – sofern eine Änderung der Liste vorgenommen wurde – aktualisiert, d.h. Pfade von Repositories werden hinzugefügt oder entfernt. Die Implementierung einer einfach verlinkten Liste war notwendig um einen dynamischen Datentyp zur Verwaltung der Repositories zur Laufzeit zu erhalten. Die Implementierung ist allerdings bei Weitem nicht so elegant wie die von Linus Torvalds‘ Liste in der Kernel-Implementierung. Eine derart generische Implementierung einer Liste wird an dieser Stelle von mir aber auch nicht benötigt.

Aktuell arbeite ich daran, den Log (entspricht dem Befehl git log) eines git-Repositories auszugeben sowie den ersten Versuchen einer GUI-Implementierung. Die Implementierung der git-Funktion erfolgt mit der API libgit2, die Implementierung der GUI-Funktionen mittels der Bibliothek ncurses.

Die größte Veränderung für mich selbst war die Umstellung von Makefile zu cmake als Build-Setup.
Der Hauptgrund für den Wechsel des Build-Setups war, mich mit cmake auseinander zu setzen und einzuarbeiten. Aktuell kann das Projekt mit allen benötigten Bibliotheken gebaut und verlinkt werden, wenngleich das Setup im Moment unübersichtlich ist und noch nicht dem gewünschten Stand entspricht.
Im endgültigen Stand sollen alle benötigten Bibliotheken heruntergeladen und mitkompiliert werden. Zudem soll die Erstellung der Dokumentation mittels Doxygen unterstützt werden, sowie Testcases zur Überprüfung der korrekten Ausführen der Software bei der Installation.
Als Editor benutzte ich vim zusammen mit cscope und dem Plugin Conque-GDB zum graphischen Debuggen des Programms.

Zuletzt möchte ich erwähnen, dass ich noch offen bin für Namensvorschläge und wie immer gilt:
Schreibt, kommentiert, diskutiert und abonniert den Podcast!

Nicht noch ein GIT-Client

Vor ein paar Jahren hatte ich ein Bash-Skript geschrieben um git-Repositories automatisiert zu aktualisieren, also ein git pull auf dem aktuell ausgecheckten Branch des Repositories.
Das Skript funktioniert mit einer Textdatei in der die Pfade zu den Repositories angegeben sind und aktualisiert diese, sofern keine Konflikte vorhanden sind.
Die Ausgabe der Informationen welche Repositories überprüft werden und welche aktualisiert wurden, werden nicht nur über das Terminal angezeigt, sondern auch in einer Log-Datei gespeichert. Dieses Log kann entweder immer wieder neu erzeugt werden bei jedem Aufruf des Skripts oder als fortlaufende Datei.

Um mich in Python einzuarbeiten hatte ich im Anschluss einen Wrapper für das Bash-Skript implementiert, mit welchem man die Repository-Liste zur Aktualisierung bearbeiten kann (Reposietories hinzuügen oder entfernen) und in einem Shell-Modus läuft. Zusätzlich kann das Python-Program das Bash-Skript aufrufen, die Log-Infos der Repositories anzeigen und ein neues Terminal-Fenster mit dem Pfad eines gewünschten Repository öffnen (zumindest für die gängigsten Unix-Terminal-Programme). Letzte Funktion hat den Zweck einfach zwischen den Repositories wechseln zu können und git per CLI zu bedienen.
Da das Python-Programm im Shell-Modus läuft, habe ich zusätzlich eine Auto-Komplettierung für Repositories und Befehle implementiert.
Das Bash-Skript sowie das dazugehörige Python-Programm sind auf Github veröffentlicht und über die Jahre gab es doch den Einen oder Anderen clone des Projekts. Darüber freue ich mich auch, aber ich habe bisher leider keine Rückmeldung zur Nutzbarkeit erhalten.

Nun ist es so, dass ich persönlich kein großer Fan von Python bin und habe daher beschlossen ein C-Programm zu implementieren, dass die Funktionalitäten des ursprünglichen Bash-Skripts und des Python-Programms beinhaltet.
Das neue Programm kann als Terminal-Befehl, im Shell-Modus und mit einem Terminal-UI (ncurses) ausgeführt werden. Zusätzlich sollen weitere grundlegende Funktionalitäten implementiert werden um einen git-Client zu erhalten.
Der größte Unterschied stellt wohl die Art und Weise wie mit git von den Programmen aus interagiert wird dar. Während beim Bash-Skript und dem Python-Programm die git-Befehle als Systembefehle in einem Subprozess ausgeführt werden, soll das bei der C Implementierung mittels API funktionieren. Dazu verwende ich libgit2.
Über den aktuellen Status und die Implementierungsdetails gehe ich in Folgebeiträgen ein. Veröffentlich wird das Projekt auf Github, wenn ich die ursprüngliche Funktionalität fertig implementiert habe, also die Auto-Aktualisierung von Repositories in einer Liste.
Aktuell trägt das Projekt noch den unkreativen Namen gitmanager, aber ich denke über eine Umbenennung in yagcl (Yet Another Git CLient) oder nagcl (Not Another Git CLient) nach. Für kreative Vorschläge bin ich offen (bitte nicht Git McGitFace).

Links:

OSICs – Open Source Integrated Circuits

In der sechsten Folge der Kurzschluss Junkies habe ich mit Basti und Chris über FPGA- und
ASIC-Entwicklungen gesprochen. In dieser Beitragsreihe möchte ich Open Source Software zur IC-Enticklung vorstellen und auf deren Fähigkeiten, bzw. Möglichkeiten eingehen.

Ein Beispiel, dass mit freier Software ein IC erstellt werden kann, ist die Realisierung eines auf einem RISC-V basierenden SoCs. Der verwendete Softcore ist der PicoRV32 in einem QFN-48 Package der mit ADCs, DACs und einer seriellen Schnittstelle (SPI) erweitert und bei efabless gefertigt wurde.
Die Toolchain die dafür hauptsächlich verwendet wurde heißt Qflow und verbindet Tools zur Synthese, Logikminimierung, Placement und Routing von Standardzellen-Logik. Die Firma efabless bietet die Möglichkeit eigene Designs zu realiserun und hostet eine Toolchain die selbst teilweise auf Qflow basiert.

Der Hauptentwickler von Qflow heißt Tim Edwards und dieser hat bei eeweb.com ein Interview gegeben in dem er seine Arbeit und Philosophie zur freien Software für den Chip Entwurf vorstellt und erklärt. Der Aufbau von Qflow ist auf opencircuitdesign.com in Detail beschrieben, dennoch möchte ich nachfolgend einen kurzen Abriss über die wichtigsten Elemente der eingebundenen Software geben.

Qflow nutzt zur Synthese yosys, eine offene Synthessuite für FPGAs und ASICS, die von Clifford Wolf entwickelt wurde. Diese synthetisiert Verilog Designs und bietet – bei vorhandener Bibliothek – nicht nur eine Logikminimierung an, sondern auch ein Mapping auf Standardzellen. Die Logikminimierung erfolgt mittels abc, einem Tool das bei der Universität von Berkley entwickelt wurde und auch eine Verifikation von Logikschaltungen zur Verfügung stellt. Die Stärke von yosys liegt in den implementierten Durchläufen zur Synthese und Verifikation. Diese können je nach Anforderung adaptiert werden um so die Optimierungdurchläufe auf mögliche Besonderheiten anzupassen. Solche Besonderheiten können zum Beispiel der Standardzellenbibliothek des Herstellers geschuldet sein.
Eine weitere Stärke ist die Möglichkeit yosys über Skripte bedienen zu können.

Die Platzierung erfolgt mit graywolf, einem Tool das mittels Simulated Annealing Standardzellen plaziert. graywolf ist ein Fork des mittlerweile kommerziellen Tools Timberwolf, das für eine Lizenz einen Preis von 50k USD ausruft und in Yale entwickelt wurde.

Qrouter schließlich verbindet die Standardzellen mittels dem Lee-Algorithmus und unterstütz bis zu sechs Metalllagen. Damit lassen sich, wie das Beispiel des RISC-V basierenden SoCs zeigt, recht komplexe und große Designs realiseren.
Abgerundet wird die Toolchain mit einem LVS-Checker (netgen) swoie einem Layout-Editor mit der Fähigkeit zum DRC (magic).

Die größten limitierenden Faktoren stellen letztlich die Bauteilbibliothek und die Zieltechnologie dar. Die Bauteilbibliothek insofern, als dass diese von den einzelnen Halbleiterherstellern i.d.R. gekauft werden muss und die Zieltechnologie dahingehend, dass es eine Sache ist, ein Design mit einer 120nm-Struktur oder größer zu realisieren oder 90nm und kleiner. Die Hauptschwierigkeit stellt hier die Abschätzung der Laufzeitverzögerungen dar. Wer sich aber einfach für Chip-Entwicklung, Algorithmen und DIY-Realisierungen mit offenen (beispielhaften) Bibliotheken interessiert, oder gar mit einem Start-Up/kleinem Unternehmen Chips realiseren möchte, bekommt mit diesen Projekten einen wunderbaren Einstieg und nützliche Software an die Hand mit der wirklich etwas realisiert werden kann. Dank Quelloffenheit können diese Programme sogar angepasst und erweitert werden.

Abschließend möchte ich erwähnen, dass diese Projekte nicht nur einen tiefgehenden Einblick in die Herausforderungen für CAE-Tools zur Realisierung von integrierten Schaltungen bietet, sondern auch exzellente Beispiele für gut implementierten und dokumentierten Code sind (überwiegend C und C++).

In weiteren Beiträgen möchte ich die erwähnten Algorithmen genauer vorstellen, sowie weitere freie Software für den Chip-Entwurf sowie eine freie, erweiterbare Suite für Xilinx FPGAs. Auch kleine Tutorials und Anleitungen zur Nutzung der Software sind angedacht.
Schreibt, kommentiert, diskutiert und abonniert den Podcast!

Links:

Knöpfchen mal in klein

Es wird ein Evalboard geben, auf Basis des STM8L151 Mikrocontrollers.
Geplant ist später die Firmware mittels dem UART Bootloader von ST hoch zu laden. Es wird also kein zusätzlicher Programmer benötigt. Nichts desto trotz sind die Signale SWIM und NRST, sowie 3V3 und GND Lötpads geführt. Man weiß ja nie 😉

Das Board wird follgende Schnittstellen haben:

  • Cap-Touch (16 Button)
  • RGB OneWire LED
  • UART mittels micro USB
  • IR-UART
  • 3Dig 7Seg (Diskret)

Der Schaltplan sowie das Layout sind bereits fertig. Bei den Cap-Touch-Tasten muss darauf geachtet werden, welcher Typ des STM8L151 verwendet wird. Abhängig vom Typ ändert sich die Density Angabe und es können mehr oder weniger Tasten realisiert werden. Das findet man am schnellsten im UM1606 von ST auf Seite 54. Vermutlich wird das restliche Die für den Flash benötigt, da ST eine Cap-Touch Hardwareunit hat. WICHTIG: Sollte nachträglich mehr Flash benötigt werden muss dass vorher bei der Tastenzuweisung berücksichtigt werden.

Als Knöpfchen sollen SK6812 LEDs verwendet werden. Diese LED ist ähnlich der WS2812, die SK6812 ist aber reflow-tauglich, zumindest laut Datenblatt.
Der IR-UART kann rein theoretisch auch zum Firmwaredownload verwendet werden. Dies wollen wir auf jeden Fall auch überprüfen.

Da eine 7-Segment Anzeige kostspielig ist, wurde eine „diskrete“ 7Seg Anzeige realisiert. Wir werden sehen, wie gut diese ablesbar ist. Sollte es zu schlecht sein, wurde ein „Heissklebe- bzw. Silikonrahmen“ in das Layout integriert. Evtl, ist es möglich dieses Stück FBG als Maske zu nutzen.

Ein weiteres Feature ist, dass die Anzeige nicht einfach ein flacher Teil der FBG ist, sondern als „Aufsteller“ an die FBG stirnseitig angelötet werden kann. Mal sehen wie gut das Alles so funktioniert.

Pick and Place: Teil2 JUKI Placemat 460 Retrofit Board

Wie im Podcast schon erwähnt, haben wir uns überlegt den 286er der JUKI Placemat 460 durch einen STM32F4 zu ersetzen. Also gesagt getan. Erst war die Überlegung das Steuerboard inkl. PC zu ersetzen und die neue Flachbaugruppe an die gleiche Stelle wie die alte Steuerplatine zu possitionieren. Sozusagen ein Retrofit Board. Alle alten Stecker sollten verwendet werden. Als dann die alten Schaltunterlagen gesichtet wurden, wurde diese Entscheidung kurzerhand überdacht und verworfen. Es wurde ein Board entwickelt, welches zwar den 286er ersetzt, aber nicht die Steuerplatine. Dazu musste einfach nur die 3V3 Welt des STMs in die 5V Welt der Steuerplatine umgesetzt werden.

Wie es so ist, wurden noch ein paar Interfaces neu ergänzt. Da noch Unsicherheit besteht, welches das Richtige ist, sind hier mehrere zum Einsatz gekommen. Es wurden Interfaces für eine µSD Karte, ein 100MBit LAN und ein USB zu UART bereitgestellt. Da auch die Überlegung besteht, den Bestückkopf um mehr als nur 90° drehen zu lassen wurden auch noch 2 Polulu Steckplätze vorgesehen. Alles in allem ist die Platine doch sehr kompakt geworden. Geradeeinmal 100x85mm.

So in der Art soll das Board später mal eingebaut sein. Im Idealfall werden nur die 2 Flachbandkabel benötigt und das Board ist fertig zur Verwendung. Bei den Bauteilen wurde darauf geachtet, möglichst wenig Varianz zu haben. Für das komplette Board, kommen nur 15 verschiedene SMD und nur 5 verschiedene THT Bauteile zum Einsatz. Alle Bauteile waren bei JLCPCB  bzw LCSC bestellbar. Genug Bauteile für 2 Flachbaugruppen, 5 Rohleiterplatten und eine Schablone haben zusammen nur ca. 80€ gekostet. Sobald alles da ist wird es spannend. Mal sehen ob die Flachbaugruppe als erste mit dem Bestückautomat herzustellen geht.

Schmartwatch [14]: Flex Baugruppe bestücken

Die flexieblen Leiterplatten wurden geliefert und ich kann jetzt mit der Bestückung beginnen. Die Bestückung der ersten Leiterplatte werde ich in einzelnen Phasen durchführen. Zuerst wird der DCDC Konverter U2 bestückt. Dieser sitzt auf 6 BGA Bällchen und ist nicht leicht zu platzieren.
Wie man in den Aufnahmen bereits sehen kann, ist die Referenzierung der Siebdruck, Lötstopp und Kupfer Maske nicht ganz akkurat. Daher wurde an den Stellen der kleinen Landepads auch nachgearbeitet. Mit dieser Modifikation sollte es nun möglich sein die Bauteile korrekt und ohne Kurzschluss zu verlöten. Wenn ich die TPS61099 verlötet habe, kann ich mit dem Multimeter die Lötstellen auf Kurzschlüsse prüfen. Das Verlöten wird mit dem Heißluftfön passieren. Dabei wird mit Flussmittel eine Barriere zur Athmosphäre hergestellt (viel hilft viel) und der Chip erhitzt, bis das Lötzinn flüssig ist. Die suaerstoffhaltige Athmosphäre soll absgeschottet werden, um ein oxidieren (verbrennen) des Lot zu vermeiden. Im industriellen Herstellungsprozess wird das mit zum Beispiel einer Schutzathmosphäre erreicht. Anschließend kann dann mit dem Lötkolben die restliche Beschaltung dazugelötet werden. Wahlweise kann auch hier die Heißluft eingesetzt werden um die Bauteile zu verlöten.

Wenn der Regler aus den 3V Eingangsspannung die gewünschten 3,3V Ausgangsspannung erzeugt, kann die MCU, also der Microcontroller U3 bestückt werden. Dieser hat ebenfalls Landepads, die allerdings größer sind als die kleinen Kreisförmigen des Spannungsreglers. Hier musste nicht nachgearbeitet werden um die Pads mit Lötstopplack zu trennen. Diese Trennung ist wichtig, denn sonst könnnen sich Brücken bilden, die man von Außen nicht sehen kann. Für den Microcontroller kann ebenfalls eine Kurzschlussmessung erfolgen, ebenso wie eine optische Inspektion unter dem Mikroskop. Wenn der Lötvorgang für Gut befunden wird, kann die restliche Peripherie um den Controller gelötet werden. dazu gehören: Stützkondensatoren, und Vorspannungswiderstände. Wenn alle diese Komponenten verlötet sind, sollte der Controller über den Debug-Port erreichbar sein.
Sollte das der Fall sein, kann mit der Bestückung der externen ePaper Beschaltung begonnen werden. Diese, zusammen mit dem Stecker J3 ist für sie Uhrenfunktion absolut notwendig. Die Echtzeituhr und der Bewegungssensor werden nacheinander dazugelötet und auf Kurzschlüsse überprüft. Jede der Komponenten sollte dann einzeln in Betrieb genommen werden.

Die Bilder zeigen, dass der Offset des Siebdrucks leider so stark ist, dass der Rahmen um die Komponenten nicht als Referenz zum Platzieren herangezogen werden kann. Das ist schade, denn jetzt muss ich mich auf die optische von der Seite erfolgende Bewertung der Platzierung verlassen.

Die Rückseite der Flexplatine ist mit einer dicken Schicht Polyimid (PI) versehen. Da auf der Rückseite allerdings auch einige Messpunkte anfgebracht sind, wurde in der Schicht Öffnungen vorgesehen.

Diese Öffnungn sind groß genug um mit dem Tastkopf an das darin liegende Pad zu gelangen. Somit ist das Testen in einem Testadapter möglich. Diesen habe ich allerdings noch nicht entworfen.
Um die Uhr weiter zu stabilisieren wird der Batteriehalter in der Mitte mit einem thermisch aushärtenden Kleber fixiert. Das Kunststoffgehäuse des Halters kann so Längs und Quer Kräfte aufnehmen, die die Platine in der Mitte durchbiegen würden.

Beim Auflöten der zusätzlichen Komponenten habe ich an eine noch unbekannten Stelle einen Kurzschluss, oder besser gesagt eine Diodenstrecke von  0,4V in beide Richtungen. Hier muss ich also erst noch ein bisschen nacharbeiten, bevor ich mit dem Prototyp eine Funktion testen kann.

Wenn die Funktion gegeben ist, werde ich als nächsten Schritt die Software so weit fertig machen, dass sie initial released werden kann. Dazu fehlt noch ein wenig Code, vor allem die Funktion die Updatemuster des ePapers zu kontrollieren.