Researched on various compact boards that can run machine learning models
Ordered flex sensors, boards and other equipment required for the project
Learned how to integrate flex sensors to Arduino boards upon receiving them
Started with calibrating flex sensors
Tested Arduino Nano BLE Sense, and Adafruit Feather Sense boards
Implemented BLE mouse functionality for these boards
Tested various sensors that are inbuilt on the sense boards such as accelerometers, temperature and humidity sensors
Implemented a sample machine Learning model using TensorFlow lite library in Arduino
Ordered Raspberry Pi Zero board that is also a compact board but quite powerful
Received Raspberry Pi Zero and tested it. Since Pi Zero doesn't have inbuilt ADC, we need an external ADC board to connect flex sensors to Pi Zero. So, ordered a ADC
Started working on integrating flex sensors on the glove
Developing Bluetooth program to run efficiently on Arduino board
The native Arduino Bluetooth library is not capable of running the background. So, started working another program that can support Bluetooth running in the background.
Flex sensors have been integrated on to the glove.
Working on the circuit to place the Arduino board and connect flex sensors to it.
After finalizing the board, it is now the time to integrate it on to the smart glove and connect all the flex sensors to it.
This part seems to be trickier than I thought as the flex sensors aren't flexible enough to stay sticked to the
Developed a Bluetooth library using Mbed OS capable of running on the Arduino Nano Sense board. This program is capable of running in the background and consume optimal resources
Arduino board is getting heated on doing consecutive tasks of running the Bluetooth in the background and getting input from the flex sensors in the foreground
Need to optimize the existing program, and in search of other boards capable of doing these tasks
Received ADC for Raspberry Pi Zero and working on it
Pi Zero is capable of running the model effortlessly as it supports python programming. But it cannot be ideal for project as it consumes a lot of power
A small battery may not be able to handle Pi Zero for a longer time
Working on ideal solutions and also tested Adafruit's Feather Sense board that is similar to Arduino Nano Sense board
Adafruit Feather Sense board has amazing support of Micropython and Circuitpython. They also provide updates for the libraries. Read more about these libraries here: https://circuitpython.org/, https://micropython.org/
Working on Circuitpython and getting familiar with the libraries
Ran a sample Bluetooth program on the Circuitpython and it worked great. Since python is slower than C++ in execution time, the delay is clearly visible between Arduino board's Bluetooth and Adafruit board's Bluetooth
Adafruit boards also support C++ library hence will work on it
Adafruit board's C++ library works in par with the Arduino's library and is capable of running Bluetooth in background
Optimizing the programs and comparing the execution times of all
Adafruit Feather Sense is relatively slower as it runs Nordic's SDK where as Arduino board runs Mbed's SDK.
The response time of Arduino board is 3ms and that of Adafruit is 5 ms. It will translate to much slower response time for model.
As per the results, Arduino Nano BLE Sense board is finalized for the project.
After finalizing the board, it is integrated on the smart glove and all the flex sensors are connected to the board.
The flex sensors are then tested and sample inputs are taken to verify the circuit is connected properly.
After testing and calibrating the sensors, data from the flex sensors are stored to build the model.
Inputs for 8 different gestures are collected and preprocessed to train the model.
Various deep network models are tested and the highest accuracy achieved is 88%.
The model is deployed in the Arduino board and further tested for any unknown issues and benchmarks.
The model deployed is performing excellent and the results are very pleasing. Now, it is the time to move forward with integrating the model with applications.
The results are as follows:
Inferencing Time: 3 ms
Peak RAM usage: 1.9 KB
ROM usage: 29.9 KB
One of the applications of the smart gloves, wireless mouse, is mapped to a gesture and is executed on identifying the particular gesture.
Since the model is not expensive in using the resources, Bluetooth has plenty of resources available to function optimally.
Arduino board is connected to the PC all the time for faster switching between applications and less lag.
Started working on project report and include all the results and comparisons.
Also started working on the poster to complete it in the given deadline.