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.
 

Zuletzt geändert: Freitag, 10. September 2021, 15:40