WIFI/BLE Simultaneously

mpbejo
Posts: 6
Joined: Tue Oct 09, 2018 3:04 pm

Re: WIFI/BLE Simultaneously

Postby mpbejo » Wed Oct 10, 2018 2:29 pm

Dear Mr Tian Hao,
I think I solved at 50% my problem.
In my Arduino IDE I previously setup the "Core Debug Level: Debug" and then I realized that this setup slow down the performance.
If "Core Debug Level:" is set to "None" the performance are really improved.
For example without WiFi int sketch i can connect two android device without problem, if I add the WiFi I have to try more times.

About the files You asked me: sdkconfig (renamed the extension because the forum show me an error extension), please could you tell me where to find the file log that You want?
The Arduino Board manager tell me that v.1.0.0 i s installed but I don't think is the data that You want.

Thank You
Best Regards
Marco
Attachments
esp32.jpg
esp32.jpg (45.06 KiB) Viewed 16681 times
sdkconfig.csv
(15.88 KiB) Downloaded 1149 times

ESP_Tianhao
Posts: 28
Joined: Thu Jan 05, 2017 10:46 am

Re: WIFI/BLE Simultaneously

Postby ESP_Tianhao » Mon Dec 03, 2018 3:51 am

mpbejo wrote:
Wed Oct 10, 2018 2:29 pm
Dear Mr Tian Hao,
I think I solved at 50% my problem.
In my Arduino IDE I previously setup the "Core Debug Level: Debug" and then I realized that this setup slow down the performance.
If "Core Debug Level:" is set to "None" the performance are really improved.
For example without WiFi int sketch i can connect two android device without problem, if I add the WiFi I have to try more times.

About the files You asked me: sdkconfig (renamed the extension because the forum show me an error extension), please could you tell me where to find the file log that You want?
The Arduino Board manager tell me that v.1.0.0 i s installed but I don't think is the data that You want.

Thank You
Best Regards
Marco
Dear mpbejo,
Your sdkconfig seems ok. But, you can also try make Bluetooth (BTDM_CONTROLLER_PINNED_TO_CORE and BLUEDROID_PINNED_TO_CORE) to the different core from Wifi.
You know ESP32 share the RF between Bluetooth and WIFI, so when they use simultaneously, the performance will decrease, but it will keep working. What's the performance you want ESP32 to reach?

tipo1000
Posts: 3
Joined: Fri Mar 08, 2019 6:16 pm

Re: WIFI/BLE Simultaneously

Postby tipo1000 » Fri Mar 08, 2019 6:44 pm

I need to connect ESP32 BLE to heart rate sensor (uses heart rate monitor gatt service) and send about 100 bytes data over wifi every 15 seconds.

After reading the above posts it sounds like this would be possible to do, I'm I right?

Thanks,
Tipo

Ritesh
Posts: 1365
Joined: Tue Sep 06, 2016 9:37 am
Location: India
Contact:

Re: WIFI/BLE Simultaneously

Postby Ritesh » Sat Mar 09, 2019 8:44 am

tipo1000 wrote:
Fri Mar 08, 2019 6:44 pm
I need to connect ESP32 BLE to heart rate sensor (uses heart rate monitor gatt service) and send about 100 bytes data over wifi every 15 seconds.

After reading the above posts it sounds like this would be possible to do, I'm I right?

Thanks,
Tipo
But at that time, Do you need WiFi to keep running at that time? if not then you can do it as per your requirement.
Regards,
Ritesh Prajapati

tipo1000
Posts: 3
Joined: Fri Mar 08, 2019 6:16 pm

Re: WIFI/BLE Simultaneously

Postby tipo1000 » Tue Mar 12, 2019 6:10 am

ESP32 needs to collect heart rate data at the same time it is sending previously collected data over wifi.

Heart rate sensor sends heart rate data to ESP32 once every second.
Forming wifi connection to router and sending previously collected data to database takes about 4 seconds.

Would this work?

Thanks,
Tipo

ayandas4
Posts: 6
Joined: Wed Mar 20, 2019 5:11 am

Re: WIFI/BLE Simultaneously

Postby ayandas4 » Wed Mar 20, 2019 5:21 am

I'm facing the reboot issue in Arduino when using Wi-Fi and BLE together. I integrated the Wi-Fi, EEPROM, and GPIO activities first, which worked fine. Next when trying to wite an Eddystone beacon, along with Wi-Fi, EEPROM and few GPIO activities, after I added BLEDevice, I faced Sketch too big issue. After I changed the default partition to increase the program memory area, also tried selecting partition scheme "No Ota (Large APP)", the issue gets solved.

