This is the last blog of this challenge. So it's time to make a recap of what I learnt and what I would have done differently
What I learnt
TensorFlow
For sure, the most important topic I learnt during this challenge is TensorFlow. It's for sure a great tool, with a lot of project to start from and tons of documentation available. On the paper, the neural network approach was the winning one for the application I had in mind. However, I underestimated the hardware resources required to run a neural network on the Arduino board. The Arduino Nano 33 IoT, with only 32 Kb of RAM, can run only very simple neural network, making this platform unsuitable for any real application. Form this point of view, the Arduino BLE Sense board would have been the perfect choice: it is as small as the Arduino Nano 33 IoT, but with 256 Kb of RAM - 8 times the RAM of a Arduino Nano 33 IoT
Arduino Nano 33 IoT's power modes
In general, I am familiar with the Arduino environment, so I took the opportunity to deepen my knowledge of the power save modes available on the SAMD21. I created a simple functions to put the processor to sleep and I plan to extend support for power modes and create a library that can be imported in the Arduino IDE
How to flash the bootloader
Due to some problems I experienced while testing power modes, I have been forced to learn how to clean the flash and write a pristine bootloader. I learnt an amazing open-source project (OpenOCD) that can transform a Raspberry Pi into an SWD programmer!
How to make plastic cases
I learnt a quick and easy method to create plastic cases for my next projects
Edge Impulse
Looking at the positive experiences made by the challengers, it worth the while to give Edge Impulse a try. Looks a really complete and powerful tools for anomaly detection and classification
What went wrong
TensorFlow Lite
As I said, I underestimated the hardware requirements to run a neural network. What I learnt is that the minimum requirements to run a neural network is a Cortex M4 and 256 Kb of RAM. Good to know for my future projects!
Final demo
This is a video that shows the ACE wearable device at work
Thanks for following my posts. Here is a list of all the blogs I wrote during this challenge
ACE - Blog #1 - Project description
ACE - Blog #2 - Building the wearable
ACE - Blog #3 - Sending notifications
ACE - Blog #4 - The neural network
ACE - Blog #5 - Sensing the world
ACE - Blog #6 - Adding simplicity
ACE - Blog #7 - Improving the device construction
ACE - Blog #8 - Offloading computation to LSM6DS3
Extra content
Source code