Unihiker K10: Cheat Sheet für MicroPython

Die grundlegenden Befehle von MicroPython sind beim Unihiker K10 mit dem Mikrocontroller ESP32-S3 nicht anders als bspw. bei einem RP2040 oder einem anderen Mikrocontroller.

Darüberhinaus sind im Unihiker K10 Bauteile und Sensoren integriert, die softwareseitig individuell angesprochen werden müssen. Hierzu sind in der MicroPython-Firmware für den Unihiker K10 zusätzliche Bibliotheken enthalten, die vom Hersteller DFRobot bereitgestellt werden, aber mit MicroPython nichts zu tun haben.

Eine vollständige Befehlsreferenz für diese Bibliotheken gibt es nicht. Vom Hersteller DFRobot werden nur ein paar Programmcode-Beispiele für alle Bauteile und Sensoren bereitgestellt, die sich auf dem Board befinden.

Damit ist leider nicht das gesamte Leistungsspektrum aller Bauteile abrufbar, wie sie beworben werden. Das ist nur mit Mind+ möglich.

Übersicht: Onboard-Komponenten des Unihiker K10 programmieren

Im folgenden sind ein paar Programmcode-Beispiele herausgegriffen, getestet und um eine Beschreibung ergänzt.

  • Onboard-RGB-LEDs programmieren
  • Display programmieren
  • Onboard-Taster programmieren
  • WLAN-Verbindung herstellen
  • Mikrofon und Lautsprecher programmieren
  • Temperatur-Sensor programmieren
  • Beschleunigungssensor programmieren
  • Lichtsensor programmieren
  • Kamera programmieren

Onboard-RGB-LEDs programmieren

Im unteren Bereich des Unihiker K10 befinden sich hinter dem Display 3 RGB-LEDs, die sich einzeln mit verschiedenen Farben programmieren lassen.
Die Farben lassen sich wahlweise mit einzelnen Dezimalwerten für RGB oder einem hexadezimalen Wert angeben.

# Bibliotheken laden
from unihiker_k10 import rgb
import time

# LED links (0 = kein Farbanteil / 255 = höchster Farbanteil)
rgb.write(0, R=255, G=0, B=0) # Rot
time.sleep(2)

# LED mitte
rgb.write(1, R=0, G=255, B=0) # Grün
time.sleep(2)

# LED rechts
rgb.write(2, R=0, G=0, B=255) # Blau
time.sleep(2)

# Alle LEDs ausschalten
rgb.clear()

Display programmieren

Das Display ILI9341 muss vor der Ausgabe initialisiert werden. Anschließend kann man eine Hintergrundfarbe (als Hexcode) einstellen und zum Beispiel Text ausgeben. Der Text kann zeilenweise oder frei positioniert werden.

# Bibliotheken laden
from unihiker_k10 import screen
import time

# Initialisieren: Display
screen.init()

# Display: Hintergrund-Farbe (weiß)
screen.show_bg(color=0xffffff)
screen.show_draw()
time.sleep(2)

# Display: Hintergrund-Farbe (schwarz)
screen.show_bg(color=0x000000)
screen.show_draw()
time.sleep(2)

# Display: Hintergrund-Farbe (weiß)
screen.show_bg(color=0xffffff)
screen.show_draw()
time.sleep(2)

# Display: Text
for row in range (1, 18):
    screen.draw_text(text=str(row)+'. Zeile', line=row-1, color=0x000000)
    screen.show_draw()
    time.sleep(1)

# Display: Inhalt löschen
screen.clear()

Onboard-Taster programmieren

Variante 1

Die Taster A und B an der Seite können initialisiert und ihr Status abgefragt werden.
Zu beachten ist, dass die Taster nicht entprellt sind.

# Bibliotheken laden
from unihiker_k10 import button
import time

# Initialisieren: Taster A (oben)
btn_a = button(button.a)

# Initialiseren: Taster B (unten)
btn_b = button(button.b)

# Wiederholung (Endlos-Schleife)
while True:
    time.sleep(0.1)
    # Taster A gedrückt
    if btn_a.status() == 1:
        print('Taster A gedrückt')
        time.sleep(0.2)
    # Taster B gedrückt
    if btn_b.status() == 1:
        print('Taster B gedrückt')
        time.sleep(0.2)

Variante 2

Wenn der Programmcode nicht nur mit dem Abfragen des Status eines Tasters beschäftigt sein soll, kann man separate Funktionen definieren, die ausgeführt werden, wenn ein Taster gedrückt und losgelassen wird.

# Bibliotheken laden
from unihiker_k10 import button
import time

# Initialisieren: Taster A (oben)
btn_a = button(button.a)

# Initialiseren: Taster B (unten)
btn_b = button(button.b)

# Funktionen
def button_a_pressed():
    print('Taster A gedrückt')

def button_a_released():
    print('Taster A losgelassen')

def button_b_pressed():
    print('Taster B gedrückt')

def button_b_released():
    print('Taster B losgelassen')

# Aufruf von Funktionen, wenn Taster gedrückt werden
btn_a.event_pressed = button_a_pressed
btn_b.event_pressed = button_b_pressed

# Aufruf von Funktionen, wenn Taster losgelassen werden
btn_a.event_released = button_a_released
btn_b.event_released = button_b_released

# Wiederholung (Endlos-Schleife)
while True:
    time.sleep(0.1)
    pass

WLAN-Verbindung herstellen

Wenn man eine Verbindung zu einem WLAN herstellen will, dann empfiehlt es sich nicht die MicroPython-Funktionen, sondern die von der Unihiker-Firmware zu verwenden.

