Getting started with Montic W02 - ESP32-C6
The Montic W02 is a development board compatible with the Pro Micro form factor. It features Espressif’s ESP32-C6 Wi-Fi/Bluetooth processor, integrating a single-core high-performance RISC-V 32-bit processor with support for up to 160MHz, as well as an additional low-power processor with up to 20MHz support. It also supports various wireless functions, including 2.4GHz Wi-Fi6 (802.11ax), Bluetooth® 5(LE), Zigbee, and Thread(802.15.4). This makes it an ideal first development board for exploring wireless applications.
The Montic W02 also comes with 64Mbits (8MBytes) of onboard Flash storage, a WS2812 addressable RGB LED supporting 256 levels of brightness and 16 million colors, and two tactile switches for Reset and BOOT functions. Our goal is to keep the board as compact as possible while providing sufficient interaction capabilities.
In terms of power, the board features a USB-C interface, allowing you to use your existing USB-C power cables without wasting resources. Additionally, the Montic W02 retains battery power capabilities and includes onboard charging and discharging circuits.
Regarding IO, apart from adding two power IOs, the Montic W02 maintains IO compatibility with the Pro Micro. Thanks to the ESP32-C6’s IO multiplexing capabilities, you can directly configure IO capabilities through software, supporting protocols such as ADC, GPIO, UART, SPI, I2C, PWM, 1-Wire, and more.

