The nanoESP32-C6 is a compact, high-performance IoT development board powered by the ESP32-C6 (single RISC-V core @160MHz). It supports WiFi 6 and 802.15.4 (Zigbee/Thread), includes an onboard addressable RGB LED (WS2812), and offers 8MB flash with USB-C programming — ideal for smart-home, low-power, and wireless prototypes.
https://github.com/espressif/esp-idf
https://docs.espressif.com/projects/esp-idf/en/latest/esp32c6/get-started/
https://www.espressif.com/zh-hans/products/socs/esp32-c6
- SoC: ESP32-C6 (RISC-V single core, 160 MHz)
- Wireless: WiFi 6 (802.11ax), 802.15.4 (Zigbee/Thread)
- Storage: 8 MB flash
- Onboard I/O: Multiple GPIOs, 1× WS2812 addressable RGB LED
- Interface: USB-C for power & programming
- Voltage: 3.3V logic
Project ideas
- Zigbee Gateway: Build a Zigbee-to-MQTT gateway (802.15.4 → WiFi) to integrate Zigbee sensors with Home Assistant or other cloud services.
- Smart RGB Controller: Use the onboard WS2812 to create an internet-controlled RGB status/light controller with web UI and OTA updates.
- Battery-Powered Sensor Node: Temperature, humidity or motion sensor with deep-sleep between reports to maximize battery life and send data over WiFi or Thread.
- Thread Border Router: Implement a low-power Thread device and bridge Thread networks to IP using WiFi for remote access.
- MQTT Edge Controller: Local automation hub that listens to MQTT topics and controls relays, LEDs, or other GPIO peripherals.
- Wireless Mesh Tester: Prototype a small 802.15.4 mesh (Zigbee-like) for sensor networks, logging topology and signal metrics to a dashboard.
- Classroom/RISC-V Learning Kit: Simple RISC-V experiments, blinking LEDs, and WiFi demos for learning embedded development and networking.
Perfect for makers, IoT developers, and smart-home integrators who need a small, modern board with WiFi 6 and 802.15.4 support. Ready to prototype — just plug in USB-C, flash your firmware, and start building.
Example Code for nanoESP32-C6
This example demonstrates how to use the onboard WS2812 NeoPixel and print system information via Serial Monitor. Comments are included to help beginners understand the code.
Example Code for nanoESP32-C6
This example demonstrates how to use the onboard WS2812 NeoPixel and print system information via Serial Monitor.
// by www.digilog.pk #include <Arduino.h> #include <Adafruit_NeoPixel.h> // ========== LED SETUP ========== #define LED_PIN 8 #define LED_COUNT 1 Adafruit_NeoPixel pixels(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); // ========== Print system info using Arduino ESP API ========== void printSystemInfo() { Serial.println(F("=== Chip info ===")); const char *model = ESP.getChipModel(); Serial.printf("Model: %s\n", model ? model : "Unknown"); Serial.printf("Cores: %u\n", (unsigned)ESP.getChipCores()); Serial.printf("Revision: %u\n", (unsigned)ESP.getChipRevision()); Serial.printf("CPU freq: %u MHz\n", (unsigned)ESP.getCpuFreqMHz()); uint32_t flashBytes = ESP.getFlashChipSize(); Serial.printf("Flash size: %u KB\n", (unsigned)(flashBytes / 1024UL)); Serial.printf("Flash speed: %u Hz\n", (unsigned)ESP.getFlashChipSpeed()); uint64_t efuseMac = ESP.getEfuseMac(); uint8_t mac[6]; for (int i = 0; i < 6; ++i) mac[i] = (efuseMac >> (8 * (5 - i))) & 0xFF; Serial.printf("MAC Address: %02X:%02X:%02X:%02X:%02X:%02X\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); Serial.println(F("=== Memory info ===")); Serial.printf("Total heap: %u bytes\n", (unsigned)ESP.getHeapSize()); Serial.printf("Free heap: %u bytes\n", (unsigned)ESP.getFreeHeap()); Serial.printf("Min free heap:%u bytes\n\n", (unsigned)ESP.getMinFreeHeap()); } void setup() { Serial.begin(115200); delay(800); pixels.begin(); pixels.clear(); pixels.show(); Serial.println(F("Starting up...")); printSystemInfo(); } void loop() { pixels.setPixelColor(0, pixels.Color(255, 0, 0)); pixels.show(); delay(500); pixels.setPixelColor(0, pixels.Color(0, 255, 0)); pixels.show(); delay(500); pixels.setPixelColor(0, pixels.Color(0, 0, 255)); pixels.show(); delay(500); pixels.clear(); pixels.show(); printSystemInfo(); delay(3500); }