Inhaltsverzeichnis:

[Wearable Mouse] Bluetooth-basierter Wearable Mouse Controller für Windows 10 und Linux - Gunook
[Wearable Mouse] Bluetooth-basierter Wearable Mouse Controller für Windows 10 und Linux - Gunook

Video: [Wearable Mouse] Bluetooth-basierter Wearable Mouse Controller für Windows 10 und Linux - Gunook

Video: [Wearable Mouse] Bluetooth-basierter Wearable Mouse Controller für Windows 10 und Linux - Gunook
Video: HAPPY ST. PATRICK'S DAY | Happy Wheels - Part 91 2024, November
Anonim
Image
Image
Beschleunigungsmesser mit Raspberry Pi. verbinden
Beschleunigungsmesser mit Raspberry Pi. verbinden

Ich habe einen Bluetooth-basierten Mauscontroller entwickelt, der verwendet werden kann, um den Mauszeiger zu steuern und PC-Maus-bezogene Operationen im Handumdrehen durchzuführen, ohne Oberflächen zu berühren. Die elektronische Schaltung, die in einen Handschuh eingebettet ist, kann verwendet werden, um Handgesten durch einen Beschleunigungsmesser zu verfolgen und dies kann in die Bewegung des Mauszeigers übersetzt werden. Dieses Gerät ist auch mit einer Taste verbunden, die den Klick mit der linken Taste repliziert. Das Gerät kann seriell (über USB) oder drahtlos über eine Bluetooth-Verbindung an den PC angeschlossen werden. Bluetooth bietet eine robuste und universelle drahtlose Kommunikation zwischen dem Hostgerät und dieser tragbaren Maus. Da Bluetooth weit verbreitet ist und in fast alle persönlichen Laptops integriert ist, ist der Anwendungsfall eines solchen tragbaren Geräts breit gefächert. Mit Raspberry Pi, einer häufig verwendeten Entwicklungsplattform für verschiedene Projekte, ist die Anbindung verschiedener Sensoren und die Entwicklung eines solchen Geräts einfach und skalierbar. Der Handschuh kann durch jeden anderen tragbaren Handschuh ersetzt werden, um seine Anwendung zu erweitern.

Als Vorsichtsmaßnahme gegen COVID-19 ist es ratsam, das Berühren von Oberflächen zu vermeiden, die von verschiedenen Personen gemeinsam genutzt werden können, und ein Touchscreen-Laptop oder eine Maus können zu diesen gemeinsamen Oberflächen gehören. Die Verwendung eines solchen tragbaren Geräts hilft bei der Aufrechterhaltung der Hygiene und hält die häufig verwendeten Oberflächen desinfiziert:)

Lieferungen

  • Raspberry Pi 3 Modell B V1.2
  • SparkFun Triple-Axis-Beschleunigungsmesser Breakout - MMA8452Q
  • Stecker-zu-Buchse-Überbrückungskabel
  • Ein Handschuh
  • Klebeband
  • Schere
  • Micro-USB-Kabel
  • HDMI-Kabel (zum Debuggen über Raspberry Pi)

Schritt 1: Beschleunigungsmesser mit Raspberry Pi verbinden

Beschleunigungsmesser mit Raspberry Pi. verbinden
Beschleunigungsmesser mit Raspberry Pi. verbinden

Ich habe einen MMA8542Q Triple-Axis-Beschleunigungsmesser von Sparkfun verwendet, der das I2C-Kommunikationsprotokoll verwendet, um mit den Raspberry Pi GPIO-Pins zu kommunizieren und die Achsendaten zu senden. Dieser Sensor bietet verschiedene Betriebsmodi mit der konfigurierbaren Datenrate, Schlafmodi, Beschleunigungsbereich, Filtermodus usw. Ich fand den Code von Pibits sehr hilfreich bei meiner Erstkonfiguration des Sensors und beim Testen mit meinen Handgesten. Es ist besser, den Sensor zuerst auf einer ebenen Fläche zu platzieren und deterministische Neigungen vorzunehmen, während die Rohwerte des Sensors beobachtet werden. Dies ist besonders nützlich, um zu verstehen, wie dieser Sensor mit verschiedenen Handgesten reagiert und wie wir Schwellenwerte für unsere Anwendung festlegen können. Sobald der Beschleunigungsmesser erfolgreich verbunden ist, können Sie die rohen Achsendaten auf dem Terminalbildschirm des Pi sehen.