# Bibliotheken laden
from unihiker_k10 import wifi

# WLAN-Zugangsdaten
wlan_ssid = 'WLAN-Name'
wlan_pwd  = 'WLAN-Passwort'

# WLAN-Verbindung herstellen
print('WLAN: Verbindung zu', wlan_ssid, 'wird hergestellt')
wifi.connect(wlan_ssid, wlan_pwd, timeout=50000) 

# WLAN-Verbindung prüfen
if wifi.status() == True:
    print('WLAN: Verbindung hergestellt')
else:
    print('WLAN: Verbindung NICHT hergestellt')

# Netzwerk-Informationen abrufen und anzeigen
print('WLAN:', wifi.info())

Mikrofon und Lautsprecher programmieren

Aufnahme starten und als WAV-Datei im Flash-Speicher speichern:

# Bibliotheken laden
from unihiker_k10 import mic
import time

# Countdown
for sec in range (5, 1, -1):
    print('Aufnahme startet in', sec, 'Sekunden', end=" \r")
    time.sleep(1)
print('Aufnahme startet jetzt für 5 Sekunden')

# Aufnahme starten und als Datei speichern
mic.recode_sys('record.wav', time=5)

print('Aufnahme beendet')

WAV-Datei vom Flash-Speicher abspielen:

# Bibliotheken laden
from unihiker_k10 import speaker

# Aufnahme abspielen
speaker.play_sys_music('record.wav')

Temperatur-Sensor programmieren

Der Temperatur- und Luftfeuchtigkeitssensor AHT20 liefert die Temperatur wahlweise in Grad Celsius und Grad Fahrenheit. Die Luftfeuchtigkeit in %RH.

# Bibliotheken laden
from unihiker_k10 import temp_humi
import time

# Temperatur in Grad Celsius
print('      Temperatur:', temp_humi.read_temp(), '°C')

# Temperatur in Grad Fahrenheit
print('      Temperatur:', temp_humi.read_temp_f(), '°F')

# Luftfeuchtigkeit in Prozent
print('Luftfeuchtigkeit:', temp_humi.read_humi(), '%RH')

Beschleunigungssensor programmieren

Der Beschleunigungssensor SC7A20H liefert Daten der Beschleunigung bzw. der Schwerkraft in Richtung der X-, Y- und Z-Achse. Damit kann man die Lage oder Position des Unihiker K10 bestimmen.

# Bibliotheken laden
from unihiker_k10 import screen, acce
import time

# Initialisieren: Display
screen.init()
screen.show_bg(color=0xffffff)

# Wiederholung (Endlos-Schleife)
while True:
    # Werte ermitteln in m/s²
    acc_x = round(acce.read_x(), 1)
    acc_y = round(acce.read_y(), 1)
    acc_z = round(acce.read_z(), 1)
    screen.draw_text(text='X: ' + str(acc_x), line=1, color=0x000000)
    screen.draw_text(text='Y: ' + str(acc_y), line=2, color=0x000000)
    screen.draw_text(text='Z: ' + str(acc_z), line=3, color=0x000000)
    screen.show_draw()
    time.sleep(1)

Lichtsensor programmieren

Der Lichtsensor LTR303ALS liefert Daten der Beleuchtungsstärke in Lux.

# Bibliotheken laden
from unihiker_k10 import light
import time

# Wiederholung (Endlos-Schleife)
while True:
    print(light.read(), end=' Lux  \r')
    time.sleep(1)

Kamera programmieren

Die Kamera mit dem Bildsensor GC2145 muss initialisiert werden. Es ist möglich, das Kamerabild auf dem Display anzuzeigen.

# Bibliotheken laden
from unihiker_k10 import screen, camera

# Initialisierung: Display
screen.init()

# Initialisierung: Kamera
camera.init()

# Kamera auf dem Display anzeigen
screen.show_camera(camera)

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Elektronik-Set Starter Edition
Elektronik-Set Starter Edition

Elektronik erleben mit dem Elektronik-Set Starter Edition

Perfekt für Einsteiger und Wiedereinsteiger

  • Elektronik-Einstieg ohne Vorkenntnisse
  • Schnelles Verständnis für Bauteile und Schaltsymbole
  • Ohne Lötkolben experimentieren: Bauteile einfach stecken

Keine Lust alleine zu experimentieren?

Dann buche einen „Online-Workshop Elektronik Starter“ zum Elektronik-Set dazu. Unsere Online-Workshops sind praxisorientiert und bietet eine grundlegende und fundierte Einarbeitung in die Elektronik.

Elektronik-Set jetzt bestellen Jetzt Online-Workshop buchen

Elektronik-Set Starter Edition
Elektronik-Set Starter Edition

Elektronik erleben mit dem Elektronik-Set Starter Edition

Perfekt für Einsteiger und Wiedereinsteiger

  • Elektronik-Einstieg ohne Vorkenntnisse
  • Schnelles Verständnis für Bauteile und Schaltsymbole
  • Ohne Lötkolben experimentieren: Bauteile einfach stecken

Keine Lust alleine zu experimentieren?

Dann buche einen Online-Workshop Elektronik Starter zum Elektronik-Set dazu. Unsere Online-Workshops sind praxisorientiert und bietet eine grundlegende und fundierte Einarbeitung in die Elektronik.

Elektronik-Set jetzt bestellen Jetzt Online-Workshop buchen

Elektronik-Fibel

Elektronik einfach und leicht verständlich

Die Elektronik-Fibel ist ein Buch über die Grundlagen der Elektronik, Bauelemente, Schaltungstechnik und Digitaltechnik.

Das will ich haben!