硬件概述
Montic W02 采用了 QFN40 封装的 ESP32-C6 芯片,而不是直接采用 WROOM1 这样的模组。主要的原因是,我们希望足够的小巧,可以兼容 Pro Micro 的板型。同时,在这个小板子里面我们也可以选择不同的 Flash 存储。
总得来说,Montic W02 除了 ESP32-C6 提供的芯片能力之外,我们还添加了一颗 8MBytes 的 Flash,一颗 WS2812 可寻址的 RGB LED。考虑到 USB-C 应用已经非常广泛,也为了环境考虑,在供电和有线通信我们直接使用了 USB-C 接口。如果你使用锂电池,W02 也板载了电源充放电电路,因此 USB 也能作为充电来源。
引脚分配图
在开始使用产品之前,先了解引脚信息。Montic 沿用 Pro Micro 板型,保持兼容性的同时做了一点修改。一共有 26 引脚。在下图中可以看到详细引脚分配图。
TODO:
- 说清楚使用了哪部分引脚,以及引脚复用情况?
- 一份总的 Pinout 图,需要说明引脚复用的情况。类似这里:
微控制器(MCU)
Montic W02 采用了 Espressif ESP32-C6 QFN40(没有封装集成 Flash),其有两个 RISC-V 32 位处理器,都是 RV32IMAC ISA (指令集架构)。两个 RISC-V 32 位处理器在 ESP32-C6 中的特点如下。
| 项目 | HP CPU | LP CPU |
|---|---|---|
| 架构 | 四级流水线 | 二级流水线 |
| 主频 | 最高 160 MHz | 最高 20 MHz |
| 指令集 | RV32IMAC | RV32IMAC |
| 中断支持 | 支持 28 个向量中断,共 15 个优先级 | 支持中断 |
| 硬件断点/观察点 | 支持 4 个硬件断点/观察点 | 支持 2 个硬件断点/观察点 |
| 调试接口 | JTAG,支持 RISC-V 调试规范 v0.13 和 Trace v1.0 | JTAG,支持 RISC-V 调试规范 v0.13 |
| 乘除法器支持 | 支持 32 位乘法器和除法器 | 支持 32 位乘法器和除法器 |
| 片上存储 | 512 KB 的 SRAM,用于数据和指令存储 | 16 KB 的 SRAM,与 HP CPU 共用,Deep-slepp 下可以保存数据 |
| 其他特性 | 16 个 PMP/PMA 区域,支持硬件断点调试 | 在 Deep-sleep 模式下保持工作,管理低功耗任务 |
| 适用场景 | 处理复杂任务、高性能应用 | 协助 HP CPU 或管理低功耗模式下的操作 |
无线特性
ESP32-C6 集成了 Wi-Fi,低功耗蓝牙和 802.15.4。而且 Wi-Fi 与蓝牙共存,共用同一个天线。
ESP32-C6 完全遵循 IEEE 802.11 b/g/n/ax Wi-Fi MAC 协议栈,支持分布式控制功能 (DCF) 下的基本服务集 (BSS) STA 和 SoftAP 操作。同时支持基础结构型网络 (Infrastructure BSS) Station 模式、SoftAP 模式、Station + SoftAP 模式和混杂模式。支持通过最小化主机交互来优化有效工作时长,以实现功耗管理。
- 支持 IEEE 802.11b/g/n/ax
- 2.4 GHz 频段,支持 1T1R
- 802.11ax
- 802.11b/g/n
ESP32-C6 系列芯片包含了一个低功耗蓝牙 (Bluetooth Low Energy) 子系统,集成了硬件链路层控制器、射频/调制解调器模块和功能齐全的软件协议栈。低功耗蓝牙子系统支持 Bluetooth 5.3 和 Bluetooth mesh 。
- 通过 Bluetooth 5.3 认证
- Bluetooth mesh
- 高功率模式 (20 dBm)
- 速率支持 125 Kbps、500 Kbps、1 Mbps、2 Mbps
- 广播扩展 (Advertising Extensions)
- 多广播 (Multiple Advertisement Sets)
- 信道选择 (Channel Selection Algorithm #2)
- 功率控制 (LE Power Control)
ESP32-C6 拥有一个标准 802.15.4 子系统,集成了 PHY 和 MAC 层,可支持 Thread 、Zigbee 、Matter 、HomeKit 、MQTT 等多种协议。
- 2.4 GHz 频段 O-QPSK PHY
- 250 Kbps 数据率
- 支持 RSSI 和 LQI
低功耗模式

低功耗管理中各个模式的说明如下表。
| 功耗模式 | 描述 | CPU 状态 | 射频 | 内存状态 | 唤醒方式 |
|---|---|---|---|---|---|
| Active 模式 | CPU 和射频模块工作,芯片可以接收、发射和侦听信号。 | 运行 | 打开 | 全部内存可用 | 无需唤醒 |
| Modem-sleep 模式 | CPU 可运行,时钟频率可配置,射频模块关闭,但保持无线连接。 | 运行 | 关闭 | 全部内存可用 | 无需唤醒 |
| Light-sleep 模式 | CPU 暂停,大部分外设关闭,仅保留 SRAM 和无线电源管理模块,保持无线连接,降低功耗。 | 暂停 | 关闭 | SRAM 保留,外设大部分关闭 | RTC 定时器、外部中断或无线唤醒 |
| Deep-sleep 模式 | CPU、SRAM 和大部分外设掉电,LP Memory 和 LP 外设工作,LP CPU 可以工作,保持最低功耗。 | 关闭 | 关闭 | LP Memory 工作,SRAM 关闭 | RTC 定时器、外部中断或低功耗外设 |
加密安全组件
另外,ESP32-C6 也支持丰富的加密安全特性。
| 加密模块 | 支持算法和特性 | 工作模式 | 其他功能和特点 |
|---|---|---|---|
| AES 加速器 | AES-128/AES-256 加解密运算 | Typical AES、DMA-AES | 支持 ECB、CBC、OFB、CTR、CFB8、CFB128 等块加密模式,支持中断 |
| ECC 加速器 | ECC 椭圆曲线密码学(支持 P-192 和 P-256 曲线) | 支持六种工作模式 | 提供 ECC 基础运算和衍生算法加速,支持中断控制 |
| HMAC 加速器 | HMAC-SHA-256 | - | 密钥存储在 eFuse 中,不可被外部访问,支持生成数字签名的密钥 |
| RSA 加速器 | RSA 非对称加密算法 | - | 支持大数模幂运算、模乘运算,运算子长度最大可达 3072 位,支持中断 |
| SHA 加速器 | SHA-1、SHA-224、SHA-256 运算 | Typical SHA、DMA-SHA | 提供插入功能(仅 Typical SHA),支持中断(仅 DMA-SHA) |
| 数字签名 (DS) | 基于 RSA 的数字签名,密钥长度最大 3072 位 | - | 支持硬件加速,数字签名过程中的密钥对用户不可见 |
| XTS-AES 加速器 | XTS-AES(符合 IEEE Std 1619-2007)标准,用于片外存储器加密与解密 | 手动加密、自动解密 | 提供片外存储器代码和数据加密保障,支持抗 DPA 攻击功能,解密过程无需软件参与 |
| 随机数发生器 (RNG) | 真随机数生成,用于加密操作基础 | - | 基于物理过程生成真随机数,确保随机数分布的均匀性 |
如果要获取更详细的信息,可以查看 Espressif 官方的数据手册。
ESP32-C6 数据手册
板载 Flash
Montic W02 板载了 8MBytes 的 Flash,扩展了 ROM 空间。通过 ESP32-C6 的串行外设接口 (SPI) 存储器 (SPI Memory) 模式,可以让数据传输长度以字节为单位,最高支持四线 STR 读写操作。时钟频率可配置,支持的最高时钟频率为 120 MHz。
如果要获取更详细的信息,可以查看 Flash 器件的官方数据手册。
W25Q64JVXGIQ 数据手册
电源
Montic W02 有多种供电选择,直接 USB-C 接口电源输入,或者锂电池供电。得益于 W02 板载的充放电电路,你可以通过 USB-C 直接给锂电池充电。
支持的供电接口,以及最大电压和电流。
TODO: 需要确认电流
| USB-C | VBUS 引脚 | 锂电池 | |
|---|---|---|---|
| 最大电压(V) | 5 | 5 | 3.3 |
| 最大电流(mA) | 500 | ? | ? |
USB-C
USB-C 接口可以作为电源输入,额外的,它也是 ESP32-C6 串行转换器接口,用于主串行接口(URAT)用于和上位机通信,和烧录程序。USB-C 5V 输入后通过稳压器调节至 3.3V,支持最大电流为 500mA@3.3V。
TODO: 需要确认电流
电源引脚
在 USB-C 边上的引脚可用于连接锂电池,用于电池供电的应用。它还有一个 TP4050 电池充电 IC,为附加的电池充电。充电速率设置为214mA@3.3V。TP4050 从 VBUS 接收电源,因此只有在通过 USB 或 VBUS 引脚提供 5V 电源时才供电。如果直接对 VBUS 引脚供电,请确保其电压不超过 5.5V。
TODO: 需要确认充电情况,以及 VBUS 的供电情况。
如果要获取更详细的信息,可以查看 TP4050 的官方数据手册。
TP4050 数据手册
引脚详情
W02 将 ESP32-C6 的 18 个 GPIO 引脚引到板子两侧的 2.54mm 间距的排针上。这包括所有 4 个支持 12 位 ADC 的引脚、一个 UART、以及 12 个 GPIO 引脚,可配置多种数字信号接口,包括 I2C,SPI,SDIO,IR,PWM,TWAI®。
另外,W02 在板子背面还将 USB-C 作为焊盘引出。
TODO 需要类似下图的图片。

LED
Montic W02 板载了一颗 WS2812C-2020 可寻址全彩 RGB LED 灯,采用 2020 的超小封装,它通过 ESP32-C6 的 GPIO15 控制。
WS2812C 每个像素点的三基色颜色可实现 256 级亮度显示,完成 16777216 种颜色的全真色彩显示,用户可完全编程控制,只需要一条数据总线即可控制。
TODO 插入高亮图片。
如果要获取更详细的信息,可以查看 WS2812C 的官方数据手册。
WS2812C 数据手册
按钮
Montic W02 还板载了两个非常小巧的轻触开关,分别支持 Reset 和 BOOT 操作,分别与 ESP32-C6 的 Enable Pin 和 GPIO9 连接。
TODO 插入高亮图片。
尺寸规格
PCB 尺寸图。33mm x 18mm
需要一张尺寸图,包括 IO 间距等等,类似下图。

软件开发环境设置
ESP-IDF SDK
ESP-IDF 是 Espressif IoT Development Framework 的缩写,是由 Espressif Systems 提供的一个开源开发框架,专为使用 ESP32、ESP8266 等系列芯片进行物联网(IoT)应用开发而设计。是 Montic W02 上手开发的好选择之一。
准备工作
- 硬件
- Montic W02 开发板
- 一条支持数据通信 USB-C 数据线
- 支持 Linux,Windows 或者 macOS 的电脑
- 软件
- ESP-IDF 框架使用了 CMake 和 Ninja 编译构建工具。

安装
首先,我们需要安装和设置 ESP-IDF SDK。安装基本上有两种方式:IDE 插件安装 和 手动安装。建议使用 VSCode 开发和测试应用,因此通过 VSCode 插件直接安装 ESP-IDF 显然是一个好方式。
详细的安装步骤可以参考官方撰写的 VSCode 插件安装 ESP-IDF 指南。或者也可以直接参考下面的简化步骤。
-
下载并安装 Visual Studio Code
-
在 VSCode 搜索安装 ESP-IDF Extension

-
配置 ESP-IDF
在 Visual Studio Code 中,选择菜单“
视图”和“命令面板”,或者Ctrl-Shift-P快捷键,然后输入configure esp-idf extension。之后,选择 ESP-IDF: Configure ESP-IDF Extension 选项。您还可以在设置向导中选择保存设置的位置。

选择
Express快速安装配置,然后选择最新的 release 分支,点击install即会自动安装。
-
安装完成后,可以查看现基本使用以了解如何使用 SDK 配置编辑器,构建、烧录和监控您的 Espressif 设备。
-
针对 Linux 用户,需要先安装一些基础软件包 要使用 ESP-IDF 进行编译,您需要获取以下软件包。运行的命令取决于您使用的 Linux 发行版。
- Ubuntu and Debian: Ubuntu 和 Debian:
Terminal window sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0- CentOS 7 & 8: CentOS 7 和 8:
Terminal window sudo yum -y update && sudo yum install git wget flex bison gperf python3 cmake ninja-build ccache dfu-util libusbx -
下载并安装 Visual Studio Code
-
在 VSCode 搜索安装 ESP-IDF Extension

-
配置 ESP-IDF
在 Visual Studio Code 中,选择菜单“
视图”和“命令面板”,或者Ctrl-Shift-P快捷键,然后输入configure esp-idf extension。之后,选择 ESP-IDF: Configure ESP-IDF Extension 选项。您还可以在设置向导中选择保存设置的位置。

选择
Express快速安装配置,然后选择最新的 release 分支,点击install即会自动安装。
-
安装完成后,可以查看基本使用以了解如何使用 SDK 配置编辑器,构建、烧录和监控您的 Espressif 设备。
-
针对 macOS,ESP-IDF 使用 macOS 上默认安装的 Python 版本,还需要安装 CMake 和 Ninja
- 使用 Homebrew:
Terminal window brew install cmake ninja dfu-util ccache- 或者使用 MacPorts:
Terminal window sudo port install cmake ninja dfu-util ccache针对 Apple Silicon 用户,如果有错误提示,请检查这里。
-
下载并安装 Visual Studio Code
-
在 VSCode 搜索安装 ESP-IDF Extension

-
配置 ESP-IDF
在 Visual Studio Code 中,选择菜单“
视图”和“命令面板”,或者Ctrl-Shift-P快捷键,然后输入configure esp-idf extension。之后,选择 ESP-IDF: Configure ESP-IDF Extension 选项。您还可以在设置向导中选择保存设置的位置。

选择
Express快速安装配置,然后选择最新的 release 分支,点击install即会自动安装。
-
安装完成后,可以查看现基本使用以了解如何使用 SDK 配置编辑器,构建、烧录和监控您的 Espressif 设备。
Blink Demo
软件开发环境设置完成之后,让我们新建一个程序,让 RGB LED 闪烁起来!
-
新建项目 点击左侧
ESP-IDF:Explorer,然后点击New Project Wizard,按下图选择 ESP32-C6 芯片,最后点击Choose Template。
选择
Blink模版。最后点击Create project using template blink。
新建的项目结构类似下面所示,我们暂时不用关心其他文件信息,接下来我们将会修改
main/blink_example_main.c文件。- CMakeLists.txt
- README.md
- dependencies.lock
Directorymain
- CMakeLists.txt
- Kconfig.projbuild
- blink_example_main.c
- idf_component.yml
Directorymanaged_components/
Directoryespressif__led_strip/
- …
- pytest_blink.py
- sdkconfig
- sdkconfig.defaults
- sdkconfig.defaults.esp32
- sdkconfig.defaults.esp32c3
- sdkconfig.defaults.esp32c5
- sdkconfig.defaults.esp32c6
- sdkconfig.defaults.esp32h2
- sdkconfig.defaults.esp32s2
- sdkconfig.defaults.esp32s3
- sdkconfig.old
-
修改 LED 的 IO 口
如之前在 LED 部分所描述,Montic W02 的 ESP32-C6 是通过 GPIO15 连接 LED。因此只需求在代码中修改正确的 IO 口。
blink_example_main.c .../* Use project configuration menu (idf.py menuconfig) to choose the GPIO to blink,or you can edit the following line and set a number here.*/#define BLINK_GPIO CONFIG_BLINK_GPIO#define BLINK_GPIO CONFIG_BLINK_GPIO#define BLINK_GPIO 15... -
编译
在代码修改之后,接下来就可以编译、烧录程序到 Montic W02 了。在编译、烧录之前,我们需要做一些基本的设置。
- 选择正确的串口,在 Windows 中一般是
COMx的名称,在 Linux/macOS 中应该是/dev/ttyUSBxx的名称 - 选择正确的芯片,Montic W02 使用了 ESP32-C6
- 选择 UART 烧录方式,在本文 USB-C 部分,已经介绍过 Montic W02 的 USB-C 具有串口转换器的功能
通过 VSCode 可以直接设置。如下图红框所示,从左到右的功能分别是:
- 选择串口,在图中是
COM3 - 选择编译目标芯片,选择
esp32c6 - 项目切换
- SDK 配置编辑器,也就是 menuconfig
- 编译文件清理,类似 make clean
- 编译项目
- 选择烧录方式,选择
UART - 烧录固件到芯片

设置完成之后,只需要点击编译按钮(扳手图标),等待编译完成,会输出下图的信息。

- 选择正确的串口,在 Windows 中一般是
-
烧录
点击固件烧录按钮(闪电图标),等待烧录完成。

如果烧录遇到问题,可以尝试修改烧录选项。点击 SDK 配置编辑器,检查如下设置。
- Flash SPI mode 为 DIO
- Flash SPI Speed 选择 80MHz
- Flash Size 选择 8MB
- Detect flash size when flashing bootloader 选项打开

-
Blink Blink
最后的效果如下。

Arduino
得益于 Arduino-ESP32 项目,Arduino IDE 现在已经支持 ESP32-C6 板子,现在我们可以用 Arduino 来使用 Montic W02。
设置环境
-
下载并安装 Arduino IDE
-
安装 ESP32 Core
打开 Arduino IDE,进入
File->Preferences。在Additional Boards Manager URLs一栏中添加以下链接:Terminal window https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json点击 “OK” 保存。

-
安装 ESP32 的开发板
从 Arduino IDE 版本 1.6.4 开始,Arduino 允许使用板管理器安装第三方平台包。打开 Arduino IDE 后进入
Tools->Board->Boards Manager。搜索 esp32,然后点击安装来自 Espressif 的 esp32 开发板。

-
添加 Montic W02 到 Arduino
- 进入如下目录:
-
Windows:
%USERPROFILE%\AppData\Local\Arduino15\packages\esp32\hardware\esp32\VERSION -
Linux/macOS:
$HOME/.Arduino15\packages\esp32\hardware\esp32\VERSION
- 修改
boards.txt文件,补充 Montic W02 编译、烧录的信息。
添加到 boards.txt 的 Montic W02 内容
boards.txt montic_w02.name=Montic W02montic_w02.bootloader.tool=esptool_pymontic_w02.bootloader.tool.default=esptool_pymontic_w02.upload.tool=esptool_pymontic_w02.upload.tool.default=esptool_pymontic_w02.upload.tool.network=esp_otamontic_w02.upload.maximum_size=1310720montic_w02.upload.maximum_data_size=327680montic_w02.upload.flags=montic_w02.upload.extra_flags=montic_w02.upload.use_1200bps_touch=falsemontic_w02.upload.wait_for_upload_port=falsemontic_w02.serial.disableDTR=falsemontic_w02.serial.disableRTS=falsemontic_w02.build.tarch=riscv32montic_w02.build.target=espmontic_w02.build.mcu=esp32c6montic_w02.build.core=esp32montic_w02.build.variant=montic_w02montic_w02.build.board=montic_w02montic_w02.build.bootloader_addr=0x0montic_w02.build.cdc_on_boot=0montic_w02.build.f_cpu=160000000Lmontic_w02.build.flash_size=2MBmontic_w02.build.flash_freq=40mmontic_w02.build.flash_mode=diomontic_w02.build.boot=qiomontic_w02.build.partitions=defaultmontic_w02.build.defines=## IDE 2.0 Seems to not update the valuemontic_w02.menu.JTAGAdapter.default=Disabledmontic_w02.menu.JTAGAdapter.default.build.copy_jtag_files=0montic_w02.menu.JTAGAdapter.builtin=Integrated USB JTAGmontic_w02.menu.JTAGAdapter.builtin.build.openocdscript=esp32c6-builtin.cfgmontic_w02.menu.JTAGAdapter.builtin.build.copy_jtag_files=1montic_w02.menu.JTAGAdapter.external=FTDI Adaptermontic_w02.menu.JTAGAdapter.external.build.openocdscript=esp32c6-ftdi.cfgmontic_w02.menu.JTAGAdapter.external.build.copy_jtag_files=1montic_w02.menu.JTAGAdapter.bridge=ESP USB Bridgemontic_w02.menu.JTAGAdapter.bridge.build.openocdscript=esp32c6-bridge.cfgmontic_w02.menu.JTAGAdapter.bridge.build.copy_jtag_files=1montic_w02.menu.CDCOnBoot.default=Enabledmontic_w02.menu.CDCOnBoot.default.build.cdc_on_boot=1montic_w02.menu.CDCOnBoot.cdc=Disabledmontic_w02.menu.CDCOnBoot.cdc.build.cdc_on_boot=0montic_w02.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)montic_w02.menu.PartitionScheme.default.build.partitions=defaultmontic_w02.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS)montic_w02.menu.PartitionScheme.defaultffat.build.partitions=default_ffatmontic_w02.menu.PartitionScheme.default_8MB=8M with spiffs (3MB APP/1.5MB SPIFFS)montic_w02.menu.PartitionScheme.default_8MB.build.partitions=default_8MBmontic_w02.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS)montic_w02.menu.PartitionScheme.minimal.build.partitions=minimalmontic_w02.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS)montic_w02.menu.PartitionScheme.no_ota.build.partitions=no_otamontic_w02.menu.PartitionScheme.no_ota.upload.maximum_size=2097152montic_w02.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS)montic_w02.menu.PartitionScheme.noota_3g.build.partitions=noota_3gmontic_w02.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576montic_w02.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS)montic_w02.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffatmontic_w02.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152montic_w02.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS)montic_w02.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffatmontic_w02.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576montic_w02.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS)montic_w02.menu.PartitionScheme.huge_app.build.partitions=huge_appmontic_w02.menu.PartitionScheme.huge_app.upload.maximum_size=3145728montic_w02.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)montic_w02.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffsmontic_w02.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080montic_w02.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS)montic_w02.menu.PartitionScheme.fatflash.build.partitions=ffatmontic_w02.menu.PartitionScheme.fatflash.upload.maximum_size=2097152montic_w02.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS)montic_w02.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MBmontic_w02.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728montic_w02.menu.PartitionScheme.rainmaker=RainMaker 4MBmontic_w02.menu.PartitionScheme.rainmaker.build.partitions=rainmakermontic_w02.menu.PartitionScheme.rainmaker.upload.maximum_size=1966080montic_w02.menu.PartitionScheme.rainmaker_4MB=RainMaker 4MB No OTAmontic_w02.menu.PartitionScheme.rainmaker_4MB.build.partitions=rainmaker_4MB_no_otamontic_w02.menu.PartitionScheme.rainmaker_4MB.upload.maximum_size=4038656montic_w02.menu.PartitionScheme.rainmaker_8MB=RainMaker 8MBmontic_w02.menu.PartitionScheme.rainmaker_8MB.build.partitions=rainmaker_8MBmontic_w02.menu.PartitionScheme.rainmaker_8MB.upload.maximum_size=4116480montic_w02.menu.PartitionScheme.zigbee=Zigbee 4MB with spiffsmontic_w02.menu.PartitionScheme.zigbee.build.partitions=zigbeemontic_w02.menu.PartitionScheme.zigbee.upload.maximum_size=1310720montic_w02.menu.PartitionScheme.zigbee_zczr=Zigbee ZCZR 4MB with spiffsmontic_w02.menu.PartitionScheme.zigbee_zczr.build.partitions=zigbee_zczrmontic_w02.menu.PartitionScheme.zigbee_zczr.upload.maximum_size=1310720montic_w02.menu.PartitionScheme.custom=Custommontic_w02.menu.PartitionScheme.custom.build.partitions=montic_w02.menu.PartitionScheme.custom.upload.maximum_size=16777216montic_w02.menu.CPUFreq.160=160MHz (Wi-Fi)montic_w02.menu.CPUFreq.160.build.f_cpu=160000000Lmontic_w02.menu.CPUFreq.80=80MHz (Wi-Fi)montic_w02.menu.CPUFreq.80.build.f_cpu=80000000Lmontic_w02.menu.CPUFreq.40=40MHzmontic_w02.menu.CPUFreq.40.build.f_cpu=40000000Lmontic_w02.menu.CPUFreq.20=20MHzmontic_w02.menu.CPUFreq.20.build.f_cpu=20000000Lmontic_w02.menu.CPUFreq.10=10MHzmontic_w02.menu.CPUFreq.10.build.f_cpu=10000000Lmontic_w02.menu.FlashMode.dio=DIOmontic_w02.menu.FlashMode.dio.build.flash_mode=diomontic_w02.menu.FlashMode.dio.build.boot=diomontic_w02.menu.FlashMode.qio=QIOmontic_w02.menu.FlashMode.qio.build.flash_mode=diomontic_w02.menu.FlashMode.qio.build.boot=qiomontic_w02.menu.FlashFreq.40=40MHzmontic_w02.menu.FlashFreq.40.build.flash_freq=40mmontic_w02.menu.FlashFreq.80=80MHzmontic_w02.menu.FlashFreq.80.build.flash_freq=80mmontic_w02.menu.FlashSize.2M=2MB (16Mb)montic_w02.menu.FlashSize.2M.build.flash_size=2MBmontic_w02.menu.FlashSize.2M.build.partitions=minimalmontic_w02.menu.FlashSize.4M=4MB (32Mb)montic_w02.menu.FlashSize.4M.build.flash_size=4MBmontic_w02.menu.FlashSize.8M=8MB (64Mb)montic_w02.menu.FlashSize.8M.build.flash_size=8MBmontic_w02.menu.FlashSize.8M.build.partitions=default_8MBmontic_w02.menu.FlashSize.16M=16MB (128Mb)montic_w02.menu.FlashSize.16M.build.flash_size=16MBmontic_w02.menu.UploadSpeed.921600=921600montic_w02.menu.UploadSpeed.921600.upload.speed=921600montic_w02.menu.UploadSpeed.115200=115200montic_w02.menu.UploadSpeed.115200.upload.speed=115200montic_w02.menu.UploadSpeed.256000.windows=256000montic_w02.menu.UploadSpeed.256000.upload.speed=256000montic_w02.menu.UploadSpeed.230400.windows.upload.speed=256000montic_w02.menu.UploadSpeed.230400=230400montic_w02.menu.UploadSpeed.230400.upload.speed=230400montic_w02.menu.UploadSpeed.460800.linux=460800montic_w02.menu.UploadSpeed.460800.macosx=460800montic_w02.menu.UploadSpeed.460800.upload.speed=460800montic_w02.menu.UploadSpeed.512000.windows=512000montic_w02.menu.UploadSpeed.512000.upload.speed=512000montic_w02.menu.DebugLevel.none=Nonemontic_w02.menu.DebugLevel.none.build.code_debug=0montic_w02.menu.DebugLevel.error=Errormontic_w02.menu.DebugLevel.error.build.code_debug=1montic_w02.menu.DebugLevel.warn=Warnmontic_w02.menu.DebugLevel.warn.build.code_debug=2montic_w02.menu.DebugLevel.info=Infomontic_w02.menu.DebugLevel.info.build.code_debug=3montic_w02.menu.DebugLevel.debug=Debugmontic_w02.menu.DebugLevel.debug.build.code_debug=4montic_w02.menu.DebugLevel.verbose=Verbosemontic_w02.menu.DebugLevel.verbose.build.code_debug=5montic_w02.menu.EraseFlash.none=Disabledmontic_w02.menu.EraseFlash.none.upload.erase_cmd=montic_w02.menu.EraseFlash.all=Enabledmontic_w02.menu.EraseFlash.all.upload.erase_cmd=-emontic_w02.menu.ZigbeeMode.default=Disabledmontic_w02.menu.ZigbeeMode.default.build.zigbee_mode=montic_w02.menu.ZigbeeMode.default.build.zigbee_libs=montic_w02.menu.ZigbeeMode.ed=Zigbee ED (end device)montic_w02.menu.ZigbeeMode.ed.build.zigbee_mode=-DZIGBEE_MODE_EDmontic_w02.menu.ZigbeeMode.ed.build.zigbee_libs=-lesp_zb_api_ed -lesp_zb_cli_command -lzboss_stack.ed -lzboss_portmontic_w02.menu.ZigbeeMode.zczr=Zigbee ZCZR (coordinator)montic_w02.menu.ZigbeeMode.zczr.build.zigbee_mode=-DZIGBEE_MODE_ZCZRmontic_w02.menu.ZigbeeMode.zczr.build.zigbee_libs=-lesp_zb_api_zczr -lesp_zb_cli_command -lzboss_stack.zczr -lzboss_portmontic_w02.menu.ZigbeeMode.rcp=Zigbee RCP (radio co-processor)montic_w02.menu.ZigbeeMode.rcp.build.zigbee_mode=-DZIGBEE_MODE_RCPmontic_w02.menu.ZigbeeMode.rcp.build.zigbee_libs=-lesp_zb_api_rcp -lesp_zb_cli_command -lzboss_stack.rcp -lzboss_port- 然后,进入 Variants 目录。
-
新建文件夹
montic_w02 -
在新文件夹内创建
pins_arduino.h文件Directory…/variants/montic_w02
- pins_arduino.h
-
添加板子 IO 信息到
pins_arduino.h
新建 pins_arduino.h 的内容
pins_arduino.h #ifndef Pins_Arduino_h#define Pins_Arduino_h#include <stdint.h>#include "soc/soc_caps.h"#define PIN_RGB_LED 15// BUILTIN_LED can be used in new Arduino API digitalWrite() like in Blink.inostatic const uint8_t LED_BUILTIN = SOC_GPIO_PIN_COUNT + PIN_RGB_LED;#define BUILTIN_LED LED_BUILTIN // backward compatibility#define LED_BUILTIN LED_BUILTIN // allow testing #ifdef LED_BUILTIN// RGB_BUILTIN and RGB_BRIGHTNESS can be used in new Arduino API neopixelWrite()#define RGB_BUILTIN LED_BUILTIN#define RGB_BRIGHTNESS 64static const uint8_t TX = 29;static const uint8_t RX = 30;static const uint8_t SDA = 33;static const uint8_t SCL = 34;static const uint8_t SS = 13;static const uint8_t MOSI = 14;static const uint8_t MISO = 15;static const uint8_t SCK = 8;static const uint8_t A0 = 9;static const uint8_t A1 = 10;static const uint8_t A2 = 11;static const uint8_t A3 = 12;static const uint8_t D0 = 33;static const uint8_t D1 = 34;static const uint8_t D2 = 31;static const uint8_t D3 = 32;static const uint8_t D4 = 35;static const uint8_t D5 = 36;static const uint8_t D6 = 17;static const uint8_t D7 = 16;static const uint8_t D8 = 13;static const uint8_t D9 = 14;static const uint8_t D10 = 15;static const uint8_t D11 = 8;#endif /* Pins_Arduino_h */添加之后重启 Arduino IDE,进入
Tools->Board,然后选择 Montic W02。这样就可以在 Arduino IDE 上编写、编译并上传代码到 Montic W02 了。或者直接从板子选择下拉框直接搜索添加。

如果你遇到任何设置问题,可以参考 Espressif 官方的 Arduino-ESP32 仓库获取最新信息和支持。
Blink Demo
我们依然在 Arduino 中演示 Blink。ESP32 Core 已经集成了对 WS2812 驱动支持,这样在 Arduino 中可以很轻松的控制 WS2812 LED。
-
打开
BlinkRGB例程在 Arduino IDE 中,首先选择好 Montic W02 作为目标板子之后。
打开
File>Examples>ESP32>GPIO>BlinkRGB例程。
同时,需要修改板子信息,比如 Flash 大小。

-
上传(Upload)程序
在 Arduino 中,烧录程序,叫作 Upload(上传),点击后会先编译。

编译完成之后,会开始自动上传程序到 Montic W02。

-
Blink Blink
最后的效果如下动图,先白色,然后关闭,然后红、绿、蓝间隔闪烁。

Arduino 非常容易学习使用,社区也非常活跃,建议可以探索更多 Arduino 的例程(Example)体验 Arduino 的魅力。