Schritt 2: Drucktaste mit Raspberry Pi verbinden

Schnittstelle Drucktaste mit Raspberry Pi
Schnittstelle Drucktaste mit Raspberry Pi

In dieses tragbare Gerät habe ich eine Schaltfläche integriert, die als linke Maustaste fungieren kann, sodass ich auf Symbole auf dem Bildschirm klicken kann. Die 2 Enden der Taste werden dann mit 2 GPIO-Pins des Pi verbunden. Einer der Pins gibt ein logisches High aus und der andere Pin liest diesen Wert. Wenn die Taste gedrückt wird, wird der Stromkreis geschlossen und der Eingangspin kann einen logisch hohen Wert lesen, der dann von dem Skript verarbeitet wird, das ich geschrieben habe, um das Klicken mit der linken Maustaste zu emulieren. Wegen des Mangels an Lötkolben habe ich Klebeband verwendet, um die Jumper mit dem Knopf zu verbinden.

Schritt 3: Entwicklung eines Python-Skripts zur seriellen Steuerung des Mauszeigers

Ich habe die Python-Bibliothek Pyautogui verwendet, um den Mauszeiger zu steuern. Der Grund für die Verwendung dieser Bibliothek war, dass sie sowohl auf Linux als auch auf der Windows-Plattform funktioniert. Um den Mauszeiger auf meinem Raspberry Pi zu steuern, habe ich zuerst meinen Pi an ein Display angeschlossen. Dann habe ich die folgenden APIs der Bibliothek verwendet, um meinen Mauszeiger zu steuern:

  1. pyautogui.move(0, 200, 2) # bewegt die Maus über 2 Sekunden um 200 Pixel nach unten
  2. pyautogui.click() # klick mit der Maus

Um Fehlerdaten von Accelerometer herauszufiltern, habe ich Mittelwertbildung und andere Filtermethoden verwendet, die durch den beigefügten Code leicht zu verstehen sind. Die API pyautogui.move(0, y) wurde so verwendet, dass der Mauszeiger entweder von oben nach unten oder von links nach rechts gehen kann. Dies liegt daran, dass der Beschleunigungsmesser Achsen in X-, Y- und Z-Richtung meldet, die API jedoch nur 2 Argumente verwendet, X- und Y-Achsen. Daher war dieser Ansatz sehr geeignet für meinen Beschleunigungsmesser und um die Gesten auf dem Bildschirm abzubilden.

Schritt 4: Entwicklung eines Python-Skripts zur Steuerung des Mauszeigers über Bluetooth

Entwicklung eines Python-Skripts zur Steuerung des Mauszeigers über Bluetooth
Entwicklung eines Python-Skripts zur Steuerung des Mauszeigers über Bluetooth

Dieser Teil ist eine erweiterte Anwendung, bei der jeder Laptop mit Bluetooth-Fähigkeit mit Raspberry Pi in einem Server-Client-Kommunikationsmodell kommunizieren und Mauskoordinatendaten drahtlos übertragen kann. Um einen Windows 10 64-Bit-Laptop für die Bluetooth-Kommunikation einzurichten, müssen wir die folgenden Schritte ausführen:

