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:33] – [Steuer-Skript: ''r'', ''g'', ''b'', ''0'' senden] 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 Sie den Makeblock | + | //Diese Anleitung beschreibt, wie | 
| + | // | ||
| - | ---- | + | * Voraussetzungen | 
| + | * Installation und Konfiguration der benötigten 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 ====== | ====== 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 13: | 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)</ | 
| ==== Notwendige Pakete installieren ==== | ==== Notwendige Pakete installieren ==== | ||
| Zeile 21: | 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 | ||
| - | </ | + | </ | 
| ---- | ---- | ||
| ==== Bluetooth einrichten & Berechtigungen setzen ==== | ==== Bluetooth einrichten & Berechtigungen setzen ==== | ||
| - | Damit Ihr Benutzer | + | Damit Bluetooth | 
| < | < | ||
| Zeile 38: | Zeile 44: | ||
| sudo rfkill unblock bluetooth | sudo rfkill unblock bluetooth | ||
| </ | </ | ||
| + | |||
| + | < | ||
| + | < | ||
| + | $ cd / | ||
| + | $ sudo ln -s rtl8761b_fw.bin rtl8761bu_fw.bin | ||
| + | </ | ||
| + | ☛ https:// | ||
| + | </ | ||
| + | |||
| ---- | ---- | ||
| ===== Python | ===== Python | ||
| - | Damit Sie BLE-Geräte | + | Damit BLE-Geräte | 
| - | ==== Installation mit Conda (Empfohlen) ==== | ||
| - | < | ||
| - | conda install -c conda-forge bleak | ||
| - | </ | ||
| ==== Installation mit '' | ==== Installation mit '' | ||
| - | Falls Sie kein Conda nutzen: | + | Falls ohne Conda gearbeitet wird: | 
| < | < | ||
| pip install bleak | pip install bleak | ||
| Zeile 56: | Zeile 67: | ||
| ---- | ---- | ||
| + | ++++ | ||
| ====== Tool: bluetoothctl | ====== Tool: bluetoothctl | ||
| + | ++++ 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, verwenden Sie '' | ||
| - | ==== Bluetooth-Interface | + | ===== Bluetooth-Interface | 
| < | < | ||
| bluetoothctl | bluetoothctl | ||
| Zeile 71: | Zeile 108: | ||
| </ | </ | ||
| - | ==== Scannen nach BLE-Geräten ==== | + | ===== Scannen nach BLE-Geräten | 
| < | < | ||
| scan on | scan on | ||
| Zeile 78: | Zeile 115: | ||
| Er sollte eine MAC-Adresse in diesem Format haben: '' | Er sollte eine MAC-Adresse in diesem Format haben: '' | ||
| - | ==== wichtige | + | 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. | 
| + | < | ||
| + | scan off # scan wieder beenden! | ||
| + | </ | ||
| + | |||
| + | Alternativ kann mit dem Befehl '' | ||
| + | < | ||
| + | [bluetooth]# | ||
| + | Device 59: | ||
| + | Device 25: | ||
| + | Device 10: | ||
| + | [DEL] Device 25: | ||
| + | [bluetooth]# | ||
| + | </ | ||
| + | ===== Wichtige | ||
| + | |||
| + | ==== Verbindung vertrauen und verbinden | ||
| Ersetzen Sie die MAC-Adresse mit der Ihres mBots: | Ersetzen Sie die MAC-Adresse mit der Ihres mBots: | ||
| < | < | ||
| Zeile 91: | Zeile 144: | ||
| </ | </ | ||
| - | Falls die Verbindung fehlschlägt, | + | Falls die Verbindung fehlschlägt, | 
| < | < | ||
| sudo systemctl restart bluetooth | sudo systemctl restart bluetooth | ||
| </ | </ | ||
| - | Starten Sie dann '' | ||
| + | ==== Verbindung trennen und entfernen ==== | ||
| Falls Ihr mBot **direkt nach dem Verbinden mit Ubuntu verbunden bleibt**, trennen Sie ihn: | Falls Ihr mBot **direkt nach dem Verbinden mit Ubuntu verbunden bleibt**, trennen Sie ihn: | ||
| < | < | ||
| Zeile 103: | Zeile 156: | ||
| </ | </ | ||
| - | **Hinweis: | + | Mit '' | 
| - | ---- | + | <WRAP center round info 85%> | 
| + | **Hinweis: | ||
| + | Der mBot sollte __nur__ mit dem Python-Skript verbunden sein, nicht dauerhaft mit Ubuntu! | ||
| + | |||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | ++++ | ||
| ====== 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 # | ||
| + | |||
| + | 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 ===== | ===== BLE-Scanner ===== | ||
| Zeile 128: | Zeile 231: | ||
| - | Falls Ihr mBot erkannt wird, ist alles korrekt eingerichtet! | + | Falls der mBot erkannt wird, ist alles korrekt eingerichtet! | 
| ---- | ---- | ||
| - | ===== mbot Steuern | + | ===== mbot steuern | 
| - | Dieses Script steuert | + | Dieses Script steuert | 
| - | ==== Erstellen Sie '' | ||
| - | + | <Code c linenums:1 | Listing 1:makeblock_test.py> | |
| - | <Code c linenums:1 | Listing 1:makeblock_scanner.py> | + | |
| 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 154: | 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()) | ||
| + | |||
| </ | </ | ||
| - | ---- | ||
| - | ====== Fazit ====== | ||
| - | ✅ Bluetooth eingerichtet, | ||
| - | ✅ '' | ||
| - | ✅ '' | ||
| - | ✅ Steuerung mit Python erfolgreich! | ||
| - | Falls Sie das Setup auf einem anderen Rechner wiederholen möchten, folgen Sie einfach dieser Anleitung. | ||
bluetooth-verbindung_mit_linux.1739028821.txt.gz · Zuletzt geändert:  von torsten.roehl
                
                