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:
TTGO | HC-05 |
3V/5V | VCC |
G(ND) | GND |
RxD | TxD |
TxD | RxD |
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 die 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)
'''
Wenn Sie die Verbindung trennen wollen, betätigen Sie einfach das Connected-Symbol.
.