Now the issue is with the Eddystone advertisement. The beacon is advertising something else, though the debug log says the advertisement data set is completed. Attached is a snapshot of raw advertisement data captured using nRF Connect.

BLE initialization code

Code: Select all

BLEAdvertising *pAdvertising;
String product_url = "bit.ly/Brizo64a";

/*****************************************************************************
Initialize Bluetooth Low energy for Eddystone
*****************************************************************************/
void BLE_Init() {
  char beacon_data[36];
  uint16_t beaconUUID = 0xFFAA;   // UUID for Eddystone Service
  int url_length;
  int count;
  
  // Create BLE device
  BLEDevice::init("UniShelf");

  // Create BLE Server
  BLEServer *pServer = BLEDevice::createServer();
  
  pAdvertising = pServer->getAdvertising();

  //setBeacon();
  BLEAdvertisementData oAdvertisementData = BLEAdvertisementData();
  oAdvertisementData.setFlags(0x06);    // GENERAL_DISK_MODE 0x02 | BR_EDR_NOT_SUPPORTED 0x04
  oAdvertisementData.setCompleteServices(BLEUUID(beaconUUID));

  //beacon_data[0] = 0x20;    // Eddystone Frame Type (Unencrypted Eddystone - TLM)
  beacon_data[0] = 0x02;      // Length
  beacon_data[1] = 0x01;      // 
  beacon_data[2] = 0x06;      // 
  beacon_data[3] = 0x03;      // Length
  beacon_data[4] = 0x03;      // Flag - Complete list of 16-bit Service UUIDs data type value
  beacon_data[5] = 0xAA;      // 16bit Eddystone UUID
  beacon_data[6] = 0xFE;      // ...

  url_length = product_url.length();
  beacon_data[7] = url_length+6;      // Length
  beacon_data[8] = 0x16;      // Frame Type - Service Data
  beacon_data[9] = 0xAA;      // Eddystone
  beacon_data[10] = 0xFE;      // 
  beacon_data[11] = 0x10;      // Frame Type - URL
  beacon_data[12] = 0x00;      // Tx power 4dBm?
  beacon_data[13] = 0x03;      // URL Scheme Prefix - https://
  for(count=0; count<url_length; count++) {
    beacon_data[14+count] = product_url.charAt(count);
  }
  beacon_data[14+count] = 0xFF;

#ifdef DEBUG
  Serial.print("Beacon Data: ");
  for(count=0; count<url_length+15; count++) {
    if(beacon_data[count] < 16){
      Serial.print('0');
    }
    Serial.print(beacon_data[count], HEX);
    Serial.print(' ');
  }
  Serial.println();
#endif

  oAdvertisementData.setServiceData(BLEUUID(beaconUUID), std::string(beacon_data, url_length+15));
#ifdef DEBUG
  Serial.println("Service Data set!");
#endif

  pAdvertising->setScanResponseData(oAdvertisementData);
#ifdef DEBUG
  Serial.println("Scan response set!");
#endif
  // Start advertising
  pAdvertising->start();
#ifdef DEBUG
  Serial.println("Advertising started...");
#endif

  delay(5000);
}
Debug Verbose:

Code: Select all

