Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

Was kann der Adafruit Feather M4 ATSAMD51?

Posted on 24. Mai 20214. März 2025 by Stefan Draeger

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.

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.

Mikrocontroller32bit 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 Mikrocontroller 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 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).

Laufwerk "FEATHERBOOT" im Wondows Explorer
Laufwerk „FEATHERBOOT“ im Wondows Explorer

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.

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

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

Schreibe einen Kommentar Antworten abbrechen

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

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}