Raspberry Pi Pico als USB-Tastatur (mit CircuitPython)
Eine Besonderheit des Raspberry Pi Pico ist die Integration des USB. Das heißt, der Pico lässt sich sehr leicht als USB-Endgerät an einem Host-Computer anmelden. Der Pico kann dabei theoretisch jedes beliebige USB-Gerät emulieren. Für CircuitPython gibt es eine Bibliothek, die es sehr einfach macht, eine HID-Steuerung (Human Interface Device) in einen Programmcode zu integrieren. Der Raspberry Pi Pico kann dann zum Beispiel als Tastatur fungieren und das Drücken von Tasten emulieren. Das ist dann von Vorteil, wenn die auf einem Computer laufende Software sich nicht an die zu verwendende Hardware anpassen lässt. Dann geht man gerne den Umweg über eine Tastaturschnittstelle. Die Daten werden dann an ein Eingabefeld der Software übergeben. Angewendet wird dieses Prinzip zum Beispiel bei einem Barcode-Leser.
Aufbau und Bauteile
Der GPIO15 (Pin 20) ist deshalb gewählt, damit man ein Taster-Modul vom Typ KY-004 im Steckbrett so einstecken kann, dass man keine Verbindungskabel braucht. Beim Drücken des Tasters wird der GPIO15 mit GND verbunden.
Schnell und einfach alle Bauteile zusammen bestellen
USB-Unterstützung in CircuitPython
Damit die USB-Unterstützung in CircuitPython funktioniert, muss eine Bibliothek auf dem Pico installiert sein. Im Prinzip müssen mehrere Dateien in das lib-Verzeichnis kopiert werden. Außerdem empfiehlt es sich das deutsche Tastatur-Layout gleich mit zu installieren.
Programmcode mit CircuitPython: Senden eines einzelnen Zeichens
Der folgende Programmcode ist im Prinzip eine Erweiterung von einer einfachen Taster-Auswertung. Hier wird zusätzlich der Pico als USB-Tastatur initialisiert. Anschließend wird beim Drücken des Tasters der Großbuchstabe „A“ gesendet. Wenn der Texteingabe-Cursor in einem Textfeld steht, dann wird der Buchstabe „A“ dargestellt.
# Bibliotheken laden import time import board import digitalio import usb_hid from adafruit_hid.keyboard import Keyboard from adafruit_hid.keycode import Keycode # Initialisierung der Onboard-LED led_onboard = digitalio.DigitalInOut(board.LED) led_onboard.direction = digitalio.Direction.OUTPUT # Initialisierung von GPIO 15 als Eingang btn = digitalio.DigitalInOut(board.GP15) btn.switch_to_input(pull=digitalio.Pull.UP) # Initialisierung als USB-Tastatur keyboard = Keyboard(usb_hid.devices) # Wiederholung while True: if btn.value: led_onboard.value = False else: keyboard.send(Keycode.SHIFT, Keycode.A) led_onboard.value = True time.sleep(0.25) # Wartezeit zum Entprellen time.sleep(0.1)
Programmcode mit CircuitPython: Senden einer Zeichenkette
Der folgende Programmcode ermöglicht das Senden einer ganzen Zeichenkette. In diesem Programmcode wird das deutsche Tastaturlayout geladen. Das muss auf dem Pico im Verzeichnis „lib/adafruit_hid“ als Datei vorhanden sein.
# Bibliotheken laden import time import board import digitalio import usb_hid from adafruit_hid.keyboard import Keyboard from keyboard_layout_win_de import KeyboardLayout as KeyboardLayout #from adafruit_hid.keyboard_layout_us import KeyboardLayout # Default # Initialisierung von GPIO 15 als Eingang btn = digitalio.DigitalInOut(board.GP15) btn.switch_to_input(pull=digitalio.Pull.UP) # Initialisierung als USB-Tastatur kbd = Keyboard(usb_hid.devices) keyboard = KeyboardLayout(kbd) # Wiederholung while True: if btn.value == False: keyboard.write('Ich bin Dein Raspberry Pi Pico\n') time.sleep(0.25) # Wartezeit zum Entprellen time.sleep(0.1)
Erweiterung
Auf Basis beider Beispiele kommt man schnell auf die Idee, komplexere Funktionen auszulösen. Die folgende Lösung beschreibt, wie man dieses Beispiel um weitere Taster erweitert und welche Codes gesendet werden müssen, um eine bestimmte Tastenkombination auszulösen.
Weitere verwandte Themen:
- Raspberry Pi Pico als USB-Endgerät (mit CircuitPython)
- Raspberry Pi Pico als USB-Computermaus (mit CircuitPython)
- Raspberry Pi Pico: Grundlagen zum USB
- Raspberry Pi Pico: Anschlüsse und Schnittstellen
- Raspberry Pi Pico: CircuitPython
Frag Elektronik-Kompendium.de
Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython
Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.
- LED: Einschalten, ausschalten, blinken und Helligkeit steuern
- Taster: Entprellen und Zustände anzeigen
- LED mit Taster einschalten und ausschalten
- Ampel- und Lauflicht-Steuerung
- Elektronischer Würfel
- Eigene Steuerungen programmieren
Online-Workshop: Programmieren mit dem Raspberry Pi Pico
Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.
Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.