Raspberry Pi Pico als USB-Computermaus (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 Maus fungieren. Im Programmcode kann die Bewegung des Mauszeigers, das Drücken der Maustasten oder das Scrollen in einem Fenster gesteuert werden. Auf diese Weise wäre es denkbar, Software aus der Ferne zu steuern. Natürlich nur, wenn man weiß, welches Bedienelement welche Koordinaten hat. Oder man baut sich eine eigene Computer-Maus.
Aufbau und Bauteile
Der GPIO15 (Pin 20) und GPIO7 (Pin 10) sind 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 der Taster wird der GPIO mit GND verbunden.
Programmcode für die Emulation der Maus-Tasten
Beim folgenden Programmcode werden die Maus-Tasten emuliert. Dazu hat der Aufbau zwei Taster, die hier als Maus-Tasten-Ersatz dienen.
# Bibliotheken laden import time import board import keypad import usb_hid from adafruit_hid.mouse import Mouse # USB-Maus initialisieren mouse = Mouse(usb_hid.devices) # Taster-Pins (bei Bedarf ergänzen) BTN_PINS = ( board.GP15, board.GP7, ) # Taster initialisieren (mit Pullup-Widerstand) buttons = keypad.Keys(BTN_PINS, value_when_pressed=False, pull=True) # Wiederholung: Endlos-Schleife while True: time.sleep(0.1) event = buttons.events.get() if event: if event.pressed and event.key_number == 0: # Linke-Maus-Taste print('Taster an GPIO 15') mouse.click(Mouse.LEFT_BUTTON) if event.pressed and event.key_number == 1: # Rechte Maus-Taste print('Taster an GPIO 11') mouse.click(Mouse.RIGHT_BUTTON)
Programmcode für die Bewegung des Maus-Rads (Scrolling)
Beim folgenden Programmcode wird das Mausrad emuliert. Manche Computer-Mäuse haben ein solches Rad zwischen der linken und rechten Maustaste sitzen. Hierbei ist zu beachten, dass ein Fenster, in dem man hoch- und runterscrollen kann, aktiv im Vordergrund sein muss.
Das Scrollen wird durch zwei Taster ermöglicht. Einer scrollt nach oben, der andere nach unten.
# Bibliotheken laden import time import board import keypad import usb_hid from adafruit_hid.mouse import Mouse # USB-Maus initialisieren mouse = Mouse(usb_hid.devices) # Taster-Pins (bei Bedarf ergänzen) BTN_PINS = ( board.GP15, board.GP7, ) # Taster initialisieren (mit Pullup-Widerstand) buttons = keypad.Keys(BTN_PINS, value_when_pressed=False, pull=True) # Wiederholung: Endlos-Schleife while True: time.sleep(0.1) event = buttons.events.get() if event: if event.pressed and event.key_number == 0: # Nach oben Scrollen print('Taster an GPIO 15') mouse.move(wheel=1) if event.pressed and event.key_number == 1: # Nach unten Scrollen print('Taster an GPIO 7') mouse.move(wheel=-1)
Programmcode für die Bewegung des Mauszeigers
Beim folgenden Programmcode wird der Mauszeiger bewegt. Dazu hat der Aufbau zwei Taster, mit denen der Mauszeiger in unterschiedliche Richtungen bewegt werden kann.
# Bibliotheken laden import time import board import keypad import usb_hid from adafruit_hid.mouse import Mouse # USB-Maus initialisieren mouse = Mouse(usb_hid.devices) # Taster-Pins (bei Bedarf ergänzen) BTN_PINS = ( board.GP15, board.GP7, ) # Taster initialisieren (mit Pullup-Widerstand) buttons = keypad.Keys(BTN_PINS, value_when_pressed=False, pull=True) # Wiederholung: Endlos-Schleife while True: time.sleep(0.1) event = buttons.events.get() if event: if event.pressed and event.key_number == 0: # Mauszeiger in Richtung links oben versetzen print('Taster an GPIO 15') mouse.move(x=-10, y=-10) if event.pressed and event.key_number == 1: # Mauszeiger in Richtung rechts unten versetzen print('Taster an GPIO 7') mouse.move(x=10, y=10)
Weitere verwandte Themen:
- Raspberry Pi Pico als automatische Maus-Taste (mit CircuitPython)
- Raspberry Pi Pico als USB-Tastatur (mit CircuitPython)
- Raspberry Pi Pico: CircuitPython
- Raspberry Pi Pico: Grundlagen zum USB
- Raspberry Pi Pico: Anschlüsse und Schnittstellen
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.