Benutzer-Werkzeuge

Webseiten-Werkzeuge


bluetooth-verbindung_mit_linux

Dies ist eine alte Version des Dokuments!


Bluetooth-Verbindung mit Linux

Bluetooth & BLE-Setup für Makeblock mBot unter Ubuntu

Diese Anleitung beschreibt, wie du den Makeblock mBot per BLE (Bluetooth Low Energy) mit bleak unter Ubuntu steuerst. Sie enthält alle benötigten Befehle und Schritte, um das Setup auf einem neuen Rechner zu wiederholen.


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

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

3️⃣ ''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.1739027390.txt.gz · Zuletzt geändert: 2025/02/08 15:09 von torsten.roehl