ESP32-based logger for activities including GPS and BLE-devices
The project uses Neil Kolban's libraries for Bluetooth connections (here). It also uses TinyGPS++ from Mikal Hart (here) for controlling and interpreting the GY-GPS6MV2 module.
- Receive GPS location from GY-GPS6MV2 module
- Connecting with GATT Heart Rate devices
It should contain:
- An on/off switch
- Two buttons, one to start an activity, one to start uploading (later maybe one with short/long press?)
- The ESP32 module
- UART interface
- The GPS module
- An SD-card module
- A battery
- Bluetooth should be reconnecting on losing a device
- Make a central structure for the most recent data
- Make a variable indicating GPS connection is established
- Add more callback methods for the Bluetooth connection
- Add Bluetooth support for cadence sensors
- Make every Bluetooth connection a separate client to support multiple sensors
- Save data to flash or, or maybe SD?
- Add WiFi capability to automatically connect and upload data
- Increase GPS capabilities (time, speed, etc)
- Increase Bluetooth capabilities (battery, etc)
- In circuit, add an on/off switch, battery, RTC
- Remove currentData.time_age, as we can do the calculation ourselves and removing it saves assigning it every time in the loop...
- Add two buttons that the user needs to use to make a choice between uploading and starting.
Just to record the basics of GATT for the software. Don't mind this section, they are kind of random notes...
// **** For Heart Rate 0x2A37 **** // pData[0] contains the flags of the transmission [format, status(2), energy expenditure, RR-interval length] // pData[1] contains the heart rate in 8-bit or 16-bit depending on the flags // pData[2:] contain energy expenditure (1 value) and RR values (sets of 2), depending on the flags // **** For Body Location 0x2A38 **** // pData[0] sensor location, choice of Other, Chest, Wrist, Finger, Hand, Ear Lobe, Foot // **** For Cadence 0x2A5B **** // pData[0] contains the flags of the transmission [wheel revolution, crank revolution] // pdata[1] cumulative wheel revolutions // pData[2] last wheel event time // pData[3] cumulative crank revolutions // pData[4] last crank event time // **** For Cadence Feature 0x2A5C **** // pData[0] contains the feature fields [wheel revolution, crank revolution, multiple sensor locations]