TinyMLx Course 3: [Post 4] - Feedback on Project Progress

Here’s a follow up from my project pitch here.

One of the major themes I learned from the TinyMLx course was that one of the major challenges in TinyML is collecting clean data for use in TensorFlow. To that end, I’ve spent some time developing a method for collecting tagged sensor data. I use the Arduino Nano 33 BLE sense with silicone sleeve, powered by a LiPoly battery and the Adafruit PowerBoost 1000 charger. It sends accelerometer data via Bluetooth to the Seeed Studio Wio Terminal and its associated battery pack and micro SD card.

This configuration has allowed me to record data in a completely standalone environment (that is, without Internet connection) such as a gym or boxing studio. I made several mistakes/revisions, such as:

  • Blocking system calls such as writes to the SD card and LCD updates, which meant I lost sensor data and reduced the resolution of the data I was collecting
  • Issues with the BLE stacks across the Arduino and Seeed Studio libraries. They had differing abilities which required me to change how I do bluetooth connectivity and detect states like peripheral/central connectivity.
  • Reconfiguring the ‘magic wand’ example to transmit the accelerometer data plus the ‘2d raster’ of the sensor data, but not run the Tensorflow models to reduce the amount of time in the main execution loop.
  • The Arduino nano 33 BLE sense only has an onboard neopixel as a means of giving feedback, so it is hard to tell if the board has ‘crashed’, or if it has lost connectivity to the Wio terminal. I introduced a “rainbow” effect on the neopixel so I can tell if the board is working or not.
  • I’m the only user of this system so far, so any insights and model outputs are limited to me. While this fails all the ethics tests for diverse data collection, I’m just experimenting with the concept and would expand my user data collection if the concept is feasible.

Here’s a video of the setup in action: Instagram video link.

I’ve been testing the configuration in a practical environment (i.e. a 45 minute boxing session), and I had one failure with the Nano 33 BLE sense board. Both devices had enough battery power to last the session and did not move with the various body-weight and boxing exercises, so I’m satisfied with the sensor placements.

In response to that failure I have introduced a couple of feature changes in response to the live test:

  • adding the silicone sleeve for the nano 33 BLE sense to more securely attach it to my boxing wraps
  • adding the ‘rainbow effect’ on the neopixel when the nano 33 BLE sense is actively transmitting to the Wio terminal.
  • using the result of the peripheral ‘writeValue()’ function to confirm if the nano 33 BLE sense has bluetooth connectivity: if I lose connectivity then I try to rescan and reconnect to the Wio terminal.

I’m going to continue to collect sensor data and train my models over the next few months. But any feedback on my progress so far would be very much welcome!

3 Likes