Hardware

I plan to use the following hardware during my experiments (in this order):

  • LOLIN32 Lite / ESP32 WROOM
  • Adafruit ItsyBitsy / Feather nRF52840 Express
  • SparkFun Artemis Thing Plus

ESP32 will be programmed using Arduino IDE, as there are great tutorial to get started (below). Then I plan to try recreate the same functionality in CircuitPython using nRF52840. At this point SparkFun Artemis is a bit behind with software support. I hoped that BLE will be supported in Arduino IDE, but is seems that for now it will be only supported in Mbed OS. Although it's still not ready two months after this blog post.

Tutorials

I got the idea to even try doing something with BLE after watching these two videos made by Andreas Spiess:


Andreas explored how to get started with BLE using ESP32 with Arduino IDE. I recommend these videos to anyone starting to develop BLE device. There is also third video in this series, but I found it less relevant. Sketches for examples showed in videos are on the Github.

Another great knowledge source worth recommending is tutorial made by Random Nerd Tutorials.

Documentation

To adapt code sketches from above tutorials for indoor positioning some formal documentation will be needed:

https://www.bluetooth.com/specifications/gatt/
https://www.bluetooth.com/specifications/gatt/services/
https://www.bluetooth.com/specifications/gatt/characteristics/
https://www.bluetooth.com/specifications/gatt/descriptors/

It's good to have these link open in separate tabs during development.