bluetooth-verbindung_mit_linux
                Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| bluetooth-verbindung_mit_linux [2025/02/08 15:19] – torsten.roehl | bluetooth-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)** | ||
| // | // | ||
| - | Diese Anleitung beschreibt, wie der Makeblock mBot per **BLE (Bluetooth Low Energy)** mit '' | ||
| - | ---- | + | * Voraussetzungen | 
| - | ====== | + | * Installation und Konfiguration der benötigten Pakete | 
| - | ===== Systemvoraussetzungen & benötigte Pakete | + | * '' | 
| + | * Umgang mit dem wichtigen Tool zur Kontrolle der angeschlossenen Bluetoothgeräte. | ||
| + | * Testen | ||
| + | * Testen (hier in Python) der Verbindung und Steuern des mBot-Roboters. | ||
| + | |||
| + | ====== Voraussetzungen ====== | ||
| + | ++++ Installation und Konfiguration der benötigten Pakete | | ||
| + | Systemvoraussetzungen & benötigte Pakete | ||
| Getestet wurde mit folgender Umgebung: | Getestet wurde mit folgender Umgebung: | ||
| Zeile 11: | 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)</ | ||
| ==== Notwendige Pakete installieren ==== | ==== Notwendige Pakete installieren ==== | ||
| - | Führe | + | Führen Sie folgende Befehle aus, um alle benötigten Systempakete zu installieren: | 
| < | < | ||
| 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 | ||
| - | </ | + | </ | 
| ---- | ---- | ||
| ==== Bluetooth einrichten & Berechtigungen setzen ==== | ==== Bluetooth einrichten & Berechtigungen setzen ==== | ||
| - | Damit der Benutzer | + | Damit Bluetooth | 
| < | < | ||
| Zeile 31: | Zeile 39: | ||
| </ | </ | ||
| - | Danach | + | Starten Sie anschließend | 
| < | < | ||
| sudo systemctl restart bluetooth | sudo systemctl restart bluetooth | ||
| Zeile 37: | Zeile 45: | ||
| </ | </ | ||
| - | ---- | + | < | 
| + | < | ||
| + | $ cd / | ||
| + | $ sudo ln -s rtl8761b_fw.bin rtl8761bu_fw.bin | ||
| + | </ | ||
| + | ☛ https:// | ||
| + | </ | ||
| + | ---- | ||
| - | ===== | + | ===== Python | 
| - | Damit wir BLE-Geräte | + | Damit BLE-Geräte | 
| - | ==== Installation mit Conda (Empfohlen) ==== | ||
| - | < | ||
| - | conda install -c conda-forge bleak | ||
| - | </ | ||
| - | ====  Installation mit '' | + | ==== Installation mit '' | 
| - | Falls du kein Conda nutzt: | + | Falls ohne Conda gearbeitet wird: | 
| < | < | ||
| pip install bleak | pip install bleak | ||
| Zeile 56: | Zeile 67: | ||
| ---- | ---- | ||
| - | ====== | + | ++++ | 
| + | ====== | ||
| + | ++++ Umgang mit dem wichtigen Tool zur Kontrolle der angeschlossenen Bluetoothgeräte.| | ||
| + | Im diesem Abschnitt wird das Tool '' | ||
| + | ===== 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** | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |'' | ||
| + | |'' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | |||
| + | <WRAP center round tip 90%> | ||
| + | * mbot Bluetooth Modul blinkt → <color # | ||
| + | * mbot Bluetool Modul leuchtet Dauerhaft → Verbindung! | ||
| + | </ | ||
| - | Um den mBot zu verbinden, benutze '' | ||
| - | ==== | + | ===== Bluetooth-Interface | 
| < | < | ||
| bluetoothctl | bluetoothctl | ||
| </ | </ | ||
| - | Falls du bereits in '' | + | Falls Sie bereits in '' | 
| < | < | ||
| [bluetooth]# | [bluetooth]# | ||
| </ | </ | ||
| - | === Schritt 2: Scanne | + | ===== Scannen | 
| < | < | ||
| scan on | scan on | ||
| </ | </ | ||
| - | 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: '' | Er sollte eine MAC-Adresse in diesem Format haben: '' | ||
| - | === Schritt 3: Gerät | + | 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 | + | < | 
| + | scan off # scan wieder beenden! | ||
| + | </ | ||
| + | |||
| + | Alternativ kann mit dem Befehl '' | ||
| + | < | ||
| + | [bluetooth]# | ||
| + | Device 59: | ||
| + | Device 25: | ||
| + | Device 10: | ||
| + | [DEL] Device 25: | ||
| + | [bluetooth]# | ||
| + | </ | ||
| + | ===== Wichtige Befehle ===== | ||
| + | |||
| + | ==== Verbindung | ||
| + | Ersetzen Sie die MAC-Adresse mit der Ihres mBots: | ||
| < | < | ||
| trust 10: | trust 10: | ||
| Zeile 84: | Zeile 138: | ||
| </ | </ | ||
| - | Falls die Verbindung klappt, | + | Falls die Verbindung klappt, | 
| < | < | ||
| [CHG] Device 10: | [CHG] Device 10: | ||
| Zeile 90: | Zeile 144: | ||
| </ | </ | ||
| - | Falls die Verbindung fehlschlägt, | + | Falls die Verbindung fehlschlägt, | 
| < | < | ||
| sudo systemctl restart bluetooth | sudo systemctl restart bluetooth | ||
| </ | </ | ||
| - | Dann wieder '' | ||
| - | Falls dein mBot **direkt nach dem Verbinden mit Ubuntu verbunden bleibt**, | + | ==== Verbindung trennen und entfernen ==== | 
| + | Falls Ihr mBot **direkt nach dem Verbinden mit Ubuntu verbunden bleibt**, | ||
| < | < | ||
| disconnect 10: | disconnect 10: | ||
| Zeile 102: | Zeile 156: | ||
| </ | </ | ||
| - | **Hinweis: | + | Mit '' | 
| + | |||
| + | <WRAP center round info 85%> | ||
| + | **Hinweis: | ||
| + | |||
| + | Der mBot sollte | ||
| + | |||
| + | </ | ||
| ---- | ---- | ||
| + | ++++ | ||
| + | ====== 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 # | ||
| + | |||
| + | Die Bereiche, die im Skript geändert werden müssen, sind durch | ||
| + | < | ||
| + | # TODO ADJUST START | ||
| + | </ | ||
| + | und | ||
| + | < | ||
| + | # TODO ADJUST END | ||
| + | </ | ||
| + | gekennzeichnet. | ||
| + | </ | ||
| + | |||
| + | Die folgende Ausgabe von '' | ||
| + | < | ||
| + | [bluetooth]# | ||
| + | Device 10: | ||
| + | Name: Makeblock_LE10a56222cac4 | ||
| + |  | ||
| + |  | ||
| + |  | ||
| + |  | ||
| + |  | ||
| + |  | ||
| + | UUID: Generic Access Profile | ||
| + | UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb) | ||
| + | UUID: Device Information | ||
| + | UUID: Vendor specific | ||
| + | UUID: Vendor specific | ||
| + | UUID: Unknown | ||
| + | UUID: Unknown | ||
| + |  | ||
| + | </ | ||
| + | |||
| + | * ✅ 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 ===== | ||
| + | Dieses Skript prüft, ob '' | ||
| + | |||
| - | ====== 2️⃣ Testen ====== | ||
| - | ===== -Skript: BLE-Scanner ===== | ||
| - | Dieses Skript prüft, ob '' | ||
| - | ==== 📌 Erstelle '' | + | <Code c linenums:1 | Listing 1: | 
| - | <code python> | + | |
| import asyncio | import asyncio | ||
| from bleak import BleakScanner | from bleak import BleakScanner | ||
| Zeile 122: | Zeile 228: | ||
| asyncio.run(scan()) | asyncio.run(scan()) | ||
| - | </code> | + | </Code> | 
| - | ==== Starte das Skript: ==== | ||
| - | < | ||
| - | python3 scan_ble.py | ||
| - | </ | ||
| - | Falls dein mBot erkannt wird, ist alles korrekt eingerichtet! | + | Falls der mBot erkannt wird, ist alles korrekt eingerichtet! | 
| ---- | ---- | ||
| - | ===== | + | ===== mbot steuern | 
| - | Jetzt steuern wir den mBot mit '' | + | Dieses Script steuert | 
| - | ====  Erstelle '' | + | |
| - | <code python> | + | <Code c linenums:1 | Listing 1: | 
| import asyncio | import asyncio | ||
| from bleak import BleakClient | from bleak import BleakClient | ||
| - | device_address = " | + | # TODO ADJUST START | 
| + | # Makeblock BLE-Adresse hier eintragen | ||
| + | device_address = " | ||
| + | # TODO_ADJUST END | ||
| WRITE_CHAR_UUID = " | WRITE_CHAR_UUID = " | ||
| async def send_char(client, | async def send_char(client, | ||
| + | """ | ||
| try: | try: | ||
| - | data = bytearray([ord(char)]) | + |  | 
| + |  | ||
| await client.write_gatt_char(WRITE_CHAR_UUID, | await client.write_gatt_char(WRITE_CHAR_UUID, | ||
| print(f" | print(f" | ||
| Zeile 153: | Zeile 261: | ||
| async def main(): | async def main(): | ||
| + | """ | ||
| 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" | print(f" | ||
| + | |||
| while True: | while True: | ||
| - | user_input = input(" | + | user_input = input("' | 
| if user_input == ' | if user_input == ' | ||
| print(" | print(" | ||
| - | break | + | break # Beende das Programm | 
| elif user_input in [' | elif user_input in [' | ||
| - | await send_char(client, | + | await send_char(client, | 
| else: | else: | ||
| print(" | print(" | ||
| + | |||
| except Exception as e: | except Exception as e: | ||
| print(f" | print(f" | ||
| + | |||
| asyncio.run(main()) | asyncio.run(main()) | ||
| - | </ | ||
| - | ==== Starte das Skript: ==== | + | </Code> | 
| - | <code> | + | |
| - | python3 makeblock_control.py | + | |
| - | </ | + | |
| - | ---- | ||
| - | ===== Fazit ===== | ||
| - | ✅ Bluetooth eingerichtet, | ||
| - | ✅ '' | ||
| - | ✅ '' | ||
| - | ✅ Steuerung mit Python erfolgreich! | ||
| - | Falls du das Setup auf einem anderen Rechner wiederholen möchtest, folge einfach dieser Anleitung. | ||
bluetooth-verbindung_mit_linux.1739027980.txt.gz · Zuletzt geändert:  von torsten.roehl
                
                