ESP32 BLE Sensorwerte als Array größer 20 Bytes versenden

Guten Abend zusammen,

wie sich vielleicht der eine oder andere erinnert, habe ich letzte Woche dank Eurer Hilfe bei der in diesem Thread beschriebenen Applikation einen wichtigen weiteren Schritt gemacht.

@Serenifly: Ich habe einige Deiner Anregungen zur Verschlankung des Codes aufgenommen. Der Code ist folgendermaßen, wobei ich das grundsätzlich von hier übernommen habe.

Leider war der Code zu lange, weshalb ich ihn beigefügt habe. Sorry!

Ein weiterer Schritt ist die Anbindung einer mit dem MIT App inventor 2 erstellten App, welche die Sensorwerte über Bluetooth low energe abfrägt. Leider beisse ich mir seit Tagen nun schon wieder die Zähne aus:

Meine App hängt sich nach einiger Zeit (etwa 1,5 Minuten) "auf". Zunächst ist die Geschwindigkeit für etwa 20 Sekunden richtig, dann wird sie immer langsamer, um dann nur noch konstante Werte anzuzeigen. Das Problem liegt mutmaßlich an meiner App. Ich komme zu dem Schluss, da wenn ich -nachdem sich die App aufgehängt hat- einen anderen Client, den nRF connect anstelle, sehe ich sowohl im Serial-Monitor der Arduino IDE als auch im nRF connect sich die Werte weiter ändern...

Wenn ich mich also nicht täusche, liegt der Grund nicht auf der Seite des ESP32, sondern der App, die vermutlich zu komplex ist, um die Sensorwerte zu verarbeiten.

Jetzt zu meinem eigentlichen Anliegen, denn ich denke, mit der App wird sich hier niemand so tief beschäftigen... Die App wurde so komplex, da ich gezwungen bin, meine 16 Sensorwerte nach folgendem Schema auzuteilen, da die App nur 20 Bytes empfangen kann:

  • A,Sensorwert1,Sensorwert2,Sensorwert3,Sensorwert4,Sensorwert5,Sensorwert
    6,

  • B,Sensorwert7,Sensorwert8,Sensorwert9,Sensorwert10,Sensorwert11,Sensorwe
    rt12,

  • C,Sensorwert13,Sensorwert14,Sensorwert15,Sensorwert16

Diese Aufteilung in die drei Pakete mache ich (ebenso umständlich und vermutlich auch nicht nach Lehrbuch) vorab auch im Code des ESP32 (siehe anbei).

Jetzt meine eigentliche konkrete Frage: Seht Ihr hier grobe Schnitzer, bzw. habt Ihr eine andere Idee, wie ich die Daten einfacher -eventuell ohne Zerlegung- an meine App schicken kann? Meine Überlegung: Wenn ich die Daten in einem einfacheren Format an die App schicke, wird diese nicht so aufwändig und geht nicht in die Knie. Wo ich mir auch nicht so sicher bin sind die delays bei Versenden der Nachricht an die BLE-Schnittstelle...

Es würde mich sehr freuen, wenn mir der eine oder andere einen Tipp hätte. Vielleicht hat auch schon jemand Erfahrungen mit dem MIT App inventor und dem Versenden von Sensorwerte über BLE.

Ich bedanke mich schon einmal für Eure Mühen und wünsche Euch noch einen schönen Abend.

Viele Grüße

Bire

ESP32_2_TCA9548_VL6180X_16_sensors_BLE.ino (13.4 KB)