| ========================= |
| Seeed Studio XIAO ESP32C3 |
| ========================= |
| |
| The `Seeed Studio XIAO ESP32C3 <https://wiki.seeedstudio.com/xiao_esp32c3_getting_started/>`_ is a general purpose board supplied by |
| Seeed Studio and it is compatible with the Espressif ESP32C3 ecosystem, sharing the same MCU as ESP32-C3-DevKitC. |
| |
| .. figure:: xiao-esp32c3.jpg |
| :align: center |
| |
| Features |
| ======== |
| |
| * 32bit RISC-V single core processor that operates at up to 160 MHz |
| * 400KB of SRAM, and 4MB of on-board flash memory |
| * USB Type-C interface |
| * Wireless: Complete 2.4GHz Wi-Fi subsystem; |
| * BLE: Bluetooth 5.0, Bluetooth mesh |
| * 1x UART, 1x I2C, 1x SPI,11x GPIO(PWM), 4x ADC |
| * 1 RESET button, 1 BOOT button |
| |
| NSH Console |
| =========== |
| |
| The NuttShell (NSH) console is available over USB using the CDC/ACM |
| serial interface. To access the console, connect via a terminal emulator |
| at 115200 baud, 8 data bits, no parity, and 1 stop bit (115200-8N1). |
| |
| |
| Buttons |
| ======= |
| |
| The RESET and BOOT buttons can be used to enter "Bootloader" mode by |
| press and hold the BOOT key while powering up and then press the RESET key once. |
| |
| Pin Mapping |
| =========== |
| Pads numbered anticlockwise from USB connector. |
| |
| ===== ========== ========== |
| Pad Signal Notes |
| ===== ========== ========== |
| 0 GPIO02 D0/A0 |
| 1 GPIO03 D1/A1 |
| 2 GPIO04 D2/A2 |
| 3 GPIO05 D3/A3 |
| 4 GPIO06 D4/SDA |
| 5 GPIO07 D5/SCL |
| 6 GPIO21 D6/Default TX for UART0 serial console |
| 7 GPIO20 D7/Default RX for UART0 serial console |
| 8 GPIO08 D8/SCK |
| 9 GPIO09 D9/MISO |
| 10 GPIO10 D10/MOSI |
| 11 3V3 Power output to peripherals |
| 12 Ground |
| 13 VIN +5V Supply to board |
| ===== ========== ========== |
| |
| Power Supply |
| ============ |
| The working voltage of the MCU is 3.3V. Voltage input connected to |
| general I/O pins may cause chip damage if it’s higher than 3.3V. |
| |
| Installation |
| ============ |
| |
| 1. Configure and build NuttX: |
| |
| .. code-block:: console |
| |
| $ git clone https://github.com/apache/nuttx.git nuttx |
| $ git clone https://github.com/apache/nuttx-apps.git apps |
| $ cd nuttx |
| $ make distclean |
| $ ./tools/configure.sh xiao-esp32c3:usbnsh |
| $ make V=1 |
| |
| 2. Connect the Seeed Studio XIAO ESP32C3, and enter "Bootloader" mode, |
| then, flash the ``nuttx.hex`` file using ``esptool``: |
| (https://docs.espressif.com/projects/esptool/en/latest/esp32/) |
| |
| Example command: |
| |
| .. code-block:: bash |
| |
| make flash ESPTOOL_PORT=/dev/ttyACM0 ESPTOOL_BINDIR=./ |
| |
| |
| Configurations |
| ============== |
| |
| nsh |
| --- |
| |
| Basic NuttShell configuration using serial (console enabled in UART0, exposed via |
| pins D6/TX and D7/RX, at 115200 bps). |
| |
| usbnsh |
| ------ |
| Basic NuttShell configuration using CDC/ACM serial (console enabled in USB Port, |
| at 115200 bps). |
| |
| .. code-block:: console |
| |
| NuttShell (NSH) NuttX-12.8.0 |
| nsh> uname -a |
| NuttX 12.8.0 2c845426da-dirty Apr 6 2025 22:53:57 xtensa esp32c3-xiao |
| |
| |
| gpio |
| ---- |
| This configuration enabled NuttShell via USB and enabled gpio example. |
| |
| Testing gpios: |
| |
| ======== ====== ========== |
| PIN/GPIO Mode Device |
| ======== ====== ========== |
| D0/GPIO2 Output /dev/gpio0 |
| D1/GPIO3 Input /dev/gpio1 |
| ======== ====== ========== |
| |
| .. code-block:: console |
| |
| nsh> gpio -o 1 /dev/gpio0 |
| Driver: /dev/gpio0 |
| Output pin: Value=1 |
| Writing: Value=1 |
| Verify: Value=1 |
| nsh> |
| nsh> gpio -o 0 /dev/gpio0 |
| Driver: /dev/gpio0 |
| Output pin: Value=1 |
| Writing: Value=0 |
| Verify: Value=0 |
| nsh> gpio -w 1 /dev/gpio1 |
| Driver: /dev/gpio1 |
| Interrupt pin: Value=0 |
| Verify: Value=1 |
| |
| wifi |
| ---- |
| This configuration enables a wlan network interface that can be configured and initialized |
| using below commands:: |
| |
| nsh> ifup wlan0 |
| nsh> wapi psk wlan0 mypasswd 3 |
| nsh> wapi essid wlan0 myssid 1 |
| nsh> renew wlan0 |
| |
| In this case a connection to AP with SSID ``myssid`` is done, using ``mypasswd`` as |
| password. IP address is obtained via DHCP using ``renew`` command. You can check |
| the result by running ``ifconfig`` afterwards. |
| |
| .. code-block:: console |
| |
| NuttShell (NSH) NuttX-12.8.0 |
| nsh> uname -a |
| NuttX 12.9.0 6b4bc72626-dirty Apr 26 2025 17:40:37 risc-v esp32c3-xiao |
| nsh> ? |
| help usage: help [-v] [<cmd>] |
| |
| . cp expr pkill pwd uname |
| [ cmp false ls rm umount |
| ? dirname fdinfo mkdir rmdir unset |
| alias date free mkrd set uptime |
| unalias df help mount sleep usleep |
| arp dmesg hexdump mv source watch |
| basename echo ifconfig nslookup test xd |
| break env ifdown pidof time wait |
| cat exec ifup printf true |
| cd exit kill ps truncate |
| |
| Builtin Apps: |
| dd getprime ostest rand sh |
| dumpstack nsh ping renew wapi |
| nsh> wapi psk wlan0 nuttxpwd 3 |
| nsh> wapi essid wlan0 nuttxnw 1 |
| nsh> renew wlan0 |
| nsh> ifconfig |
| wlan0 Link encap:Ethernet HWaddr a0:85:e3:0e:4a:30 at RUNNING mtu 576 |
| inet addr:192.168.59.144 DRaddr:192.168.59.134 Mask:255.255.255.0 |
| |
| nsh> ping 8.8.8.8 |
| PING 8.8.8.8 56 bytes of data |
| 56 bytes from 8.8.8.8: icmp_seq=0 time=50.0 ms |
| 56 bytes from 8.8.8.8: icmp_seq=1 time=40.0 ms |
| 56 bytes from 8.8.8.8: icmp_seq=2 time=30.0 ms |
| 56 bytes from 8.8.8.8: icmp_seq=3 time=60.0 ms |
| 56 bytes from 8.8.8.8: icmp_seq=4 time=100.0 ms |
| 56 bytes from 8.8.8.8: icmp_seq=5 time=100.0 ms |
| 56 bytes from 8.8.8.8: icmp_seq=6 time=140.0 ms |
| 56 bytes from 8.8.8.8: icmp_seq=7 time=40.0 ms |
| 56 bytes from 8.8.8.8: icmp_seq=8 time=50.0 ms |
| 56 bytes from 8.8.8.8: icmp_seq=9 time=30.0 ms |
| 10 packets transmitted, 10 received, 0% packet loss, time 10100 ms |
| rtt min/avg/max/mdev = 30.000/64.000/140.000/34.985 ms |
| nsh> nslookup google.com |
| Host: google.com Addr: 142.251.128.238 |
| nsh> nslookup nuttx.apache.org |
| Host: nuttx.apache.org Addr: 151.101.2.132 |
| nsh> |
| |
| ble |
| --- |
| This configuration is used to enable the Bluetooth Low Energy (BLE) of |
| ESP32-C3 chip. |
| |
| .. code-block:: console |
| |
| NuttShell (NSH) NuttX-12.8.0 |
| nsh> bt bnep0 scan start |
| nsh> bt bnep0 scan stop |
| nsh> bt bnep0 scan get |
| Scan result: |
| 1. addr: a0:46:5a:22:ea:c4 type: 0 |
| rssi: -92 |
| response type: 0 |
| advertiser data: 02 01 02 19 16 f1 fc 04 f9 6e e8 58 e6 33 58 26 c5 4b bd 91 1c e0 4f b2 d9 51 455 |
| 2. addr: a0:46:5a:22:ea:c4 type: 0 |
| rssi: -91 |
| response type: 0 |
| advertiser data: 02 01 02 19 16 f1 fc 04 f9 6e e8 58 e6 33 58 26 c5 4b bd 91 1c e0 4f b2 d9 51 455 |
| 3. addr: a0:46:5a:22:ea:c4 type: 0 |
| rssi: -100 |
| response type: 0 |
| advertiser data: 02 01 02 19 16 f1 fc 04 f9 6e e8 58 e6 33 58 26 c5 4b bd 91 1c e0 4f b2 d9 51 455 |
| 4. addr: a0:46:5a:22:ea:c4 type: 0 |
| rssi: -100 |
| response type: 4 |
| advertiser data: |
| 5. addr: a0:46:5a:22:ea:c4 type: 0 |
| rssi: -97 |
| response type: 0 |
| advertiser data: 02 01 02 19 16 f1 fc 04 f9 6e e8 58 e6 33 58 26 |
| |
| |