# Learn how to run AI on Edge devices using Arduino Nano RP2040

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/edge/)
- [Overview](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/edge/overview/)
- [Train and deploy a TinyML audio classifier with Edge Impulse](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/edge/software-edge-impulse/)
- [Board connection and IDE setup](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/edge/connect-and-set-up-arduino/)
- [Program your first TinyML device](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/edge/program-and-deployment/)
- [Next Steps](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/edge/_next-steps/)

## About this Learning Path

| Skill level:   | Introductory            |
|----------------|-------------------------|
| Reading time:  | 1 hr 30 min            |
| Last updated:  | 13 Aug 2026             |

### Author:
Bright Edudzi Gershon Kordorwu  
[Arm IP: Cortex-M](https://support.arm.com/?tab=compute-ip&Product%20Type=Microcontrollers)

### Tags:
- [ML](https://www.arm.com/tag/ml)
- [Baremetal](https://www.arm.com/tag/baremetal)
- [Edge Impulse](https://www.arm.com/tag/edge-impulse)
- [tinyML](https://www.arm.com/tag/tinyml)
- [Edge AI](https://www.arm.com/tag/edge-ai)
- [Arduino](https://www.arm.com/tag/arduino)

### Who is this for?
This Learning Path is for beginners in Edge AI and TinyML, including developers, engineers, hobbyists, AI/ML enthusiasts, and researchers working with embedded AI and IoT.

### What will you learn?
Upon completion of this Learning Path, you will be able to:
- Understand the basics of Edge AI and TinyML.
- Collect and preprocess audio data using Edge Impulse.
- Train and deploy an audio classification model on the Arduino Nano RP2040.
- Control LEDs by turning them on and off based on model predictions.

### Prerequisites
Before starting, you will need the following:
- Completion of [Embedded programming with Arduino on the Raspberry Pi Pico](https://www.arm.com/learning-paths/embedded-and-microcontrollers/arduino-pico/) if you’re an absolute beginner.
- An [Edge Impulse Studio](https://studio.edgeimpulse.com/signup) account.
- The [Arduino IDE](https://www.arm.com/install-guides/arduino-pico/) with the RP2040 board support package installed on your computer.
- An [Arduino Nano RP2040 Connect board](https://store.arduino.cc/products/arduino-nano-rp2040-connect-with-headers).

### Summary
You’ll move from Edge AI and TinyML concepts to a voice-command prototype on an Arduino Nano RP2040 Connect. First, you’ll collect audio, train a classifier in Edge Impulse, and export its Arduino library. Then, you’ll add the library to a sketch, flash the board, and validate on-device inference by speaking commands that control an LED.

### Frequently asked questions

#### Which Edge Impulse project type should I choose for voice commands?
Create an audio classification project in Edge Impulse. Define classes for the words you plan to recognize, such as “on” and “off,” and apply preprocessing before training.

#### What do I need to download from Edge Impulse for the Arduino sketch?
Download the Arduino library generated from your Edge Impulse project. Add this library to your sketch so the trained model and processing steps are available on the device.

#### Do I need an internet connection on the board while the model runs?
No. Inference runs locally on the device, which is a core principle of Edge AI. You need connectivity only when using Edge Impulse Studio to build and export the model.

#### What result should I expect after flashing the sketch?
The board performs real-time audio inference and controls an LED. When it recognizes the trained words “on” and “off,” the LED changes state.

#### The LED does not change when I say the command—what should I check?
Verify that the correct Edge Impulse library is included, the build succeeds, and the uploaded firmware matches your project. Confirm the labels used in the sketch match the classes you trained, then rebuild and reflash.
