BLE with ESP32 tutorial part 1: the Server

Поділитися
Вставка
  • Опубліковано 11 січ 2025

КОМЕНТАРІ • 138

  • @leisergeist
    @leisergeist 11 місяців тому +7

    I rarely comment but had to say… fantastic job making a great clear but concise tutorial! Thanks a bunch for your effort

    • @mothunderz
      @mothunderz  9 місяців тому +1

      Thank you very much for your feedback, I really appreciate it :-)

  • @koolway
    @koolway 3 місяці тому +1

    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!!!

    • @mothunderz
      @mothunderz  3 місяці тому +1

      Thank you very much for your feedback, glad to hear the video helped you out!

  • @NishatTasnim-w3c
    @NishatTasnim-w3c 2 місяці тому

    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.

  • @davidkempton2894
    @davidkempton2894 10 місяців тому +2

    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!

  • @ollydsouza
    @ollydsouza Рік тому +4

    @mothunderz - most useful content and BLE presentation I have listened to while trying it out -in many years! Thanks

    • @mothunderz
      @mothunderz  Рік тому +1

      Thank you very much for your feedback!

  • @anil2812
    @anil2812 4 дні тому

    Excellent video. Made a few things which were Greek earlier, very much understandable

  • @gaborungvari784
    @gaborungvari784 11 місяців тому +2

    Thx a lot for the effort to create the video! Great content!

    • @mothunderz
      @mothunderz  9 місяців тому

      Thank you for the feedback!

  • @infinitychromeful
    @infinitychromeful Рік тому +1

    welcome back i am waiting for you since web server tutorial

    • @mothunderz
      @mothunderz  Рік тому +1

      Thanks! Yes, I was quite busy lately, happy to get this one out, now working on part 2 ;-)

  • @drdave611
    @drdave611 Рік тому +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...

    • @mothunderz
      @mothunderz  Рік тому

      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!

    • @footpad9047
      @footpad9047 Рік тому

      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!

    • @dancevideo2
      @dancevideo2 Рік тому

      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.

  • @veljac99
    @veljac99 Рік тому +4

    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.

    • @mothunderz
      @mothunderz  Рік тому

      Haha, thanks for the correction of the correction :-)

    • @cristian980t
      @cristian980t Рік тому +1

      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()

  • @benarcher372
    @benarcher372 5 місяців тому

    Super clear and, for me, with the perfect level of detail. Thanks!

    • @mothunderz
      @mothunderz  3 місяці тому

      Thank you very much for your feedback!

  • @madwilliamflint
    @madwilliamflint Рік тому +1

    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.

    • @mothunderz
      @mothunderz  Рік тому +1

      Great to hear! Thank you for your feedback :-)

  • @rydinorwin
    @rydinorwin Рік тому

    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!

    • @mothunderz
      @mothunderz  11 місяців тому

      Yes, thank you for the correction. I should add that to the correction list of the video :-) Cheers!

    • @cristian980t
      @cristian980t 11 місяців тому +1

      Delay 1000 means 1 second😅

  • @xzerr
    @xzerr Рік тому +1

    A wonderful workshop, thank you! Extremely useful from the beginning to the end

    • @mothunderz
      @mothunderz  11 місяців тому

      Glad you enjoyed it!

  • @erenkaya5371
    @erenkaya5371 Рік тому +1

    Thank you for this great work and explanation. This is what we were waiting for.

  • @dancevideo2
    @dancevideo2 Рік тому +1

    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 :-)

    • @mothunderz
      @mothunderz  11 місяців тому

      Yes absolutely, that should have been milliseconds :-)

  • @ivekuukkeli2156
    @ivekuukkeli2156 Рік тому

    Deep thanks for this tutorial in practice. Now I can understand much better the BLE connection.

  • @baconsledge
    @baconsledge Рік тому

    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.

    • @mothunderz
      @mothunderz  11 місяців тому

      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.

  • @ronaldmarkundag346
    @ronaldmarkundag346 3 місяці тому +2

    Ringbuffer(size_t length, ringbuf_type_t type = RINGBUF_TYPE_NOSPLIT); please help me whats wrong with this

  • @mychannelmarco
    @mychannelmarco 7 місяців тому

    Amazing tutorial! Thank you very much

  • @jmmi9780
    @jmmi9780 10 місяців тому

    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.

  • @adwait_natu
    @adwait_natu Рік тому

    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"

    • @mothunderz
      @mothunderz  11 місяців тому +1

      Thank you for the feedback. At the moment I am a bit overloaded with work, but will look into this

  • @retsalb3517
    @retsalb3517 3 місяці тому

    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!

  • @Galeazzi2006
    @Galeazzi2006 Рік тому

    Thank you!
    Awesome video!

  • @melvin-rh2gr
    @melvin-rh2gr 8 місяців тому

    @mothunderz: any idea on how many devices can be connected to esp32 through BLE?

  • @doug6503
    @doug6503 11 місяців тому +3

    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.

    • @robertboll1503
      @robertboll1503 11 місяців тому

      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.

    • @dougrichardson9256
      @dougrichardson9256 11 місяців тому

      @@robertboll1503 I had just found another web site that explained this. I removed the second directory and pow it compiles and loads ! Thanks !

    • @mothunderz
      @mothunderz  9 місяців тому

      Excellent you were able to solve the problem!

  • @nicoladellino8124
    @nicoladellino8124 Рік тому

    Very nice and useful video, THX.

  • @stevexiao1488
    @stevexiao1488 13 днів тому

    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);
    | ^~~~~~~~~~~~~~

  • @erokfussell
    @erokfussell Рік тому

    You are a God among men.

    • @mothunderz
      @mothunderz  Рік тому

      Thank you, well appreciated :-)

  • @quadepchai
    @quadepchai 10 місяців тому

    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?

  • @betech2879
    @betech2879 Рік тому +1

    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......

    • @mothunderz
      @mothunderz  Рік тому +1

      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
      ua-cam.com/video/aM2ktMKAunw/v-deo.html

    • @betech2879
      @betech2879 Рік тому

      @@mothunderz thanks a lot for your help I will send you the details and zip file

  • @stevexiao1488
    @stevexiao1488 14 днів тому

    How to connect ESP32 to computer wirelessly? Bluetooth or WiFi?

  • @raffialidina5580
    @raffialidina5580 Рік тому

    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

    • @mothunderz
      @mothunderz  11 місяців тому

      Are you using Iphone or Android? For Android the app I use it MIT app inventor (dont have an iphone myself):
      ua-cam.com/video/RvbWl8rZOoQ/v-deo.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!

  • @AshutoshJangirOfficial
    @AshutoshJangirOfficial 11 місяців тому +1

    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?

    • @mothunderz
      @mothunderz  9 місяців тому +1

      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.

  • @stephenhookings1985
    @stephenhookings1985 Рік тому +1

    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.

    • @mothunderz
      @mothunderz  Рік тому

      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?

  • @OMNI_INFINITY
    @OMNI_INFINITY Рік тому

    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?

    • @mothunderz
      @mothunderz  Рік тому

      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.

  • @_om3ga41
    @_om3ga41 Рік тому +1

    I have a question... In this case is the "Server" the Central Device or the Peripheral in terms of the BLE Spec

    • @mothunderz
      @mothunderz  Рік тому

      This will be the Peripheral device (the one that advertises). I got that the wrong way around in the video, apologies for that

  • @SahanPanditharathne
    @SahanPanditharathne 8 місяців тому

    How can I use BLE to sync data between my ESP32 and the mobile app

  • @BlaineL
    @BlaineL Рік тому +1

    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?

    • @mothunderz
      @mothunderz  Рік тому +3

      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.

    • @BlaineL
      @BlaineL Рік тому

      @@mothunderz perfect ! Thank you. Yes. I'm just using the included files. Got it all working. :)

    • @suiiiiii1707
      @suiiiiii1707 8 місяців тому

      @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

    • @dominiclee6682
      @dominiclee6682 7 місяців тому +1

      @@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.

    • @suiiiiii1707
      @suiiiiii1707 7 місяців тому

      @@dominiclee6682 thank you it did work

  • @MattijsVandebroek
    @MattijsVandebroek 9 місяців тому

    Is it also possible to send a file from SPIFFS using ble?

  • @ridwanmulyana99
    @ridwanmulyana99 Рік тому

    nice tutorial bro👍

    • @mothunderz
      @mothunderz  Рік тому

      Glad you liked it, almost done with part 2...

  • @MungomaChristopher-he5kn
    @MungomaChristopher-he5kn Рік тому

    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???

    • @mothunderz
      @mothunderz  Рік тому

      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.

  • @FranciscoMartinezSorando
    @FranciscoMartinezSorando Місяць тому

    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

  • @asaelmaia5553
    @asaelmaia5553 Рік тому

    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.

    • @mothunderz
      @mothunderz  Рік тому

      Can you provide the exact fault you get? Any additional information is well appreciated. What ESP are you using? Thank you

    • @markvervaart1956
      @markvervaart1956 Рік тому

      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

  • @fitzgeraldmistral97
    @fitzgeraldmistral97 7 місяців тому

    The 'delay' is in milliseconds, not nanoseconds.

  • @firdoshdiakus4841
    @firdoshdiakus4841 Рік тому

    Hi great tutorial how do I go about using this for asset tracking?

    • @mothunderz
      @mothunderz  11 місяців тому

      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.

  • @dominiclee6682
    @dominiclee6682 7 місяців тому

    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?

  • @YousufAlam-jx4qd
    @YousufAlam-jx4qd Рік тому

    Sir, please can u tell me can I use deep sleep features in this code, if yes then how?

    • @mothunderz
      @mothunderz  11 місяців тому

      So far I have not yet looked into deep sleep on the ESP

  • @NasrinsadatJalili
    @NasrinsadatJalili Рік тому

    after run code i can not see any value on serial monitor. i checked baud. could you please help me

    • @mothunderz
      @mothunderz  Рік тому

      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.

  • @colesturdevant2363
    @colesturdevant2363 Рік тому

    When I set notifications to true on the descriptor, I don't automatically get the message. Maybe it's an ios thing?

    • @mothunderz
      @mothunderz  Рік тому

      Hmm, nordic nRF should behave the same, but I dont have an ios, so unfortunately cannot verify...

    • @a_boy_can_dream
      @a_boy_can_dream Рік тому +1

      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.

  • @guyprovost
    @guyprovost Рік тому +1

    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.

    • @mothunderz
      @mothunderz  11 місяців тому

      yes, thanks for the feedback... my bad there :-) it should be milliseconds

  • @hamzabejaoui5669
    @hamzabejaoui5669 Рік тому

    that helps a lot

  • @logeshwaranc2948
    @logeshwaranc2948 Рік тому

    how notify update from client to sever

    • @mothunderz
      @mothunderz  Рік тому +1

      This can be done with a callback function. Please see the last part of this video (starting at 39:03):
      ua-cam.com/video/RvbWl8rZOoQ/v-deo.html

    • @logeshwaranc2948
      @logeshwaranc2948 Рік тому

      @@mothunderz any tutorial in idf ?? please

    • @mothunderz
      @mothunderz  Рік тому

      I have not yet looked into idf. What is the advantage for you of idf over the Arduino IDE?

  • @SA-oj3bo
    @SA-oj3bo Рік тому

    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?

    • @mothunderz
      @mothunderz  Рік тому +1

      My apologies, but I unfortunately do not have the time at the moment to re-write code from HM10 to ESP32.

    • @SA-oj3bo
      @SA-oj3bo Рік тому

      @@mothunderz can you give me some advice then?

    • @mothunderz
      @mothunderz  Рік тому +1

      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.

  • @menoone2042
    @menoone2042 Рік тому

    Hi, can I create mesh network instead of server-client model ?

    • @mothunderz
      @mothunderz  Рік тому +1

      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.

  • @AbdulQadeer-em7ib
    @AbdulQadeer-em7ib Рік тому

    How we can send more than 20 bytes data?

    • @mothunderz
      @mothunderz  Рік тому +1

      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!

    • @AbdulQadeer-em7ib
      @AbdulQadeer-em7ib Рік тому

      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.

    • @mothunderz
      @mothunderz  Рік тому

      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?

  • @guhaganesh6032
    @guhaganesh6032 Рік тому +5

    It's 3 milliseconds not nanoseconds, great video though!

    • @mothunderz
      @mothunderz  Рік тому +4

      Thanks for pointing this out. Not sure where the ns came from 😅

    • @guhaganesh6032
      @guhaganesh6032 Рік тому

      @@mothunderz np I heard ns and I was like WAIT I can get it to send that fast no wayy!!

  • @nicholasng8291
    @nicholasng8291 Рік тому

    Thanks!

  • @michealmorrow1481
    @michealmorrow1481 9 місяців тому

    3 milliseconds, of course.

  • @Kwatch
    @Kwatch Рік тому

    5 star

  • @butchalline
    @butchalline 6 місяців тому

    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

  • @varunshah2384
    @varunshah2384 7 місяців тому +1

    which esp 32 board to use??
    As I am getting an error using wroom esp 32 da module

  • @adAbsurdum07
    @adAbsurdum07 8 місяців тому

    Do you know how tro send more than just 20 bytes over a characteristic?