Bluetooth mit dem HC-05-Modul

Hier werden einzelne Projekte mit MicroPython vorgestellt
Antworten
Heinrichs
Beiträge: 185
Registriert: Do 21. Okt 2010, 18:31

Bluetooth mit dem HC-05-Modul

Beitrag von Heinrichs » So 18. Aug 2024, 09:58

Das HC-05-Modul habe ich hier im Zusammenhang mit dem Attiny-Mikrocontroller schon einmal vorgestellt. An dieser Stelle möchte ich etwas ausführlicher darstellen, wie man damit Zeichenketten von einem (Android-) Handy via Bluetooth an den TTGO übertragen kann. Hierbei setze ich voraus, dass das HC-05-Modul über die Bluetooth-Einstellungen bereits einmal mit dem Handy "gekoppelt" worden ist; dazu muss das Passwort (standardmäßig 1234) eingegeben werden. Sollte das Passwort nicht bekannt sein, können Sie dem Modul einen neues Passwort geben (vgl. auch den oben angegebenen Link!).

Als App benutze ich "Serial Bluetooth Terminal", im Folgenden kurz als BT-App bezeichnet. Sie können sie im Playstore herunterladen.


1. Grundlagen

Das HC-05-Modul besitzt zwei Zustände: Den AT-Modus und den Sende-/Empfangsmodus. Der aktuelle Modus wird durch eine LED auf dem Modul angezeigt: Blinkt die LED, dann befindet sich das Modul im AT-Modus. Dies ist z. B. der Fall, wenn das Modul gerade an eine elektrische Quelle angeschlossen worden ist. (Bei manchen HC-05-Modulen kann dieser Zustand auch durch einen Button erreicht werden; mehr dazu hier!)

Wenn das HC-05-Modul mit dem Handy "verbunden" wird (mehr dazu s. u.), dann geht es in den Sende-/Empfangsmodus über. Es zeigt dies an, indem die LED nun dauerhaft leuchtet. In diesem Zustand können wir Zeichenketten vom Handy per Bluetooth an das HC-05-Modul senden; diese gibt sie dann über seinen TxD-Anschluss aus. Verbindet man diesen mit einem RxD-Eingang des TTGO, so kann dieser mit Hilfe eines entsprechenden Programms die gesendete Zeichenkette auf dem Terminal oder auch auf dem Display anzeigen. Umgekehrt kann man natürlich auch Zeichenketten vom TTGO an das Handy senden.

Beachten Sie: Je nach Hersteller bzw. Version des Moduls können die LED-Signale anders sein!

Das Anschlusschema sieht dann so aus:

TTGOHC-05
3V/5VVCC
G(ND)GND
RxDTxD
TxDRxD

Auf meinem HC-05-Modul wird als Versorgungsspannung 3,6 V - 6 V angegeben. Ein Versuch zeigt, dass das Modul aber auch mit den 3,3 V des TTGO auskommt. Intern und auch bei der Ein-/Ausgabe von Signalen arbeitet das Modul aber mit 3,3 V (oder weniger). Beachten Sie: Es gibt auch HC-05-Module, die mit deutlich kleineren Spannungen arbeiten.


2. Das HC-05-Modul mit dem Handy verbinden

Nachdem das Modul an den TTGO und der TTGO seinerseits mit dem PC angeschlossen worden ist, sehen wir an der blinkenden LED des HC-05-Moduls, dass es noch nicht mit dem Handy "verbunden" ist. Starten wir nun die BT-App, so wird uns dieser Zustand in dem blau unterlegten Feld (1) auch mit dem Disconnected-Symbol links neben dem Papierkorb angezeigt.

Um jetzt eine Bluetooth-Verbindung herzustellen, betätigen wir das Menü-Symbol am linken Rand des Feldes (1). Nun wird ein Menü angezeigt, in welchem wir den Eintrag "Devices" auswählen. Die BT-App zeigt jetzt alle Bluetooth-Geräte an, die mit dem Handy gekoppelt (worden) sind. Dabei sind die aktuell zur Verfügung stehenden Geräte grün markiert. Wählen Sie nun Ihr HC-05-Modul aus.

Im Protokollfeld (2) wird sofort angezeigt, dass die Verbindung hergestellt wird ("... Connecting ..."); wenige Augenblicke später sehen Sie darunter auch den Eintrag " ... Connected". Außerdem können Sie feststellen:

1. Das Disconnected-Symbol hat sich zu einem Connected-Symbol verändert.
2. Die LED am HC-05-Modul leuchtet dauerhaft.

Unser Modul ist nun mit dem Handy "verbunden" und für eine Übertragung bereit.


3. Eine Nachricht vom Handy an den TTGO senden

Jetzt brauchen wir auf dem TTGO noch ein passendes Programm. Im Wesentlichen besteht es lediglich aus einer Schleife, welche Nachrichten (genauer: Bytestrings) über
den RxD-Eingang der TTGO-UART empfängt und die zugehörige Zeichenkette auf dem Terminal von Thonny (und ggf. auch auf dem Display) ausgibt.

Hier ein entsprechendes Programm:

Code: Alles auswählen

# HC-05_Empfaenger.py
# 17.08.2024

from machine import UART

# UART initialisieren
uart = UART(1, baudrate = 9600, tx = 12, rx = 13)

'''
# Display...
from machine import Pin, SPI
import vga1_16x16 as font1
import st7789
# Display initialisieren (Landscape)
spi = SPI(1, baudrate=20000000, polarity=1, sck=Pin(18), mosi=Pin(19))
display = st7789.ST7789(spi, 135, 240,  reset=Pin(23, Pin.OUT), cs=Pin(5, Pin.OUT), dc=Pin(16, Pin.OUT), backlight=Pin(4, Pin.OUT), rotation=3)
display.init()
display.fill(0)  # loeschen; Bildschirm schwarz
'''

def read_bt_message(uart1):
    print('auf Nachricht warten...')
    while not uart1.any(): # warten, bis (mindestens) ein Byte im Lesepuffer ist
        pass
    return uart1.readline()

while True:
    message_bstr = read_bt_message(uart) # Bytestring
    message = str(message_bstr, 'UTF-8')
    print(message)    
    '''
    display.fill(0)
    display.text(font1, message, 10, 60)
    '''
Wir starten das Programm; es zeigt an, dass es auf eine Nachricht wartet. In der Eingabezeile (3) am unteren Rand geben wir einen Text ein, z. B. "Hallo Welt!", und betätigen das >-Symbol rechts neben dem Eingabefeld. Der Text wird sofort übertragen und erscheint auf dem Terminal von Thonny (und ggf. auch auf dem Display).

Wenn Sie die Verbindung trennen wollen, betätigen Sie einfach das Connected-Symbol.

Screenshot_serial_bluetooth_terminal_3.jpg
Screenshot von der BT-App ("meinAttiny" ist der Name meines BT-Moduls.
Screenshot_serial_bluetooth_terminal_3.jpg (25.1 KiB) 21176 mal betrachtet
.

Antworten