Mikrocontroller-Programmierung: All-in-One Starter Kits fĂĽr Arduino und Pico 2
Die All-in-one Starter Kits von Elecrow sind dafür geeignet, Anfängern den Einstieg in das Thema Microcontroller zu erleichtern.
(Bild: AlesiaKan/ Shutterstock.com)
- Dr. Michael Stal
Wer beginnt, sich mit Embedded-Systemen zu beschäftigen, speziell solchen mit Mikrocontrollern wie Arduino, Raspberry Pi Pico 2 oder ESP32, sollte sich zunächst mit entsprechenden Lerninhalten vertraut machen. Das gilt insbesondere für Anfänger, die sich für IT und Elektronik interessieren. Der harte Weg besteht darin, einen Lötkolben, verschiedene Bauteile und Komponenten sowie einen Mikrocontroller aufzutreiben, um dann im Internet nach entsprechenden Projekten und Lerninhalten zu suchen. Nicht alle, die sich mit Mikrocontrollern beschäftigen, verspüren jedoch Lust aufs Löten oder aufs Verlegen von Kabeln und Komponenten auf einem Breadboard. Zum Glück gibt es hierfür auch den leichten Weg mithilfe von "lötfreien" Starter Kits.
Zwar existierte die Idee und entsprechende Produkte schon länger, aber die beiden Kits von Elecrow kommen in einem handlichen Format und voll integrierten Komponenten für einen moderaten Preis zum Kunden (siehe unten). Die Kits für Arduino und Pico2 bieten eine Vielzahl an Lektionen, die speziell darauf ausgelegt sind, Anfängern die Grundlagen der Elektronik und Programmierung näherzubringen. Im Folgenden bespricht der Artikel jeweils eine Reihe detaillierter Beispiellektionen aus den Kits, um die Lerninhalte und die praktischen Anwendungen zu veranschaulichen.
Videos by heise
All-in-One Starter Kit fĂĽr Arduino
(Bild:Â (c) elecrow)
Das Arduino-Kit enthält 21 Lektionen, die von einfachen Grundlagen bis zu komplexeren Projekten reichen. Dazu stellt es fünfzehn integrierte Module zur Verfügung, die man in eigenen Projekten verwenden kann. Zwei Beispiellektionen:
Lektion 1: LED-Blinken
Diese Lektion ist eine der ersten und einfachsten Ăśbungen, die mit der Arduino-Programmierung vertraut macht. Ziel ist es, eine LED zum Blinken zu bringen.
Lernziele:
- EinfĂĽhrung in die Arduino-IDE.
- Verständnis der grundlegenden Funktionen
setup()undloop(). - Steuerung eines digitalen Ausgangs.
Ablauf:
Das Blinken einer LED gehört zu den fundamentalen "Hello World"-Pendants bei Mikrocontrollern.
- Man verbindet die integrierte LED (Pin 13) mit dem Arduino-Board und
- schreibt ein einfaches Programm, um die LED ein- und auszuschalten.
Codebeispiel in C:
int ledPin = 13; // LED an Pin 13
void setup() {
pinMode(ledPin, OUTPUT); // Pin als Ausgang definieren
}
void loop() {
digitalWrite(ledPin, HIGH); // LED einschalten
delay(1000); // 1 Sekunde warten
digitalWrite(ledPin, LOW); // LED ausschalten
delay(1000); // 1 Sekunde warten
}
Ergebnisse:
Die LED blinkt im Sekundentakt, was ein erstes Erfolgserlebnis vermittelt und zum Weitermachen motiviert.
Lektion 2: Temperaturmessung
In dieser Lektion lernen die Nutzer, wie sie den integrierten Temperatursensor verwenden, um die Umgebungstemperatur zu messen und auf dem seriellen Monitor anzuzeigen.
Lernziele:
- Einführung in analoge Eingänge.
- Nutzung des seriellen Monitors zur Ausgabe von Daten.
- Verständnis der Umwandlung von analogen Werten in Temperaturwerte.
Ablauf:
- Man verbindet den Temperatursensor mit dem Arduino-Board und
- schreibt anschlieĂźend ein Programm, das die analogen Werte des Sensors liest und in Grad Celsius umrechnet.
Codebeispiel in C:
int sensorPin = A0; // Temperatursensor an Pin A0
float voltage, temperature;
void setup() {
Serial.begin(9600); // Serielle Kommunikation starten
}
void loop() {
int sensorValue = analogRead(sensorPin); // Sensorwert lesen
voltage = sensorValue * (5.0 / 1023.0); // Spannung berechnen
temperature = (voltage - 0.5) * 100; // Temperatur berechnen
Serial.print("Temperatur: ");
Serial.print(temperature);
Serial.println(" °C");
delay(1000); // 1 Sekunde warten
}
Ergebnisse:
Die gemessene Temperatur erscheint auf dem seriellen Monitor. Diese Lektion zeigt, wie sich Sensoren in realen Anwendungen nutzen lassen.
All-in-One Starter Kit fĂĽr Pico2
(Bild:Â elecrow)
Das Pico-2-Kit bietet ebenfalls 21 Lektionen, die sich auf die Nutzung des RP2350-Mikrocontrollers und die Integration des Touchscreens konzentrieren. Es enthält 17 fest integrierte Bausteine zur Verwendung in eigenen Projekten.
Hier sind drei Beispiele:
Lektion 1: RGB-LED-Steuerung
Diese Lektion zeigt, wie die RGB-LEDs des Kits gesteuert werden können, um verschiedene Farben darzustellen.
Lernziele:
- EinfĂĽhrung in PWM (Pulsweitenmodulation).
- Steuerung von RGB-LEDs.
- Verständnis der Farbmischung durch unterschiedliche Intensitäten.
Ablauf:
- Man programmiert die RGB-LEDs, um verschiedene Farben darzustellen und
- experimentier mit unterschiedlichen PWM-Werten, um eigene Farbkombinationen zu erstellen.
Codebeispiel in Python:
from machine import Pin, PWM
import time
red = PWM(Pin(15))
green = PWM(Pin(14))
blue = PWM(Pin(13))
def set_color(r, g, b):
red.duty_u16(r)
green.duty_u16(g)
blue.duty_u16(b)
while True:
set_color(65535, 0, 0) # Rot
time.sleep(1)
set_color(0, 65535, 0) # GrĂĽn
time.sleep(1)
set_color(0, 0, 65535) # Blau
time.sleep(1)
Ergebnisse:
Die RGB-LEDs leuchten in verschiedenen Farben, was ein Verständnis für Farbmischung und PWM vermittelt.
Lektion 2: Touchscreen-Benutzeroberfläche
Diese Lektion zeigt die Nutzung des Touchscreens, um eine einfache Bedienoberfläche zu erstellen.
Lernziele:
- EinfĂĽhrung in die Touchscreen-Programmierung.
- Erstellung interaktiver Benutzeroberflächen.
- Verständnis der Koordinatensysteme auf dem Bildschirm.
Ablauf:
- Die Lernenden programmieren den Touchscreen, um BerĂĽhrungen zu erkennen.
- Sie erstellen eine einfache Bedienoberfläche mit Schaltflächen, die verschiedene Aktionen auslösen.
Codebeispiel in Python:
from machine import Pin, PWM
import time
red = PWM(Pin(15))
green = PWM(Pin(14))
blue = PWM(Pin(13))
def set_color(r, g, b):
red.duty_u16(r)
green.duty_u16(g)
blue.duty_u16(b)
while True:
set_color(65535, 0, 0) # Rot
time.sleep(1)
set_color(0, 65535, 0) # GrĂĽn
time.sleep(1)
set_color(0, 0, 65535) # Blau
time.sleep(1)
Ergebnisse:
Man kann den Touchscreen einsetzen, um interaktive Anwendungen zu erstellen, wie ein einfaches MenĂĽ oder ein Spiel.
Lektion 3: Ein komplexeres Programmbeispiel: Intelligentes UmweltĂĽberwachungs- und Sicherheitssystem:
Das Beispiel benutzt eine ganze Vielzahl von Lektionen:
- Echtzeit-Temperatur-/Luftfeuchtigkeitsmessung
- Umgebungslicht-Erkennung
- Bewegungsbasierte Sicherheitsalarme
- LCD-Statusanzeige
- LED-Matrix-Visualisierung
- Summer-Benachrichtigungen
- Benutzerinteraktion via Tasten
- RGB-LED-Statusanzeige
Die dafĂĽr verwendeten Komponenten sind:
- DHT11 Temperatur-/Luftfeuchtigkeitssensor
- Fotowiderstand (Lichtsensor)
- PIR-Bewegungssensor
- 16x2 LCD-Display
- 8x8 LED-Matrix
- Aktiver Summer
- Taster
- RGB-LED
- RGB-Modultaster
FĂĽr das Experiment sind zahlreiche Hardware-Verbindungen notwendig:
Komponente Pico <-> GPIO-Pin
- DHT11 ↔ GP15
- Fotowiderstand ↔ ADC0 (GP26)
- PIR-Sensor ↔ GP16
- LCD I2C ↔ SDA GP0, SCL GP1
- LED-Matrix ↔ DIN GP3, CS GP5, CLK GP2
- Summer ↔ GP14
- Taster 1 ↔ GP17
- Taster 2 ↔ GP18
- RGB-LED (R,G,B) ↔ GP10, GP11, GP12
Code-Implementierung in Python:
import machine
import utime
from dht import DHT11
from lcd_api import LcdApi
from pico_i2c_lcd import I2cLcd
import max7219
# Komponenten initialisieren
# DHT11 Sensor
dht_pin = machine.Pin(15, machine.Pin.IN, machine.Pin.PULL_UP)
dht = DHT11(dht_pin)
# Lichtsensor
licht_sensor = machine.ADC(26)
# PIR-Sensor
pir = machine.Pin(16, machine.Pin.IN)
# LCD-Display
i2c = machine.I2C(0, sda=machine.Pin(0), scl=machine.Pin(1), freq=400000)
lcd = I2cLcd(i2c, 0x27, 2, 16)
# LED-Matrix
spi = machine.SPI(0, baudrate=10000000, polarity=1, phase=0, sck=machine.Pin(2), mosi=machine.Pin(3))
cs = machine.Pin(5, machine.Pin.OUT)
matrix = max7219.Matrix8x8(spi, cs, 4)
# Summer
summer = machine.PWM(machine.Pin(14))
# Taster
taster1 = machine.Pin(17, machine.Pin.IN, machine.Pin.PULL_UP)
taster2 = machine.Pin(18, machine.Pin.IN, machine.Pin.PULL_UP)
# RGB-LED
rot = machine.PWM(machine.Pin(10))
gruen = machine.PWM(machine.Pin(11))
blau = machine.PWM(machine.Pin(12))
# Systemvariablen
anzeige_modus = 0 # 0: Temperatur/Luftfeuchtigkeit, 1: Licht, 2: Status
alarm_aktiv = False
temp_grenzwert = 30
licht_grenzwert = 20000
def setze_rgb(r, g, b):
rot.duty_u16(r * 257)
gruen.duty_u16(g * 257)
blau.duty_u16(b * 257)
def zeige_alarm(nachricht):
lcd.clear()
lcd.move_to(0,0)
lcd.putstr("ALARM!")
lcd.move_to(0,1)
lcd.putstr(nachricht)
def aktiviere_alarm(frequenz=1000, dauer=0.5):
summer.freq(frequenz)
summer.duty_u16(32768)
utime.sleep(dauer)
summer.duty_u16(0)
def zeige_matrix_ikon(symbol):
matrix.fill(0)
for y, zeile in enumerate(symbol):
for x, wert in enumerate(zeile):
matrix.pixel(x, y, wert)
matrix.show()
# Icons fĂĽr LED-Matrix
temp_icon = [
[0,1,1,1,1,1,0,0],
[1,1,1,1,1,1,1,0],
[1,1,1,0,1,1,1,1],
[1,1,0,0,0,1,1,1],
[1,1,0,0,0,1,1,1],
[1,1,1,0,1,1,1,1],
[0,1,1,1,1,1,1,0],
[0,0,1,1,1,1,0,0]
]
bewegungs_icon = [
[0,0,0,1,1,0,0,0],
[0,0,1,1,1,1,0,0],
[0,1,1,1,1,1,1,0],
[1,1,0,1,1,0,1,1],
[1,1,0,1,1,0,1,1],
[0,1,1,1,1,1,1,0],
[0,0,1,1,1,1,0,0],
[0,0,0,1,1,0,0,0]
]
while True:
# Sensoren auslesen
dht.measure()
temp = dht.temperature()
luftfeuchtigkeit = dht.humidity()
licht = licht_sensor.read_u16()
bewegung = pir.value()
# Anzeige aktualisieren
if anzeige_modus == 0:
lcd.clear()
lcd.putstr(f"Temp: {temp}°C")
lcd.move_to(0,1)
lcd.putstr(f"Feuchtigkeit: {luftfeuchtigkeit}%")
zeige_matrix_ikon(temp_icon)
elif anzeige_modus == 1:
lcd.clear()
lcd.putstr(f"Licht: {licht}")
zeige_matrix_ikon([[1 if licht > licht_grenzwert else 0 for _ in range(8)] for _ in range(8)])
else:
lcd.clear()
status = "Sicher" if bewegung == 0 else "BEWEGUNG!"
lcd.putstr(f"Status: {status}")
if bewegung:
zeige_matrix_ikon(bewegungs_icon)
else:
matrix.fill(0)
matrix.show()
# Umgebungsbedingungen prĂĽfen
if temp > temp_grenzwert:
setze_rgb(255, 0, 0) # Rot
zeige_alarm("Hohe Temperatur!")
aktiviere_alarm(2000, 0.2)
elif bewegung and licht < licht_grenzwert:
setze_rgb(0, 0, 255) # Blau
aktiviere_alarm(1500, 0.1)
else:
setze_rgb(0, 255, 0) # GrĂĽn
# Tastereingabe verarbeiten
if not taster1.value():
anzeige_modus = (anzeige_modus + 1) % 3
utime.sleep(0.3)
if not taster2.value():
alarm_aktiv = not alarm_aktiv
utime.sleep(0.3)
utime.sleep(0.5)
Systembetrieb:
In diesem komplexen Beispiel sind verschiedene Arten von Themen integriert.
Als Erstes kommt die UmweltĂĽberwachung:
- Echtzeitdaten auf dem LCD
- Automatische Warnungen bei GrenzwertĂĽberschreitungen
Danach etliche Sicherheitsfunktionen:
- Bewegungserkennung bei Dunkelheit
- Visuelle Warnungen auf der LED-Matrix
- Akustische Signale via Summer
- Farbcodierung der RGB-LED (GrĂĽn=Normal, Rot=Ăśberhitzung, Blau=Bewegung)
Und zu guter Letzt die Benutzersteuerung:
- Taster1: Wechselt Anzeigemodi
- Taster2: Aktiviert/deaktiviert Alarm
- LED-Matrix zeigt passende Symbole
Für das Beispiel gibt es diverse Erweiterungsmöglichkeiten:
- Datenaufzeichnung auf SD-Karte
- IoT-Anbindung fĂĽr FernĂĽberwachung
- Konfigurierbare Grenzwerte via Tastenkombinationen
- Zeitgesteuerter Sicherheitsmodus
- BatterieĂĽberwachung
Preise und Installation
Wer direkt im Elecrow-Shop bestellt, bezahlt 27,70 Dollar fĂĽr das Arduino-Kit und 37,99 Dollar fĂĽr das Pico-2-Kit. Die Nutzung der tragbaren Kits erfordert den Anschluss der Hardware an einen Windows-, Linux- oder Mac-Computer. Sie enthalten dafĂĽr jeweils einen USB-C-Eingang. Ein entsprechendes USB-Kabel muss man bereitstellen. Im Host-Computer bedarf es bei beiden Kits einer Installation der Arduino IDE Version 1.8.19. Ob das Zusammenspiel auch mit einer aktuellen Arduino IDE Version 2.x funktioniert, hat der Autor nicht ĂĽberprĂĽft.
Die englischsprachigen BenutzerhandbĂĽcher lassen sich ĂĽber entsprechende Links fĂĽr die Arduino-Version, siehe hier, und fĂĽr die Pico2-Version, siehe hier, herunterladen.
Code, Schematik und Bibliotheken fĂĽr das Arduino-Kit befinden sich auf Code/Schematic/lib.
Code, Schematik und Bibliotheken fĂĽr das Pico-2-Kit befinden sich auf Code/Schematic/lib.
Fazit
Die Lektionen in den Elecrow All-in-One Starter Kits für Arduino und Pico 2 sind praxisorientiert und bieten eine hervorragende Möglichkeit, Elektronik und Programmierung zu erlernen. Während das Arduino-Kit sich auf grundlegende Sensor- und Aktuatorprojekte konzentriert, ermöglicht das Pico-2-Kit durch den Touchscreen und die RGB-LEDs kreative und interaktive Anwendungen. Beide Kits sind ideal für Anfänger und bieten eine strukturierte Lernumgebung, die Spaß macht und motiviert. Über den Preis lässt sich nicht meckern, aber die jeweiligen Benutzerhandbücher mit den Beispielprojekten könnten bezüglich Format und Umfang Verschönerungen und Erweiterungen erfahren. Die Informationen und Inhalte zu den Lektionen beziehungsweise Beispielprojekten sind sehr knapp gehalten.
Hinweis: Der Autor bekam die beiden Kits vom Hersteller ohne Auflagen zum Test bereitgestellt.
(rme)