Machine Learning On Arduino Nano 33 BLE Sense
What is Machine Learning?
Machining learning is a programming paradigm where the programmer does not specify all the rules for the program. Instead, the programmer feeds in a good amount of data into the algorithm and the labels/classes (in case of supervised learning) for that data and lets the machine/computer determine the rules for itself. The computer then uses these learned rules to make inferences on new unseen data.
The data can range from simple number statistics all the way up to stories/movie plots, audio, images, video etc.
Today, machine learning finds its applications all around us like the movie/show suggestions on Netflix, product recommendations on Amazon, friend suggestions on Facebook, voice assistants like Siri and Google etc.
Machine Learning and Arduino
Due to its potential, advances in the Machine Learning domain are currently being achieved at a phenomenal rate and it won’t be long before it is used in every other domain. To that end, a lot of research is going into how to optimize various algorithms and technologies to enable them to run on smaller embedded devices without the need of huge amounts of memory, storage, processing (and cooling components) and power.
On these lines, huge strides have been made in Tensorflow and we now have Tensorflow light which enables deploying Tensorflow Machine Learning models on embedded hardware. TinyML is the latest advanced cutting-edge field that brings the power of Machine Learning to embedded devices. It employs various techniques like quantization, pruning etc. to optimize the model in a way that it can be deployed on embedded devices which have various constraints in terms of RAM, CPU power, Arithmetic Capabilities etc.
Arduino has launched two amazing products for the everyday hobbyist to get started tinkering with deploying Machine Learning models on embedded hardware.
The Nano 33 BLE Sense is Arduino’s 3.3V AI enabled board in the smallest available form factor: 45x18mm! It boasts of a much more powerful processor, i.e., the nRF52840, a 32-bit ARM Cortex-M4 CPU running at 64 MHz. To make things more convenient, the Nano 33 BLE Sense comes with a plethora of onboard standard sensors like microphone, color, brightness, vibration, proximity, pressure etc. which are apt for a good starting point for venturing in this domain.
In addition to this, Arduino has launched a TinyML kit which comes with the OV7675 camera and a very handy connector board which saves us the trouble of separately connecting a camera to the Nano 33 BLE Sense board making it the ideal combo kit for trying out a range of Machine Learning applications including image processing.
Getting Started with the Arduino TinyML Kit
Our YouTube playlist (link given below in resources) is a good place to get started with the Arduino TinyML kit. We will be releasing a series of videos on a weekly basis that showcase various applications and the capabilities of the Arduino TinyML kit.
In addition to this there is an excellent course listed on EdX from Harvard University and another one in Coursera by Edge Impulse (Edge Impulse provides a very good platform to get started easily with TinyML by abstracting the lower level components so that you can concentrate on the architecture of the Machine Learning model and leave the mundane tasks to the Edge Impulse platform).
Notable Projects / Application On-going in the TinyML Domain
- Magic Wand
- Gesture Recognition
- Fruit Identification
- Solar Scare Mosquito Project
Learning Material :