ESP32 Bluetooth Tabel Voorbeeld - Interface voor Gestructureerde Gegevensweergave Tutorial

Overzicht

Het Bluetooth Tabel voorbeeld biedt een gestructureerde sleutel-waarde gegevensweergave die toegankelijk is via de DIYables Bluetooth STEM app. Ontworpen voor ESP32 boards met ondersteuning voor zowel BLE (Bluetooth Low Energy) als Classic Bluetooth verbindingen. Definieer benoemde rijen en update hun waarden in realtime — ideaal voor dashboards, sensortoestandpanelen, systeemmonitoren en elke toepassing die georganiseerde datavisualisatie vereist.

Dit voorbeeld ondersteunt twee Bluetooth-modi:

  • ESP32 BLE (Bluetooth Low Energy): Werkt op zowel Android als iOS
  • ESP32 Classic Bluetooth: Werkt alleen op Android. iOS ondersteunt geen Classic Bluetooth. Gebruik BLE indien iOS-ondersteuning nodig is.
ESP32 Bluetooth Tabel Voorbeeld - Interface voor Gestructureerde Gegevensweergave Tutorial

Kenmerken

  • Gestructureerde Rijen: Tot 20 benoemde attribuutrijen
  • Realtime Updates: Update individuele rijwaarden zonder de hele tabel te verversen
  • Benoemde Attributen: Elke rij heeft een beschrijvend label (bijv. "Temperature", "Status")
  • Dynamische Waarden: Verzend elke tekenreekswaarde per rij
  • Tabelstructuur Synchronisatie: App vraagt tabelconfiguratie op bij verbinden
  • BLE & Classic Bluetooth: Kies de Bluetooth-modus die bij uw project past
  • Cross-Platform: BLE werkt op Android en iOS; Classic Bluetooth alleen op Android
  • Laag stroomverbruik optie: BLE verbruikt minder stroom dan Classic Bluetooth

Benodigde Hardware

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB-kabel Type-C
1×Breadboard (experimenteerprint)
1×Jumper wires (verbindingsdraad)
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor ESP32
1×(Aanbevolen) Breakout Expansion Board for ESP32
1×(Aanbevolen) Stromsplitter voor ESP32

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

ESP32 Code

Snelle Stappen

Volg deze instructies stap voor stap:

  • Als u voor het eerst met ESP32 werkt, raadpleeg dan de tutorial over het opzetten van de omgeving voor ESP32 in de Arduino IDE.
  • Verbind de ESP32 met uw computer via een USB-kabel.
  • Start de Arduino IDE op uw computer.
  • Selecteer het juiste ESP32 board en COM-poort.
  • Ga naar het Libraries icoon in de linker zijbalk van de Arduino IDE.
  • Zoek op "DIYables Bluetooth" en vind de DIYables Bluetooth bibliotheek van DIYables.
  • Klik op de Install knop om de bibliotheek te installeren.
ESP32 DIYables Bluetooth bibliotheek
  • Er wordt gevraagd om aanvullende bibliotheekafhankelijkheden te installeren.
  • Klik op de Install All knop om alle afhankelijkheden te installeren.
ESP32 DIYables Bluetooth afhankelijkheden

Kies één van de twee Bluetooth-modi hieronder afhankelijk van uw behoeften:

ESP32 Classic Bluetooth Code (werkt alleen met app op Android)

Opmerking: Classic Bluetooth wordt NIET ondersteund op iOS. Gebruik de BLE-code hieronder als u iOS-ondersteuning nodig heeft.

  • In Arduino IDE, ga naar File Examples DIYables Bluetooth Esp32Bluetooth_Table voorbeeld, of kopieer de bovenstaande code en plak deze in de editor van Arduino IDE
