It’s notoriously not a friendly or easy perform to develop for and despite its capabilities, the ESP32 has largely been relegated to daughterboard status in most embedded situations.
Okay, as someone who has used the ESP32 before (but not the STM32), I'm genuinely curious as to why you're stating this as an assertion. What exactly is it about the ESP32 that makes it unfriendly or difficult?
(FWIW, all my ESP32 development has been in C with FreeRTOS. I'm not one of those people who insists on shoving the Arduino stack onto everything.)
I’m not an Arduino fan either but I primarily work on the opposite end of the spectrum working with the bare metal directly. ESP32’s documentation is nonexistent compared to STM32 and the ARM Cortex core in the STM32 chips has infinitely better tooling than anything with an Xtensa (this more than anything else was the deciding factor in my book).
On RIOT we’ve put quite some work into implementing the peripheral APIs on the esp8266/esp32 just like on any other supported platform.
So no matter if you are on stm32, esp* or ATmega, you can run the same code.
Concerning the contribution of code for adding Bluetooth support - if a company would want to allocate some time and a person for this cause, would there be someone who can guide them in the process? Perhaps the challenge could be broken down into smaller components?
Assume that you get a rational human being at the input, they know various programming languages (including C and C++), but have no experience with RIOT whatsoever - would this work out?
> if a company would want to allocate some time and a person for this cause, would there be someone who can guide them in the process?
A good first step would probably be to create an issue on the issue tracker, so the relevant people can be informed and you can get some information about what was already tried / what needs to be done.
I'd also recommend the IRC/Matrix channel, but the main esp* maintainer (@gschorcht) doesn't hang out there.
> Assume that you get a rational human being at the input, they know various programming languages (including C and C++), but have no experience with RIOT whatsoever - would this work out?
RIOT is a rather simple system IMHO, I found it easy to get into it and the community is pretty helpful.
With Bluetooth and esp32 you have picked a pretty hard project to start. The esp32 is notoriously bad documented and Bluetooth is a complex beast on it's own.
Currently Bluetooth is only implemented on nrf51/nrf52 using the NimBLE stack.
To get to know RIOT a bit it's probably good to play around a bit and fix small things that you find are broken / need improving if you notice any.
- flash the networking example: make BOARD=esp32-wroom-32 -C examples/gnrc_networking flash term
This will default to esp_now, you'll get a shell can can ping other esps.
- flash the border router example: make BOARD=esp32-wroom-32 -C examples/gnrc_border_router UPLINK=wifi WIFI_SSID=your_ssid WIFI_PASS=secret_password flash term
This should connect to your WiFi and act as a border router to the esp_now network. All your esp_now esps should now be online, given that your WiFi provides an IPv6 connection and DHCPv6.
If you enable the sock_dns module, you should be able to ping hosts on the internet directly by name
Configuration is done through the application Makefile, there is an ongoing effort to move to Kconfig but this is not finished yet.
(FWIW, all my ESP32 development has been in C with FreeRTOS. I'm not one of those people who insists on shoving the Arduino stack onto everything.)