[D][BLEDevice.cpp:82] createServer(): >> createServer
[D][BLEServer.cpp:290] registerApp(): >> registerApp - 0
[D][FreeRTOS.cpp:165] take(): Semaphore taking: name: RegisterAppEvt (0x3ffe461c), owner: <N/A> for registerApp
[D][FreeRTOS.cpp:174] take(): Semaphore taken:  name: RegisterAppEvt (0x3ffe461c), owner: registerApp
[V][FreeRTOS.cpp:70] wait(): >> wait: Semaphore waiting: name: RegisterAppEvt (0x3ffe461c), owner: registerApp for registerApp
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... ESP_GATTS_REG_EVT
[V][BLEUtils.cpp:1519] dumpGattServerEvent(): GATT ServerEvent: ESP_GATTS_REG_EVT
[V][BLEUtils.cpp:1709] dumpGattServerEvent(): dumpGattServerEvent: *** NOT CODED ***
[D][BLEServer.cpp:153] handleGATTServerEvent(): >> handleGATTServerEvent: ESP_GATTS_REG_EVT
[V][FreeRTOS.cpp:120] give(): Semaphore giving: name: RegisterAppEvt (0x3ffe461c), owner: registerApp
[D][BLEServer.cpp:280] handleGATTServerEvent(): << handleGATTServerEvent
[V][FreeRTOS.cpp:86] wait(): << wait: Semaphore released: name: RegisterAppEvt (0x3ffe461c), owner: registerApp
[D][BLEServer.cpp:294] registerApp(): << registerApp
[D][BLEDevice.cpp:89] createServer(): << createServer
[I][BLEDevice.cpp:561] getAdvertising(): create advertising
[D][BLEDevice.cpp:563] getAdvertising(): get advertising
02 01 06 03 03 AA FE 15 16 AA FE 10 00 03 62 69 74 2E 6C 79 2F 42 72 69 7A 6F 36 34 61 FF 
Service Data set!
[D][BLEAdvertising.cpp:169] setScanResponseData(): >> setScanResponseData
[D][BLEAdvertising.cpp:177] setScanResponseData(): << setScanResponseData
[V][BLEUtils.cpp:1038] dumpGapEvent(): Received a GAP event: ESP_GAP_BLE_SCAN_RSP_DATA_RAW_SET_COMPLETE_EVT
[V][BLEUtils.cpp:1253] dumpGapEvent(): *** dumpGapEvent: Logger not coded ***
[D][BLEAdvertising.cpp:186] start(): >> start: customAdvData: 0, customScanResponseData: 1
[D][BLEAdvertising.cpp:205] start(): - no services adverti[D][BLEAdvertising.cpp:205] start(): - no services advertised
[D][BLEAdvertising.cpp:479] handleGAPEvent(): handleGAPEvent [event no: 5]
[D][BLEAdvertising.cpp:246] start(): << start
[V][BLEUtils.cpp:1038] dumpGapEvent(): Received a GAP event: ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT
[V][BLEUtils.cpp:1253] dumpGapEvent(): *** dumpGapEvent: Logger not coded ***
[D][BLEDevice.cpp:563] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:479] handleGAPEvent(): handleGAPEvent [event no: 0]
[V][BLEUtils.cpp:1038] dumpGapEvent(): Received a GAP event: ESP_GAP_BLE_ADV_START_COMPLETE_EVT
[V][BLEUtils.cpp:1253] dumpGapEvent(): *** dumpGapEvent: Logger not coded ***
[D][BLEDevice.cpp:563] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:479] handleGAPEvent(): handleGAPEvent [event no: 6]
Attachments
Screenshot_20190321-104637.png
Screenshot_20190321-104637.png (209.4 KiB) Viewed 16091 times
Last edited by ayandas4 on Thu Mar 21, 2019 5:42 am, edited 1 time in total.

User avatar
arunbm123
Posts: 96
Joined: Fri Feb 23, 2018 5:36 am

Re: WIFI/BLE Simultaneously

Postby arunbm123 » Wed Mar 20, 2019 5:45 am

Hi

after many days struggling I could integrate Ble and Wifi.
I had problem of memory leakage which i fixed.
Right now I am able to scan 50ibeacons and send to MQTT every vtaskDelay(20)

Gerritje
Posts: 1
Joined: Wed Mar 27, 2019 9:21 am

Re: WIFI/BLE Simultaneously

Postby Gerritje » Wed Mar 27, 2019 9:28 am

Hello arunbm123

I see that you have solved the problem with the memory and BLE and WIFI together. Please can you explain what you have done to get it working?

aseitasi
Posts: 8
Joined: Sun Aug 04, 2019 4:36 am

Re: WIFI/BLE Simultaneously

Postby aseitasi » Tue Aug 27, 2019 1:27 am

https://youtu.be/-N52wL8xQzM

It's not a way to use both of them at the same time but it's updating wifi credential via BLE.

huybk213
Posts: 13
Joined: Tue Jan 01, 2019 9:13 am

Re: WIFI/BLE Simultaneously

Postby huybk213 » Sun Sep 22, 2019 6:02 am

Hi every one.
I'm using esp-idf v3.2.2 stable and i have a trouble with WiFi and BLE coexist.
I'm success to config wifi information via custom GATT server. Mobile phone will send information such as SSID, Password... to esp32 via custom GATT server.

But when i'm provide wrong ssid - wrong password, ESP32 jump to wifi event WIFI_STA_DISCONNECT, and BLE service is no more active.
Mobile phone cannot scan it anymore.
I also turn off bluetooth in mobilephone, but ESP32 do not jump to GATT_DISCONNECT_EVENT.

I think esp-idf have bug in ble stack.

Anyone facing with problem like that?

Who is online

Users browsing this forum: ESP_Roland, Google [Bot] and 138 guests