/* * DIYables Bluetooth Library - ESP32 Classic Bluetooth Table Example * Works with DIYables Bluetooth STEM app on Android * Note: Classic Bluetooth is NOT supported on iOS. Use BLE examples for iOS support. * * This example demonstrates the Bluetooth Table feature: * - Display structured data in a two-column table * - Real-time value updates for each row * - Perfect for sensor dashboards and status displays * * Compatible Boards: * - ESP32 (all variants with Classic Bluetooth) * - ESP32-WROOM-32 * - ESP32-DevKitC * - ESP32-WROVER * * Note: Select "Huge APP (3MB No OTA/1MB SPIFFS)" partition scheme * in Arduino IDE: Tools > Partition Scheme * * Setup: * 1. Upload the sketch to your ESP32 * 2. Open Serial Monitor (115200 baud) to see connection status * 3. Use DIYables Bluetooth App to connect and view the table * * Tutorial: https://diyables.io/bluetooth-app * Author: DIYables */ #include <DIYables_BluetoothServer.h> #include <DIYables_BluetoothTable.h> #include <platforms/DIYables_Esp32Bluetooth.h> // Create Bluetooth instances DIYables_Esp32Bluetooth bluetooth("ESP32_Table"); DIYables_BluetoothServer bluetoothServer(bluetooth); // Create Table app instance DIYables_BluetoothTable bluetoothTable; // Variables for demo data unsigned long lastUpdate = 0; const unsigned long UPDATE_INTERVAL = 1000; // Update every second int counter = 0; void setup() { Serial.begin(115200); delay(1000); Serial.println("DIYables Bluetooth - ESP32 Table Example"); // Initialize Bluetooth server with platform-specific implementation bluetoothServer.begin(); // Add table app to server bluetoothServer.addApp(&bluetoothTable); // Define table structure (add rows with attribute names) bluetoothTable.addRow("Temperature"); bluetoothTable.addRow("Humidity"); bluetoothTable.addRow("Pressure"); bluetoothTable.addRow("Counter"); bluetoothTable.addRow("Uptime"); bluetoothTable.addRow("Free Heap"); bluetoothTable.addRow("CPU Freq"); bluetoothTable.addRow("Status"); Serial.print("Table rows defined: "); Serial.println(bluetoothTable.getRowCount()); // Set up connection event callbacks bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); // Send table structure bluetoothTable.sendTableStructure(); // Send initial values updateTableValues(); }); bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); }); // Optional: Handle requests for table data bluetoothTable.onDataRequest([]() { Serial.println("App requested table data"); bluetoothTable.sendTableStructure(); updateTableValues(); }); Serial.println("Waiting for Bluetooth connection..."); } void updateTableValues() { // TODO: Replace with actual sensor readings // Simulated temperature (20-30°C) float temperature = 20.0 + random(0, 100) / 10.0; bluetoothTable.sendValueUpdate("Temperature", String(temperature, 1) + " °C"); // Simulated humidity (40-60%) int humidity = 40 + random(0, 21); bluetoothTable.sendValueUpdate("Humidity", String(humidity) + " %"); // Simulated pressure (1000-1020 hPa) int pressure = 1000 + random(0, 21); bluetoothTable.sendValueUpdate("Pressure", String(pressure) + " hPa"); // Counter value bluetoothTable.sendValueUpdate("Counter", String(counter)); counter++; // Uptime (in seconds) unsigned long uptime = millis() / 1000; String uptimeStr = String(uptime / 3600) + "h " + String((uptime % 3600) / 60) + "m " + String(uptime % 60) + "s"; bluetoothTable.sendValueUpdate("Uptime", uptimeStr); // ESP32-specific: Free heap memory bluetoothTable.sendValueUpdate("Free Heap", String(ESP.getFreeHeap()) + " bytes"); // ESP32-specific: CPU frequency bluetoothTable.sendValueUpdate("CPU Freq", String(ESP.getCpuFreqMHz()) + " MHz"); // Status bluetoothTable.sendValueUpdate("Status", counter % 2 == 0 ? "Running" : "Active"); Serial.println("Table values updated"); } void loop() { // Handle Bluetooth server communications bluetoothServer.loop(); // Update table values periodically (only when connected) if (bluetooth.isConnected() && millis() - lastUpdate >= UPDATE_INTERVAL) { lastUpdate = millis(); updateTableValues(); } delay(10); }
  • Klik op de Upload knop in Arduino IDE om de code naar ESP32 te uploaden
  • Open de Serial Monitor
  • Bekijk het resultaat in de Serial Monitor. Het ziet er als volgt uit:
COM6
Send
DIYables Bluetooth - ESP32 Table Example Waiting for Bluetooth connection...
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

