Kurzschluss Junkies [0x10]: WLAN im Kolben?

Gast

Heute sprechen wir mit Raphael, er war auch schon in Folge 0x05 zu hören.

Common-Sense-Tipps

Raphael empfiehlt, bei der Verwendung von bereits existierenden Schaltungen genau hinzuschauen und alle Parameter kritisch zu evaluieren. Chris stimmt ihm zu, er hat in den letzten Tagen mit Altlasten zu kämpfen.

Basti sollte häufiger den DRC verwenden, dann findet er auch Fehler im Layout, bevor die Platte bestellt ist.

Chris legt seinen ersten Urlaubstag immer auf Donnerstag. Damit könnt ihr dem Problem entgehen, dass Freitags zum Urlaubsbeginn noch ganz dringende Dinge aufkommen.

Lötstation

Raphael hat das letzte mal bereits von seiner Lötstation erzählt. Heute sind wir noch ein bisschen genauer in die Details des Designs gegangen. Er möchte ein OLED Display zur Anzeige der Temperatur und sonstiger Betriebsparameter verwenden. Als Eingabesystem hat er einen Joystick Button, oder Kapazitive Tasten vorgesehen. Als Lötspitze kommt eine Weller RT Spitze zum Einsatz. Die Temperatur wird mit Hilfe eines AD8494 ermittelt, Power stellt der LM76003 zur Verfügung.
Als Controller wird er einen Gecko einsetzen. USB und eventuell Netzwerk/WLAN sollen als Schnittstelle ebenfalls zur Verfügung stehen um auch ein IOT zu sein.

Git Programm

Raphael hat vor einiger Zeit ein Bash-Script geschrieben, dass er verwendet um mehrere Git-Repositories aktuell zu halten. Daraus ist ein immer größers Programm gewachsen, das schon einige Interationsstufen gesehen hat. Aktuell wird daraus ein grafischer GIT Client. Er hat darüber auch schon geschrieben.

Chip der Woche

Für diese Woche hat Raphael den UC3843 herausgesucht. Ein generischer PWM Controller mit dem man alles aufbauen kann, das irgendwie getaktet werden muss. Für einen Schaltregler lässt sich der Chip hervorragend einsetzen, allerdings bringt er keine Schutzschaltung mit.

Schmartwatch [15]: Python Support

Vor einigen 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.