Startseite>Trinket M0 mit Python programmieren
Aus Raspberry Pi Geek 02/2019

Trinket M0 mit Python programmieren

© Tracy Fox, 123RF

Durchgeschlängelt

Bernhard Bablok

Mit den M0-Boards steigen Sie unkompliziert in die Welt der Mikrocontroller ein – ganz ohne C-Kenntnisse.

Anders als ein RasPi sind Mikrocontroller sehr spartanisch ausgestattet: Sie haben wenig Speicher, arbeiten vergleichsweise langsam und verfügen über nur wenige Schnittstellen. Anstelle eines Betriebssystems, das die Ressourcen verwaltet, läuft nur ein einziges Programm in einer Endlosschleife.

Auf der Habenseite stehen dafür Schnittstellen, die ein Raspberry Pi nicht anbietet, sowie das vorhersagbare Abarbeiten von Kommandos. Hinzu kommen der verminderte Platzbedarf und der im Vergleich zum Mini-PC noch mal um eine Größenordnung geringere Stromverbrauch.

Spezielle Entwicklerboards sowie einfache Entwicklungsumgebungen (siehe Arduino) haben zwar den Zugang zu den Mikrocontrollern stark vereinfacht, doch die Lernkurve gestaltet sich nach wie vor hoch: Der Anwender muss nicht nur die spezifische IDE installieren und bedienen, sondern auch Assembler oder zumindest C beherrschen.

Leichter fällt der Einstieg mit Boards, die eine spezielle Firmware mit Python-Support besitzen: Diese Skriptsprache erlaubt es, einfache Programme in überschaubarer Zeit zu entwickeln, da das Kompilieren, Linken und Flashen entfällt. Der Nachteil: Die beschränkten Ressourcen des Boards lassen sich nicht optimal nutzen. Für ein Prototyping oder kleinere Projekte genügt Python aber allemal.

Für diesen Artikel fiel die Wahl auf den Trinket M0 von Adafruit, den Sie etwa bei der deutschen Filiale von Pimoroni für rund 10 Euro erhalten [1]. Das Board rangiert in Sachen Ausstattung am unteren Ende der Skala, bietet aber trotzdem viele Möglichkeiten der größeren Boards und ermöglicht für den Preis viel Bastelspaß.

Die Hardware

Die M0-Platine (Abbildung 1) ist gerade einmal so groß wie ein Daumennagel. Adafruit liefert das Board zusammen mit ein paar Headern zum Einlöten. Außer diesen und einem Micro-USB-Anschluss gibt es keine weiteren externen Schnittstellen, abgesehen von dem kleinen Reset-Button am anderen Ende des Boards. Der USB-Anschluss dient dazu, die Platine mit Strom zu versorgen, und als serielle Schnittstelle. Außerdem meldet sich der Trinket damit als Massenspeicher, sobald Sie ihn per Datenkabel an einen Rechner hängen.

Abbildung 1: Hängen Sie den Trinket M0 mit einem USB-Datenkabel an einen Rechner, meldet er sich als Massenspeicher, was interessante Möglichkeiten eröffnet.

Abbildung 1: Hängen Sie den Trinket M0 mit einem USB-Datenkabel an einen Rechner, meldet er sich als Massenspeicher, was interessante Möglichkeiten eröffnet.

Bei den Komponenten findet sich neben einem Atmel ATSAMD21E18A noch eine RGB- sowie je eine rote und grüne LED. Letztere signalisiert den Zustand, die beiden anderen dürfen Sie frei steuern. Ein Regler setzt die 5 Volt des USB-Anschlusses in stabile 3,3 Volt für die M0-Platine um – damit eignet sich das Board bestens zur Verbindung mit einem RasPi. Die Stromversorgung kann alternativ auch via Batterie erfolgen.

Für den Betrieb von Sensoren stehen Ausgänge mit 3,3 Volt und 5 Volt bereit. Von den zehn Pins sind fünf für Strom, Masse und Reset reserviert, die anderen fünf dürfen Sie für eigene Zwecke nutzen – alle als digitale Ein-/Ausgänge, drei auch als analoge 12-Bit-Eingänge.

Einige Pins haben besondere Funktionen: So unterstützt Pin 1 echtes analoges Out, während die Pins 0 und 1 eine in Hardware implementierte I2C-Schnittstelle bieten. Neben I2C bringt der Trinket M0 zusätzlich ein SPI-Interface und eine weitere serielle Schnittstelle mit, die Sie aber nicht gleichzeitig betreiben dürfen.

Als Mikrocontroller dient ein mit 48 MHz getakteter Cortex M0+ (32 Bit). Für Programme stehen 256 KByte Flash und 32 KByte RAM bereit – hier ist Sparsamkeit angesagt. Die teureren M0-Modelle besitzen mehr Flash (bis zu 2 MByte) und eignen sich damit besser für komplexe Programme.

Inbetriebnahme

Sobald Sie den Trinket M0 an eine USB-Buchse anschließen, bootet das Board und das vorinstallierte Programm startet. Das erkennen Sie anhand der RGB-LED, die dann durch alle Regenbogenfarben wechselt. Je nach Betriebssystem des Host-Rechners sehen Sie zusätzlich ein Laufwerk mit dem Label CIRCUITPY.

Benutzen Sie einen RasPi oder ein anderes Linux-System, bemühen Sie dafür den Befehl sudo blkid. Hängt die von Ihnen verwendete Distribution angesteckte USB-Medien nicht automatisch ein, führen Sie den Befehl aus der zweiten Zeile von Listing 1 in einem Terminal aus. Auf Ihrem System ersetzen Sie gegebenenfalls sda1 durch das Device, das Sie über den Blkid-Befehl ermittelt haben. Die Option sync stellt sicher, dass Änderungen am Programmcode ohne Verzögerung auf dem Flash des Mikrocontrollers landen.

Für die Arbeit mit dem Trinket empfiehlt es sich, einen eventuell aktiven Automounter auszuschalten. Unter Raspbian erledigen Sie das im Dateimanager unter Einstellungen | Datenträgerverwaltung. Auf dem Laufwerk (Abbildung 2) sehen Sie diverse Dateien, von denen eigentlich nur main.py sowie das Verzeichnis lib/ von Interesse sind.

Im Unterverzeichnis Windows 7 Driver liegt der Treiber der seriellen USB-Schnittstelle für das gleichnamige Betriebssystem. Die anderen Dateien dienen dazu, einen Mac vom Zumüllen der winzigen Platte mit Dateien abzuhalten. Verwenden Sie ausschließlich Linux, dürfen Sie alle Dateien außer main.py und lib löschen, um so Platz zu schaffen.

Abbildung 2: Nach dem Einbinden des Trinket&nbsp;M0 als Laufwerk sehen Sie auf der kleinen Festplatte das Programm <code>main.py</code>, das der Controller nach dem Starten automatisch ausf&uuml;hrt.

Abbildung 2: Nach dem Einbinden des Trinket M0 als Laufwerk sehen Sie auf der kleinen Festplatte das Programm main.py, das der Controller nach dem Starten automatisch ausführt.

Da sich der Controller als normaler USB-Speicher am Hostrechner meldet, sollten Sie vor dem Abziehen das Laufwerk auswerfen beziehungsweise unter Linux mit dem Befehl aus Zeile 4 von Listing 1 aushängen. Das gilt auch, wenn Sie den Reset-Button betätigen: Er trennt das Board kurzzeitig vom Strom, was einem kurzen Ein- und Ausstecken entspricht.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland