MakerLab
ESP32ESP32-C5

ESP32-C5: The RISC-V Powerhouse with Wi-Fi 6 and Bluetooth 5

Explore the capabilities of the ESP32-C5, Espressif's first RISC-V based MCU with Wi-Fi 6 and Bluetooth 5.2 support, designed for high-performance IoT applications.

ESP32-C5

The ESP32-C5 represents a significant evolution in Espressif's popular ESP32 family, marking their debut of a System-on-Chip (SoC) built around the RISC-V architecture. This shift from the Tensilica cores used in previous ESP32 generations brings a modern, open-source instruction set architecture to the forefront, promising enhanced performance and flexibility for embedded developers. It is designed to meet the growing demands for connectivity and processing power in the Internet of Things (IoT) landscape.

At the heart of the ESP32-C5 is a dual-core 32-bit RISC-V processor, capable of running at clock speeds up to 240 MHz. This powerful core is complemented by integrated Wi-Fi 6 (802.11ax) and Bluetooth 5.2 (LE) connectivity, enabling robust and high-throughput wireless communication. The inclusion of Wi-Fi 6 is particularly noteworthy, offering improved efficiency, reduced latency, and better performance in crowded wireless environments, making it ideal for next-generation smart home devices, industrial automation, and advanced sensor networks.

Positioned as a high-performance, cost-effective solution, the ESP32-C5 sits at the premium end of the ESP32 spectrum, targeting applications that require more processing power, faster wireless speeds, and advanced security features. Its RISC-V core offers a compelling alternative for developers looking to leverage the benefits of an open ISA, while the advanced wireless capabilities cater to the increasing need for reliable and fast data transfer in connected devices. This makes it suitable for makers, students, and embedded engineers working on sophisticated IoT projects.

The ESP32-C5's release around early 2024 signifies Espressif's commitment to innovation and adapting to industry trends. By embracing RISC-V and integrating cutting-edge wireless standards like Wi-Fi 6, they are providing a platform that is not only powerful but also future-proof. This chip is well-suited for projects that demand significant computational resources, seamless wireless integration, and the ability to handle complex data streams, such as real-time audio processing, advanced machine learning at the edge, or sophisticated control systems.

Watch

Related video, embedded from YouTube.

Specifications

Microcontroller / SoCESP32-C5 (RISC-V based)
ArchitectureDual-core 32-bit RISC-V
Clock speedUp to 240 MHz
Flash / StorageTypically 4MB to 16MB external SPI flash
RAM / SRAM128KB SRAM (internal), 4MB PSRAM (optional external)
Operating voltage3.3V
Digital I/O pins34 (configurable as GPIO)
Analog / ADC12-bit ADC (up to 16 channels)
PWMYes (up to 16 channels)
ConnectivityWi-Fi 6 (802.11ax) 2.4 GHz, Bluetooth 5.2 (LE)
USBUSB-to-UART bridge (e.g., CH340C or similar) for programming and serial communication
Power inputUSB (5V) or external 5V/3.3V supply
DimensionsTypically 25.5mm x 18mm (for common development boards)

Pinout & pin functions

PinFunction
3V33.3V Power Output
GNDGround
ENEnable Pin (High to enable)
GPIO0Boot Mode Select (Low during boot for download mode)
GPIO1 (TX0)UART0 TX, GPIO
GPIO2GPIO, ADC1_CH2
GPIO3 (RX0)UART0 RX, GPIO
GPIO4GPIO, ADC1_CH4
GPIO5GPIO, SPI/I2C/PWM
GPIO6SPI Host Clock (SCK)
GPIO7SPI Host Data Input (MISO)
GPIO8SPI Host Data Output (MOSI)
GPIO9SPI Host Chip Select (CS)
GPIO10GPIO, ADC1_CH10
GPIO11GPIO, ADC1_CH11
GPIO12GPIO, ADC1_CH12
GPIO13GPIO, ADC1_CH13
GPIO14GPIO, ADC1_CH14
GPIO15GPIO, ADC1_CH15
GPIO16GPIO, UART2 RX
GPIO17GPIO, UART2 TX
GPIO18GPIO, ADC2_CH0
GPIO19GPIO, ADC2_CH1
GPIO20GPIO, ADC2_CH2
GPIO21GPIO, ADC2_CH3
GPIO25GPIO, ADC1_CH18
GPIO26GPIO, ADC1_CH19
GPIO27GPIO, ADC1_CH20
GPIO31GPIO, ADC1_CH21
GPIO32GPIO, ADC1_CH22
GPIO33GPIO, ADC1_CH23
GPIO34GPIO, ADC1_CH24
GPIO35GPIO, ADC1_CH25
GPIO36GPIO, ADC1_CH26
GPIO37GPIO, ADC1_CH27
GPIO38GPIO, ADC1_CH28
GPIO39GPIO, ADC1_CH29
GPIO40GPIO, ADC2_CH4
GPIO41GPIO, ADC2_CH5
GPIO42GPIO, ADC2_CH6
GPIO43GPIO, ADC2_CH7
GPIO44GPIO, ADC2_CH8
GPIO45GPIO, ADC2_CH9
GPIO46GPIO, ADC2_CH10
GPIO47GPIO, ADC2_CH11
GPIO48GPIO
GPIO49GPIO
GPIO50GPIO
GPIO51GPIO
GPIO52GPIO
GPIO53GPIO

