Benutzer-Werkzeuge

Webseiten-Werkzeuge


bluetooth-verbindung_mit_linux

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
bluetooth-verbindung_mit_linux [2025/02/08 15:53] – [mbot steuern] torsten.roehlbluetooth-verbindung_mit_linux [2025/02/12 13:32] (aktuell) torsten.roehl
Zeile 1: Zeile 1:
 ====== Bluetooth-Verbindung mit Linux ====== ====== Bluetooth-Verbindung mit Linux ======
  
-//Diese Anleitung beschreibt, wie  der mBot-Roboter per **BLE (Bluetooth Low Energy)** mit ''bleak'' unter Ubuntu angesprochen werden kann. Dabei wird ein Python-Skript (''makeblock_test.py'') verwendet, das testweise die LEDs des mBots schalten kann.+//Diese Anleitung beschreibt, wie  der mBot-Roboter per **BLE (Bluetooth Low Energy)**  unter Ubuntu angesprochen werden kann. Dabei wird ein Python-Skript (''makeblock_test.py'') verwendet, das testweise die LEDs des mBots schalten kann.
 // //
  
   * Voraussetzungen   * Voraussetzungen
-          * Installation der benötigten Pakete+          * Installation und Konfiguration der benötigten Pakete
   * ''bluetoothctrl''   * ''bluetoothctrl''
           * Umgang mit dem wichtigen Tool zur Kontrolle der angeschlossenen Bluetoothgeräte.           * Umgang mit dem wichtigen Tool zur Kontrolle der angeschlossenen Bluetoothgeräte.
Zeile 12: Zeile 12:
  
 ====== Voraussetzungen ====== ====== Voraussetzungen ======
- +++++ Installation und Konfiguration der benötigten Pakete | 
-===== Systemvoraussetzungen & benötigte Pakete =====+Systemvoraussetzungen & benötigte Pakete 
 Getestet wurde mit folgender Umgebung: Getestet wurde mit folgender Umgebung:
  
Zeile 19: Zeile 19:
   * **Python 3.11+** (Empfohlen: Anaconda oder System-Python)   * **Python 3.11+** (Empfohlen: Anaconda oder System-Python)
   * **Bluetooth-Adapter mit BLE-Unterstützung**   * **Bluetooth-Adapter mit BLE-Unterstützung**
-          * USB-BT500 ASUS+          * USB-BT500 ASUS <color #c3c3c3> (Dieser Stand stand zum Testen zur Verfügung)</color>
  
 ==== Notwendige Pakete installieren ==== ==== Notwendige Pakete installieren ====
Zeile 27: Zeile 27:
 sudo apt update sudo apt update
 sudo apt install bluetooth bluez bluez-tools rfkill libbluetooth-dev sudo apt install bluetooth bluez bluez-tools rfkill libbluetooth-dev
-</code>+</code> 
  
 ---- ----
  
 ==== Bluetooth einrichten & Berechtigungen setzen ==== ==== Bluetooth einrichten & Berechtigungen setzen ====
-Damit Ihr Benutzer Bluetooth nutzen kannmuss er in die **''bluetooth''-Gruppe** aufgenommen werden:+Damit Bluetooth verwendet werden kann muss der Benutzer in die **''bluetooth''-Gruppe** aufgenommen werden:
  
 <code> <code>
Zeile 44: Zeile 44:
 sudo rfkill unblock bluetooth sudo rfkill unblock bluetooth
 </code> </code>
 +
 +<note>Ältere Ubuntu-Distributionen benötigen möglicherweise einen Link, falls der USB-BT500 ASUS nicht erkannt wird.
 +<code>
 +$ cd /usr/lib/firmware/rtl_bt
 +$ sudo ln -s rtl8761b_fw.bin rtl8761bu_fw.bin
 +</code>
 +☛ https://forums.linuxmint.com/viewtopic.php?t=377733
 +</note>
 +
  
 ---- ----
  
 ===== Python  ===== ===== Python  =====
-Damit Sie BLE-Geräte steuern können, benötigen Sie ''bleak''.+Damit BLE-Geräte gesteuert werden können, wird ''bleak'' benötigt.
  
-==== Installation mit Conda (Empfohlen) ==== 
-<code> 
-conda install -c conda-forge bleak 
-</code> 
  
 ==== Installation mit ''pip'' (System-Python oder venv) ==== ==== Installation mit ''pip'' (System-Python oder venv) ====