ESP32 BLE Code (werkt met app op zowel Android als iOS)

  • In Arduino IDE, ga naar File Examples DIYables Bluetooth Esp32BLE_Table voorbeeld, of kopieer de bovenstaande code en plak deze in de editor van Arduino IDE
/* * DIYables Bluetooth Library - ESP32 BLE Table Example * Works with DIYables Bluetooth STEM app on Android and iOS * * This example demonstrates the Bluetooth Table feature: * - Display structured data in a two-column table * - Real-time value updates for each row * - Perfect for sensor dashboards and status displays * * Compatible Boards: * - ESP32-WROOM-32 * - ESP32-DevKitC * - ESP32-WROVER * - ESP32-S3 * - ESP32-C3 * - Any ESP32 board supporting BLE * * Note: Select "Huge APP (3MB No OTA/1MB SPIFFS)" partition scheme * in Arduino IDE: Tools > Partition Scheme * * Setup: * 1. Upload the sketch to your ESP32 * 2. Open Serial Monitor (115200 baud) to see connection status * 3. Use DIYables Bluetooth App to connect and view the table * * Tutorial: https://diyables.io/bluetooth-app * Author: DIYables */ #include <DIYables_BluetoothServer.h> #include <DIYables_BluetoothTable.h> #include <platforms/DIYables_Esp32BLE.h> // BLE Configuration const char* DEVICE_NAME = "ESP32BLE_Table"; const char* SERVICE_UUID = "19B10000-E8F2-537E-4F6C-D104768A1214"; const char* TX_UUID = "19B10001-E8F2-537E-4F6C-D104768A1214"; const char* RX_UUID = "19B10002-E8F2-537E-4F6C-D104768A1214"; // Create Bluetooth instances DIYables_Esp32BLE bluetooth(DEVICE_NAME, SERVICE_UUID, TX_UUID, RX_UUID); DIYables_BluetoothServer bluetoothServer(bluetooth); // Create Table app instance DIYables_BluetoothTable bluetoothTable; // Variables for demo data unsigned long lastUpdate = 0; const unsigned long UPDATE_INTERVAL = 1000; int counter = 0; void setup() { Serial.begin(115200); delay(1000); Serial.println("DIYables Bluetooth - ESP32 BLE Table Example"); // Initialize Bluetooth server with platform-specific implementation bluetoothServer.begin(); // Add table app to server bluetoothServer.addApp(&bluetoothTable); // Define table structure bluetoothTable.addRow("Temperature"); bluetoothTable.addRow("Humidity"); bluetoothTable.addRow("Pressure"); bluetoothTable.addRow("Counter"); bluetoothTable.addRow("Uptime"); bluetoothTable.addRow("Free Heap"); bluetoothTable.addRow("Status"); Serial.print("Table rows defined: "); Serial.println(bluetoothTable.getRowCount()); // Set up connection event callbacks bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); bluetoothTable.sendTableStructure(); updateTableValues(); }); bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); }); bluetoothTable.onDataRequest([]() { Serial.println("App requested table data"); bluetoothTable.sendTableStructure(); updateTableValues(); }); Serial.println("Waiting for Bluetooth connection..."); } void updateTableValues() { float temperature = 20.0 + random(0, 100) / 10.0; bluetoothTable.sendValueUpdate("Temperature", String(temperature, 1) + " °C"); int humidity = 40 + random(0, 21); bluetoothTable.sendValueUpdate("Humidity", String(humidity) + " %"); int pressure = 1000 + random(0, 21); bluetoothTable.sendValueUpdate("Pressure", String(pressure) + " hPa"); bluetoothTable.sendValueUpdate("Counter", String(counter)); counter++; unsigned long uptime = millis() / 1000; String uptimeStr = String(uptime / 3600) + "h " + String((uptime % 3600) / 60) + "m " + String(uptime % 60) + "s"; bluetoothTable.sendValueUpdate("Uptime", uptimeStr); bluetoothTable.sendValueUpdate("Free Heap", String(ESP.getFreeHeap()) + " bytes"); bluetoothTable.sendValueUpdate("Status", counter % 2 == 0 ? "Running" : "Active"); Serial.println("Table values updated"); } void loop() { bluetoothServer.loop(); if (bluetooth.isConnected() && millis() - lastUpdate >= UPDATE_INTERVAL) { lastUpdate = millis(); updateTableValues(); } delay(10); }
  • Klik op de Upload knop in Arduino IDE om de code naar ESP32 te uploaden
  • Open de Serial Monitor
  • Bekijk het resultaat in de Serial Monitor. Het ziet er als volgt uit:
COM6
Send
DIYables Bluetooth - ESP32 BLE Table Example Waiting for Bluetooth connection...
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Mobiele App

  • Installeer de DIYables Bluetooth App op uw smartphone: Android | iOS
  • Wanneer u de ESP32 Classic Bluetooth code gebruikt, moet u de ESP32 eerst met uw Android-telefoon koppelen voordat u de app opent:
    • Ga op uw telefoon naar Instellingen > Bluetooth
    • Zorg dat Bluetooth aan staat
    • Uw telefoon zoekt naar beschikbare apparaten
    • Zoek en tik op "ESP32_Table" in de lijst met beschikbare apparaten
    • Bevestig het verbindingsverzoek (geen PIN nodig)
    • Wacht tot de status "Gepaired" onder de apparaatte naam verschijnt
  • Wanneer u de ESP32 BLE code gebruikt, is koppelen niet nodig. Ga direct door naar de volgende stap.
  • Open de DIYables Bluetooth App
  • Bij het openen van de app voor de eerste keer wordt om permissies gevraagd. Verleen alstublieft:
    • Nearby Devices permissie (Android 12+) / Bluetooth permissie (iOS) - nodig om te scannen en verbinden met Bluetooth-apparaten
    • Locatie permissie (alleen Android 11 en lager) - vereist door oudere Android versies voor het scannen van BLE-apparaten
  • Zorg dat Bluetooth aanstaat op uw telefoon
  • Tik op het startscherm op de Connect knop. De app zoekt zowel naar BLE als Classic Bluetooth apparaten.
DIYables Bluetooth App - Startscherm met Scan Knop
  • Zoek en tik op uw apparaat in de scanresultaten om te verbinden:
    • Voor Classic Bluetooth: tik op "ESP32_Table"
    • Voor BLE: tik op "ESP32BLE_Table"
  • Na verbinding keert de app automatisch terug naar het startscherm. Selecteer de Table app vanuit het app-menu.
DIYables Bluetooth App - Startscherm met Table App

Opmerking: U kunt op het startscherm het instellingenicoon gebruiken om apps te verbergen/tonen. Zie de DIYables Bluetooth App Gebruikershandleiding voor meer details.

  • De tabel wordt gevuld met de attribuutnamen en hun huidige waarden
DIYables Bluetooth App - Table Scherm

Kijk nu terug naar de Serial Monitor in Arduino IDE. U zult zien:

COM6
Send
Bluetooth connected! App requested table data Sent table structure Temperature: 25.3 Humidity: 62% Pressure: 1013 hPa Counter: 1 Uptime: 0h 0m 5s Free Heap: 245780 Status: Running
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Bekijk hoe de tabelwaarden realtime in de app worden bijgewerkt

Creatieve Aanpassing - Pas de Code aan op uw Project

Definieer Tabelrijen

Voeg attribuutrijen toe aan de tabel (maximaal 20 rijen):

// Voeg rijen toe tijdens setup bluetoothTable.addRow("Temperature"); bluetoothTable.addRow("Humidity"); bluetoothTable.addRow("Pressure"); bluetoothTable.addRow("Status"); bluetoothTable.addRow("Uptime"); // Controleer aantal rijen int rows = bluetoothTable.getRowCount(); Serial.println("Totaal aantal rijen: " + String(rows)); // Verkrijg attribuutnaam bij index String attr = bluetoothTable.getAttribute(0); // Geeft "Temperature" terug

Update Rijwaarden

Update individuele rijwaarden via attribuutnaam of index:

// Update via attribuutnaam bluetoothTable.sendValueUpdate("Temperature", "25.3 °C"); bluetoothTable.sendValueUpdate("Humidity", "62%"); bluetoothTable.sendValueUpdate("Status", "Running"); // Update via rij-index (0-gebaseerd) bluetoothTable.sendValueUpdate(0, "25.3 °C"); // Eerste rij bluetoothTable.sendValueUpdate(1, "62%"); // Tweede rij