Windows10:

  1. Erstellen Sie einen eingehenden Bluetooth-COM-Port.
  2. Koppeln Sie das Bluetooth des Pi mit dem Bluetooth des Laptops, indem Sie das Pi auffindbar machen.
  3. Installieren Sie Python unter Windows.
  4. Installieren Sie pip unter Windows. Pip wird verwendet, um Bibliotheken auf einem Linux- oder Windows-Computer zu installieren.
  5. Installieren Sie pyautogui unter Windows mit: pip install pyautogui
  6. Sobald pyautogui auf dem Gerät installiert ist, installieren Sie Pybluez unter Windows mit dem folgenden Befehl auf dem Windows-Terminal mit: pip install PyBluez-win10. PyBluez ermöglicht die Bluetooth-Kommunikation sowohl auf Windows- als auch auf Linux-PCs.
  7. Um eine Anwendung auf einem Windows 10-Laptop zu entwickeln, müssen wir Microsoft Visual Studio (15-20 GB Speicherplatz erforderlich) und seine Build-Tools installieren. Daher müssen wir zusammen mit PyBluez die folgenden Anweisungen befolgen:

    1. Laden Sie den "Visual Studio Installer" herunter und führen Sie ihn aus:

    2. Installieren Sie "Visual Studio Build Tools 2017", überprüfen Sie "Visual C++ Build Tools" und "Universal Windows Platform Build Tools"
    3. git-Klon
    4. cd pybluez
    5. python setup.py installieren

  8. Wenn die obigen Anweisungen korrekt befolgt werden, sollte das Ausführen von Python auf dem Windows-Terminal und das Importieren von pyautogui und Bluetooth-Modulen fehlerfrei funktionieren, wie im obigen Bild gezeigt.
  9. Navigieren Sie in der auf dem Windows-Rechner installierten pybluez-Bibliothek zu: pybluez-master\examples\simple\rfcomm-server.py und führen Sie sie mit Python rfcomm-server.py aus. Wenn das Terminal ohne Fehler in einen Wartezustand geht, gehen Sie zum folgenden Abschnitt zum Einrichten von Bluetooth auf Pi. Wenn bei der Installation von pybluez Fehler auftreten, finden Sie Informationen zum Debuggen unter GitHub-Probleme.

Raspbian auf Raspberry Pi:

  1. PyBluez auf Pi. installieren
  2. Führen Sie das Serverbeispiel unter Windows aus. Navigieren Sie dann auf Pi zu pybluez-master\examples\simple\rfcomm-client.py und führen Sie es aus. Wenn die beiden Geräte mit der Kommunikation begonnen haben, ist Bluetooth jetzt auf beiden Geräten eingerichtet. Um mehr darüber zu erfahren, wie die Socket-Kommunikation mit Python funktioniert, lesen Sie diesen Link vom MIT.

Zum Senden von Achsendaten von Pi an den PC sind einige zusätzliche Datenanalysen erforderlich, da die Daten in Bytes gesendet werden. Weitere Informationen zur Client- und Server-Datenkommunikation finden Sie im beigefügten Code.

Schritt 5: Beschleunigungsmesser und Knopf in den Handschuh einbetten

Beschleunigungsmesser und Taste am Handschuh einbetten
Beschleunigungsmesser und Taste am Handschuh einbetten
Beschleunigungsmesser und Taste am Handschuh einbetten
Beschleunigungsmesser und Taste am Handschuh einbetten

Sobald der Beschleunigungsmesser gut verbunden ist, sieht das Skelettsystem etwas aus wie das erste Bild auf diesem Schritt.

Da die Oberfläche des Handschuhs nicht eben ist, habe ich eine Dummy-Kreditkarte verwendet, die ab und zu in meinen Briefkasten kommt. Gemäß dem zweiten Bild in diesem Schritt habe ich die Dummy-Kreditkarte mit Klebeband auf der Oberseite meines Handschuhs befestigt. Über der Karte befestigte ich meinen Beschleunigungsmesser. Dieses Setup war robust genug, um meinen Beschleunigungsmesser stabil zu halten und meine Gesten genau zu verfolgen.

Empfohlen: