Benutzer-Werkzeuge

Webseiten-Werkzeuge


bluetooth-verbindung_mit_linux

Dies ist eine alte Version des Dokuments!


Bluetooth-Verbindung mit Linux

Diese Anleitung beschreibt, wie der Makeblock mBot per BLE (Bluetooth Low Energy) mit bleak unter Ubuntu gesteuert werden kann. Dabei wird mit Python ein Script (makeblock_test.py) genutzt, das ähnlich wie im Beispiel („Bluetooth-Verbindung mit Android“) zu testzwecken die LED's am mBot schalten kann.


1️⃣ 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

Notwendige Pakete installieren

Führe 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 der Benutzer Bluetooth nutzen kann, muss er in die bluetooth-Gruppe aufgenommen werden:

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

Danach den Bluetooth-Stack neu starten:

sudo systemctl restart bluetooth
sudo rfkill unblock bluetooth

''bluetoothctl'' Befehle – mBot verbinden

Um den mBot zu verbinden, benutze bluetoothctl.

📌 Schritt 1: Bluetooth-Interface starten

bluetoothctl

Falls du bereits in bluetoothctl bist, siehst du eine Eingabezeile wie:

[bluetooth]#

Schritt 2: Scanne nach BLE-Geräten

scan on

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

Schritt 3: Gerät vertrauen & verbinden

Ersetze die MAC-Adresse mit der deines mBot:

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

Falls die Verbindung klappt, siehst du:

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

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

sudo systemctl restart bluetooth

Dann wieder bluetoothctl starten und erneut connect versuchen.

Falls dein mBot direkt nach dem Verbinden mit Ubuntu verbunden bleibt, trenne 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!


4️⃣ Python & ''bleak'' installieren

Damit wir BLE-Geräte steuern können, brauchen wir bleak.

📌 Installation mit Conda (Empfohlen)

conda install -c conda-forge bleak

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

Falls du kein Conda nutzt:

pip install bleak

5️⃣ Test-Skript: BLE-Scanner

Dieses Skript prüft, ob bleak dein mBot erkennt.

📌 Erstelle ''scan_ble.py'' mit folgendem Inhalt:

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())

📌 Starte das Skript:

python3 scan_ble.py

Falls dein mBot erkannt wird, ist alles korrekt eingerichtet! 🎉


6️⃣ Steuer-Skript: ''r'', ''g'', ''b'', ''0'' senden

Jetzt steuern wir den mBot mit bleak.

📌 Erstelle ''makeblock_control.py'' mit folgendem Inhalt:

import asyncio
from bleak import BleakClient
 
device_address = "10:A5:62:22:CA:C4"  # Ersetze mit deiner MAC-Adresse
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("Gib '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())

📌 Starte das Skript:

python3 makeblock_control.py

🎉 Fazit

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

Falls du das Setup auf einem anderen Rechner wiederholen möchtest, folge einfach dieser Anleitung. 🚀🔥

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