Verwerk Gegevensverzoeken van de App

Wanneer de app verbindt of een verversing vraagt:

bluetoothTable.onDataRequest([]() { Serial.println("App requested table data"); bluetoothTable.sendTableStructure(); // Zend rij namen // Zend actuele waarden voor alle rijen bluetoothTable.sendValueUpdate("Temperature", String(temperature, 1) + " °C"); bluetoothTable.sendValueUpdate("Humidity", String(humidity) + "%"); bluetoothTable.sendValueUpdate("Status", "Online"); });

Wis en Herbouw de Tabel

// Wis alle rijen bluetoothTable.clearTable(); // Voeg nieuwe rijen toe bluetoothTable.addRow("Sensor A"); bluetoothTable.addRow("Sensor B"); // Zend geüpdatete structuur naar de app bluetoothTable.sendTableStructure();

Verwerk Verbindingsevenementen

bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); }); bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); });

Hoe de Tabel te Gebruiken

App Interface

De tabelinterface in de DIYables Bluetooth App toont:

  • Attribuutkolom: Rijlabels gedefinieerd door addRow()
  • Waarde kolom: Huidige waarden bijgewerkt door sendValueUpdate()
  • Auto-verversing: Waarden worden realtime bijgewerkt zodra ze binnenkomen

Tabel Limieten

  • Maximum 20 rijen per tabel (MAX_TABLE_ROWS = 20)
  • Attribuutnamen dienen kort maar beschrijvend te zijn
  • Waarden worden als tekenreeksen weergegeven

Programmeervoorbeelden

Sensor Dashboard

// Definieer rijen voor sensor dashboard bluetoothTable.addRow("Temperature"); bluetoothTable.addRow("Humidity"); bluetoothTable.addRow("Pressure"); bluetoothTable.addRow("Light Level"); bluetoothTable.addRow("Air Quality"); void loop() { bluetoothServer.loop(); static unsigned long lastUpdate = 0; if (millis() - lastUpdate >= 2000) { lastUpdate = millis(); float temp = readTemperature(); float hum = readHumidity(); float press = readPressure(); int light = analogRead(34); int airQuality = analogRead(35); bluetoothTable.sendValueUpdate("Temperature", String(temp, 1) + " °C"); bluetoothTable.sendValueUpdate("Humidity", String(hum, 0) + "%"); bluetoothTable.sendValueUpdate("Pressure", String(press, 0) + " hPa"); bluetoothTable.sendValueUpdate("Light Level", String(map(light, 0, 4095, 0, 100)) + "%"); bluetoothTable.sendValueUpdate("Air Quality", airQuality < 1000 ? "Good" : "Poor"); } delay(10); }

Systeemstatus Monitor

bluetoothTable.addRow("Uptime"); bluetoothTable.addRow("Free Heap"); bluetoothTable.addRow("CPU Temp"); bluetoothTable.addRow("WiFi Signal"); bluetoothTable.addRow("Clients"); bluetoothTable.addRow("Status"); void updateSystemStatus() { unsigned long uptime = millis() / 1000; int hours = uptime / 3600; int minutes = (uptime % 3600) / 60; int seconds = uptime % 60; bluetoothTable.sendValueUpdate("Uptime", String(hours) + "h " + String(minutes) + "m " + String(seconds) + "s"); bluetoothTable.sendValueUpdate("Free Heap", String(ESP.getFreeHeap()) + " bytes"); bluetoothTable.sendValueUpdate("CPU Temp", String(temperatureRead(), 1) + " °C"); bluetoothTable.sendValueUpdate("Status", "Online"); }

GPIO Pin Status Tabel

