Was kann der Adafruit Feather M4 ATSAMD51?

In diesem Beitrag möchte ich dir den Microcontroller Adafruit Feather M4 Express ATSAMD51 vorstellen.

Diesen Microcontroller 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 Microcontroller mit dem SAMD21 Chip habe ich bereits im Beitrag Microcontroller 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 Microcontroller 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.

Lieferumfang

Der Microcontroller wird in einer kleinen, beschrifteten Tüte ausgeliefert welche neben dem Microcontroller auch die Stiftleisten enthält welche an diesen gelötet werden kann.

technische Daten

Auf dem Microcontroller ist der Microchip vom Typ ATSAMD51 Cortex M4 verbaut.

ATSAMD51 auf dem Adafruit Feather M4 Express
ATSAMD51 auf dem Adafruit Feather M4 Express

Hier nun in Auszug aus den technischen Daten des Adafruit Feather M4 aus der offiziellen englischen Dokumentation.

Microcontroller32bit ATSAMD51 Cortex M4
Taktgeschwindigkeit120 MHz
Speicher512 KB Flashspeicher
192 KB SRAM
2 MB SPI Flashspeicher (für Dateien und CircuitPython Code)
RTC32.768 KHz
Betriebsspannung3,3V
GPIO21x GPIO,
6x Hardware SERCOM, (SPI, I²C, UART),
16x PWM,
I²S In-/Output
FeaturesBuild 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
technische Daten des Adafruit Feather M4 ATSAMD51

Pinout des Adafruit Feather M4 ATSAMD51

Auf dem Microcontroller sind die einzelnen Pins grob beschriftet.

beschriftete Rückseite des Adafruit Feather M4 Express
beschriftete Rückseite des Adafruit Feather M4 Express

Jedoch haben die Pins doppelte oder sogar auch dreifache Funktionen bzw. Belegungen und daher möchte ich dir gerne das Pinout des M4 zeigen.

Pinout des Adafruit Feather M4 Express
Pinout des Adafruit Feather M4 Express

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
hinzufügen einer zusätzlichen Boardverwalter ULR in der Arduino IDE
hinzufügen einer zusätzlichen Boardverwalter ULR in der Arduino IDE

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.

Auswahl des Paketes in dem Boardverwalter für den M4 Express
Auswahl des Paketes in dem Boardverwalter für den M4 Express

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.

Statusleiste des Boardverwalters
Statusleiste des Boardverwalters

Nachdem der Treiber installiert wurde, kann nun das Board aus dem neuen Menü “Adafruit” gewählt werden.

Auswahl des neu installierten Boardtreibers
Auswahl des neu installierten Boardtreibers

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 Microcontroller ü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 das der interne Bootloader auf “Arduino” umgestellt wurde. Im anschluß wird der Sketch gestartet und in diesem Fall blinkt die LED im intervall.

einrichten für das Programmieren mit CircuitPython

Den Microcontroller 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 Microcontroller 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 1MB große Datei herunterladen wurde muss diese auf das Laufwerk des Feathers kopiert werden. Um das Laufwerk anzuzeigen muss der Microcontroller 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).

Laufwerk "FEATHERBOOT" im Wondows Explorer
Laufwerk “FEATHERBOOT” im Wondows Explorer

Der Laufwerksbuchstabe kann bei dir natürlich variieren.

Auf dieses Laufwerk wird nun entweder per Drag’n Drop oder Kopieren & Einfügen die *u2f Datei kopiert.

kopieren des zusätzlichen Bootloaders auf den Microcontroller
kopieren des zusätzlichen Bootloaders auf den Microcontroller

Wenn der Vorgang abgeschlossen ist, dann wird das Laufwerk entfernt und neu als F:\

CIRCUITPY Laufwerk
CIRCUITPY Laufwerk

Auf dieses Laufwerk können nun 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 bereit steht.

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.

Editor Mu - wählen des Modus
Editor Mu – wählen des Modus

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 Microcontrollers 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 Microcontroller nicht wissen, so kannst du diesen aus dem Gerätemanager von Windows ablesen.

Ausblick & Fazit

Der Microcontroller bietet durch seine Fähigkeit über der Arduino IDE & CircuitPython programmiert zu werden einen größeren 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.

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.