M5StickC PLUS: Your Pocket-Sized ESP32 Powerhouse
A compact, feature-rich development board based on the ESP32, ideal for portable IoT projects and rapid prototyping.
The M5StickC PLUS is a highly integrated, low-cost development board from M5Stack, designed for portability and ease of use. It's built around the powerful Espressif ESP32-C3FN4 chip, a versatile microcontroller featuring Wi-Fi and Bluetooth connectivity, making it a prime choice for Internet of Things (IoT) applications. This board is a successor to the original M5StickC, offering enhanced features and performance in a similarly small form factor.
At its core, the ESP32-C3FN4 is a single-core RISC-V processor that operates at up to 160 MHz. It boasts 4MB of SPI Flash memory for program storage and configuration. The M5StickC PLUS integrates a vibrant 1.14-inch color LCD display (135x240 resolution), a programmable RGB LED, a buzzer, and an infrared transmitter, alongside a suite of sensors accessible via its expansion headers. This rich set of on-board peripherals allows for immediate experimentation without extensive external components.
Positioned within the ESP32 family, the M5StickC PLUS leverages the ESP32-C3's modern RISC-V architecture, offering a balance of performance, power efficiency, and cost. It's particularly suited for makers, students, and embedded engineers who need a compact yet capable platform for developing prototypes, wearable devices, remote sensors, or interactive gadgets. Its all-in-one design, including a rechargeable battery and USB-C for programming and power, makes it incredibly convenient for on-the-go development and deployment.
Released around 2020, the M5StickC PLUS continues M5Stack's philosophy of providing modular and user-friendly development tools. It builds upon the success of earlier M5Stick models by incorporating improvements like a larger battery capacity and a brighter screen, catering to projects requiring longer runtimes and better visibility. The board's robust ecosystem of Grove-compatible interfaces and M5Stack's own stackable modules further extends its capabilities, allowing for complex projects to be built with minimal wiring and effort.
Watch
Related video, embedded from YouTube.
Specifications
| Microcontroller / SoC | ESP32-C3FN4 |
| Architecture | RISC-V Single-Core |
| Clock speed | 160 MHz (typical) |
| Flash / Storage | 4MB SPI Flash |
| RAM / SRAM | 400 KB SRAM |
| Operating voltage | 3.3V |
| Digital I/O pins | 15 (accessible via headers) |
| Analog / ADC | 2x 12-bit SAR ADCs |
| PWM | Up to 6 channels |
| Connectivity | Wi-Fi 802.11 b/g/n, Bluetooth 5.0 LE |
| USB | USB Type-C (for programming, power, and serial communication) |
| Power input | 5V via USB Type-C, 3.7V LiPo Battery |
| Dimensions | 60mm x 25mm x 13.5mm |
Pinout & pin functions
| Pin | Function |
|---|---|
| G0 | GPIO 0 (Boot mode control) |
| G36 | GPIO 36 (ADC1_CH0) |
| G35 | GPIO 35 (ADC1_CH6) |
| G34 | GPIO 34 (ADC1_CH3) |
| G39 | GPIO 39 (ADC1_CH1) |
| G33 | GPIO 33 (ADC1_CH4) |
| G25 | GPIO 25 (DAC, PWM) |
| G26 | GPIO 26 (DAC, PWM) |
| G21 | GPIO 21 (I2C SDA) |
| G22 | GPIO 22 (I2C SCL) |
| G19 | GPIO 19 (I2S, PWM) |
| G23 | GPIO 23 (SPI MOSI) |
| G18 | GPIO 18 (SPI SCK) |
| G17 | GPIO 17 (SPI MISO) |
| G16 | GPIO 16 (SPI CS) |
| G4 | GPIO 4 (UART TX) |
| G5 | GPIO 5 (UART RX) |
| G15 | GPIO 15 (PWM) |
| G12 | GPIO 12 (PWM) |
| G13 | GPIO 13 (PWM) |
| G14 | GPIO 14 (PWM) |
| G27 | GPIO 27 (PWM) |
| G32 | GPIO 32 (PWM) |
| 5V | 5V Power Output |
| 3V3 | 3.3V Power Output |
| GND | Ground |
| BAT | Battery Input (Internal charging circuit) |
| IR | Infrared Transmitter |
| BUZZ | Buzzer Output |
| RGB | Programmable RGB LED (WS2812B) |
Wiring & circuit basics
The M5StickC PLUS operates at a logic level of 3.3V. Connecting 5V devices directly to its GPIO pins can cause permanent damage. When interfacing with 5V components, a level shifter is essential. Powering the M5StickC PLUS is typically done via the USB Type-C port, which can supply 5V. The board includes an onboard 3.7V LiPo battery, rechargeable through the USB port, and a power management IC to handle charging and battery monitoring.
For basic output, like lighting an LED, connect the anode (longer leg) of an LED to a chosen GPIO pin (e.g., G25) through a current-limiting resistor (typically 220-330 Ohms for standard LEDs). Connect the cathode (shorter leg) of the LED to a GND pin. This setup ensures the current is limited to protect both the LED and the M5StickC PLUS.
When connecting I2C devices, use the designated SDA (G21) and SCL (G22) pins. Ensure the external I2C device is also operating at 3.3V or use a level shifter if it's a 5V device. Many I2C sensors, like the BME280 or MPU6050, are commonly used with the M5StickC PLUS and can be directly wired to these pins, along with 3.3V and GND.
Programming & getting started
The M5StickC PLUS can be programmed using various toolchains. The Arduino IDE is a popular choice for its ease of use and extensive library support. After installing the ESP32 board support package in the Arduino IDE, you can select the M5StickC PLUS from the board manager. For MicroPython, you can flash a compatible firmware onto the device and then use a MicroPython IDE like Thonny to upload scripts. PlatformIO, integrated with VS Code, offers a more advanced development environment for C/C++ and other languages, supporting the ESP-IDF framework.
To upload your first program using the Arduino IDE: 1. Connect the M5StickC PLUS to your computer via USB. 2. Select the correct COM port in the Arduino IDE. 3. Choose 'M5StickC' as the board. 4. Write or paste your code (e.g., a simple blink sketch for the onboard RGB LED). 5. Click the 'Upload' button. The IDE will compile and flash the code to the M5StickC PLUS.