In diesem Beitrag möchte ich dir den Mikrocontroller Adafruit Feather M4 Express ATSAMD51 vorstellen.
Diesen Mikrocontroller habe ich vom Kollegen Thorsten S. für dieses Review zur Verfügung gestellt bekommen. Daher geht zunächst ein großer Dank an diesen.
Einen Mikrocontroller mit dem SAMD21 Chip habe ich bereits im Beitrag Mikrocontroller SAMD21 (XIAO) von Seeedstudio vorgestellt. Jedoch verfügt der ATSAMD51 über mehr Features, wie zbsp. Security Chips.
Bezug
Den Adafruit Feather M4 Express kannst du auf im offiziellen Shop von Adafruit für 19,05 € zzgl. Versandkosten erstehen.
Du bekommst diesen Mikrocontroller auch auf Portalen wie ebay.de*, amazon.de* oder berrybase.de jedoch sind die Preise deutlich höher und somit ist man dieses Mal im offiziellen Shop am günstigsten.
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Lieferumfang
Der Mikrocontroller wird in einer kleinen, beschrifteten Tüte ausgeliefert, welche neben dem Mikrocontroller auch die Stiftleisten enthält, welche an diesen gelötet werden kann.
Technische Daten
Auf dem Mikrocontroller ist der Microchip vom Typ ATSAMD51 Cortex M4 verbaut.
Hier nun in Auszug aus den technischen Daten des Adafruit Feather M4 aus der offiziellen englischen Dokumentation.
Mikrocontroller | 32bit ATSAMD51 Cortex M4 |
Taktgeschwindigkeit | 120 MHz |
Speicher | 512 KB Flashspeicher 192 KB SRAM 2 MB SPI Flashspeicher (für Dateien und CircuitPython Code) |
RTC | 32.768 KHz |
Betriebsspannung | 3,3V |
GPIO | 21x GPIO, 6x Hardware SERCOM, (SPI, I²C, UART), 16x PWM, I²S In-/Output |
Features | Build in Cryptoengine mit256bit AES, true RNG, PubKey Controller 8-bit Capture Controller (für Kamera / Video eingang), 100mA LiPo Ladegerät inkl. Status LED, RESET Button, 4 Löcher zur Montage (⌀ 4mm) |
Abmaße (L x B x H) | 50,8mm x 22,8mm x 7mm |
Pinout des Adafruit Feather M4 ATSAMD51
Auf dem Mikrocontroller sind die einzelnen Pins grob beschriftet.
Jedoch haben die Pins doppelte oder sogar auch dreifache Funktionen bzw. Belegungen und daher möchte ich dir gerne das Pinout des M4 zeigen.
Programmieren
Den Adafruit Feather M4 kannst du in der Arduino IDE, sowie online unter MakeCode mit CiruitPython programmieren.
Einrichten der Arduino IDE zum Programmieren des M4 Express
Damit man das Board in der Arduino IDE programmieren kann, muss man zunächst den passenden Boardtreiber installieren. Zuvor muss man aber noch die Adresse für den Treiber zu den “zusätzlichen Boardverwalter URLs” hinzufügen.
https://adafruit.github.io/arduino-board-index/package_adafruit_index.json
Nachdem nun die zusätzliche Quelle hinzugefügt wurde, kann der Boardverwalter unter “Werkzeuge” > “Board: xyz” > “Boardverwalter…” geöffnet werden. In diesem suchen wir nun mit dem Schlagwort “feather” und wählen den Eintrag mit dem Board “Adafruit Feather M4 Express” aus.
Während der Installation wird ein ca. 154 MB großes Paket geladen und installiert. Da die Server “etwas schwach auf der Brust” sind, dauert dieses verhältnismäßig lange.
Nachdem der Treiber installiert wurde, kann nun das Board aus dem neuen Menü “Adafruit” gewählt werden.
Upload eines einfachen Sketches in der Arduino IDE
Testen wir zunächst einmal ob die Kommunikation funktioniert und laden ein einfaches Sketch / Programm hoch. Da der Mikrocontroller über eine verbaute LED verfügt, welche über einen digitalen Pin angesprochen werden kann, möchten wir diese zunächst zum Blinken bringen.
#define led 13 void setup() { pinMode(led, OUTPUT); } void loop() { digitalWrite(led, HIGH); delay(500); digitalWrite(led, LOW); delay(500); }
Wenn der Code hochgeladen wird, erhalten wir zusätzlich folgende Ausgabe in der Konsole.
Der Sketch verwendet 10920 Bytes (2%) des Programmspeicherplatzes. Das Maximum sind 507904 Bytes.
Device : ATSAMD51x19
Version : v1.1 [Arduino:XYZ] May 17 2020 17:56:23
Address : 0x0
Pages : 1024
Page Size : 512 bytes
Total Size : 512KB
Planes : 1
Lock Regions : 32
Locked : none
Security : false
BOD : false
BOR : true
Write 11176 bytes to flash (22 pages)
[==============================] 100% (22/22 pages)
Done in 0.228 seconds
Verify 11176 bytes of flash
[==============================] 100% (22/22 pages)
Verify successful
Done in 0.299 seconds
Während der Sketch hochgeladen wird, blinkt das RGB Pixel kurz in Grün auf, das bedeutet, dass der interne Bootloader auf “Arduino” umgestellt wurde. Im Anschluss wird der Sketch gestartet und in diesem Fall blinkt die LED im Intervall.
Einrichten für das Programmieren mit CircuitPython
Den Mikrocontroller kann man nicht nur mit C/C++ in der Arduino IDE programmieren, sondern auch in CircuitPython. Dafür muss man jedoch zunächst den Feather M4 mit einem neuen Bootloader flashen bzw. mit einem zusätzlichen. Der “alte” Bootloader bleibt bei diesem Prozess erhalten, aber dazu später mehr.
Im Beitrag Microcontroller SAMD21 (XIAO) von Seeedstudio habe ich bereits gezeigt, wie man einen Mikrocontroller für die Programmierung mit CircuitPython flasht.
Den neuen Bootloader für CircuitPython kannst du auf der CiruitPython Seite für den Adafruit Feather M4 Express kostenfrei herunterladen.
Wenn die knapp 1 MB große Datei herunterladen wurde, muss diese auf das Laufwerk des Feathers kopiert werden. Um das Laufwerk anzuzeigen, muss der Mikrocontroller mit dem Computer verbunden werden und die RESET-Taste zweimal betätigt werden.
Es sollte nun ein neues Laufwerk F:\FEATHERBOOT angezeigt werden (siehe Bild).
Der Laufwerksbuchstabe kann bei dir natürlich variieren.
Auf dieses Laufwerk wird jetzt entweder per Drag’n Drop oder Kopieren & Einfügen die *u2f Datei kopiert.
Wenn der Vorgang abgeschlossen ist, dann wird das Laufwerk entfernt und neu als F:\
Auf dieses Laufwerk können jetzt die CircuitPython Skripte gespeichert werden. Der Dateiname dazu lautet jeweils “code.py”.
MU Editor zum Programmieren unter CircuitPython
Zum Programmieren empfiehlt Adafruit den MU Editor welcher in der Version 1.1.0 beta-4 zum kostenlosen Download unter https://codewith.mu/en/download bereitsteht.
Die Installation ist recht einfach und läuft auch ohne erweiterte Berechtigungen unter Microsoft Windows 10 durch. Der erste Start des Editors dauert etwas länger, da dort die Pakete geladen werden.
Zum Programmieren des Adafruit Feather M4 Express wählen wir den Eintrag “CircuitPython” aus dem Dialog “Modus wählen” aus.
Danach können wir auch schon mit der Programmierung beginnen.
import board import digitalio import time led = digitalio.DigitalInOut(board.D13) led.direction = digitalio.Direction.OUTPUT while True: led.value = True time.sleep(1) led.value = False time.sleep(1)
Im obrigen Code bringen wir wiederum die BUILD_IN LED am Pin 13 zum blinken.
Konsolenausgaben über Putty empfangen
Wir können auch auf dem seriellen Port des Mikrocontrollers Daten ausgeben. Hier ein kleines Programm, welches in einem Intervall von 1,5 Sekunden die Zeichenkette “Hello World!” ausgibt.
from time import sleep while True: print("Hello World!") sleep(1.5)
Diese Datei bzw. den Code speichern wir auf dem Laufwerk F:\CIRCUITPY unter dem Dateiname “code.py”. Dieser Code wird sofort ausgeführt!
Damit wir die Ausgabe ablesen können, benötigen wir ein Terminal Programm, hier nutze ich das bekannte Tool Putty.
Wenn Putty gestartet ist, muss lediglich
- die RadioBox “Serial” gewählt werden,
- im Feld “Serial line” der COM-Port eingetragen, sowie
- im Feld “Speed” die Baudrate auf 115200 gesetzt werden
Solltest du den COM-Port vom Mikrocontroller nicht wissen, so kannst du diesen aus dem Gerätemanager von Windows ablesen.
Ausblick & Fazit
Der Mikrocontroller bietet durch seine Fähigkeit über der Arduino IDE & CircuitPython programmiert zu werden ein größeres Einsatzspektrum.
Des Weiteren verfügt dieser auch über eine FPU und somit verbraucht dieser bei bestimmten Rechenaufgaben deutlich weniger Strom, was besonders für Low Power Anwendungen, wie sie im IoT recht üblich sind, von Vorteil ist.
Einzig der doch recht hohe Anschaffungspreis ist ein kleiner Nachteil, aber dafür bekommt man einiges geboten.
Wer jedoch auf die FPU verzichten kann, ist wiederum mit einem ESP32 oder einem Arduino Nano 33 IoT durchaus besser beraten.