-Falls Sie kein Conda nutzen:+Falls ohne Conda gearbeitet wird:
 <code> <code>
 pip install bleak pip install bleak
Zeile 62: Zeile 67:
  
 ---- ----
 +++++
 ====== Tool: bluetoothctl   ====== ====== Tool: bluetoothctl   ======
 +++++ Umgang mit dem wichtigen Tool zur Kontrolle der angeschlossenen Bluetoothgeräte.|
 +Im diesem Abschnitt wird das Tool ''bluetoothctl'' vorgestellt, mit dem die Bluetooth-Schnittstelle verwaltet werden kann. Außerdem werden einige nützliche Kommandos erläutert, um eine erfolgreiche Verbindung zum mBot herzustellen. 
 +===== Bluetooth-Befehle & Erklärungen =====
 +Hauptfunktionen von bluetoothctl
 +  * Aktivieren und Deaktivieren von Bluetooth
 +  * Suchen und Verbinden mit Bluetooth-Geräten
 +  * Koppeln und Entkoppeln von Geräten
 +  * Anzeigen und Verwalten von gekoppelten Geräten
 +  * Ändern von Bluetooth-Einstellungen
 +
 +^ **Befehl**                  ^ **Beschreibung**                                               ^
 +| ''bluetoothctl''             | Startet das Bluetooth-Management-Tool                           |
 +| ''scan on ''                 | Sucht nach BLE-Geräten in der Umgebung                         |
 +| ''scan off''                 | Stoppt die Suche nach BLE-Geräten (wichtig für Verbindungsaufbau)|
 +|''devices''                  | Zeigt eine Liste aller erkannten Bluetooth-Geräte              |
 +|''info <MAC>''               | Zeigt detaillierte Informationen zu einem Gerät                |
 +| ''trust <MAC>''              | Markiert das Gerät als vertrauenswürdig                       |
 +| ''connect <MAC>''            | Verbindet sich mit dem angegebenen Gerät                      |
 +| ''disconnect <MAC>''         | Trennt die Verbindung zum Gerät                               |
 +| ''remove <MAC>''             | Entfernt das Gerät aus der Liste bekannter Geräte             |
 +| ''sudo systemctl restart bluetooth'' | Startet den Bluetooth-Dienst neu (bei Verbindungsproblemen) |
 +
 +
 +<WRAP center round tip 90%>
 +  * mbot Bluetooth Modul blinkt → <color #ed1c24>keine</color> Verbindung!
 +  * mbot Bluetool Modul leuchtet Dauerhaft →  Verbindung!
 +</WRAP>
  
-Die Bluetooth-Schnittstelle wird mit dem Tool ''bluetoothctl''kontrolliert. 
  
 ===== Bluetooth-Interface  ===== ===== Bluetooth-Interface  =====
Zeile 84: Zeile 115:
 Er sollte eine MAC-Adresse in diesem Format haben: ''10:A5:62:22:CA:C4''. Er sollte eine MAC-Adresse in diesem Format haben: ''10:A5:62:22:CA:C4''.
  
 +Da manche BLE-Geräte keine Verbindung erlauben, während sie noch gescannt werden, sollte der Scan zuvor mit scan off beendet werden, falls scan on verwendet wurde.
 +<code>
 +scan off # scan wieder beenden!
 +</code>
 +
 +Alternativ kann mit dem Befehl ''devices'' eine Liste der Geräte (und MAC-Adressen) angezeigt werden.
 +<code>
 +[bluetooth]# devices
 +Device 59:65:C3:57:CC:EC 59-65-C3-57-CC-EC
 +Device 25:81:AA:74:75:85 25-81-AA-74-75-85
 +Device 10:A5:62:22:CA:C4 Makeblock_LE10a56222cac4
 +[DEL] Device 25:81:AA:74:75:85 25-81-AA-74-75-85
 +[bluetooth]# 
 +</code>
 ===== Wichtige Befehle ===== ===== Wichtige Befehle =====
  
Zeile 111: Zeile 156:
 </code> </code>
  
-**Hinweis:** Der mBot sollte nur mit dem Python-Skript verbunden sein, nicht dauerhaft mit Ubuntu!+Mit ''info MAC'' können Informationen abgerufen werden!
  
