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:10] – [📌 Erstelle ''scan_ble.py'' mit folgendem Inhalt:] 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 ======
-====== Bluetooth & BLE-Setup für Makeblock mBot unter Ubuntu ====== 
  
-Diese Anleitung beschreibt, wie du den Makeblock mBot per **BLE (Bluetooth Low Energy)** mit ''bleak'' unter Ubuntu steuerst. Sie enthält alle benötigten Befehle und Schritteum das Setup auf einem neuen Rechner zu wiederholen.+//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 
 +          * Installation und Konfiguration der benötigten Pakete 
 +  * ''bluetoothctrl'' 
 +          * Umgang mit dem wichtigen Tool zur Kontrolle der angeschlossenen Bluetoothgeräte. 
 +  * Testen 
 +          * Testen (hier in Python) der Verbindung und Steuern des mBot-Roboters.
  
-===== 1️⃣ Systemvoraussetzungen & benötigte Pakete =====+====== Voraussetzungen ====== 
 +++++ Installation und Konfiguration der benötigten Pakete | 
 +Systemvoraussetzungen & benötigte Pakete 
 Getestet wurde mit folgender Umgebung: Getestet wurde mit folgender Umgebung:
  
Zeile 12: 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 <color #c3c3c3> (Dieser Stand stand zum Testen zur Verfügung)</color>
  
-==== 📌 Notwendige Pakete installieren ==== +==== Notwendige Pakete installieren ==== 
-Führe folgende Befehle aus, um alle benötigten Systempakete zu installieren:+Führen Sie folgende Befehle aus, um alle benötigten Systempakete zu installieren:
  
 <code> <code>
 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> 
  
 ---- ----
  
-===== 2️⃣ Bluetooth einrichten & Berechtigungen setzen ===== +==== Bluetooth einrichten & Berechtigungen setzen ==== 
-Damit der 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 32: Zeile 39:
 </code> </code>
  
-Danach den **Bluetooth-Stack neu starten**:+Starten Sie anschließend den **Bluetooth-Stack neu**:
 <code> <code>
 sudo systemctl restart bluetooth sudo systemctl restart bluetooth
 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>
 +
  
 ---- ----
  
-===== 3️⃣ ''bluetoothctl'' Befehle – mBot verbinden ===== +===== Python  ===== 
-Um den mBot zu verbindenbenutze ''bluetoothctl''.+Damit BLE-Geräte gesteuert werden könnenwird ''bleak'' benötigt.
  
-==== 📌 Schritt 1: Bluetooth-Interface starten ====+ 
 +==== Installation mit ''pip'' (System-Python oder venv) ==== 
 +Falls ohne Conda gearbeitet wird: 
 +<code> 
 +pip install bleak 
 +</code> 
 + 
 +---- 
 +++++ 
 +====== 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> 
 + 
 + 
 +===== Bluetooth-Interface  =====
 <code> <code>
 bluetoothctl bluetoothctl
 </code> </code>
  
-Falls du bereits in ''bluetoothctl'' bistsiehst du eine Eingabezeile wie:+Falls Sie bereits in ''bluetoothctl'' sindsehen Sie eine Eingabezeile wie:
 <code> <code>
 [bluetooth]# [bluetooth]#
 </code> </code>
  
-==== 📌 Schritt 2: Scanne nach BLE-Geräten ====+===== Scannen nach BLE-Geräten =====
 <code> <code>
 scan on scan on
 </code> </code>
-Lass den Scan 10–15 Sekunden laufen, bis dein mBot erscheint. +Lassen Sie den Scan 10–15 Sekunden laufen, bis Ihr mBot erscheint.  
 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''.
  
-==== 📌 Schritt 3: Gerät vertrauen verbinden ==== +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. 
-Ersetze die MAC-Adresse mit der deines mBot:+<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 ===== 
 + 
 +==== Verbindung vertrauen und verbinden ==== 
 +Ersetzen Sie die MAC-Adresse mit der Ihres mBots:
 <code> <code>
 trust 10:A5:62:22:CA:C4 trust 10:A5:62:22:CA:C4
Zeile 67: Zeile 138:
 </code> </code>
  
-Falls die Verbindung klappt, siehst du:+Falls die Verbindung klappt, sehen Sie:
 <code> <code>
 [CHG] Device 10:A5:62:22:CA:C4 Connected: yes [CHG] Device 10:A5:62:22:CA:C4 Connected: yes
Zeile 73: Zeile 144:
 </code> </code>
  
-Falls die Verbindung fehlschlägt, starte den Bluetooth-Dienst neu:+Falls die Verbindung fehlschlägt,  Bluetooth-Dienst neu starten:
 <code> <code>
 sudo systemctl restart bluetooth sudo systemctl restart bluetooth
 </code> </code>
-Dann wieder ''bluetoothctl'' starten und erneut ''connect'' versuchen. 
  
-Falls dein mBot **direkt nach dem Verbinden mit Ubuntu verbunden bleibt**, trenne ihn:+==== Verbindung trennen und entfernen ==== 
 +Falls Ihr mBot **direkt nach dem Verbinden mit Ubuntu verbunden bleibt**, trennen Sie ihn:
 <code> <code>
 disconnect 10:A5:62:22:CA:C4 disconnect 10:A5:62:22:CA:C4
