Application Overview
An overview of the series products and their features.
TODO: Insert purchase cards.
Product feature comparison
The M-series products have functional differences depending on the MCU. The table below compares their features.
| M1 | M2 | M3 | M4 | |
|---|---|---|---|---|
| Chip | Nordic nRF52840 | Espressif ESP32-C6 | Raspberry Pi RP2040 | WCH CH32V208 |
| Architecture | Single-core ARM Cortex-M4 | Dual-core RISC-V 32-bit | Dual-core Cortex-M0+ | Single-core RISC-V 32-bit |
| Freq. | 64 MHz | 160MHz & 20MHz (Low Power Core) | 133 MHz | 144MHz |
| RAM | 256 KB | 512 KB | — | 64 KB |
| Internal ROM/Flash | 1 MB | 320 KB | — | 480 KB |
| Flash on-board | 2 MB | 2 MB | — | 2 MB |
| WiFi | ❌ | 2.4GHz, 802.11b/g/n/ax | ❌ | ❌ |
| Bluetooth LE | 5.0 | 5.3 | ❌ | 5.3 |
| Ethernet | ❌ | ❌ | ❌ | 10M PHY |
| Programming IO | 18 GPIO | 18 GPIO | 18 GPIO | 18 GPIO |
| CAN | — | — | — | — |
| UART | 2 UART | 2 UART + 1 LP UART | ✔ | 3 UART |
| I2C | ✔ | 1 I2C + 1 LP I2C | ✔ | 2 I2C |
| SPI | ✔ | 2 SPI | ✔ | ✔ |
| ADC | ✔ | 7 channels | ✔ | ✔ |
| PWM | ✔ | 6 channels | ✔ | ✔ |
| User LED | 1 WS2812 RGB LED | 1 WS2812 RGB LED | 1 WS2812 RGB LED | 1 WS2812 RGB LED |
| Button | 1 Button | 1 Button | 1 Button | 1 Button |
| Low Power | Yes | Yes | ❌ | Yes |
| Board Dimensions | — | — | — | — |
Supported development environments
Supported development environments vary by MCU:
Arduino is a beginner-friendly environment for controlling hardware with simple code. Libraries cover many sensors and peripherals for fast prototyping.
MicroPython is a lightweight Python implementation for microcontrollers, ideal for quickly developing embedded projects. Python syntax makes it easy to write and debug code.
Rust focuses on safety and performance, preventing memory leaks and concurrency issues. It has a learning curve, but its memory model suits embedded development well.
Zig is a modern systems language emphasizing explicit memory management and direct hardware access. It is flexible and efficient for resource-constrained embedded systems.
TinyGo is the embedded flavor of Go that runs on microcontrollers and WebAssembly. Its concise syntax helps write portable embedded programs quickly.
| M1 | M2 | M3 | M4 | |
|---|---|---|---|---|
| Arduino | ✔ | ✔ | ✔ | ✔ |
| MicroPython | ✔ | ✔ | ✔ | ❌ |
| C | ✔ | ✔ | ✔ | ✔ |
| Rust | ✔ | ✔ | ✔ | ✔ |
| Zig | ✔ | ❌ | ✔ | ❌ |
| TinyGo | ✔ | ❌ | ✔ | ❌ |
RTOS support also differs.
Zephyr is a modular real-time operating system for resource-constrained embedded devices. It supports multiple architectures and peripherals and is suitable for cross-platform IoT development.
FreeRTOS is a lightweight real-time OS widely used in embedded systems. Its flexible scheduling is great for managing real-time tasks on small devices.
Embassy is a Rust-based embedded async framework that focuses on non-blocking asynchronous task management. Leveraging Rust’s memory safety, it helps build efficient and secure embedded systems.
RT-Thread is a real-time operating system with rich embedded development capabilities. Its flexible kernel suits IoT, industrial control, and similar scenarios.
RTIC (Real-Time Interrupt-driven Concurrency) is a Rust-based concurrency framework for real-time systems. Its interrupt-driven design ensures efficient operation for projects needing real-time response.
NuttX is a POSIX-compatible real-time operating system emphasizing small size and high portability. It supports extensive embedded features, suitable for a wide range of microcontrollers.
| M1 | M2 | M3 | M4 | |
|---|---|---|---|---|
| Zephyr | ✔ | ✔ | ✔ | ❌ |
| FreeRTOS | ✔ | ✔ | ✔ | ✔ |
| Embassy | ✔ | ✔ | ✔ | ✔ |
| RT-Thread | ✔ | ✔ | ✔ | ❌ |
| RTIC | ✔ | ✔ | ✔ | ❌ |
| NuttX | ✔ | ✔ | ✔ | ❌ |
Product features
- On-board 16Mbits (2MBytes) flash memory
- On-board WS2812 addressable RGB LED
- On-board tact switch
- USB-C power supply with a complete charging/discharging circuit; supports lithium batteries
- Compatible with the Pro Micro form factor and IO layout