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:08] – [📌 Notwendige Pakete installieren] 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 ====== | ||
- | ====== Bluetooth & BLE-Setup für Makeblock mBot unter Ubuntu ====== | ||
- | Diese Anleitung beschreibt, wie du 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. | ||
- | ===== 1️⃣ Systemvoraussetzungen & benötigte Pakete | + | ====== |
+ | ++++ 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)</ | ||
- | ==== 📌 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 | ||
- | </ | + | </ |
---- | ---- | ||
- | ===== 2️⃣ | + | ==== Bluetooth einrichten & Berechtigungen setzen ==== |
- | Damit der Benutzer | + | Damit Bluetooth |
< | < | ||
Zeile 32: | Zeile 39: | ||
</ | </ | ||
- | Danach | + | Starten Sie anschließend |
< | < | ||
sudo systemctl restart bluetooth | sudo systemctl restart bluetooth | ||
sudo rfkill unblock bluetooth | sudo rfkill unblock bluetooth | ||
</ | </ | ||
+ | |||
+ | < | ||
+ | < | ||
+ | $ cd / | ||
+ | $ sudo ln -s rtl8761b_fw.bin rtl8761bu_fw.bin | ||
+ | </ | ||
+ | ☛ https:// | ||
+ | </ | ||
+ | |||
---- | ---- | ||
- | ===== 3️⃣ '' | + | ===== Python |
- | Um den mBot zu verbinden, benutze | + | Damit BLE-Geräte gesteuert werden können, wird '' |
- | ==== 📌 Schritt 1: Bluetooth-Interface | + | |
+ | ==== Installation mit '' | ||
+ | Falls ohne Conda gearbeitet wird: | ||
+ | < | ||
+ | pip install bleak | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | ++++ | ||
+ | ====== 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! | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== 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 67: | Zeile 138: | ||
</ | </ | ||
- | Falls die Verbindung klappt, | + | Falls die Verbindung klappt, |
< | < | ||
[CHG] Device 10: | [CHG] Device 10: | ||
Zeile 73: | 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 85: | Zeile 156: | ||
</ | </ | ||
- | **Hinweis: | + | Mit '' |
+ | |||
+ | <WRAP center round info 85%> | ||
+ | **Hinweis: | ||
+ | |||
+ | Der mBot sollte | ||
+ | |||
+ | </ | ||
---- | ---- | ||
+ | ++++ | ||
+ | ====== Testen ====== | ||
- | ===== 4️⃣ Python & '' | + | <WRAP center round tip 90%> |
- | Damit wir BLE-Geräte steuern können, brauchen wir '' | + | **Um die Skripte zu testen, muss 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: |
+ | |||
+ | Die Bereiche, die im Skript geändert werden müssen, sind durch | ||
< | < | ||
- | conda create -n ble_env python=3.11 | + | # TODO ADJUST START |
- | conda activate ble_env | + | </ |
- | conda install -c conda-forge bleak | + | und |
- | </ | + | < |
+ | # TODO ADJUST END | ||
+ | </code> | ||
+ | gekennzeichnet. | ||
+ | </WRAP> | ||
- | ==== 📌 Installation mit '' | + | Die folgende Ausgabe von '' |
- | Falls du kein Conda nutzt: | + | |
< | < | ||
- | pip install bleak | + | [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. | ||
- | ===== 5️⃣ Test-Skript: | ||
- | Dieses Skript prüft, ob '' | ||
- | ==== 📌 Erstelle '' | + | ===== BLE-Scanner ===== |
- | <code python> | + | Dieses Skript prüft, ob '' |
+ | |||
+ | |||
+ | |||
+ | <Code c linenums:1 | Listing 1: | ||
import asyncio | import asyncio | ||
from bleak import BleakScanner | from bleak import BleakScanner | ||
async def scan(): | async def scan(): | ||
- | print(" | + | print(" |
devices = await BleakScanner.discover() | devices = await BleakScanner.discover() | ||
for device in devices: | for device in devices: | ||
- | print(f" | + | print(f" |
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! |
---- | ---- | ||
- | ===== 6️⃣ Steuer-Skript: | + | ===== 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" |
except Exception as e: | except Exception as e: | ||
- | print(f" | + | print(f" |
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.1739027317.txt.gz · Zuletzt geändert: 2025/02/08 15:08 von torsten.roehl