Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Bluetooth-Verbindung mit Linux
Diese Anleitung beschreibt, wie der mBot-Roboter per BLE (Bluetooth Low Energy) mit bleak
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.
Voraussetzungen
Tool: bluetoothctl
Testen
Um die Skripte zu testen, muss die MAC-Adresse des Makeblock-Bluetooth-Moduls bekannt sein!
Sie ist im Skript durch die von uns verwendete zu ersetzen. Ansonsten muss das Skript nicht angepasst werden.
Die Bereiche, die im Skript geändert werden müssen, sind durch # TODO ADJUST START
und # TODO ADJUST END
gekennzeichnet.
Die folgende Ausgabe von bluetoothctl
zeigt, dass alle Voraussetzungen für das Testen mit Python erfüllt sind!
[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
- ✅ 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 bleak
den mBot erkennt.
Listing 1:makeblock_scanner.py
import asyncio from bleak import BleakScanner async def scan(): print("Scanne nach BLE-Geräten...") devices = await BleakScanner.discover() for device in devices: print(f"Gefunden: {device.name} - {device.address}") asyncio.run(scan())
Falls der mBot erkannt wird, ist alles korrekt eingerichtet!
mbot steuern
Dieses Script steuert mit einfachen Kommandos die LEDs des mBot.
Listing 1:makeblock_test.py
import asyncio from bleak import BleakClient # 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" async def send_char(client, char): """Sendet ein einzelnes Zeichen über BLE""" try: # Konvertiere Zeichen in Byte data = bytearray([ord(char)]) await client.write_gatt_char(WRITE_CHAR_UUID, data) print(f"Gesendet: {char}") except Exception as e: print(f"Fehler beim Senden von '{char}': {e}") async def main(): """Verbindet sich mit dem mBot und sendet Befehle""" try: async with BleakClient(device_address) as client: if await client.is_connected(): print(f"Verbunden mit {device_address}") while True: user_input = input("'r', 'g', 'b', '0' zum Senden. 'q' zum Beenden: ") if user_input == 'q': print("Programm beendet.") break # Beende das Programm elif user_input in ['r', 'g', 'b', '0']: await send_char(client, user_input) # senden else: print("Ungültige Eingabe!") except Exception as e: print(f"Verbindungsfehler: {e}") asyncio.run(main())