Skip to content

Developing Embedded/ML Applications for Arduino Nano 33 BLE Sense Rev2 and Raspberry Pi Pico w

License

Notifications You must be signed in to change notification settings

AdamClarkStandke/TinyMachineLearning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TinyMachineLearning

Developing Embedded Applications that for the most part deal with machine learning as detailed from the following books and tutorials:

As Gian details Tiny machine learning is broadly defined as a fast growing field of machine learning technologies and applications including hardware (dedicated integrated circuits), algorithms and software capable of performing on-device sensor (vision, audio, IMU, biomedical, etc.) data analytics at extremely low power, typically in the mW range and below, and hence enabling a variety of always-on use-cases and targeting battery operated devices.1

This Branch contains the most updated code and hardware designs. The branch old_documentation contains older code/designs and applications that do not fit with the main repo.

MicroController Boards

Arduino Nano 33 BLE Sense Rev2

Description
CPU Arm Cortex-M4 64MHz
FLASH 1MB
RAM 256KB
SIZE 45x18mm

As bought and documented here

Rasperry Pi Pico W RP2040 MicroController

Description
CPU Dual core Arm Cortex-M0+ 133MHz
FLASH 2MB
RAM 264KB
Wifi 2.4GHz single band, 802.11n
SIZE 51x21mm

As bought and documented here

Project: Gesture Sense Emmoji Keyboard

Implementation of Get Started With Machine Learning on Arduino by Sandeep Mistry and Dominic Pajak. A gesture classifier is created to play Street Fighter as detailed by Charlie Gerard in Play Street Fighter with body movements using Arduino and Tensorflow.js. Full implementation can be found here

Getting Gesture Data with BMI270 and BMM150 Sensors

The x-axis represents the num of samples and the y-axis represents g-force from the accelerometer and degrees per second from the gyroscope.

Jab Data

Acceleration Graph:

Angular velocity Graph:

Raw data can be found here

Upper Cut Data

Acceleration Graph:

Angular velocity Graph:

Raw data can be found here

Training and Validation Learning Curves

The learning curves after 300 epochs of training mixed with validation as seen below:

with the following model and trainable paramaters:

Layer (type) Output Shape Param #
Dense 50 35,750
Dense 15 765
Dense 2 32

CLICK HERE

Ino Code can be found here

C-Byte Model can be found here

Project: Person Detection with Rasperry Pi Pico W

Implementation of the person detection example as detailed by the ArduCam Team

CLICK HERE

Project: Drone Flight Control System using the Arduino Nano 33 BLE Sense Rev2 Board

WARNING!!! THIS PROJECT IS AN OPEN SOURCE HARDWARE PROJECT TAKE ALL PRECATIONS BEFORE ASSEMBLY SUCH AS MASK, GLOVES AND FIRE EXTINGUISHER. IN THAT REGARD READ THE MIT LICENSE ALSO BEFORE USING!!!!

Schematic and PCB layout:

This version of the schematic comes from the book Teach an Arduino to Fly by David McGriffy in the book David uses the Teensy 3.1 board and the add-in for the Arduino IDE to program the flight controller, I just switched the board and removed the components that are not necessary for the Nano BLE 33 Rev 2. This design uses only one 3.7V 650mAh battery rather then the two that I used in the previous two designs. This should help with the weight issues I was having. To make this design work you need to buy a voltage regulator/booster (similar to the one I designed in Old Version 1) except in this design I bought a tried and tested booster (rather than design my own like I did in Old Version 1); in particular I bought Matek VB2A5V 3-4.2V to 5V Voltage Booster . Basically, the genius of David's design is that a 3.7v battery can be used to power the Arduino, motors, and other components. The battery's 3.7-4.2 variable discharge rate will power the motors, while the regulated 5v output will power the Arduino through its vin pin and the auxiliary components (i.e a camera). The Arduino's 3v3 pin is configured to power the Lemon RX reciever to be controlled by the Blade MLP4DSM 4Ch Controller. However, I first need to understand how the Serial 1 hardware library works with the Nano (which to one of ordinary skill will take some additional time); so to save time, I will be building a joystick control system as detailed by paulsb through the Nano's Bluetooth BLE. And I decided to add a FPV camera manufactured by Wolfwhoop to capture video images.The drone frame is a Syma X5C Frame and I modified David's code as found at The visible drone to work for the Nano 33 BLE 33 Rev2 and Nano 33 BLE. Get David's book to fully understand this Drone/flight control game, G!!! (highly recommended).

Schematic

Gerber file and 3D Gerber CAD VIEW

PCB Fabrication and assembly was done by EasyEda.

Gerber File

Generic Flight Control System:

CLICK HERE

Drone Flight Control System

JoyStick Controller

AI Flight Control System:


Reference:

Footnotes

  1. TinyML

About

Developing Embedded/ML Applications for Arduino Nano 33 BLE Sense Rev2 and Raspberry Pi Pico w

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published