Closed
Description
Description:
Hi, I'm trying to use BLE Client and WiFi Client simultaneously but reading value from BLE device when WiFi is connected seems to be impossible. :( I have created simple demo attached below. Reading works fine when WiFi part is removed. Any idea what is wrong?
Thank you in advance!
Sketch:
#include <Arduino.h>
#include <WiFi.h>
#include "BLEDevice.h"
BLEClient* bleClient;
BLEAddress bleAddress = BLEAddress("<address>");
WiFiClient wifiClient;
void doBleStuff() {
bleClient->connect(bleAddress);
Serial.println("Reading...");
std::string value = bleClient->getValue(BLEUUID("00001800-0000-1000-8000-00805f9b34fb"), BLEUUID("00002a00-0000-1000-8000-00805f9b34fb"));
Serial.print("Value: ");
Serial.println(value.c_str());
bleClient->disconnect();
}
void setup() {
Serial.begin(115200);
BLEDevice::init("");
bleClient = BLEDevice::createClient();
wifiClient = WiFiClient();
WiFi.begin("<SSID>", "<PASSWD>");
delay(5000);
if (WiFi.waitForConnectResult() == WL_CONNECTED) {
Serial.print("WiFi connected. IP address: ");
Serial.println(WiFi.localIP());
}
}
void loop() {
delay(10000);
doBleStuff();
}
Debug Messages:
[D][BLEDevice.cpp:54] createClient(): >> createClient
[D][BLEDevice.cpp:60] createClient(): << createClient
[D][WiFiGeneric.cpp:345] _eventCallback(): Event: 2 - STA_START
[D][WiFiGeneric.cpp:345] _eventCallback(): Event: 0 - WIFI_READY
[D][WiFiGeneric.cpp:345] _eventCallback(): Event: 4 - STA_CONNECTED
[D][WiFiGeneric.cpp:345] _eventCallback(): Event: 7 - STA_GOT_IP
[D][WiFiGeneric.cpp:389] _eventCallback(): STA IP: 192.168.123.69, MASK: 255.255.255.0, GW: 192.168.123.1
WiFi connected. IP address: 192.168.123.69
[D][BLEClient.cpp:91] connect(): >> connect(<MAC_ADDRESS>)
[D][BLEClient.cpp:74] clearServices(): >> clearServices
[D][BLEClient.cpp:81] clearServices(): << clearServices
[D][BLEDevice.cpp:143] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 4] ... ESP_GATTC_REG_EVT
[D][BLEUtils.cpp:1377] dumpGattClientEvent(): GATT Event: ESP_GATTC_REG_EVT
[D][BLEUtils.cpp:1550] dumpGattClientEvent(): [status: ESP_GATT_OK, app_id: 0x0]
[D][BLEDevice.cpp:143] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 4] ... ESP_GATTC_DISCONNECT_EVT
[D][BLEUtils.cpp:1377] dumpGattClientEvent(): GATT Event: ESP_GATTC_DISCONNECT_EVT
[D][BLEUtils.cpp:1423] dumpGattClientEvent(): [reason: ESP_GATT_CONN_CONN_CANCEL, conn_id: 0, remote_bda: <MAC_ADDRESS>]
[D][BLEDevice.cpp:143] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 4] ... ESP_GATTC_OPEN_EVT
[D][BLEUtils.cpp:1377] dumpGattClientEvent(): GATT Event: ESP_GATTC_OPEN_EVT
[D][BLEUtils.cpp:1503] dumpGattClientEvent(): [status: ESP_GATT_ERROR, conn_id: 0, remote_bda: <MAC_ADDRESS>, mtu: 0]
[D][BLEClient.cpp:123] connect(): << connect(), rc=0
Reading...
[D][BLEClient.cpp:386] getValue(): >> getValue: serviceUUID: 00001800-0000-1000-8000-00805f9b34fb, characteristicUUID: 00002a00-0000-1000-8000-00805f9b34fb
[D][BLEClient.cpp:322] getService(): >> getService: uuid: 00001800-0000-1000-8000-00805f9b34fb
[D][BLEClient.cpp:358] getServices(): >> getServices
[D][BLEClient.cpp:74] clearServices(): >> clearServices
[D][BLEClient.cpp:81] clearServices(): << clearServices
Build log:
Processing esp32dev__ (platform: espressif32; board: esp32dev; framework: arduino)
-----------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html
PLATFORM: Espressif 32 > Espressif ESP32 Dev Module
HARDWARE: ESP32 240MHz 320KB RAM (4MB Flash)
DEBUG: CURRENT(esp-prog) EXTERNAL(esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF MODES: FINDER(chain) COMPATIBILITY(soft)
Collected 26 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <WiFi> 1.0
|-- <ESP32 BLE Arduino> 0.4.16
Compiling .pioenvs\esp32dev__\src\main.cpp.o
Linking .pioenvs\esp32dev__\firmware.elf
Retrieving maximum program size .pioenvs\esp32dev__\firmware.elf
Checking size .pioenvs\esp32dev__\firmware.elf
Building .pioenvs\esp32dev__\firmware.bin
Memory Usage -> http://bit.ly/pio-memory-usage
DATA: [== ] 24.0% (used 78688 bytes from 327680 bytes)
PROGRAM: [======= ] 74.4% (used 1462654 bytes from 1966080 bytes)
Configuring upload protocol...
AVAILABLE: esp-prog, esptool, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa
CURRENT: upload_protocol = esptool