Wiring & circuit basics

The ESP32-C5 operates at a logic level of 3.3V. Always use 3.3V compatible components or level shifters when interfacing with 5V devices. Powering the board can be done via its USB port (which provides 5V) or through the VIN pin, which should also receive a 5V supply. The onboard voltage regulator will step this down to the 3.3V required by the ESP32-C5. Ensure your power supply can provide sufficient current, typically at least 500mA for stable operation, especially when Wi-Fi or Bluetooth is active.

Connecting a simple LED is a common first step. Connect the anode (longer leg) of an LED to a digital GPIO pin (e.g., GPIO2) through a current-limiting resistor (typically 220-330 ohms for a standard LED). Connect the cathode (shorter leg) of the LED to a GND pin. This ensures the LED receives power when the GPIO pin is HIGH and protects it from excessive current.

For more complex sensors, like an I2C device (e.g., a BME280 environmental sensor), you'll typically connect its VCC to the board's 3V3 pin, GND to a GND pin, SDA to a designated I2C SDA pin (often GPIO21 on many ESP32 boards), and SCL to the corresponding I2C SCL pin (often GPIO22). Some I2C devices may require pull-up resistors on the SDA and SCL lines, though many development boards include these onboard. Always consult the sensor's datasheet and the ESP32-C5 pinout diagram for specific connections.

Programming & getting started

The ESP32-C5 is well-supported by the Arduino IDE, MicroPython, and CircuitPython, offering a familiar development environment for many makers. For the Arduino IDE, you'll need to install the ESP32 board support package via the Board Manager. For MicroPython/CircuitPython, you'll need to flash the appropriate firmware to the ESP32-C5's flash memory. Once the environment is set up, you can connect the ESP32-C5 via USB, select the correct board and COM port, and upload your code using the standard 'Upload' button.

To upload your first program (a 'Blink' sketch for an onboard LED or an external LED), ensure the ESP32-C5 is connected to your computer via USB. In the Arduino IDE, select the correct board (e.g., 'ESP32C5 Dev Module'), choose the COM port, and click 'Upload'. You may need to press the BOOT button on the development board during the initial upload process if the auto-reset doesn't work. For MicroPython/CircuitPython, after flashing the firmware, you can use tools like Thonny IDE to connect to the device's REPL and run Python scripts directly or upload them.

Project ideas

Wi-Fi 6 Weather StationBuild a weather station that reports temperature, humidity, and pressure data over Wi-Fi 6 to a web server or cloud platform. Uses ADC pins for sensors and Wi-Fi for connectivity.
Bluetooth 5.2 LE Sensor NodeCreate a low-power sensor node that transmits environmental data using Bluetooth Low Energy. Ideal for battery-powered applications and mesh networking experiments.
RISC-V Edge AI InferenceDevelop a project that performs simple machine learning inference tasks (e.g., keyword spotting) directly on the ESP32-C5 using its RISC-V core and ample RAM. Explores embedded AI capabilities.
High-Throughput Data LoggerUtilize the Wi-Fi 6 capabilities to log large amounts of data from multiple sensors at high speeds. Focuses on efficient data transfer and storage.
Smart Home Hub with Wi-Fi 6Construct a central hub for smart home devices, leveraging Wi-Fi 6 for reliable communication with other IoT devices. Integrates various communication protocols.
Real-time Audio StreamingExperiment with streaming audio over Wi-Fi 6, potentially for intercom systems or simple audio monitoring applications. Tests the ESP32-C5's processing power and network stack.

Buying tips & gotchas

When purchasing an ESP32-C5 development board, look for reputable manufacturers like Espressif or well-known third-party board designers. Be aware of potential clones or boards with slightly different pinouts or component choices. Ensure the board includes a reliable USB-to-UART converter (like CP2102 or CH340) for easy programming. Accessories that are highly recommended include a set of jumper wires, a breadboard, a 3.3V compatible sensor (e.g., DHT22, BME280), and a small OLED display for output. Always double-check the voltage requirements of any external components to avoid damaging the ESP32-C5.