Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

Raspberry Pi Pico W & Bluetooth

Posted on 12. Dezember 202229. April 2023 by Stefan Draeger

In diesem Beitrag möchte ich dir zeigen, wie du das Bluetooth Modul HC-06 am Raspberry Pi Pico W mit Micropython programmiert wird.

Raspberry Pi Pico W & Bluetooth
Raspberry Pi Pico W & Bluetooth

Eigentlich bräuchten wir kein zusätzliches Modul, denn der Mikrocontroller verfügt über den Chip CYW43438 von Infineon (siehe Beitrag Raspberry Pi Pico W mit Infineon CYW43438 Chip). Aber die Bluetooth-Funktionalität sind auf diesem Softwareseitig deaktiviert worden, somit müssen uns einem zusätzlichen Modul behelfen.

  • Pinout des Bluetooth Modules HC-06
  • Anschluss des HC-06 Moduls an den Raspberry Pi Pico W
  • Eine kleine Schaltung
  • Android App zum Senden von Daten per Bluetooth
  • Programmieren des Bluetooth Moduls per UART
  • Steuern von LEDs per Bluetooth am Raspberry Pi Pico W
  • Quellenangabe

Pinout des Bluetooth Modules HC-06

Das hier verwendete Bluetooth Modul HC-06 habe ich dir bereits im Beitrag Arduino Lektion 21: Bluetooth Modul HC-06 für den Arduino vorgestellt.

Rückseite des HC-06 Moduls mit Pinbeschriftung
Rückseite des HC-06 Moduls mit Pinbeschriftung
Vorderseite des HC-06 Moduls
Vorderseite des HC-06 Moduls

Es gibt neben dem HC-06 Modul noch das HM10 Modul, welches über Bluetooth 4.0 & BLE verfügt und somit deutlich schneller arbeitet.

Bluetooth Modul HC06 (links) und HM10 (rechts)
Bluetooth Modul HC06 (links) und HM10 (rechts)

Hier, in diesem Beitrag, möchte ich das Modul HC-06 mit Bluetooth verwenden, denn dieses kannst du auch mit einem alten Handy steuern und kannst somit ggf. alte Geräte wiederverwenden.

Anschluss des HC-06 Moduls an den Raspberry Pi Pico W

Das Bluetooth Modul HC-06 wird per UART am Raspberry Pi Pico W programmiert. Das macht den Anschluss recht easy, denn wir brauchen nur einen der beiden UART Schnittstellen und die Stromversorgung von 5V inkl. GND.

Bluetooth Modul HC-06Raspberry Pi Pico W
RXDGP0, UART0 TX
TXDGP1, UART0 RX
GND35, GND
VCC40, VBUS
Pinzuordnung des HC-06 Moduls zum Raspberry Pi Pico W
Bluetooth Modul HC-06 am Raspberry Pi Pico
Bluetooth Modul HC-06 am Raspberry Pi Pico

Eine kleine Schaltung

Im nachfolgenden Beispiel möchte ich dir zeigen, wie du per Bluetooth zwei kleine LEDs schalten kannst.

Schaltung - Bluetooth Modul HC-06 am Raspberry Pi Pico
Schaltung – Bluetooth Modul HC-06 am Raspberry Pi Pico

In der Grafik von Fritzing verwende ich das Vorgängermodell Raspberry Pi Pico (also ohne WiFi Support), jedoch sind beide Modul von der Pinbelegung gleich und somit ist diese Grafik auch für den neuen Pico W gültig.

Die beiden LEDs sind jeweils an GPIO14 & 15 angeschlossen.

Android App zum Senden von Daten per Bluetooth

Für die nachfolgenden Beispiele verwende ich die Android-App Serial Bluetooth Terminal. Diese App ist sehr einfach zu bedienen und bietet die Grundfunktionalitäten, welche wir benötigen, um Daten per Bluetooth an den Pico W zu senden.

Android-App Serial Bluetooth Terminal im Google Play Store
Android-App Serial Bluetooth Terminal im Google Play Store

Es gibt für Apple Geräte sicherlich ein äquivalent, da mir jedoch kein solches Gerät zur Verfügung steht, bleibt dieser Test jedoch aus.

Programmieren des Bluetooth Moduls per UART

Aus der Schaltung kannst du übernehmen, dass wir das Modul per UART (RX & TX) programmieren werden.

Im ersten Schritt wollen wir zunächst eine Verbindung mit dem Handy aufbauen und Text versenden. Für die

# Bibliothek zum steuern der UART Kommunikation
from machine import Pin,UART

# beginn der UART Kommunikation auf dem ersten Kanal
# GP0 & GP1 mit 9600 baud
uart = UART(0,9600)

# Endlosschleife
while True:
    # pruefen ob irgendwelche Daten empfangen wurden
    if uart.any():
        # lesen der Daten und speichern in
        # der Variablen command
        command = uart.readline()
        # ausgeben der Variablen command auf
        # der seriellen Schnittstelle
        print(command)

Dieses kleine Programm bewirkt, dass wir wie erwähnt Daten mit einer Bluetooth-Terminal-App versenden und empfangen können.

