Skip to content

Technik Blog

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

Menu
  • Smarthome
  • Gartenautomation
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Deutsch
  • English
Menu

Einführung in den Adafruit Feather M0 Express: Der perfekte Mikrocontroller für CircuitPython

Posted on 25. November 202424. November 2024 by Stefan Draeger

In diesem ersten Beitrag zum Adafruit Feather M0 Express möchte ich dir diesen vielseitigen und leistungsstarken Mikrocontroller näher vorstellen. Egal ob du Einsteiger in der Mikrocontroller-Programmierung bist oder ein erfahrener Entwickler, der Feather M0 Express bietet dir alles, was du für kreative Projekte brauchst.

Ich werde dir einen Überblick über seine Features, Einsatzmöglichkeiten und Vorteile geben – und dir zeigen, warum dieser Mikrocontroller in Verbindung mit CircuitPython eine ideale Wahl für schnelle und einfache Projekte ist.

Einführung in den Adafruit Feather M0 Express: Der perfekte Mikrocontroller für CircuitPython
Dieses Video auf YouTube ansehen.

Disclaimer: Der Adafruit Feather M0 Express, über den ich in diesem Beitrag berichte, war Teil des FeatherWing Kits, das mir von der Firma Würth Elektronik zu einem stark vergünstigten Preis für ein Review zur Verfügung gestellt wurde. Meine Meinung und Bewertung des Produkts bleiben jedoch unabhängig und ehrlich.

Falls du Interesse an diesem Mikrocontroller hast, kannst du ihn auch einzeln in vielen gängigen Elektronik-Shops erwerben.

Inhaltsverzeichnis

  • Aufbau des Mikrocontrollers – Adafruit Feather M0 Express
    • Pinout des Feather M0 Express von Adafruit
    • Features des Adafruit Feather M0 Express
    • Erweiterung der drahtlosen Kommunikation
  • Bezug des Mikrocontrollers
  • Flashen des Mikrocontrollers für die Programmierung in CircuitPython
    • Download der passenden UF2 Datei
  • MU – Editor zum Programmieren in CircuitPython
    • Ausführen von Code im Modus CircuitPython
  • Auslesen / anzeigen der verfügbaren Pins
  • SMD LED am Pin D13 programmieren
  • NeoPixel programmieren
  • Ausblick

Aufbau des Mikrocontrollers – Adafruit Feather M0 Express

Nachfolgend zunächst die technischen Daten des Mikrocontrollers:

EigenschaftDetails
Abmessungen51 mm x 23 mm x 8 mm (ohne angelötete Header)
Gewicht5 g (leicht wie eine große Feder)
ProzessorATSAMD21G18 @ 48MHz mit 3.3V Logik/Spannung
Speicher256 KB Flash, 32 KB RAM
EEPROMNicht vorhanden
Taktgeber32.768 KHz Kristall für Uhr- und RTC-Generierung
Spannungsregler3.3V mit bis zu 500mA Spitzenstromausgabe
USB-UnterstützungNative USB-Unterstützung mit Bootloader und serieller Debugging-Schnittstelle
GPIO-Pins20 GPIO-Pins
SchnittstellenHardware-Serial, I2C, SPI
PWM-AusgängePWM auf allen Pins
Analoge Eingänge6 x 12-Bit Analog-Eingänge
Analog-Ausgang (DAC)1 x 10-Bit Analog-Ausgang
Lipo-LadefunktionEingebauter 100mA LiPo-Lader mit Lade-LED
LEDPin #13 rote LED für allgemeine Blinkzwecke
EnergieverwaltungPower-/Enable-Pin
Befestigungsmöglichkeiten4 Montageschraubenlöcher
Reset-TasteVorhanden

Dieser Mikrocontroller vereint viele nützliche Features in einem kleinen Formfaktor und eignet sich perfekt für eine Vielzahl von Anwendungen, von Prototyping bis hin zu fertigen Projekten.

Was diesem Mikrocontroller jedoch fehlt, sind drahtlose Schnittstellen wie Bluetooth oder WiFi. Das solltest du bei der Planung deiner Projekte berücksichtigen. Glücklicherweise lassen sich solche Funktionen einfach nachrüsten, beispielsweise durch kompatible Erweiterungen wie FeatherWings oder externe Module. Dies eröffnet dennoch eine hohe Flexibilität für verschiedenste Anwendungen.

