Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
40c5831
New Learning Path:Learn How to Run AI on Edge Devices-Arduino Nano RP…
edudzi123 May 25, 2025
a5bd29b
Added a link to next steps
edudzi123 May 26, 2025
4aa3e6a
corrected a typo
edudzi123 May 26, 2025
22043b1
Updates
madeline-underwood Jun 7, 2025
58e7687
Updates
madeline-underwood Jun 8, 2025
9234b9e
Updates
madeline-underwood Jun 8, 2025
12d851d
Updates
madeline-underwood Jun 8, 2025
1bfa370
automatic update of stats files
Jun 9, 2025
0188350
Merge branch 'ArmDeveloperEcosystem:main' into iperf3-LP
madeline-underwood Jun 9, 2025
256910c
Update Arm ASR LP
annietllnd Jun 9, 2025
2125fe5
Updates
madeline-underwood Jun 9, 2025
ea07df3
Final tweaks
madeline-underwood Jun 9, 2025
0cfca10
Optimizing Arm binaries and libraries with LLVM BOLT
jasonrandrews Jun 9, 2025
1622f8d
Merge pull request #2021 from jasonrandrews/review
jasonrandrews Jun 9, 2025
84f3ce0
Merge pull request #2019 from madeline-underwood/iperf3-LP
jasonrandrews Jun 9, 2025
e509dce
Docker Model Runner editorial review
jasonrandrews Jun 9, 2025
08a2f21
Merge branch 'ArmDeveloperEcosystem:main' into review
jasonrandrews Jun 9, 2025
a9521c8
Merge pull request #2023 from jasonrandrews/review
jasonrandrews Jun 9, 2025
453d79b
updates
madeline-underwood Jun 10, 2025
7e8e850
Snapshot AWF OpenADKit demo; next step is to host on armswdev github …
odincodeshen Jun 10, 2025
b9de013
Update 3_setup_openadkit.md
odincodeshen Jun 10, 2025
eeb54af
Merge branch 'ArmDeveloperEcosystem:main' into SVE
madeline-underwood Jun 10, 2025
6e87e07
updates
madeline-underwood Jun 10, 2025
eeb3760
Merge pull request #2024 from odincodeshen/main
jasonrandrews Jun 10, 2025
eaff743
Merge pull request #1985 from e-dudzi/main
pareenaverma Jun 10, 2025
432d28f
Update _index.md
pareenaverma Jun 10, 2025
4c51da8
Fix link to MLEK
RonanSynnottArm Jun 11, 2025
f71b98e
Fix links to MLEK
RonanSynnottArm Jun 11, 2025
58fbd81
Fix link to MLEK
RonanSynnottArm Jun 11, 2025
a9c6ebd
Fix link to MLEK
RonanSynnottArm Jun 11, 2025
03e75d9
Fix links to MLEK
RonanSynnottArm Jun 11, 2025
ea800d1
Content dev
madeline-underwood Jun 11, 2025
fc108e8
Merge pull request #2025 from RonanSynnottArm/mlek
jasonrandrews Jun 11, 2025
514e9ea
Merge pull request #2026 from madeline-underwood/SVE
jasonrandrews Jun 11, 2025
c5292b6
Starting content dev
madeline-underwood Jun 11, 2025
b005bbf
Wrong name for cluster
geremyCohen Jun 11, 2025
2c707a2
Fixing missing kubectl
geremyCohen Jun 11, 2025
f0d80a5
Created new sections and divided content appropriately.
madeline-underwood Jun 12, 2025
0abbbb6
Updates
madeline-underwood Jun 12, 2025
1b3d83c
Merge pull request #2028 from geremyCohen/patch-1
pareenaverma Jun 12, 2025
71c8e1d
Merge pull request #2029 from geremyCohen/patch-2
pareenaverma Jun 12, 2025
39f8615
Merge pull request #2018 from annietllnd/fix
pareenaverma Jun 12, 2025
5282f69
updates
madeline-underwood Jun 12, 2025
77b1fbf
Further updates
madeline-underwood Jun 12, 2025
be737dd
Tweaks
madeline-underwood Jun 13, 2025
4330f44
updates
madeline-underwood Jun 13, 2025
24f3939
updates
madeline-underwood Jun 13, 2025
c5e0ad3
Final tweaks
madeline-underwood Jun 13, 2025
5587496
tweaks
madeline-underwood Jun 13, 2025
909d5a0
Enough is enough
madeline-underwood Jun 13, 2025
200a890
Merge pull request #2032 from madeline-underwood/bitmap_scanning
jasonrandrews Jun 13, 2025
8c31a82
spelling updates
jasonrandrews Jun 13, 2025
ae895b5
tag updates
jasonrandrews Jun 13, 2025
3649e40
Merge pull request #2034 from jasonrandrews/review2
jasonrandrews Jun 13, 2025
a290285
Improvements to SVE2 MATCH Learning Path
jasonrandrews Jun 13, 2025
ac6884f
fix code example
jasonrandrews Jun 13, 2025
6aa3d8f
Merge pull request #2035 from jasonrandrews/review2
jasonrandrews Jun 13, 2025
31d45e6
fix wording in compilation instructions for clarity
jasonrandrews Jun 13, 2025
fe0caeb
Merge pull request #2036 from jasonrandrews/review2
jasonrandrews Jun 13, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 26 additions & 1 deletion .wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4210,4 +4210,29 @@ iperf
normals
svcntb
svmatch
tc
tc
Alexa
BLERP
Cepstral
Datagram
Edudzi
GDPR
Gbit
Gershon
HIPAA
HVAC
Kordorwu
MCUs
MFCC
Mbit
PDM
Situnayake
accelerometers
iPerf
libcrypto
libray
libssl
misclassification
retransmission
subquery
uninstrumented
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Docker version 28.0.4, build b8034c0
Clone the demo repository using:

