The idea or concept of Embedded Artificial Intelligence in a micro-chip has only really been feasible in recent years and is still in its infancy. But with the rise of robotics and the Internet of Things it is likely to grow considerably in the ears to come. This is where a small machine learning model is embedded in a micro-chip such as the Arduino Nano 33 BLE Sense. This is a board about the size of your small finger (well mine at least!). It brings at least two major disciplines together: Robotics and Machine Learning. This is an increasingly important area of development for Machine Learning and Artificial Intelligence especially around Robotics and the Internet of Things.
One of the reasons I think this is the technology of the future despite all the hype around LLMs (ChatGPT and the like) is that it can be sustainable because of the low power demands that come from such a small device. I do realise that the training of the Machine Learning model will use some energy but once trained it would not need to draw down from it. If it could be attached to a renewable energy source (wind, sun, movement, water etc) then it would be such a benefit where it was applied.
How to Learn?
Part of the reason for developing this website is to take people on a journey to discover how you can learn to code and attempt to create and develop skills around coding, Machine Learning and Artificial Intelligence. For embedded AI the following steps are needed:
- Python
- Machine Learning
- Robotics
Python
Python is the go to language for Machine Learning, it is the place to start. You will also use libraries such as NumPy, Matplotlib, and Pandas.
Machine Learning
You can learn through a number of libraries such as PyTorch and TensorFlow, people will have their favourites but both are equally good. So here we will be using TensorFlow and Keras which is a user friendly layer on top of TensorFlow.
Machine Learning for EAI
Embedded Artificial Intelligence needs intelligence this comes in the form of a machine learning model which will interact with the sensors. There are inputs and outputs which the model would have been trained on. The problem as you can imagine is that the board has very little memory. Compare that to the Large Language Models (LLMs) such as ChatGPT and Bard which require supercomputers. So how can this be achieved?
TinyML
This is where TinyML comes in. It can take a model and simplify it so that it takes up less space on the chips memory.
Robotics
For this section we will use the Arduino Nano 33 BLE Sense. It has all the sensors we could possibly need, it is not as cheap as the other Arduino boards but that is because it was developed for just this purpose. If you want to learn more of the basics of robotics then I suggest you look to the Arduino Uno.
Arduino Nano 33 BLE Sense
This board was made for the development of embedded AI in mind. So if you want more information about the board then follow this link: Arduino Nano 33 BLE Sense (rev2)
Note: there is a second version (rev2) which has slightly different sensors on it and therefore you need to use different libraries. However they may look almost identical but some documentation and some tutorials may well be using an older (version 1) of the board.
Sensors
The board has quite a number of sensors, here is a brief list of them:
- temperature
- humidity
- atmospheric pressure
- light
- sound
- movement
- gesture
- magnetic
It can also connect to other Bluetooth devices, where BLE stands for Bluetooth Low Energy. If you want to get really techie then here is the link to the data sheet: Data Sheet Arduino Nano 33 BLE Sense (rev2)
Useful Resources
Although I do intend to create my own material here are some suggestions in the meantime.
Video playlist
This series of videos uses the older version 1 of the Arduino Nano 33 BLE Sense but the principles are there nonetheless.