Benutzer-Werkzeuge

Webseiten-Werkzeuge


bluetooth-verbindung_mit_linux

Dies ist eine alte Version des Dokuments!


Bluetooth-Verbindung mit Linux

Diese Anleitung beschreibt, wie Sie den Makeblock mBot per BLE (Bluetooth Low Energy) mit bleak unter Ubuntu steuern können. Dabei wird ein Python-Skript (makeblock_test.py) verwendet, das testweise die LEDs des mBots schalten kann.

  • Voraussetzungen
  • bluetoothctrl
  • Testen

Voraussetzungen

Systemvoraussetzungen & benötigte Pakete

Getestet wurde mit folgender Umgebung:

  • Ubuntu (getestet mit 20.04 & 22.04, sollte auch auf anderen Versionen laufen)
  • Python 3.11+ (Empfohlen: Anaconda oder System-Python)
  • Bluetooth-Adapter mit BLE-Unterstützung
    • USB-BT500 ASUS

Notwendige Pakete installieren

Führen Sie folgende Befehle aus, um alle benötigten Systempakete zu installieren:

sudo apt update
sudo apt install bluetooth bluez bluez-tools rfkill libbluetooth-dev

Bluetooth einrichten & Berechtigungen setzen

Damit Ihr Benutzer Bluetooth nutzen kann, muss er in die bluetooth-Gruppe aufgenommen werden:

sudo usermod -aG bluetooth $USER
newgrp bluetooth  # Änderungen sofort anwenden

Starten Sie anschließend den Bluetooth-Stack neu:

sudo systemctl restart bluetooth
sudo rfkill unblock bluetooth

Python

Damit Sie BLE-Geräte steuern können, benötigen Sie bleak.

Installation mit Conda (Empfohlen)

conda install -c conda-forge bleak

Installation mit ''pip'' (System-Python oder venv)

Falls Sie kein Conda nutzen:

pip install bleak

Tool: bluetoothctl

Die Bluetooth-Schnittstelle wird mit dem Tool bluetoothctlkontrolliert.

Bluetooth-Interface

bluetoothctl

Falls Sie bereits in bluetoothctl sind, sehen Sie eine Eingabezeile wie:

[bluetooth]#

Scannen nach BLE-Geräten

scan on

Lassen Sie den Scan 10–15 Sekunden laufen, bis Ihr mBot erscheint. Er sollte eine MAC-Adresse in diesem Format haben: 10:A5:62:22:CA:C4.

wichtige Befehle

Verbindung vertrauen und verbinden

Ersetzen Sie die MAC-Adresse mit der Ihres mBots:

trust 10:A5:62:22:CA:C4
connect 10:A5:62:22:CA:C4

Falls die Verbindung klappt, sehen Sie:

[CHG] Device 10:A5:62:22:CA:C4 Connected: yes
Connection successful

Falls die Verbindung fehlschlägt, starten Sie den Bluetooth-Dienst neu:

sudo systemctl restart bluetooth

Starten Sie dann bluetoothctl erneut und versuchen Sie es noch einmal.

Verbindung trennen und entfernen

Falls Ihr mBot direkt nach dem Verbinden mit Ubuntu verbunden bleibt, trennen Sie ihn:

disconnect 10:A5:62:22:CA:C4
remove 10:A5:62:22:CA:C4

Hinweis: Der mBot sollte nur mit dem Python-Skript verbunden sein, nicht dauerhaft mit Ubuntu!


Testen

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 Ihr mBot erkannt wird, ist alles korrekt eingerichtet!


mbot Steuern

Dieses Script steuert mit einfachen Kommandos die LED's des mBot.

Listing 1:makeblock_test.py

import asyncio
from bleak import BleakClient

# TODO START
# Muss mit der mBot MAC-Adresse ersetzt werden!!!
device_address = "10:A5:62:22:CA:C4" 
# TODO_END
WRITE_CHAR_UUID = "0000ffe3-0000-1000-8000-00805f9b34fb"

async def send_char(client, char):
    try:
        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():
    try:
        async with BleakClient(device_address) as client:
            if await client.is_connected():
                print(f"Verbunden mit {device_address}")
                while True:
                    user_input = input("Geben Sie 'r', 'g', 'b', '0' zum Senden ein oder 'q' zum Beenden: ")
                    if user_input == 'q':
                        print("Programm beendet.")
                        break
                    elif user_input in ['r', 'g', 'b', '0']:
                        await send_char(client, user_input)
                    else:
                        print("Ungültige Eingabe!")
    except Exception as e:
        print(f"Verbindungsfehler: {e}")

asyncio.run(main())

Fazit

✅ Bluetooth eingerichtet, Berechtigungen gesetzt ✅ bluetoothctl genutzt, um mBot zu verbinden ✅ bleak installiert und getestet ✅ Steuerung mit Python erfolgreich!

Falls Sie das Setup auf einem anderen Rechner wiederholen möchten, folgen Sie einfach dieser Anleitung.

bluetooth-verbindung_mit_linux.1739029158.txt.gz · Zuletzt geändert: 2025/02/08 15:39 von torsten.roehl