```bash
git clone https://github.com/autowarefoundation/openadkit_demo.autoware.git
git clone https://github.com/odincodeshen/openadkit_demo.autoware.git
```

The project is containerized in three Docker images, so you do not need to install any additional software.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
---
title: Board Connection and IDE setup
weight: 4

### FIXED, DO NOT MODIFY
layout: learningpathall
---

### Arduino Nano RP2040

To get started with your first **TinyML project**, a great option is the **Arduino Nano RP2040 Connect**. Built by Arduino, it uses the powerful **RP2040 microcontroller** and is fully supported by the Arduino core package. The board comes with built-in Wi-Fi, Bluetooth, and an onboard IMU—features that make it ideal for deploying machine learning models at the edge.

![example image alt-text#center](Images/nano.png "Arduino Nano RP2040")

Its compatibility with popular tools like Edge Impulse and the Arduino IDE makes it a beginner-friendly yet powerful choice for TinyML applications. You can learn more about the Arduino Nano RP2040 Connect on the [official Arduino website](https://store.arduino.cc/products/arduino-nano-rp2040-connect-with-headers?_gl=1*1laabar*_up*MQ..*_ga*MTk1Nzk5OTUwMS4xNzQ2NTc2NTI4*_ga_NEXN8H46L5*czE3NDY1NzY1MjUkbzEkZzEkdDE3NDY1NzY5NTkkajAkbDAkaDE1MDk0MDg0ODc.).

## Put everything together

### Step 1: Connect the LED to the Arduino Nano RP2040

To visualize the output of the voice command model, we will use a simple LED circuit.

### Components Needed

- Arduino Nano RP2040 Connect
- 1x LED
- 1x 220Ω resistor
- Breadboard and jumper wires

#### Circuit Diagram

- **Anode (long leg) of the LED** → Connect to **GPIO pin D2** via the 220Ω resistor
- **Cathode (short leg)** → Connect to **GND**

![example image alt-text#center](Images/LED_Connection.png "Figure 14. Circuit Connection")

![example image alt-text#center](Images/LED_Connection_Schematic.png "Figure 15. Circuit Schematic Connection")

### Step 2: Set Up the Arduino IDEs

To program and deploy your trained model to the Arduino Nano RP2040, you first need to configure your development environment.

Follow the detailed setup instructions provided in the following learning path:

[Arduino Nano RP2040 Setup Guide](https://learn.arm.com/install-guides/arduino-pico/)

This guide will walk you through:

- Installing the Arduino IDE
- Adding the board support package for the Nano RP2040

{{% notice Note %}}
**Note:** Follow every instruction in the guide **except** `How do I set up the Raspberry Pi Pico W?`, as it is not needed for this project.
{{% /notice %}}

### Step 3: Select Your Board and Port in the Arduino IDE

First, open the **Arduino IDE**.

To select your board:

1. Go to **Tools** > **Board**.
2. From the list, choose **Arduino Nano RP2040 Connect**.

To select your port:

1. Connect your Arduino board to your computer using a USB cable.
2. Go to **Tools** > **Port**.
3. Select the port labeled with your board’s name, e.g., `COM4 (Arduino Nano RP2040 Connect)` or `/dev/cu.usbmodem...` on macOS.

*Your Arduino IDE is now ready to upload code to the Arduino Nano RP2040.*
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
---
title: Overview
weight: 2

### FIXED, DO NOT MODIFY
layout: learningpathall
---

# Edge AI
Edge AI refers to artificial intelligence models that run directly on edge devices, processing data locally rather than relying on cloud computing. These models are optimized for real-time decision-making on resource-constrained devices, such as microcontrollers, embedded systems, and IoT sensors.

**TinyML (Tiny Machine Learning)** is a subset of Edge AI that focuses specifically on deploying machine learning models on ultra-low-power microcontrollers and resource-constrained devices. These microcontrollers typically have limited computational resources — often less than 1 MB of flash memory and only a few hundred kilobytes of RAM — and are designed to run on minimal power, sometimes for years on a single coin-cell battery. Despite these constraints, TinyML enables such devices to perform on-device inference, allowing them to make intelligent decisions in real time without needing to send data to the cloud. This opens the door for smart functionality in low-cost, battery-powered devices used in applications such as environmental monitoring, wearables, smart homes, industrial sensors, and more.

## Key Characteristics of Edge AI and TinyML

Key features of Edge AI and TinyML include;

- **Low Power Consumption**: Designed to run on batteries or harvested energy for months or years.

- **Small Model Size**: Models are optimized (e.g., quantized or pruned) to fit into a few kilobytes or megabytes.

- **Limited Compute & Memory** : Typically operates with <1MB RAM and very limited storage.

- **Real-Time Inference** : Enables immediate local decision-making (e.g., wake-word detection).

- **Low Latency** : No reliance on cloud – inference is performed on-device.

- **Applications** : Often used in audio classification, gesture detection, anomaly detection, etc.

- **Example Devices** : Arduino Nano 33 BLE Sense, STM32 MCUs, Raspberry Pi Pico, Arduino Nano RP2040 Connect, and more.

## Running AI Models on Resource-Constrained Devices

Running AI on edge devices presents several challenges. These devices often lack high-performance CPUs or GPUs, making computational power a limiting factor. Limited RAM and storage require careful memory management, and since many edge devices run on batteries, energy efficiency is a critical concern. To overcome these constraints, models are optimized through techniques such as quantization, pruning, and knowledge distillation, which reduce model size while maintaining accuracy.

## Edge AI Implementation Workflow

The process of implementing Edge AI begins with data collection using sensors, such as cameras, microphones, or motion detectors. This data is then used to train machine learning models on high-performance machines, such as cloud servers or workstations. Once trained, the models undergo optimization to reduce size and computational requirements before being deployed on microcontrollers or Arm-based microprocessors. Finally, inference takes place, where the model processes real-time data directly on the device to make decisions.

## Applications of Edge AI

Edge AI is used in a wide range of applications. In smart homes, voice assistants like Amazon Alexa rely on on-device speech recognition to process wake words. Security systems use AI-driven cameras to detect motion and identify anomalies, while energy management systems optimize power usage by analyzing real-time data from HVAC units.

Wearable devices also benefit from Edge AI. Smartwatches monitor health by detecting heart rate irregularities, and fitness trackers use AI-powered motion analysis to improve exercise tracking.

In industrial settings, predictive maintenance applications rely on IoT sensors to monitor vibrations and temperatures, helping prevent machinery failures. Smart agriculture systems use soil condition sensors to optimize irrigation and fertilization, while autonomous vehicles process sensor data for real-time navigation and obstacle detection.

## Importance of Edge AI

To understand the benefits of **Edge AI**, just **BLERP**, BLERP highlights the critical aspects of deploying machine learning models on edge devices, focusing on **Bandwidth, Latency, Economics, Reliability, and Privacy**. These components are key to understanding the advantages of processing data on-device rather than relying on the cloud. The table below provides an overview of each component and its importance in Edge AI applications "Situnayake, 2023"

| Area | Description |
|------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| B – Bandwidth | Edge AI reduces the amount of data that needs to be sent to the cloud. This is critical when working with high-volume data like video or sensor streams. Processing locally helps avoid congestion and dependency on internet speed. |
| L – Latency | Edge devices can make real-time decisions faster because they don't rely on cloud round trips. One of the significant benefits of Edge AI is low latency - processing occurs on-device without needing to send data to the cloud. This is crucial for applications requiring real-time decision-making, such as self-driving cars or medical monitoring devices. Additionally, Edge AI allows devices to function in offline environments, making it ideal for remote locations with limited connectivity. |
| E – Economics | Running models locally on low-power edge devices is often cheaper in the long run. It reduces cloud compute costs, data transmission costs, and energy consumption. |
| R – Reliability | Edge AI systems can continue functioning even with limited or no internet connection. This makes them more robust in remote areas, mission-critical applications, or offline settings. |
| P – Privacy | Data can be processed locally without being transmitted to external servers, reducing the risk of data breaches and complying with privacy regulations like GDPR or HIPAA. |

## Why Learn Edge AI?

Edge AI is transforming multiple industries. In healthcare, AI-powered medical diagnostics assist in early disease detection, while remote patient monitoring improves access to care. In agriculture, AI-driven sensors optimize soil conditions and pest control, leading to higher yields and resource efficiency. The manufacturing sector benefits from predictive maintenance and quality inspection, reducing downtime and improving productivity.

## Next Steps

To build effective TinyML and Edge AI projects, one needs more than just data—**both software and hardware** play a critical role in the development process. While data forms the foundation for training machine learning models, the **software** enables data processing, model development, and deployment, and the **hardware** provides the physical platform for running these models at the edge.

In this learning path, we will build a model that recognize specific voice commands, which will be used to **control LEDs on the Arduino Nano RP2040 Connect**. In the following steps, both software and hardware components will be discussed in detail.

Loading
Loading