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:29] – [Erstellen Sie ''scan_ble.py'' mit folgendem Inhalt:] 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 ===== | ||
- | Dieses Skript prüft, ob '' | + | Dieses Skript prüft, ob '' |
- | ==== Erstellen Sie '' | ||
- | <Code c linenums:1 | Listing 1:MinimalesProgramm.ino> | + | |
+ | <Code c linenums:1 | Listing 1:makeblock_scanner.py> | ||
import asyncio | import asyncio | ||
from bleak import BleakScanner | from bleak import BleakScanner | ||
Zeile 127: | Zeile 230: | ||
</ | </ | ||
- | ==== Starten Sie das Skript: ==== | ||
- | < | ||
- | python3 scan_ble.py | ||
- | </ | ||
- | Falls Ihr mBot erkannt wird, ist alles korrekt eingerichtet! | + | Falls der mBot erkannt wird, ist alles korrekt eingerichtet! |
---- | ---- | ||
- | ===== Steuer-Skript: | + | ===== mbot steuern |
- | Jetzt steuern wir den mBot mit '' | + | Dieses Script steuert |
- | ==== Erstellen Sie '' | + | |
- | <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 156: | 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()) | ||
- | </ | ||
- | ==== Starten Sie das Skript: ==== | + | </Code> |
- | <code> | + | |
- | python3 makeblock_control.py | + | |
- | </ | + | |
- | ---- | ||
- | ====== 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.1739028592.txt.gz · Zuletzt geändert: 2025/02/08 15:29 von torsten.roehl