For some time now, I wanted to implement a BLE sensor for an ergometer that already displays speed, power, cadence, etc... so it can be sent to my watch. You got me going, just ordered the ESP32 to start implementing it. Thank you for the quality content you provided!!!
I just stumbled upon this piece about BLE with ESP32 Tutorial and it really opened my eyes. The insights shared are thought-provoking and genuinely refreshing. If you're curious about BLE with ESP32 Tutorial this is a must-read in GAO RFID Inc-there's a wealth of information here that could reshape your understanding.
Unbelievably timely for me! I've been slowly accumulating some understanding of BLE for several months in order to implement some moisture sensors in my garden. I think your clear explanation (and especially, the demonstrating of how the parameters actually work! ) is going to help a ton. One issue that I've been having trouble with using the tiny Xiao ESP32-C3 is that the BLE-Arduino doesn't seem to work... errors during compilation. However, the NimBLE version does, so I'm hopeful...
I noticed as well that there are many ESP32 versions out there and that there is not one single BLE library that works for all of them. Glad to hear you found a version that works!
This comment is reassuring: I'm trying to follow this tutorial using a Xiao ESP32-S3 and it simply doesn't build. I was wondering if I was doing something wrong. Same use case as you by the way!
FWIW I got a Xiao ESP32-S3 today. I selected the "XIAO_ESP32S3" board in my Arduino IDE 2.2.1 and the example code I see under "ESP32 BLE Arduino" seem to compile and run as expected, at least "BLE_notify" and "BLE_server" do. I can see the device appear using a BLE Scanner app on my phone, and I get each notification as expected.
correction of the correction: 3 is 3ms = 3000 µs = 3000000 ns (ms = 1E-3, µs =1E-6, ns= 1E-9) >>09:50 delay(3) will provide a 3µs delay, not 3ns as I state in the video.
The way the delay() function works is pretty simple. It accepts a single integer (or number) argument. This number represents the time (measured in milliseconds). So delay(3) means wait 3 milliseconds, for microseconds there is another method named delayMicroseconds()
Absolutely awesome! You know delay(1) - this is milli seconds, so delay(1000) is 12 second! I am sure other people have mentioned this. So very clear, fantastic - thank you!
In the video at 9:53 I believe your delay(3); waits for 3 milliseconds, not 3 nanoseconds as the voiceover indicates. Nanoseconds are a little bit smaller :-)
Have you considered walking a user through reading data from a General TS04 BLE Multimeter (cheap) with an ESP-32? There are many of these types of devices that only have phone apps but many of us would like to use a Windows/Linux PC to capture data. This would truly be a practical application.
Thank you for this suggestion! That is an excellent application. However, at the moment I unfortunately dont have time to make videos. As soon as I have time I will look into this.
Thank you for the tutorial, that was very helpful. BTW, I have a problem, I've tried with two possible apps from the market, the one you mentioned on your tutorial and other called BLEScanner. Both of them allowed me sending just 4 bytes from the app to the ESP32 BLE Server. I wonder if it is possible to send a bigger package of data from the app to the Server. Could you help me please? Thanks again and regards.
Thank you so much! I've followed along your video and everything works good except the last part where 2901 descriptor is added. I can see only one descriptor i.e. 2902 but value is showing as Incorrect data length(16bit expected) : (0x) 41 --- So many bytes ---65, then actual message "A very interesting variable"
hey man, thank you for the tutorial. I have a question, can you still connect this code into the MIT app inventor to make a new app? thank you so much!
My code will not download nor compile! I get a lot of errors , not sure how to post them. But the serial counsel has ‘ringbuf_type_t’ has not been declared in Scr/FreeRTOS.h file in ESP32 BLE arduino directory.
You don't need to install the library since it is now included. The error is because you now have it installed twice. Remove the library and it will compile.
Truied to run BLE_server.ino under Examples of ESP32_BLE_Arduino library, however, received compiling error message: libraries\ESP32_BLE_Arduino\src/FreeRTOS.h:61:35: error: 'ringbuf_type_t' has not been declared 61 | Ringbuffer(size_t length, ringbuf_type_t type = RINGBUF_TYPE_NOSPLIT); | ^~~~~~~~~~~~~~
Hello, I have a small problem in my application, I want to create an application that when the BLE device emits a signal and the phone catches that signal, my application will go to a screen or the layout contains certain information, do you think it is feasible?
Good to see you again my friend Thanks for your time to sharing this videos with us and I am a big fan of your videos. I been working in project that can control 12load and monitor ac volt by using esp-12e and zmpt101b and 12relay module and control by use app I have been make it in mit app inventor and every thing is working very good but when I add EmonLib and make it send volt to app the esp Restart over and over I know that problem because it takes time to calculate the ac volt and that make esp restarted and cut the wifi can you help me how can connect with you......
Thank you for your feedback. Sounds like a fun project. I am not familiar with the EmonLib, so not sure to what degree I can help here, but lets see. I dont post my email address in text online to limit spam from bots, but in this video, see the right top at 8:30 th-cam.com/video/aM2ktMKAunw/w-d-xo.html
Are you using Iphone or Android? For Android the app I use it MIT app inventor (dont have an iphone myself): th-cam.com/video/RvbWl8rZOoQ/w-d-xo.html If you want push notifications, these can be added with an extension to MIT app inventor: community.appinventor.mit.edu/t/what-is-the-latest-push-notification-extension/39529 I have not tried this myself, but stuff in MIT app inventor is mostly pretty straightforward. Hope this works out for you!
Hii I am learning this part but when I upload thw code it gives me an error 61 | Ringbuffer(size_t length, ringbuf_type_t type = RINGBUF_TYPE_NOSPLIT); | ^~~~~~~~~~~~~~ Multiple libraries were found for "BLEDevice.h" Used: C:\Users\ashut\OneDrive\Documents\Arduino\libraries\ESP32_BLE_Arduino Not used: C:\Users\ashut\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.0-alpha3\libraries\BLE exit status 1 can you guide me?
See the comment below from another user: You don't need to install the library since it is now included. The error is because you now have it installed twice. Remove the library and it will compile.
I was searching for a way to fix the ID of the BLE so that my phone reliably finds the ESP32. Otherwise when my app closes the phone needs to forget the paired device and repair. Want to avoid this. Maybe the GUID will do it.
My apologies for the late reply, I am a bit swamped with work to date. I am not entirely sure what the problem is that you are trying to solve: is it the ID management on the ESP or on the phone?
Hmmm...seems that is actually one of the libraries by Neil Kolban. Maybe that "dariusz krempa" downloaded neil's library and put his name on it and then somebody at Arduino corrected that later?
Thank you for mentioning that. Yes, I guess something like that happened. Anyway, the library is now included in the ESP32 package by default, so no need to manually install it anymore.
Thank you for this video. Uhm... I do not see the ESP32 BLE Arduino library by Krempa in the manager. I do see the one by Neil Kolban, but on his GitHUB page it says that the BLE is already incorporated directly in Arduino and that it is only for archive. Can you offer guidance as I'd like to follow along with your tutorial and learn about using BLE. I'm wondering if I can follow along using other libraries (ie I'm using an ESP32-S3 by lilygo - T Display S3) or would it be too confusing?
Can you please navigate in your arduino IDE to File -> Examples: can you find "ESP32 BLE Arduino" there? If so, there is no need to install anything and you can move forward in the video to 5:55.
@mothunderz hi i use the example that comes with the bord (file-> Example-> ESP32 BLE Arduino) but when i compile the code, it shows me an error "BLEDevice.h : no such file or directory" and when i install the library mentioned in the video it says that 'ringbuf_type_t' is not declared
@@suiiiiii1707 I met same error before. It was found that we no longer require to add ESP32 BLE Arduino library. You can remove the added "ESP32 BLE Arduino" library and compile again. The build-in library already includes BLE. You can find example: BLE / Notify. It looks the same as that included in ESP32 BLE Arduino.
Multiple clients can be supported on the ESP, but I have not looked into this so far. There is a demo for multiple clients in the examples you get with the library. I recommend looking into that.
I have a error, why? error: conversion from 'String' to non-scalar type 'std::string' {aka 'std::__cxx11::basic_string'} requested 41 | std::string pChar2_value_stdstr = pChar -> getValue(); | ~~~~~~~~~~~~~~~~~^~ exit status 1 Compilation error: conversion from 'String' to non-scalar type 'std::string' {aka 'std::__cxx11::basic_string'} requested
Very interesting, but on my laptop the BLE NOTIFY example keeps complaining about BLEDevice, present on line 56. Any idea of might ? The example itself doesn't want to run.
Heyhey, I have exactly the same problem with line 56. I want to compile for ESP32-C3 development board. De compiler says 'init' is not a member of 'BLEDevice'. Any help welcome... @@mothunderz
There are many ways to realize asset tracking. Unfortunately I am overloaded with work and cannot make videos at the moment, so my apologies for not being able to assist with your request here.
I've delved into numerous videos on the topic but this video makes me understand the most about the BLE with ESP32. Thank you very much. Moreover, I encountered interesting twist using nRF Connect on my Android mobile. The app would occasionally hang after connecting to my ESP32 and clicking the continuous fetch of characteristics value. However, following the adjustment from 3ns delay to 1s delay, the app operates smoothly without further hanging. Is it because too frequent updates would overwhelm the app?
This is a very generic and basic error. Before you start with BLE you should first get your basics in order. There are plenty of vids on that topic: esp32io.com/tutorials/esp32-serial-monitor if you have that working, pls proceed with this video.
I dont think that the Delay function works with "nanoseconds" but rather "milliseconds". The precision of a board like a ESP32 can not be that precise. Heck, even a register in a CPU isn,t that precise.
Well, I dont know the exact code, but with BLE there are some basic building blocks to send and receive information. You should replace the HM10 specific ones with those for the ESP32. The first thing to check though is whether BLE or serial Bluetooth is used (see the beginning of this video). Then figure out if notify, read or write is used. Finally I recommend to start with a simple program and gradually increase complexity.
Yes, that is definitely possible. I have not looked into this myself, but it seems rather straightforward. Please go to the examples and there you will find an example for a mesh network.
First of all: the limit of 20 bytes is only present for Notify. Read and Write to not have this limit. You can use longer bytes by configuring a longer MTU. This is done in the server by adding right under BLEDevice::init("ESP32"); the following command: BLEDevice::setMTU(517); -> note that 517 bytes is the maximum you can use with BLE Notifications In the client you need to also do the same and add right under pClient->connect(myDevice); the following command: pClient->setMTU(517); Hope this works for you!
Thanks for your reply, yes it works for me In my case I want to send a jason packet from server which is very large and I want to send it in chunks and size of one chunk is that which I set from client which is mtu value and I set the mtu from client but I am unable to read that mtu value from server so accoording to that value I can send jason packet from server side in chunks, how can I read that mtu value in server which is set from client? I use getmtu() function on server but It did not work for me or I can use that function in wrong way Please help me in this regard.
I have not yet had the need to read the mtu. Besides you will need to set the mtu upon configuration of the setup, so why would you not define it in both server and client?
Using IDE 2.3.2, sketch BLE_server, ESP dev module I get error ...Compilation error: 'init' is not a member of 'BLEDevice' Could not find ESP32 BLE Arduino, so I used🤕 these includes: BLEDevice.h BLEServer.h BLEUtils.h BLE2902.h
I rarely comment but had to say… fantastic job making a great clear but concise tutorial! Thanks a bunch for your effort
Thank you very much for your feedback, I really appreciate it :-)
For some time now, I wanted to implement a BLE sensor for an ergometer that already displays speed, power, cadence, etc... so it can be sent to my watch.
You got me going, just ordered the ESP32 to start implementing it. Thank you for the quality content you provided!!!
Thank you very much for your feedback, glad to hear the video helped you out!
I just stumbled upon this piece about BLE with ESP32 Tutorial and it really opened my eyes. The insights shared are thought-provoking and genuinely refreshing. If you're curious about BLE with ESP32 Tutorial this is a must-read in GAO RFID Inc-there's a wealth of information here that could reshape your understanding.
This video was just what I was looking for. So many of the other ones dont show you how to set up a server. Thanks VERY much!
You're welcome!
@mothunderz - most useful content and BLE presentation I have listened to while trying it out -in many years! Thanks
Thank you very much for your feedback!
Excellent video. Made a few things which were Greek earlier, very much understandable
Thx a lot for the effort to create the video! Great content!
Thank you for the feedback!
welcome back i am waiting for you since web server tutorial
Thanks! Yes, I was quite busy lately, happy to get this one out, now working on part 2 ;-)
Unbelievably timely for me! I've been slowly accumulating some understanding of BLE for several months in order to implement some moisture sensors in my garden. I think your clear explanation (and especially, the demonstrating of how the parameters actually work! ) is going to help a ton.
One issue that I've been having trouble with using the tiny Xiao ESP32-C3 is that the BLE-Arduino doesn't seem to work... errors during compilation. However, the NimBLE version does, so I'm hopeful...
I noticed as well that there are many ESP32 versions out there and that there is not one single BLE library that works for all of them. Glad to hear you found a version that works!
This comment is reassuring: I'm trying to follow this tutorial using a Xiao ESP32-S3 and it simply doesn't build. I was wondering if I was doing something wrong. Same use case as you by the way!
FWIW I got a Xiao ESP32-S3 today. I selected the "XIAO_ESP32S3" board in my Arduino IDE 2.2.1 and the example code I see under "ESP32 BLE Arduino" seem to compile and run as expected, at least "BLE_notify" and "BLE_server" do. I can see the device appear using a BLE Scanner app on my phone, and I get each notification as expected.
correction of the correction: 3 is 3ms = 3000 µs = 3000000 ns (ms = 1E-3, µs =1E-6, ns= 1E-9)
>>09:50 delay(3) will provide a 3µs delay, not 3ns as I state in the video.
Haha, thanks for the correction of the correction :-)
The way the delay() function works is pretty simple. It accepts a single integer (or number) argument. This number represents the time (measured in milliseconds). So delay(3) means wait 3 milliseconds, for microseconds there is another method named delayMicroseconds()
Super clear and, for me, with the perfect level of detail. Thanks!
Thank you very much for your feedback!
This series is great. I'm about to embark on a project with a bunch of esp32s running sensors. Didn't occur to me that BLE was actually within reach.
Great to hear! Thank you for your feedback :-)
Absolutely awesome! You know delay(1) - this is milli seconds, so delay(1000) is 12 second! I am sure other people have mentioned this. So very clear, fantastic - thank you!
Yes, thank you for the correction. I should add that to the correction list of the video :-) Cheers!
Delay 1000 means 1 second😅
A wonderful workshop, thank you! Extremely useful from the beginning to the end
Glad you enjoyed it!
Thank you for this great work and explanation. This is what we were waiting for.
Glad it was helpful!
In the video at 9:53 I believe your delay(3); waits for 3 milliseconds, not 3 nanoseconds as the voiceover indicates. Nanoseconds are a little bit smaller :-)
Yes absolutely, that should have been milliseconds :-)
Deep thanks for this tutorial in practice. Now I can understand much better the BLE connection.
Glad it was helpful!
Have you considered walking a user through reading data from a General TS04 BLE Multimeter (cheap) with an ESP-32? There are many of these types of devices that only have phone apps but many of us would like to use a Windows/Linux PC to capture data. This would truly be a practical application.
Thank you for this suggestion! That is an excellent application. However, at the moment I unfortunately dont have time to make videos. As soon as I have time I will look into this.
Ringbuffer(size_t length, ringbuf_type_t type = RINGBUF_TYPE_NOSPLIT); please help me whats wrong with this
Amazing tutorial! Thank you very much
Thank you for the tutorial, that was very helpful.
BTW, I have a problem, I've tried with two possible apps from the market, the one you mentioned on your tutorial and other called BLEScanner. Both of them allowed me sending just 4 bytes from the app to the ESP32 BLE Server. I wonder if it is possible to send a bigger package of data from the app to the Server. Could you help me please?
Thanks again and regards.
Thank you so much! I've followed along your video and everything works good except the last part where 2901 descriptor is added. I can see only one descriptor i.e. 2902 but value is showing as Incorrect data length(16bit expected) : (0x) 41 --- So many bytes ---65, then actual message "A very interesting variable"
Thank you for the feedback. At the moment I am a bit overloaded with work, but will look into this
hey man, thank you for the tutorial. I have a question, can you still connect this code into the MIT app inventor to make a new app? thank you so much!
Thank you!
Awesome video!
Glad you liked it!
@mothunderz: any idea on how many devices can be connected to esp32 through BLE?
My code will not download nor compile! I get a lot of errors , not sure how to post them. But the serial counsel has ‘ringbuf_type_t’ has not been declared in Scr/FreeRTOS.h file in ESP32 BLE arduino directory.
You don't need to install the library since it is now included. The error is because you now have it installed twice. Remove the library and it will compile.
@@robertboll1503 I had just found another web site that explained this. I removed the second directory and pow it compiles and loads ! Thanks !
Excellent you were able to solve the problem!
Very nice and useful video, THX.
Glad it was helpful!
Truied to run BLE_server.ino under Examples of ESP32_BLE_Arduino library, however, received compiling error message:
libraries\ESP32_BLE_Arduino\src/FreeRTOS.h:61:35: error: 'ringbuf_type_t' has not been declared
61 | Ringbuffer(size_t length, ringbuf_type_t type = RINGBUF_TYPE_NOSPLIT);
| ^~~~~~~~~~~~~~
You are a God among men.
Thank you, well appreciated :-)
Hello, I have a small problem in my application, I want to create an application that when the BLE device emits a signal and the phone catches that signal, my application will go to a screen or the layout contains certain information, do you think it is feasible?
Good to see you again my friend
Thanks for your time to sharing this videos with us and I am a big fan of your videos.
I been working in project that can control 12load and monitor ac volt by using esp-12e and zmpt101b and 12relay module and control by use app I have been make it in mit app inventor and every thing is working very good but when I add EmonLib and make it send volt to app the esp Restart over and over I know that problem because it takes time to calculate the ac volt and that make esp restarted and cut the wifi can you help me how can connect with you......
Thank you for your feedback. Sounds like a fun project. I am not familiar with the EmonLib, so not sure to what degree I can help here, but lets see. I dont post my email address in text online to limit spam from bots, but in this video, see the right top at 8:30
th-cam.com/video/aM2ktMKAunw/w-d-xo.html
@@mothunderz thanks a lot for your help I will send you the details and zip file
How to connect ESP32 to computer wirelessly? Bluetooth or WiFi?
Cool project. do you have an example where BLE Tx a link and smart phone gets a push notification to go or not to go to the link. thanks
Are you using Iphone or Android? For Android the app I use it MIT app inventor (dont have an iphone myself):
th-cam.com/video/RvbWl8rZOoQ/w-d-xo.html
If you want push notifications, these can be added with an extension to MIT app inventor:
community.appinventor.mit.edu/t/what-is-the-latest-push-notification-extension/39529
I have not tried this myself, but stuff in MIT app inventor is mostly pretty straightforward. Hope this works out for you!
Hii
I am learning this part but when I upload thw code it gives me an error
61 | Ringbuffer(size_t length, ringbuf_type_t type = RINGBUF_TYPE_NOSPLIT);
| ^~~~~~~~~~~~~~
Multiple libraries were found for "BLEDevice.h"
Used: C:\Users\ashut\OneDrive\Documents\Arduino\libraries\ESP32_BLE_Arduino
Not used: C:\Users\ashut\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.0-alpha3\libraries\BLE
exit status 1
can you guide me?
See the comment below from another user:
You don't need to install the library since it is now included. The error is because you now have it installed twice. Remove the library and it will compile.
I was searching for a way to fix the ID of the BLE so that my phone reliably finds the ESP32. Otherwise when my app closes the phone needs to forget the paired device and repair. Want to avoid this. Maybe the GUID will do it.
My apologies for the late reply, I am a bit swamped with work to date. I am not entirely sure what the problem is that you are trying to solve: is it the ID management on the ESP or on the phone?
Hmmm...seems that is actually one of the libraries by Neil Kolban. Maybe that "dariusz krempa" downloaded neil's library and put his name on it and then somebody at Arduino corrected that later?
Thank you for mentioning that. Yes, I guess something like that happened. Anyway, the library is now included in the ESP32 package by default, so no need to manually install it anymore.
I have a question... In this case is the "Server" the Central Device or the Peripheral in terms of the BLE Spec
This will be the Peripheral device (the one that advertises). I got that the wrong way around in the video, apologies for that
How can I use BLE to sync data between my ESP32 and the mobile app
Thank you for this video. Uhm... I do not see the ESP32 BLE Arduino library by Krempa in the manager. I do see the one by Neil Kolban, but on his GitHUB page it says that the BLE is already incorporated directly in Arduino and that it is only for archive. Can you offer guidance as I'd like to follow along with your tutorial and learn about using BLE. I'm wondering if I can follow along using other libraries (ie I'm using an ESP32-S3 by lilygo - T Display S3) or would it be too confusing?
Can you please navigate in your arduino IDE to File -> Examples: can you find "ESP32 BLE Arduino" there? If so, there is no need to install anything and you can move forward in the video to 5:55.
@@mothunderz perfect ! Thank you. Yes. I'm just using the included files. Got it all working. :)
@mothunderz hi i use the example that comes with the bord (file-> Example-> ESP32 BLE Arduino) but when i compile the code, it shows me an error "BLEDevice.h : no such file or directory" and when i install the library mentioned in the video it says that 'ringbuf_type_t' is not declared
@@suiiiiii1707 I met same error before. It was found that we no longer require to add ESP32 BLE Arduino library. You can remove the added "ESP32 BLE Arduino" library and compile again. The build-in library already includes BLE. You can find example: BLE / Notify. It looks the same as that included in ESP32 BLE Arduino.
@@dominiclee6682 thank you it did work
Is it also possible to send a file from SPIFFS using ble?
nice tutorial bro👍
Glad you liked it, almost done with part 2...
is it possible for me to connect more than one bluetooth at once, the project am working on needs like 5 devices connected to like a server device???
Multiple clients can be supported on the ESP, but I have not looked into this so far. There is a demo for multiple clients in the examples you get with the library. I recommend looking into that.
I have a error, why?
error: conversion from 'String' to non-scalar type 'std::string' {aka 'std::__cxx11::basic_string'} requested
41 | std::string pChar2_value_stdstr = pChar -> getValue();
| ~~~~~~~~~~~~~~~~~^~
exit status 1
Compilation error: conversion from 'String' to non-scalar type 'std::string' {aka 'std::__cxx11::basic_string'} requested
Very interesting, but on my laptop the BLE NOTIFY example keeps complaining about BLEDevice, present on line 56. Any idea of might ?
The example itself doesn't want to run.
Can you provide the exact fault you get? Any additional information is well appreciated. What ESP are you using? Thank you
Heyhey, I have exactly the same problem with line 56. I want to compile for ESP32-C3 development board. De compiler says 'init' is not a member of 'BLEDevice'. Any help welcome...
@@mothunderz
The 'delay' is in milliseconds, not nanoseconds.
Hi great tutorial how do I go about using this for asset tracking?
There are many ways to realize asset tracking. Unfortunately I am overloaded with work and cannot make videos at the moment, so my apologies for not being able to assist with your request here.
I've delved into numerous videos on the topic but this video makes me understand the most about the BLE with ESP32. Thank you very much.
Moreover, I encountered interesting twist using nRF Connect on my Android mobile. The app would occasionally hang after connecting to my ESP32 and clicking the continuous fetch of characteristics value. However, following the adjustment from 3ns delay to 1s delay, the app operates smoothly without further hanging. Is it because too frequent updates would overwhelm the app?
Sir, please can u tell me can I use deep sleep features in this code, if yes then how?
So far I have not yet looked into deep sleep on the ESP
after run code i can not see any value on serial monitor. i checked baud. could you please help me
This is a very generic and basic error. Before you start with BLE you should first get your basics in order. There are plenty of vids on that topic:
esp32io.com/tutorials/esp32-serial-monitor
if you have that working, pls proceed with this video.
When I set notifications to true on the descriptor, I don't automatically get the message. Maybe it's an ios thing?
Hmm, nordic nRF should behave the same, but I dont have an ios, so unfortunately cannot verify...
I tested on both and can confirm that it's not working on the iOS version of NRF Connect. Also, iOS was not showing the 2901 descriptor.
I dont think that the Delay function works with "nanoseconds" but rather "milliseconds". The precision of a board like a ESP32 can not be that precise. Heck, even a register in a CPU isn,t that precise.
yes, thanks for the feedback... my bad there :-) it should be milliseconds
that helps a lot
you are welcome :-)
how notify update from client to sever
This can be done with a callback function. Please see the last part of this video (starting at 39:03):
th-cam.com/video/RvbWl8rZOoQ/w-d-xo.html
@@mothunderz any tutorial in idf ?? please
I have not yet looked into idf. What is the advantage for you of idf over the Arduino IDE?
Hi I try to replace the HM10 by the ESP32 BLE, can you help me? I want to use APP's that work with HM10 with ESP32 BLE. Stuck now. Can mail?
My apologies, but I unfortunately do not have the time at the moment to re-write code from HM10 to ESP32.
@@mothunderz can you give me some advice then?
Well, I dont know the exact code, but with BLE there are some basic building blocks to send and receive information. You should replace the HM10 specific ones with those for the ESP32. The first thing to check though is whether BLE or serial Bluetooth is used (see the beginning of this video). Then figure out if notify, read or write is used. Finally I recommend to start with a simple program and gradually increase complexity.
Hi, can I create mesh network instead of server-client model ?
Yes, that is definitely possible. I have not looked into this myself, but it seems rather straightforward. Please go to the examples and there you will find an example for a mesh network.
How we can send more than 20 bytes data?
First of all: the limit of 20 bytes is only present for Notify. Read and Write to not have this limit. You can use longer bytes by configuring a longer MTU. This is done in the server by adding right under BLEDevice::init("ESP32"); the following command:
BLEDevice::setMTU(517);
-> note that 517 bytes is the maximum you can use with BLE Notifications
In the client you need to also do the same and add right under pClient->connect(myDevice); the following command:
pClient->setMTU(517);
Hope this works for you!
Thanks for your reply, yes it works for me
In my case I want to send a jason packet from server which is very large and I want to send it in chunks and size of one chunk is that which I set from client which is mtu value and I set the mtu from client but I am unable to read that mtu value from server so accoording to that value I can send jason packet from server side in chunks, how can I read
that mtu value in server which is set from client?
I use getmtu() function on server but
It did not work for me or I can use that function in wrong way
Please help me in this regard.
I have not yet had the need to read the mtu. Besides you will need to set the mtu upon configuration of the setup, so why would you not define it in both server and client?
It's 3 milliseconds not nanoseconds, great video though!
Thanks for pointing this out. Not sure where the ns came from 😅
@@mothunderz np I heard ns and I was like WAIT I can get it to send that fast no wayy!!
Thanks!
You're welcome!
3 milliseconds, of course.
5 star
Thank you!
Using IDE 2.3.2, sketch BLE_server, ESP dev module
I get error ...Compilation error: 'init' is not a member of 'BLEDevice'
Could not find ESP32 BLE Arduino, so I used🤕 these includes:
BLEDevice.h
BLEServer.h
BLEUtils.h
BLE2902.h
which esp 32 board to use??
As I am getting an error using wroom esp 32 da module
Do you know how tro send more than just 20 bytes over a characteristic?