I have been working on the custom hardware seizure detector for a couple of weeks. The code and schematics are on Github.
Progress to date:
- We can write firmware for the ESP32 microcontroller using the FreeRTOS framework 🙂
- Access the I2C bus to talk to external sensors (such as the ADXL345 accelerometer).
- Wire multiple devices to the I2C bus (I have a heart rate and blood oxygen saturation sensor, and a small display on it too).
- Proved that we can communicate with both the accelerometer and display modules.
In Progress at the moment:
- Modifying the I2C bus access code to make sure that only one process accesses the bus at a time, otherwise things will go horribly wrong when we try to use multiple devices, all managed by their own software process (task in FreeRTOS speak).
- Ordered the main parts for the prototype (I am feeling lucky that I will get the ESP32 based system power consumption down far enough to complete the Proof-of-Concept.
The current proof-of-concept hardware is a rats nest of interconnected bought-in modules – not pretty!
Work to Do to Complete Proof-of-Concept
- Complete the I2C bus access framework and routines to access:
- ADXL345 Accelerimater
- MAX300102 Heart Rate and Saturation module
- OLED Display
- Write code to send data to parent device over bluetooth periodically.
- Check Power Consumption
- Switch off the un-used ESP32 peripherals (e.g. WIFI) to reduce power consumption to give us at least 12 hours from a small LiPo battery.
Work to do for Prototype
- Design a custom PCB to hold the main components (rather than using bought in modules that are wired together) – necessary to get it down to wrist watch size.
- Get a small number of PCBs manufactured (there seem to be a few companies that do this cheaply in China).
- Design a watch case, and manufacture a few using 3D printing.
- Populate PCBs with components and solder them.
- Test using proof-of-concept code.
- Extend the OpenSeizureDetector android app to have a new Data Source which will be the custom OSD watch
- Update the firmware to communicate with the Android App.