Die Bluetooth-Verbindung aufbauen

Bevor ihr anfangt, müsst ihr natürlich weitere Bibliotheken installieren und einfügen:
//Bibliotheken für die Bluetoothverbindung
#include "BluetoothSerial.h"
#include "esp_bt_main.h"
#include "esp_bt_device.h"
#include <cstring>
Als nächstes erkläre ich euch den Code für die BluetoothVerbindung. Dieser Teils des Codes ist etwas komplizierter, also passt gut auf.
Zuerst wird eine Variable erstellt, in der die Nachricht vom Smartphone später gespeichert
wird, Dies ist ein String, da die App den Inhalt als String verschickt. Als
nächstes wird dann ein "char array" erstellt. Dieser ist ebenfalls für die
Nachricht. Der String wird später in ein char array umgewandelt und dann in
dieser Variable gespeichert. Wir müssen das so machen, weil die „print“ Funktion
ein char array braucht, die Daten aber als Strings versendet werden.
//Variable für die Nachricht vom Smartphone
String DATA[] = "";
char data[50] = "";
Dieser Teil ist dafür da, dass der Nutzer eine Fehlermeldung bekommt, wenn das
Bluetooth nicht gestartet wird. Danach wird ein Objekt für die
„BluetoothSerial“ Bibliothek erstellt.
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif
BluetoothSerial SerialBT;
Als nächstes kommt die Funktion, mit welcher ihr die MAC-Adresse des Gerätes
bekommt. Die MAC-Adresse wird im seriellen Monitor angezeigt. Diesen findet
oben rechts. Ihr müsst den seriellen Monitor kurz nach dem
Start öffnen, dann wird euch die Adresse angezeigt. Diese könnt ihr dann
kopieren und beim MIT App Inventor einfügen.
//------------------------- Funktion um die Mac Adresse zu bekommen -----------------------------
void printDeviceAddress() {
const uint8_t* point = esp_bt_dev_get_address();
for (int i = 0; i < 6; i++) {
char str[3];
sprintf(str, "%02X", (int)point[i]);
Serial.print(str);
if (i < 5) {
Serial.print(":");
}
}
Serial.println();
}
Im void Setup müsst ihr das Bluetooth zuerst starten und gebt ihm hier auch
gleich einen Namen. Diesen Namen müsst ihr dann im MIT App Inventor, direkt
hinter der MAC-Adresse einfügen. Danach müsst ihr die eben programmierte
Funktion ausführen.
delay(5000); //Verzögerung damit Man Zeit hat um die Adresse zu sehen
SerialBT.begin("ESP32test"); //startet das Bluetooth und gibt dem BluetoothSerial einen Namen
Serial.println("This is your Adress:");
printDeviceAddress(); //gibt die Mac Adresse in der Konsole aus
Im Void Loop werden die Daten empfangen und der String umgewandelt. Dazu wird
zuerstüberprüft, ob neue Daten vom Handy vorliegen, wenn ja, dann werden diese
immer im String „DATA“ gespeichert. Dieser String wird anschließend in char
array umgewandelt damit die „print“ Funktion der LED Matrix diese Daten
anzeigen kann. Außerdem wird die Nachricht noch im seriellem Monitor ausgegeben. Dies ist eher für die Testphase und ist nicht unbedingt notwendig. Den
char array „data“ fügt ihr dann in die
„print“ Funktion ein und die Nachricht wird ausgegeben.if (SerialBT.available()) { //Abfrage ob neue Daten vom Handy vorliegen
while (SerialBT.available()) { //Eine Schleife die immer Läuft solange neue Daten vorliegen
String DATA = (SerialBT.readString()); //die Nachricht vom Handy soll im DATA String gespeichert werden
char data[50];
strcpy(data, DATA.c_str()); //wandelt den String vom Handy in ein char array um
Serial.println("New Data:");
Serial.println(data); //Die Nachricht wird in der Konsole ausgegeben.