Raspberry Pi Pico W: Grundlagen zu Bluetooth

Der Raspberry Pi Pico W ist ein Mikrocontroller-Board von der Raspberry Pi Foundation mit einem Funk-Chip für WLAN und Bluetooth.
Bluetooth ist eine standardisierte, universelle und lizenzfreie Funktechnik zum Übertragen von Sprache und Daten. Die Funktechnik Bluetooth ist typischerweise in kleinen mobilen Geräten integriert und wird für Kurzstrecken von wenigen Metern verwendet.
Für die Nutzung von Bluetooth ist ein Raspberry Pi Pico W mit Funkchip erforderlich. Der Funk-Chip CYW43439 von Infineon unterstützt neben WLAN auch Bluetooth Classic und Bluetooth Low-Energy (Version 5.2).

Installation: MicroPython-Firmware mit Bluetooth-Unterstützung

Hinweis: Zum Zeitpunkt, als dieser Artikel geschrieben wurde, gab es eine spezielle MicroPython-Firmware mit Bluetooth-Unterstützung. Es kann sein, dass Bluetooth inzwischen in der regulären Firmware unterstützt wird und die folgenden Installationsschritte nicht notwendig sind.

Unterstützt die aktuelle Firmware auf dem Raspberry Pi Pico W auch Bluetooth? Gib folgendes Kommando auf der Kommandozeile der Thonny Python IDE ein.

import bluetooth

Bleibt die Kommandozeile ohne Ausgabe und Fehlermeldung, dann unterstützt die Firmware auch Bluetooth.

Wenn die Firmware keine Bluetooth-Unterstützung beinhaltet, dann erscheint in der Regel folgende oder ähnliche Fehlermeldung: ImportError: no module named 'bluetooth'

Die Fehlermeldung sagt aus, dass das Modul „bluetooth“ fehlt. Das bedeutet, dass in der MicroPython-Firmware die Unterstützung für Bluetooth fehlt. Dann muss eine spezielle Firmware heruntergeladen und installiert werden.

Auf dieser Webseite ist die aktuelle MicroPython-Firmware mit WLAN- und Bluetooth-Unterstützung verlinkt. Hierbei ist zu beachten, dass es sich dabei um eine Beta-Version handeln kann, die Fehler enthält und unter Umständen nicht wie erwartet funktioniert.

Download the correct MicroPython UF2 file for your board:
 Raspberry Pi Pico
 Raspberry Pi Pico W with Wi-Fi support
 Raspberry Pi Pico W with Wi-Fi and Bluetooth LE support

Lade die UF2-Datei mit Bluetooth-Support herunter und kopiere sie im BOOTSEL-Modus auf den Raspberry Pi Pico W.

Bluetooth mit Bluetooth-Scan testen

Ein Bluetooth-Scan ist ein Vorgang, bei dem ein Bluetooth-Gerät nach anderen Bluetooth-Geräten in seiner Umgebung sucht. Während des Scans werden die sogenannten Bluetooth-Advertisement-Pakete von anderen Geräten empfangen. Auf diese Weise können Geräte die Anwesenheit von Geräten und verfügbaren Dienste feststellen, sich automatisch verbinden oder dem Benutzer eine Auswahl anzeigen.

Programmcode für den passiven Bluetooth-Scan

Beim passiven Bluetooth-Scan lauscht das Gerät nur auf die Advertisement-Pakete anderer Bluetooth-Geräte, ohne selbst aktive Anfragen zu senden. Der passive Scan ist weniger invasiv und wird oft für Anwendungen verwendet, bei denen nur Informationen über andere Geräte in der Nähe benötigt werden, ohne dass eine sofortige Verbindung hergestellt werden muss.
Der passive Bluetooth-Scan erfordert weniger Energie und ermöglicht eine gewisse Anonymität, da das Gerät nicht aktiv sendet oder signalisiert, dass es nach anderen Geräten sucht.

import aioble
import uasyncio as asyncio

async def bluetooth_scan():
    print('Passiver Bluetooth-Scan')
    print()
    async with aioble.scan(duration_ms=10000) as scanner:
        async for result in scanner:
            print(result, result.name(), result.rssi, result.services())

asyncio.run(bluetooth_scan())

Programmcode für den aktiven Bluetooth-Scan

Beim aktiven Bluetooth-Scan sendet das Bluetooth-Gerät aktive Anfragen an andere Geräte, um die Anwesenheit und verfügbaren Dienste zu ermitteln. Der aktive Scan wird häufig verwendet, wenn eine Verbindung zu anderen Geräten hergestellt werden muss oder wenn spezifische Informationen von den anderen Geräten benötigt werden.
Der aktive Bluetooth-Scan erfordert mehr Energie und bietet eine schnellere Entdeckung von Geräten und Diensten, da es eine sofortige Antwort von anderen Geräten ermöglicht.

import aioble
import uasyncio as asyncio

async def bluetooth_scan():
    print('Aktiver Bluetooth-Scan')
    print()
    async with aioble.scan(duration_ms=5000, interval_us=30000, window_us=30000, active=True) as scanner:
        async for result in scanner:
            print(result, result.device)
            #print(result, result.name(), result.rssi, result.services())

asyncio.run(bluetooth_scan())

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren