ESP32 S3 BLE Support

CircuitPython on hardware including Adafruit's boards, and CircuitPython libraries using Blinka on host computers.

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
User avatar
jr226retail
 
Posts: 13
Joined: Thu Sep 29, 2016 7:42 am

ESP32 S3 BLE Support

Post by jr226retail »

Do you have any plans to add BLE support to the S3 in the near term? I just bought several boards from Adafruit because they're advertised as 'BLE and WiFi', only to find out BLE is unsupported in CircuitPython. I need to use CircuitPython because I need CANIO, so Arduino is incompatible.

Is there a board by board list of implemented and unsupported features in CircuitPyhton? It shouldn't be too difficult to set up a dashboard so customers know what they're buying, what is missing, and what's in development.

User avatar
freddyboomboom
 
Posts: 267
Joined: Wed Feb 16, 2022 7:55 pm

Re: ESP32 S3 BLE Support

Post by freddyboomboom »

The BLE support in the ESP32-S3 is still in development.

If I remember correctly, it is waiting on some lower level support from the ESP32-S3 chip manufacturer, Espressif.

User avatar
tannewt
 
Posts: 3298
Joined: Thu Oct 06, 2016 8:48 pm

Re: ESP32 S3 BLE Support

Post by tannewt »

S3 BLE is partially supported in CP. It can scan, advertise and connect. It can interfaces with servers on the connected device but not create its own server. This is an issue with NimBLE because it assumes all servers are created before starting the bluetooth stack. CircuitPython allows servers to be created after things have started. It isn't a simple change to make unfortunately.

What are you specifically trying to do?

User avatar
jr226retail
 
Posts: 13
Joined: Thu Sep 29, 2016 7:42 am

Re: ESP32 S3 BLE Support

Post by jr226retail »

Hi @tannewt, thanks for the reply.

I've attached a diagram of what we're working on. We want to get sensor data from a remote sensor (or multiple sensors) to a CAN bus. The wireless distance is small (< 5m). The sensor end will be battery powered, but will only need to run for between 2-8 hours at a time before recharging/ replacing the battery. The data is then sent wirelessly (no direct wiring between nodes is possible) to a receiving node which sends the information out to a CAN bus. We are most comfortable with Circuit Python, but definitely okay with Arduino; the libraries mean that coding is not so complex. The ESP32 S3 was chosen because it supports both WiFi and BLE, but we are open to ESP32 based alternatives (C3, S2) if support doesn't exist now for the S3. One thing that was nice about the S3 was the native USB to make programming the devices simpler, as well as both WiFi and BLE capabilities all at a low cost.

We're having trouble in two spots: one is the wireless communication between devices, we can't seem to send data between the S3's. The other is CAN support, which the S3 is listed, but would require Circuit Python (from what we've seen, I don't think Arduino supports the S3/ CAN). The S3 is listed as being CAN capable (and supported by CANIO), but we get no data transfer between the S3 and the CAN Transceiver. We've used an oscilloscope to confirm that no data is being transmitted on the CAN TX/ CAN RX pins, despite the program seeming to confirm good data transmission. (using the transmission code from here: https://learn.adafruit.com/using-canio- ... nd-receive. We tried a number of different pin combinations and haven't been able to get any data transmitted from them. We confirmed that the pins aren't dead by transmitting UART data on the same pins and viewing it on the oscilloscope.

Any thoughts or suggestions are greatly appreciated! Happy to provide any additional background or info that would help, thanks for your time!

Simple Flow Diagram
Simple Flow Diagram
WirelessCANSensors_small.png (928.81 KiB) Viewed 91 times

User avatar
tannewt
 
Posts: 3298
Joined: Thu Oct 06, 2016 8:48 pm

Re: ESP32 S3 BLE Support

Post by tannewt »

Do you have a WiFi access point too? If you do, I'd go that route.

Is your data sensitive? You could use scanning and advertising but it is unreliable.

canio was only tested on ESP32-S2 unfortunately. Please file an issue here: https://github.com/adafruit/circuitpyth ... new/choose

Locked
Please be positive and constructive with your questions and comments.

Return to “Adafruit CircuitPython”