Raspberry Pi Pico W & Bluetooth Modul HC-06 - simple UART
Dieses Video auf YouTube ansehen.

In dem Video siehst du, dass die Daten in der Konsole nach folgendem Muster ausgegeben werden.

MicroPython v1.19.1 on 2022-06-18; Raspberry Pi Pico with RP2040

Type "help()" for more information.
>>> %Run -c $EDITOR_CONTENT
b'H'
b'a'
b'l'
b'l'
b'o'
b'\r'
b'\n'

Damit wir die Daten von Byte in String konvertieren, müssen wir beim Ausgeben oder später beim Auswerten der Variable command die Funktion „decode()“ aufrufen.

print(command.decode())

Wenn wir nun den Funktionsaufruf decode verwenden, so entfallen die zusätzlichen Zeichen.

MicroPython v1.19.1 on 2022-06-18; Raspberry Pi Pico with RP2040

Type "help()" for more information.
>>> %Run -c $EDITOR_CONTENT
H
a
l
l
o

Steuern von LEDs per Bluetooth am Raspberry Pi Pico W

Im nächsten Schritt wollen wir jedoch per Bluetooth unsere beiden LEDs steuern, dazu senden wir für die grüne LED den Buchstaben g und für die rote den Buchstaben r ab.

Den Quellcode passen wir an und implementieren die beiden Pins für die LEDs sowie die beiden If-Statements für den Check auf die empfangenen Daten.

# Bibliothek zum steuern der UART Kommunikation
from machine import Pin,UART

# beginn der UART Kommunikation auf dem ersten Kanal
# GP0 & GP1 mit 9600 baud
uart = UART(0,9600)

# rote LED am Pin GPIO14 angeschlossen
led_rot = Pin(14, Pin.OUT)
# gruene LED am Pin GPIO15 angeschlossen
led_gruen = Pin(15, Pin.OUT)

# Variablen zum speichern das Status der LEDs
led_rot_status = False
led_gruen_status = False

# Endlosschleife
while True:
    # pruefen ob irgendwelche Daten empfangen wurden
    if uart.any():
        # lesen der Daten und speichern in
        # der Variablen command
        command = uart.readline()
        # ausgeben der Variablen command auf
        # der seriellen Schnittstelle wenn
        # diese nicht leer ist
        if len(command.decode()) > 0:
            print(command.decode())
        else
            # wenn ein leerer String empfangen wurde
            # dann soll die Funktion beendet werden
            return
        
        # Wenn der Buchstabe r empfangen wurde UND
        # die Variable led_rot_status ist False, dann ...
        if command.decode() == 'r' and not led_rot_status:
            # Ausgeben der Zeile auf der seriellen Schnittstelle
            print('LED rot ein')
            # umkehren des Signals auf dem Pin der LED
            led_rot.toggle()
            # setzen der Variable led_rot_status auf True
            led_rot_status = True
        # Wenn der Buchstabe r empfange wurde UND
        # die Variable led_rot_status ist True, dann ...
        elif command.decode() == 'r' and led_rot_status:
            # Ausgeben der Zeile auf der seriellen Schnittstelle
            print('LED rot aus')
            # umkehren des Signals auf dem Pin der LED
            led_rot.toggle()
            # setzen der Variable led_rot_status auf False
            led_rot_status = False
        
        # Wenn der Buchstabe g empfangen wurde UND
        # die Variable led_gruen_status ist False, dann ...
        if command.decode() == 'g' and not led_gruen_status:
            # Ausgeben der Zeile auf der seriellen Schnittstelle
            print('LED gruen ein')
            # umkehren des Signals auf dem Pin der LED
            led_gruen.toggle()
            # setzen der Variable led_gruen_status auf True
            led_gruen_status = True
        elif command.decode() == 'g' and led_gruen_status:
            # Ausgeben der Zeile auf der seriellen Schnittstelle
            print('LED gruen aus')
            # umkehren des Signals auf dem Pin der LED
            led_gruen.toggle()
            # setzen der Variable led_gruen_status auf False
            led_gruen_status = False

Wenn wir nun den Code auf den Pi Pico laden, dann können wir mit den Buchstaben r & g die entsprechenden LEDs steuern.

Quellenangabe

Für diesen Beitrag habe ich den englischen Beitrag https://www.instructables.com/Bluetooth-ModuleHC-05-With-Raspberry-Pi-Pico/ als Grundlage verwendet. Dieser Beitrag geht jedoch nur so weit, dass die Daten aus dem Bluetooth Terminal in die Konsole geschrieben wird.

1 thought on “Raspberry Pi Pico W & Bluetooth”

  1. Michael Petersen sagt:
    27. Januar 2023 um 18:45 Uhr

    Ich würde gerne einen X-box 360 controller mit dem pico w verbinden – wie kann ich den den paaren wie beim normalen Raspberry 4 b oder zero w? Ich habe auch das Modul H06 – jedoch möchte ich nicht die App auf dem Handy sondern die Console nutzen. Wie geht das?

    Antworten

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}