Pinout des Feather M0 Express von Adafruit

Auf der offiziellen englischen Seite zum Adafruit Feather M0 Express findest du eine sehr ausführliche Auflistung aller Features, hier möchte ich dir zunächst das Pinout präsentieren.

Features des Adafruit Feather M0 Express

Der Adafruit Feather M0 Express zeichnet sich durch mehrere beeindruckende Features aus, die ihn zu einer äußerst vielseitigen Plattform für Elektronikprojekte machen. Zwei besondere Eigenschaften heben ihn dabei hervor:

  1. Integrierter Anschluss für LiPo-Batterien
    Der Feather M0 Express verfügt über einen Anschluss für LiPo-Batterien, was ihn ideal für mobile und unabhängige Projekte macht. Zusätzlich bietet der Mikrocontroller eine integrierte Ladefunktion, mit der die angeschlossene Batterie bequem über USB aufgeladen werden kann. Damit ist der Feather perfekt für batteriebetriebene Anwendungen geeignet, ohne dass zusätzliche Ladegeräte erforderlich sind.
  2. Feld für individuelle Erweiterungen
    Auf dem Board befindet sich ein spezielles Feld, auf dem du Module oder Sensoren direkt auflöten kannst. Dieses Feature erlaubt es dir, den Mikrocontroller genau an deine Bedürfnisse anzupassen, sei es durch das Hinzufügen von Sensoren, drahtlosen Schnittstellen oder anderen Komponenten. Durch diese Flexibilität wird der Feather M0 Express zu einer universellen Plattform, die sowohl für Prototyping als auch für dauerhafte Projekte eingesetzt werden kann.

Mit diesen Eigenschaften ist der Feather M0 Express nicht nur leistungsstark, sondern auch extrem anpassbar und vielseitig einsetzbar – perfekt für alle, die maßgeschneiderte Lösungen suchen.

Erweiterung der drahtlosen Kommunikation

Der Adafruit Feather M0 Express verfügt ab Werk nicht über drahtlose Schnittstellen wie Bluetooth oder WiFi, was ihn für IoT-Anwendungen nur bedingt geeignet macht. Allerdings lässt sich diese Einschränkung mit einfachen Mitteln beheben:

Ein serielles Bluetooth-Modul, wie das beliebte HC-06, kann unkompliziert angeschlossen werden, um die fehlende Bluetooth-Funktionalität zu ergänzen. Mit dieser Erweiterung lässt sich der Mikrocontroller problemlos in drahtlose Kommunikationsszenarien integrieren und für IoT-Projekte aufrüsten.

Vorderseite des HC-06 Moduls
Vorderseite des HC-06 Moduls
Rückseite des HC-06 Moduls mit Pinbeschriftung
Rückseite des HC-06 Moduls mit Pinbeschriftung

Diese Anpassungsmöglichkeit zeigt die Flexibilität des Feather M0 Express und erlaubt es, ihn je nach Projektanforderungen zu erweitern.

Bezug des Mikrocontrollers

Diesen Mikrocontroller kannst du, wie bereits erwähnt, über die gängigen Elektronikshops wie Amazon.de, eBay.de und andere Plattformen beziehen. Da der Adafruit Feather M0 Express bereits seit einigen Jahren auf dem Markt erhältlich ist, ist er mittlerweile auch zu einem sehr erschwinglichen Preis verfügbar. Das macht ihn besonders attraktiv, für Hobbyisten und Entwickler, die leistungsstarke Hardware zu einem günstigen Preis suchen.

  • amazon.de* – 33,96 €
  • ebay.de* – 33,97 €
  • adafruit.com – 19,95 $ (ca. 19,15 €)
  • paradisetronic.com – 29,97 €

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!

Flashen des Mikrocontrollers für die Programmierung in CircuitPython

Im ausgelieferten Zustand war dieser Mikrocontroller nicht vorgeflasht, und ich musste zunächst eine Firmware installieren. Glücklicherweise ist dies denkbar einfach und erfordert keine zusätzlichen Tools. Du lädst einfach eine UF2-Datei von der offiziellen Webseite herunter, kopierst sie auf das Board, und schon ist die Firmware installiert – einfacher geht’s nicht! 😊

Um den Mikrocontroller in den Flash-Modus zu versetzen, musst du die RESET-Taste zweimal schnell hintereinander drücken. Wenn dies erfolgreich war, sollte ein neues Laufwerk im Datei-Explorer deines Computers angezeigt werden. Über dieses Laufwerk kannst du dann die benötigte UF2-Datei einfach per Drag-and-Drop kopieren, um die Firmware zu installieren.

Download der passenden UF2 Datei

Die Firmware findest du unter https://circuitpython.org/downloads, wenn du nach der Bezeichnung des Mikrocontrollers suchst.

Wenn du deinen passenden Mikrocontroller ausgewählt hast, dann kannst du auf der neuen Seite die aktuelle Version von CircuitPython herunterladen.

Diese Datei kopierst du nun einfach in das Laufwerk „Featherboot“ und der Mikrocontroller wird sofort geflasht und neu gestartet.

MU – Editor zum Programmieren in CircuitPython

Für die Programmierung verwende ich dieses Mal den MU – Editor, diesen bekommst du kostenfrei für Windows, macOS und Linux unter https://codewith.mu/en/download.

Du kannst diese kleine, aber leistungsstarke Entwicklungsumgebung ebenso für andere Mikrocontroller und Python ähnliche Programmiersprachen nutzen.

Ausführen von Code im Modus CircuitPython

Im CircuitPython-Modus wirst du feststellen, dass es keine Schaltfläche zum Ausführen von Code gibt. Stattdessen wird der aktuelle Code automatisch ausgeführt, sobald die Datei gespeichert wird.

Allerdings ist dieses Feature nicht ganz fehlerfrei: Wenn du die IDE neu startest, wird die zuletzt bearbeitete Datei zwar wieder geöffnet und angezeigt. Änderungen, die du daran vornimmst und speicherst, werden zwar übernommen, aber der Code wird nicht ausgeführt. Um dieses Problem zu umgehen, musst du die Datei zunächst schließen und erneut direkt vom Mikrocontroller öffnen. Das stellt sicher, dass deine Änderungen korrekt ausgeführt werden.

Auslesen / anzeigen der verfügbaren Pins

Damit wir die diversen Pins ansprechen können, benötigen wir das Modul board. Dieses bietet einen direkten Zugriff auf die Pins, jedoch sind diese von Mikrocontroller zu Mikrocontroller unterschiedlich. Über die Schaltfläche Seriell öffnen wir einen neuen Reiter, wo wir zum REPL gelangen. Um den Modus zu verlassen, musst du die Tastenkombination Strg+D betätigen!

Eine REPL (Read-Eval-Print-Loop), auch bekannt als interaktive Konsole oder Programmiershell, ist eine einfache Umgebung für Programmierung. Hier kannst du einen Befehl eingeben, der sofort ausgeführt wird, und die Antwort wird dir direkt angezeigt. Programme in einer REPL werden Schritt für Schritt ausgeführt.

Zunächst importieren wir das Modul board, und geben anschließend mit dem Befehl dir die Pins aus.

