Hello,
I am trying to send multiple data values to my Thunkable app through Bluetooth. I am using an Arduino MKR WIFI 1010 to send data. I have successfully connected to my app via Bluetooth but whenever I try to send data, I get an error. I will attach below my Thunkable blocks, Arduino code, and picture of my error message. Any help and suggestions are greatly appreciated.
#include <ArduinoBLE.h>
BLEService batteryService("180F"); // Custom service UUID
BLECharacteristic batteryPercentageChar("2A19", BLERead | BLENotify, 20);
BLECharacteristic batteryVoltageChar("2A1C", BLERead | BLENotify, 20);
void setup() {
  Serial.begin(9600);
  while (!Serial);
  if (!BLE.begin()) {
    Serial.println("Starting BLE failed!");
    while (1);
  }
  // Set advertised local name and service UUID
  BLE.setLocalName("BatteryMonitor");
  BLE.setAdvertisedService(batteryService);
  // Add characteristics to the service
  batteryService.addCharacteristic(batteryPercentageChar);
  batteryService.addCharacteristic(batteryVoltageChar);
  // Add the service
  BLE.addService(batteryService);
  // Start advertising
  BLE.advertise();
  Serial.println("Bluetooth device active, waiting for connections...");
}
void loop() {
  BLEDevice central = BLE.central();
  if (central) {
    Serial.print("Connected to central: ");
    Serial.println(central.address());
    while (central.connected()) {
      // Simulate battery percentage and voltage
      int batteryPercentage = 75; // Example percentage
      float batteryVoltage = 3.7; // Example voltage
      // Convert to strings
      String percentageStr = String(batteryPercentage);
      String voltageStr = String(batteryVoltage, 2); // Two decimal places
      // Write data to characteristics
      batteryPercentageChar.setValue(percentageStr.c_str());
      batteryVoltageChar.setValue(voltageStr.c_str());
      delay(1000);
    }
    Serial.print("Disconnected from central: ");
    Serial.println(central.address());
  }
}
             
            
              
              
              
            
            
           
          
            
            
              Hi @chrismdisalvoohxko , welcome to Thunkable! 
Is your hardware using the NOTIFY method?
Another creator had the same issue and was able to resolve it using this method: iOS Bluetooth App doesn’t receives any data - Questions about Thunkable / BLE / BlueTooth - Community 
             
            
              
              
              1 Like
            
            
           
          
            
            
              Hi,
I figured it out! In order to send the data, I needed to use a 32-bit characteristic UUID instead of a 4-bit characteristic UUID. I was then able to read data via BLE on an Android tablet. I still have not tested this on IOS but will be soon. Here is an updated code for anyone in the future.
#include <ArduinoBLE.h>
BLEService batteryService("180F"); // Custom service UUID
// Create characteristics using 32-bit UUIDs
BLECharacteristic batteryPercentageChar("00002A19-0000-1000-8000-00805F9B34FB", BLERead | BLENotify, 20);
BLECharacteristic batteryVoltageChar("00002A1C-0000-1000-8000-00805F9B34FB", BLERead | BLENotify, 20);
void setup() {
  Serial.begin(9600);
  while (!Serial);
  if (!BLE.begin()) {
    Serial.println("Starting BLE failed!");
    while (1);
  }
  // Set advertised local name and service UUID
  BLE.setLocalName("BatteryMonitor");
  BLE.setAdvertisedService(batteryService);
  // Add characteristics to the service
  batteryService.addCharacteristic(batteryPercentageChar);
  batteryService.addCharacteristic(batteryVoltageChar);
  // Add the service
  BLE.addService(batteryService);
  // Start advertising
  BLE.advertise();
  Serial.println("Bluetooth device active, waiting for connections...");
}
void loop() {
  BLEDevice central = BLE.central();
  if (central) {
    Serial.print("Connected to central: ");
    Serial.println(central.address());
    while (central.connected()) {
      // Simulate battery percentage and voltage
      int batteryPercentage = 75; // Example percentage
      float batteryVoltage = 3.7; // Example voltage
      // Convert to strings
      String percentageStr = String(batteryPercentage);
      String voltageStr = String(batteryVoltage, 2); // Two decimal places
      // Write data to characteristics
      batteryPercentageChar.writeValue(percentageStr.c_str());
      batteryVoltageChar.writeValue(voltageStr.c_str());
      delay(1000);
    }
    Serial.print("Disconnected from central: ");
    Serial.println(central.address());
  }
}
             
            
              
              
              1 Like
            
            
           
          
            
            
              Hi @chrismdisalvoohxko
Thank you for sharing an update and the code
Glad that is working now.