const int PINS[] = {2, 4, 5, 12, 13, 14, 15, 16}; const int NUM_PINS = sizeof(PINS) / sizeof(PINS[0]); void setup() { // ... Bluetooth setup ... for (int i = 0; i < NUM_PINS; i++) { pinMode(PINS[i], INPUT); bluetoothTable.addRow("GPIO " + String(PINS[i])); } } void loop() { bluetoothServer.loop(); static unsigned long lastUpdate = 0; if (millis() - lastUpdate >= 1000) { lastUpdate = millis(); for (int i = 0; i < NUM_PINS; i++) { int state = digitalRead(PINS[i]); bluetoothTable.sendValueUpdate("GPIO " + String(PINS[i]), state == HIGH ? "HIGH ?" : "LOW ?"); } } delay(10); }

Analoge Sensor Array

struct SensorConfig { String name; int pin; String unit; float scale; }; SensorConfig sensors[] = { {"Temperature", 34, "°C", 0.0488}, {"Humidity", 35, "%", 0.0244}, {"Light", 36, "lux", 0.244}, {"Pressure", 39, "hPa", 0.488} }; const int NUM_SENSORS = sizeof(sensors) / sizeof(sensors[0]); void setup() { // ... Bluetooth setup ... for (int i = 0; i < NUM_SENSORS; i++) { bluetoothTable.addRow(sensors[i].name); } } void loop() { bluetoothServer.loop(); static unsigned long lastUpdate = 0; if (millis() - lastUpdate >= 2000) { lastUpdate = millis(); for (int i = 0; i < NUM_SENSORS; i++) { int raw = analogRead(sensors[i].pin); float value = raw * sensors[i].scale; bluetoothTable.sendValueUpdate(sensors[i].name, String(value, 1) + " " + sensors[i].unit); } } delay(10); }

Geavanceerde Programmeertechnieken

Conditionele Opmaak met Emoji's

void updateTemperatureRow(float temp) { String status; if (temp < 10) { status = "❄️ " + String(temp, 1) + " °C (Koud)"; } else if (temp < 30) { status = "✅ " + String(temp, 1) + " °C (Normaal)"; } else { status = "🔥 " + String(temp, 1) + " °C (Warm!)"; } bluetoothTable.sendValueUpdate("Temperature", status); }

Gebeurtenisgestuurde Updates

float lastTemp = 0; float threshold = 0.5; // Alleen updaten bij significante wijziging void loop() { bluetoothServer.loop(); float temp = readTemperature(); if (abs(temp - lastTemp) >= threshold) { lastTemp = temp; bluetoothTable.sendValueUpdate("Temperature", String(temp, 1) + " °C"); bluetoothTable.sendValueUpdate("Last Change", getTimestamp()); } delay(100); }

Hardware Integratie Ideeën

BME280 Weerstation Tabel

Verbind een BME280 sensor om temperatuur, luchtvochtigheid en druk in de tabel weer te geven.

Multi-Sensor Dashboard

Verbind meerdere sensoren (DHT22, BMP280, LDR, MQ-135) en toon alle metingen als rijen.

Apparaatinformatie Paneel

Toon ESP32 systeeminformatie: chipmodel, flashgrootte, vrije heap, uptime en MAC-adres.

BLE versus Classic Bluetooth - Welke te Kiezen?

FeatureBLE (Esp32BLE_Table)Classic Bluetooth (Esp32Bluetooth_Table)
iOS Ondersteuning? Ja? Nee
Android Ondersteuning? Ja? Ja
StroomverbruikLaagHoger
Bereik~30-100m~10-100m
Data SnelheidLagerHoger
Koppeling VereistNee (auto-connect)Ja (handmatig koppelproces)
Beste VoorBatterijgevoede, cross-platformHoog doorvoersnelheid, alleen Android

Probleemoplossing

Veelvoorkomende Problemen

1. App vindt het apparaat niet

  • Zorg dat de ESP32 aanstaat en dat de sketch is geüpload
  • Voor BLE: Controleer of Bluetooth en Locatie aanstaan op uw telefoon
  • Voor Classic Bluetooth: Koppel het apparaat eerst via de Bluetooth-instellingen van de telefoon
  • Controleer dat het juiste partitietype is geselecteerd (Huge APP)

2. Tabel toont geen gegevens

  • Zorg ervoor dat sendTableStructure() wordt aangeroepen in de onDataRequest callback
  • Controleer dat rijen zijn toegevoegd met addRow() vóór het verzenden van updates
  • Controleer in Serial Monitor of de melding "App requested table data" verschijnt

3. Waarden worden niet bijgewerkt

  • Controleer of de attribuutnaam in sendValueUpdate() exact overeenkomt met wat is toegevoegd via addRow()
  • Controleer of de update-intervaltimer werkt
  • Zorg dat Bluetooth nog verbonden is

4. Rijen ontbreken in de tabel

  • Maximaal 20 rijen worden ondersteund
  • Controleer getRowCount() om te verifiëren dat alle rijen zijn toegevoegd
  • Rijen moeten worden toegevoegd vóór het verzenden van de tabelstructuur

5. Verbinding valt vaak weg

  • Kom dichterbij de ESP32 (verminder afstand)
  • Voor BLE: Controleer interferentie van andere BLE-apparaten
  • Voor Classic Bluetooth: Zorg voor stabiele voeding van ESP32

6. Sketch te groot / onvoldoende ruimte

  • Ga in Arduino IDE naar Tools > Partition Scheme en kies "Huge APP (3MB No OTA/1MB SPIFFS)" of "No OTA (Large APP)"
  • De standaard partitionering biedt ongeveer 1.2MB voor app-code, onvoldoende voor Bluetooth bibliotheken
  • Deze instelling biedt ongeveer 3MB door af te zien van het OTA (over-the-air update) gedeelte

Debug Tips

Voeg uitgebreide debugging toe:

void debugTable() { Serial.println("=== Tabel Debug ==="); Serial.println("Aantal rijen: " + String(bluetoothTable.getRowCount())); for (int i = 0; i < bluetoothTable.getRowCount(); i++) { Serial.println("Rij " + String(i) + ": " + bluetoothTable.getAttribute(i)); } Serial.println("==================="); }

Projectideeën

Monitoring Dashboards

  • Weerstation display (temperatuur, vochtigheid, druk, wind)
  • Server/netwerk statusmonitor
  • Plantverzorgingsdashboard (bodemvocht, licht, temperatuur)
  • Aquarium monitor (temperatuur, pH, TDS)

Systeeminformatie

  • ESP32 systeemdiagnose tabel
  • WiFi verbindingsdetails
  • Geheugengebruik tracker
  • Batterijstatusweergave

Gegevensregistratie

  • Sensor min/max/gemiddelde tracker
  • Event teller display
  • Timingsstatistieken (responstijd, uptime)
  • I/O pinstatus overzicht

Domotica

  • Kamerspecifieke temperatuurweergave
  • Apparaatstatus overzicht
  • Energieverbruikssamenvatting
  • Beveiligingssensor status

Integratie met Andere Bluetooth Apps

Combineren met Bluetooth Plotter

Toon waarden in de tabel en visualiseer trends in plotter:

float temperature = 0; void loop() { bluetoothServer.loop(); static unsigned long lastUpdate = 0; if (millis() - lastUpdate >= 2000) { lastUpdate = millis(); temperature = readTemperature(); // Update tabel bluetoothTable.sendValueUpdate("Temperature", String(temperature, 1) + " °C"); bluetoothTable.sendValueUpdate("Status", temperature > 30 ? "Warning" : "Normal"); // Trend plotten bluetoothPlotter.send(temperature); } delay(10); }

Combineren met Bluetooth Monitor

Gebruik tabel voor gestructureerde data en monitor voor logberichten:

bluetoothTable.sendValueUpdate("Temperature", String(temp, 1) + " °C"); bluetoothMonitor.send("[INFO] Temperature: " + String(temp, 1) + " °C"); if (temp > 40) { bluetoothTable.sendValueUpdate("Status", "? ALERT"); bluetoothMonitor.send("[ALERT] High temperature detected!"); }

Volgende Stappen

Na het beheersen van het Bluetooth Tabel voorbeeld, probeer:

  1. Bluetooth Monitor - Voor vrije tekstlogboeken
  2. Bluetooth Plotter - Voor datavisualisatie en trends
  3. Bluetooth Temperature - Voor dedicated temperatuurweergave
  4. Meerdere Bluetooth Apps - Combineren van tabel met andere displays

Ondersteuning

Voor aanvullende hulp:

  • Raadpleeg de API Reference documentatie
  • Arduino community forums

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!