Inhaltsverzeichnis
Bluetooth-Verbindung mit Linux
Diese Anleitung beschreibt, wie der mBot-Roboter per BLE (Bluetooth Low Energy) 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 (10:A5:62:22:CA:C4) 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())