Adafruit CircuitPython 9.2.1 on 2024-11-20; Adafruit Feather M0 Express with samd21g18
>>> import board
>>> dir(board)
['__class__', '__name__', 'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'BATTERY', 'D0', 'D1', 'D10', 'D11', 'D12', 'D13', 'D5', 'D6', 'D9', 'I2C', 'LED', 'MISO', 'MOSI', 'NEOPIXEL', 'RX', 'SCK', 'SCL', 'SDA', 'SPI', 'TX', 'UART', 'VOLTAGE_MONITOR', '__dict__', 'board_id']
>>> 

Dieses ist nun die Liste aller Pins, welche wird direkt ansprechen und verwenden können.

SMD LED am Pin D13 programmieren

Der Mikrocontroller verfügt über eine kleine, rote SMD LED am digitalen Pin D13, welche du frei programmieren kannst. Im ersten Beispiel möchte ich dir jetzt gerne zeigen, wie du diese zum Blinken bringen kannst.

# Modul für die Ansteuerung der GPIOs vom Board
import board
# Modul für das setzen des Typs des Pins
import digitalio
# aus dem Modul time die Funktion sleep importieren
from time import sleep

# Variable led mit definiertem Pin board.D13
led = digitalio.DigitalInOut(board.D13)
# den difinierten Pin als Ausgang
led.direction = digitalio.Direction.OUTPUT

# starten einer Endlosschleife
while True:
    # setzen des Status der LED
    # es wird ein umgekehrter Status zugewiesen
    led.value = not led.value
    # einlegen einer kleinen Pause von 0,5 Sekunden
    sleep(0.5)

NeoPixel programmieren

Das verbaute Neopixel dient als Indikator für den Upload von Code und den Zustand des Flash-Modus, zusätzlich kannst du diese aber auch frei programmieren. Dieses Bauteil ist über den Pin D8 oder der Bezeichnung NEOPIXEL erreichbar. Damit wir diese programmieren können benötigen wir jedoch zusätzlich das Modul NeoPixel von der Seite https://github.com/adafruit/Adafruit_CircuitPython_NeoPixel/releases als ZIP-Datei herunterladen können.

Aus der ZIP-Datei entnehmen wir die Datei neopixel.mpy welche wir in den Ordner /lib auf dem Mikrocontroller kopieren. (ggf. ist bereits eine Datei vorhanden, welche wir einfach überschreiben)

Mit dem NeoPixel-Modul kannst du LED-Stripes programmieren, die aus vielen einzelnen NeoPixel-LEDs bestehen können. Auf dem Adafruit Feather M0 Express ist jedoch nur eine einzelne NeoPixel-LED verbaut. Daher übergeben wir beim Initialisieren der NeoPixel-Instanz einfach die Zahl 1, da wir nur mit dieser einen LED arbeiten. Im späteren Code wählen wir den ersten Eintrag im Array aus, um die LED zu steuern.

Bei der Objektinstanziierung legen wir auch die Helligkeit fest. Für das Video verwende ich den Wert 0.3, was ausreicht, damit die Kamera die NeoPixel-Farben gut aufnimmt.

Die RGB-Werte werden als Tupel im Format (Rot, Grün, Blau) übergeben. Die Werte reichen von 0 (aus) bis 255 (maximale Helligkeit). Wenn du eine bestimmte Farbe auswählen möchtest, kannst du den ColorPicker auf der Seite RapidTables nutzen. Dort kannst du Farben mischen und die entsprechenden RGB-Werte einfach kopieren.

# Importieren der benötigten Module
import board  # Enthält Board-spezifische Definitionen
import time   # Ermöglicht das Verwenden von Zeitfunktionen
import neopixel  # Modul für die Steuerung von NeoPixel-LEDs

# Initialisieren der NeoPixel-LED auf dem Board
neopixels = neopixel.NeoPixel(
                board.NEOPIXEL,  # Pin, an dem die NeoPixel-LED angeschlossen ist
                1,               # Anzahl der LEDs (hier nur eine LED)
                brightness=0.3,  # Helligkeit der LED (Skala von 0.0 bis 1.0)
                auto_write=False # Verhindert automatisches Aktualisieren; muss explizit aufgerufen werden
            )

# Definition der Farben als RGB-Tupel
blau = (0, 0, 255)  # Blau: Rot = 0, Grün = 0, Blau = 255
aus = (0, 0, 0)     # Aus: Alle Farben auf 0

# Endlosschleife zum Blinken der LED
while True:
    neopixels[0] = blau  # Setzt die LED auf Blau
    neopixels.show()     # Zeigt die eingestellte Farbe an
    time.sleep(0.5)      # Wartet 0,5 Sekunden

    neopixels[0] = aus   # Schaltet die LED aus
    neopixels.show()     # Aktualisiert die LED, um sie auszuschalten
    time.sleep(0.5)      # Wartet 0,5 Sekunden

Ausblick

Dies war nur der erste Einblick in die Möglichkeiten des Adafruit Feather M0 Express. In den kommenden Beiträgen werde ich tiefer in die Programmierung mit CircuitPython eintauchen und dir Schritt für Schritt zeigen, wie du den Mikrocontroller im MU Editor programmierst.

Außerdem werde ich darauf eingehen, wie du den Feather M0 Express speziell für IoT-Projekte aufrüsten und optimieren kannst. Von der Integration drahtloser Module bis hin zur Nutzung von Cloud-Diensten – es erwarten dich spannende Themen.

Bleib also dran und sei gespannt auf weitere Tutorials und Projekte! 🚀

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

link zu Fabook
link zu LinkedIn
link zu YouTube
link zu TikTok
link zu Pinterest
link zu Instagram
  • 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}