Zeile 85: 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 ======
  
-===== 4️⃣ Python & ''bleak'' installieren ===== +<WRAP center round tip 90%> 
-Damit wir BLE-Geräte steuern könnenbrauchen wir ''bleak''.+**Um die Skripte zu testenmuss die MAC-Adresse des Makeblock-Bluetooth-Moduls bekannt sein!**
  
-==== 📌 Installation mit Conda (Empfohlen====+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> <code>
-conda install -c conda-forge bleak + # TODO ADJUST START 
-</code>+</code>  
 +und 
 +<code> 
 +# TODO ADJUST END 
 +</code>  
 +gekennzeichnet. 
 +</WRAP>
  
-==== 📌 Installation mit ''pip'' (System-Python oder venv) ==== +Die folgende Ausgabe von ''bluetoothctl'' zeigt, dass alle Voraussetzungen für das Testen mit Python erfüllt sind!
-Falls du kein Conda nutzt:+
 <code> <code>
-pip install bleak+[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> </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.
  
-===== 5️⃣ Test-Skript: BLE-Scanner ===== 
-Dieses Skript prüft, ob ''bleak'' dein mBot erkennt. 
  
-==== 📌 Erstelle ''scan_ble.py'' mit folgendem Inhalt: ==== +===== BLE-Scanner ===== 
-<code python>+Dieses Skript prüft, ob ''bleak'' den mBot erkennt. 
 + 
 + 
 + 
 +<Code c linenums:1 | Listing 1:makeblock_scanner.py>
 import asyncio import asyncio
 from bleak import BleakScanner from bleak import BleakScanner
Zeile 120: Zeile 228:
  
 asyncio.run(scan()) asyncio.run(scan())
-</code>+</Code>
  
-==== 📌 Starte das Skript: ==== 
-<code> 
-python3 scan_ble.py 
-</code> 
  
-Falls dein mBot erkannt wird, ist alles korrekt eingerichtet! 🎉+Falls der mBot erkannt wird, ist alles korrekt eingerichtet!
  
 ---- ----
  
-===== 6️⃣ Steuer-Skript: ''r'', ''g'', ''b'', ''0'' senden ===== +===== mbot steuern ===== 
-Jetzt steuern wir den mBot mit ''bleak''.+Dieses Script steuert  mit einfachen Kommandos die LEDs des mBot.
  
-==== 📌 Erstelle ''makeblock_control.py'' mit folgendem Inhalt: ==== + 
-<code python>+<Code c linenums:1 | Listing 1:makeblock_test.py>
 import asyncio import asyncio
 from bleak import BleakClient from bleak import BleakClient
  
-device_address = "10:A5:62:22:CA:C4"  Ersetze mit deiner MAC-Adresse+# TODO ADJUST START 
 +#  Makeblock BLE-Adresse hier eintragen 
 +device_address = "10:A5:62:22:CA:C4" 
 +TODO_ADJUST END 
 WRITE_CHAR_UUID = "0000ffe3-0000-1000-8000-00805f9b34fb" WRITE_CHAR_UUID = "0000ffe3-0000-1000-8000-00805f9b34fb"
  
 async def send_char(client, char): async def send_char(client, char):
 +    """Sendet ein einzelnes Zeichen über BLE"""
     try:     try:
-        data = bytearray([ord(char)])+        # 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}")
     except Exception as e:     except Exception as e:
-        print(f"❌ Fehler beim Senden von '{char}': {e}")+        print(f"Fehler beim Senden von '{char}': {e}")
  
 async def main(): async def main():
 +    """Verbindet sich mit dem mBot und sendet Befehle"""
     try:     try:
         async with BleakClient(device_address) as client:         async with BleakClient(device_address) as client:
             if await client.is_connected():             if await client.is_connected():
-                print(f"✅ Verbunden mit {device_address}")+                print(f"Verbunden mit {device_address}") 
                 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':
-                        print("👋 Programm beendet."+                        print("Programm beendet."
-                        break+                        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)+                        await send_char(client, user_input)  # senden
                     else:                     else:
-                        print("❌ Ungültige Eingabe!")+                        print("Ungültige Eingabe!") 
     except Exception as e:     except Exception as e:
-        print(f"❌ Verbindungsfehler: {e}")+        print(f"Verbindungsfehler: {e}") 
  
 asyncio.run(main()) asyncio.run(main())
-</code> 
  
-==== 📌 Starte das Skript: ==== +</Code
-<code+ 
-python3 makeblock_control.py +
-</code>+
  
----- 
  
-===== 🎉 Fazit ===== 
-✅ Bluetooth eingerichtet, Berechtigungen gesetzt   
-✅ ''bluetoothctl'' genutzt, um mBot zu verbinden   
-✅ ''bleak'' installiert und getestet   
-✅ Steuerung mit Python erfolgreich!   
  
-Falls du das Setup auf einem anderen Rechner wiederholen möchtest, folge einfach dieser Anleitung. 🚀🔥 
  
bluetooth-verbindung_mit_linux.1739027422.txt.gz · Zuletzt geändert: 2025/02/08 15:10 von torsten.roehl