-----+<WRAP center round info 85%> 
 +**Hinweis:**
  
 +Der mBot sollte __nur__ mit dem Python-Skript verbunden sein, nicht dauerhaft mit Ubuntu!
 +
 +</WRAP>
 +
 +----
 +++++
 ====== Testen ====== ====== Testen ======
 +
 +<WRAP center round tip 90%>
 +**Um die Skripte zu testen, muss die MAC-Adresse des Makeblock-Bluetooth-Moduls bekannt sein!**
 +
 +Sie ist im Skript durch die von uns verwendete //<color #c3c3c3>(10:A5:62:22:CA:C4)</color>// zu ersetzen. Ansonsten muss das Skript nicht angepasst werden.
 +
 +Die Bereiche, die im Skript geändert werden müssen, sind durch
 +<code>
 + # TODO ADJUST START
 +</code> 
 +und
 +<code>
 +# TODO ADJUST END
 +</code> 
 +gekennzeichnet.
 +</WRAP>
 +
 +Die folgende Ausgabe von ''bluetoothctl'' zeigt, dass alle Voraussetzungen für das Testen mit Python erfüllt sind!
 +<code>
 +[bluetooth]# info 10:A5:62:22:CA:C4
 +Device 10:A5:62:22:CA:C4 (public)
 + Name: Makeblock_LE10a56222cac4
 + Alias: Makeblock_LE10a56222cac4
 + Paired: no
 + Trusted: yes
 + Blocked: no
 + Connected: no
 + LegacyPairing: no
 + UUID: Generic Access Profile    (00001800-0000-1000-8000-00805f9b34fb)
 + UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
 + UUID: Device Information        (0000180a-0000-1000-8000-00805f9b34fb)
 + UUID: Vendor specific           (00006287-3c17-d293-8e48-14fe2e4da212)
 + UUID: Vendor specific           (0000d0ff-3c17-d293-8e48-14fe2e4da212)
 + UUID: Unknown                   (0000ffe1-0000-1000-8000-00805f9b34fb)
 + UUID: Unknown                   (0000ffe4-0000-1000-8000-00805f9b34fb)
 + Modalias: bluetooth:v005Dp0001d0003
 +</code>
 +
 +  * ✅ Connected: no → Der mBot ist nicht dauerhaft mit Ubuntu verbunden → Gut!
 +  * ✅ Trusted: yes → Der mBot wurde als vertrauenswürdig eingestuft → Richtig konfiguriert!
 +  * ✅ Paired: no → Der mBot wurde nicht gekoppelt (BLE braucht keine Kopplung)
 +  * ✅ Liste der UUIDs → Zeigt die verfügbaren GATT-Services und Characteristics des Geräts.
 +
  
 ===== BLE-Scanner ===== ===== BLE-Scanner =====
Zeile 136: Zeile 231:
  
  
-Falls Ihr mBot erkannt wird, ist alles korrekt eingerichtet!+Falls der mBot erkannt wird, ist alles korrekt eingerichtet!
  
 ---- ----
Zeile 158: Zeile 253:
     """Sendet ein einzelnes Zeichen über BLE"""     """Sendet ein einzelnes Zeichen über BLE"""
     try:     try:
-        data = bytearray([ord(char)])  # Konvertiere Zeichen in Byte+        # Konvertiere Zeichen in Byte 
 +        data = bytearray([ord(char)])  
         await client.write_gatt_char(WRITE_CHAR_UUID, data)         await client.write_gatt_char(WRITE_CHAR_UUID, data)
         print(f"Gesendet: {char}")         print(f"Gesendet: {char}")
Zeile 172: Zeile 268:
  
                 while True:                 while True:
-                    user_input = input("Gib 'r', 'g', 'b', '0' zum Senden ein oder 'q' zum Beenden: ")+                    user_input = input("'r', 'g', 'b', '0' zum Senden'q' zum Beenden: ")
  
                     if user_input == 'q':                     if user_input == 'q':
Zeile 178: Zeile 274:
                         break  # Beende das Programm                         break  # Beende das Programm
                     elif user_input in ['r', 'g', 'b', '0']:                     elif user_input in ['r', 'g', 'b', '0']:
-                        await send_char(client, user_input) Sende das Zeichen+                        await send_char(client, user_input) senden
                     else:                     else:
-                        print("Ungültige Eingabe! Bitte 'r', 'g', 'b', '0' oder 'q' eingeben.")+                        print("Ungültige Eingabe!")
  
     except Exception as e:     except Exception as e:
bluetooth-verbindung_mit_linux.1739029993.txt.gz · Zuletzt geändert: 2025/02/08 15:53 von torsten.roehl