EDGE101 开箱文:把 ESP32 装进工业控制器
EDGE101 开箱:把 ESP32 装进工业控制器,先点亮一盏灯
最近终于拿到了心心念念的一台 DFRobot EDGE101 ESP32 可编程控制器。它不是一块普通的 ESP32 开发板,而是把 ESP32、RS485、CAN、以太网、Wi-Fi、蓝牙、4G CAT1、RTC、TF 卡和工业级保护电路,集中到了一台金属外壳控制器里。
这次先不做复杂的 4G 物联网项目,我们从最简单、最直观的实验开始:按下板载按钮,点亮板载 LED。在这个基础上,再看看它未来能不能发展成一个小型工业数据采集器、远程控制器,甚至是数字孪生和设备联网的现场节点。
本文依据 EDGE101 官方 Wiki 整理。该控制器采用 ESP32 双核处理器,主频 240 MHz,提供 11 路 GPIO、RS485、CAN、以太网、Wi-Fi、蓝牙、4G CAT1 和 TF 卡接口。

一、EDGE101 是什么
很多 ESP32 开发板适合桌面实验,但一旦进入工厂或户外环境,就会遇到几个问题:
- 没有 RS485,无法连接常见的工业仪表。
- 没有 CAN,无法与车辆、机器人或控制器通信。
- 没有以太网,难以接入固定网络。
- 没有 4G,设备离开 Wi-Fi 后就无法联网。
- 裸露的开发板缺少防反接、防浪涌和隔离保护。
- 供电范围窄,不方便接入工业现场的 12 V 或 24 V 电源。
EDGE101 的定位,就是在 ESP32 的易开发性基础上,增加工业现场需要的接口和保护设计。
它的主要硬件特点包括:
| 项目 | EDGE101 配置 |
|---|---|
| 主控 | ESP32 双核 32 位处理器 |
| 主频 | 240 MHz |
| 片上 Flash | 16 MB |
| 供电 | DC 9–26 V,也支持 USB Type-C 5 V |
| 无线 | Wi-Fi、蓝牙、4G CAT1 |
| 工业通信 | 隔离 RS485、隔离 CAN |
| 有线网络 | 10/100 Mbps 以太网 |
| 本地存储 | TF 卡,最大支持 32 GB |
| GPIO | 11 路 |
| 安装方式 | 导轨、挂耳、平面安装 |
| 工作温度 | -20~+75 ℃ |
从形态上看,它已经更接近一台小型工业控制器,而不是普通的实验开发板。设备采用金属外壳,支持 9–26 V 宽电压输入,并具备反接、防静电、浪涌和过压等保护设计。

二、开箱第一印象
EDGE101 的外壳尺寸大约为 136.7 \times 76 \times 31\text{ mm},拿在手里有明显的工业设备感觉。
正面主要可以看到:
- RJ45 以太网接口。
- Type-C USB 接口。
- 复位按键。
- 用户按键。
- 电源指示灯。
- 无线通信指示灯。
- 用户可编程 LED。
- 9–26 V 外部供电接口。
- RS485 接口。
- CAN 总线接口。
- Wi-Fi/蓝牙天线接口。
- 4G 天线接口。
背面则提供:
- Nano SIM 卡槽。
- TF 卡槽。
- 11 路 GPIO 接口。
- 3 组 I²C 接口。
- 接地端子。
- 导轨或安装附件位置。
这里有一个很重要的细节:EDGE101 的板载 LED 和板载按键并不是随便分配的。
官方资料中的引脚定义是:
- GPIO15:板载用户 LED
- GPIO38:板载用户按键
- GPIO38 只能作为输入。
- GPIO34~GPIO38 主要用于输入。
- GPIO37、GPIO38、GPIO39 可以用于模拟输入,但使用 Wi-Fi 时要注意 ADC2 资源限制。
- GPIO12 默认具有下拉配置,外接电路时不能随意强制上拉。
因此,第一次实验可以直接使用 GPIO15 和 GPIO38,不需要额外接传感器或 LED。

三、上电前的准备
1. 安装天线
如果要测试 Wi-Fi、蓝牙或 4G,先安装对应天线。
本次最简单的 LED 实验不依赖网络,但建议把 Wi-Fi/蓝牙天线装好。之后测试 4G 时,还需要:
- 安装 4G 专用天线。
- 插入 Nano SIM 卡。
- 确认 SIM 卡开通了数据业务。
- 确认当地网络支持对应的 CAT1 频段。
2. 连接 USB
使用 Type-C 数据线连接 EDGE101 和电脑。
Windows 系统下打开设备管理器,确认出现对应的串口号,例如:
COM7如果没有识别,可以检查:
- USB 数据线是否支持数据传输。
- 是否安装了对应的 USB 串口驱动。
- Arduino IDE 是否识别到串口。
- 是否有其他软件占用了串口。
3. 安装 Arduino IDE
官方 Wiki 推荐使用 Arduino IDE,并通过开发板管理器安装 EDGE101 的板卡支持包。
在 Arduino IDE 中进入:
File → Preferences找到“附加开发板管理器网址”,加入:
https://downloadcd.dfrobot.com.cn/DFRobot_Edge101/package_Edge101_index.json然后进入:
Tools → Board → Boards Manager搜索:
Edge101安装 DFRobot Edge101 对应的软件包,完成后在开发板菜单中选择:
DFRobot Edge101 → Edge101 IOT Controller官方文档建议优先使用 V1.01 版本资源包。
四、第一次实验:按钮控制 LED
实验目标
按下 EDGE101 的板载按钮,用户 LED 点亮;松开按钮,LED 熄灭。
这个实验虽然简单,但可以验证四个基础环节:
- Arduino IDE 能否正确识别 EDGE101。
- 程序能否正常编译。
- 程序能否烧录到控制器。
- 板载 GPIO、按钮和 LED 是否工作正常。
示例代码
const int buttonPin = 38; // 板载按钮 GPIO38
const int ledPin = 15; // 板载 LED GPIO15
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
// LED 为低电平点亮,因此上电时先关闭
digitalWrite(ledPin, HIGH);
}
void loop() {
int buttonState = digitalRead(buttonPin);
// 按钮按下时 GPIO38 为 LOW
if (buttonState == LOW) {
digitalWrite(ledPin, LOW); // 点亮 LED
} else {
digitalWrite(ledPin, HIGH); // 熄灭 LED
}
delay(10);
}官方示例中同样使用 GPIO38 读取按键、GPIO15 控制用户 LED,并且说明该 LED 为低电平有效:输出 LOW 时点亮,输出 HIGH 时熄灭。
烧录步骤
- 用 Type-C 数据线连接 EDGE101。
- 打开 Arduino IDE。
- 选择开发板:
DFRobot Edge101 → Edge101 IOT Controller- 在端口菜单中选择 EDGE101 对应的 COM 口。
- 将上面的代码复制到 Arduino IDE。
- 点击“验证”编译。
- 点击“上传”烧录。
- 上传完成后,按下板载按键。
正常情况下,现象应该是:
- 松开按钮:用户 LED 熄灭。
- 按下按钮:用户 LED 点亮。
- 松开按钮:LED 再次熄灭。
这就是 EDGE101 的第一个“点亮”演示。
五、如果 LED 不亮,先检查什么
1. 检查 LED 逻辑
EDGE101 的用户 LED 是低电平有效,不是普通的:
HIGH = 点亮
LOW = 熄灭而是:
LOW = 点亮
HIGH = 熄灭如果代码逻辑写反,可能会出现“松开按钮时亮、按下时灭”的现象。
2. 检查按钮状态
官方示例中,按钮按下时 GPIO38 读取到 LOW。
可以暂时加入串口输出:
const int buttonPin = 38;
void setup() {
Serial.begin(115200);
pinMode(buttonPin, INPUT);
}
void loop() {
Serial.println(digitalRead(buttonPin));
delay(200);
}打开串口监视器,波特率选择:
115200如果没有按按钮时显示:
1按下按钮时显示:
0说明按键输入正常。
3. 检查板卡和端口
如果上传失败,重点检查:
- 开发板是否选择为 Edge101 IOT Controller。
- COM 口是否选对。
- USB 线是否为数据线。
- 端口是否被串口调试助手占用。
- 上传时是否需要按一次复位键。
4. 不要立即外接 24 V
第一次实验建议只使用 USB Type-C 供电。确认程序、串口和 LED 都正常后,再使用 9–26 V 外部供电。
接入工业电源时必须注意:
- 正负极不能接反。
- 电源电压不能超过 26 V。
- 电源应有合适的保险和浪涌保护。
- 工业现场调试时建议先使用限流电源。
六、让实验更有意思:呼吸灯
如果只做按钮点灯,能够证明 GPIO 工作,但还没有体现 ESP32 的处理能力。第二个非常适合拍视频的演示是“呼吸灯”。
这个程序让板载 LED 逐渐变亮,再逐渐变暗,形成循环呼吸效果。
#define LED_PIN 15
#define PWM_CH 0
#define PWM_FREQ 5000
#define PWM_RES 13
int brightness = 0;
int fadeAmount = 5;
void setup() {
ledcSetup(PWM_CH, PWM_FREQ, PWM_RES);
ledcAttachPin(LED_PIN, PWM_CH);
}
void loop() {
// LED 为低电平有效,因此将亮度值反向输出
int pwmValue = 8191 - (brightness * 8191 / 255);
ledcWrite(PWM_CH, pwmValue);
brightness += fadeAmount;
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
delay(30);
}这个演示可以体现:
- ESP32 的 PWM 输出。
- LED 亮度控制。
- 定时循环逻辑。
- 工业控制中常见的模拟量效果输出。
后续如果把 LED 换成继电器、蜂鸣器、指示灯塔或电机驱动模块,就可以从“桌面演示”逐步过渡到“小型自动化控制”。
七、从点灯到工业应用
EDGE101 真正有价值的地方,不是板载 LED,而是它可以把“传感器—控制器—网络—平台”连接起来。
可以把它理解成一个小型工业边缘节点:
传感器/设备
↓
RS485 / CAN / GPIO / ADC
↓
EDGE101
↓
Wi-Fi / 以太网 / 4G
↓
MQTT / HTTP / 云平台 / Node-RED
↓
监控界面、报警系统、数字孪生第一阶段:基础控制
目标是熟悉 GPIO、PWM、ADC 和按钮输入。
可以做:
- 按钮控制 LED。
- PWM 调节灯光亮度。
- 电位器采集模拟电压。
- 温度传感器数据读取。
- 继电器控制。
- 定时器控制输出。
- 看门狗自动复位。
这一阶段的重点是建立对 ESP32 和 Arduino 框架的理解。
第二阶段:工业通信
EDGE101 提供隔离 RS485 和 CAN 接口,适合连接工业传感器和控制设备。
可以做:
- 读取 Modbus RTU 温湿度传感器。
- 读取电表、流量计、压力变送器。
- 连接变频器。
- 采集 PLC 的寄存器数据。
- 监听 CAN 总线数据。
- 建立一个 RS485 到 MQTT 的网关。
例如,一个小型设备联网节点可以这样设计:
Modbus 温度传感器
↓ RS485
EDGE101
↓ Wi-Fi/4G
MQTT
↓
Node-RED / ThingsBoard这条路线和工厂现场非常接近,也适合你后续发展 PLC、工业物联网和数字孪生方向。
第三阶段:网络冗余
EDGE101 同时具备以太网、Wi-Fi 和 4G,这意味着可以设计多网络切换策略:
- 优先使用以太网。
- 以太网断开后切换到 Wi-Fi。
- Wi-Fi 也不可用时切换到 4G。
- 网络恢复后自动切回成本更低的连接方式。
这类功能比“单纯接入 Wi-Fi”更接近实际工业产品。
例如:
以太网:工厂内网主链路
Wi-Fi:调试和临时网络
4G:远程维护和故障应急链路这可以应用于:
- 远程设备监控。
- 户外环境采集。
- 泵站和机房监测。
- 仓库温湿度监控。
- 小型自动化设备联网。
- 无固定网络场景的数据回传。
第四阶段:工业物联网网关
EDGE101 可以进一步发展成一个简易工业网关:
- 下行连接 PLC、变频器和传感器。
- 上行通过 MQTT、HTTP 或 4G 上传数据。
- 本地 TF 卡保存断网期间的数据。
- 网络恢复后补传历史数据。
- 使用看门狗提高长期运行稳定性。
- 通过 OTA 远程升级程序。
最终的数据流可以是:
PLC / 传感器
↓
RS485、CAN、GPIO
↓
EDGE101
├── 本地缓存:TF 卡
├── 现场网络:以太网/Wi-Fi
├── 远程网络:4G CAT1
└── 云端协议:MQTT/HTTP这已经不是简单的“开发板实验”,而是一个具有实际工程价值的边缘计算节点。
八、一个值得做的完整项目
我把 EDGE101 的开发愿景定为:
小型设备远程监控终端
项目功能
第一版可以实现:
- 读取一个 RS485 温湿度传感器。
- 读取一个模拟量或数字量输入。
- 控制一个继电器或指示灯。
- 屏蔽或记录传感器异常。
- 通过 Wi-Fi 或 4G 上传数据。
- 使用 MQTT 发布数据。
- Node-RED 显示实时曲线。
- 超过阈值后发送报警。
- 断网时保存到 TF 卡。
- 网络恢复后补传数据。
MQTT 数据示例
{
"device_id": "edge101-001",
"temperature": 28.6,
"humidity": 63.2,
"motor_running": true,
"alarm": false,
"rssi": -67,
"timestamp": "2026-09-18T22:30:00+08:00"
}Node-RED 可视化界面
界面可以包括:
- 当前温度。
- 当前湿度。
- 设备在线状态。
- 4G/Wi-Fi/以太网连接状态。
- 继电器控制按钮。
- 最近 24 小时趋势曲线。
- 报警记录。
- 设备重启次数。
- 信号强度。
- 数据上传失败次数。
进一步发展为数字孪生
如果把设备的实时数据接入 3D 模型,就可以形成一个简单的数字孪生演示:
真实设备状态
↓
EDGE101 采集
↓
MQTT 数据模型
↓
Node-RED / ThingsBoard
↓
3D 设备模型状态同步例如:
- 电机运行时,3D 模型中的电机旋转。
- 温度升高时,模型变成橙色或红色。
- 设备报警时,弹出报警标记。
- 继电器打开时,模型中的执行器动作。
- 网络中断时,设备显示离线状态。
这条路线非常适合用于展示你的机械设计、PLC、IoT 和数字孪生能力。
九、推荐的学习路线
可以按下面的顺序推进:
第 1 周:控制器基础
- 点亮板载 LED。
- 按钮读取。
- PWM 呼吸灯。
- ADC 读取电位器。
- 串口打印数据。
- 定时器和看门狗。
第 2 周:工业接口
- RS485 数据透传。
- Modbus RTU 主站。
- 读取温湿度传感器。
- 控制 Modbus 继电器。
- CAN 发送和接收基础报文。
第 3 周:网络通信
- Wi-Fi 扫描。
- Wi-Fi 自动配网。
- 以太网联网。
- 4G 获取网络时间。
- MQTT 发布和订阅。
第 4 周:小型 IoT 项目
- 采集传感器数据。
- 本地 TF 卡缓存。
- MQTT 上传。
- Node-RED 显示。
- 远程控制继电器。
- 增加异常报警。
第 5 周以后:工程化
- 断网重连。
- 数据补传。
- 看门狗保护。
- OTA 远程升级。
- 设备参数配置。
- 权限和安全认证。
- 多设备管理。
- 3D 可视化和数字孪生。
十、总结
EDGE101 的第一次演示不需要一开始就上 4G、MQTT 或复杂的传感器。最合理的方式是从按钮和 LED 开始,先验证开发环境、GPIO 和烧录流程。
但它的真正潜力在于:它可以把 ESP32 的开发便利性,延伸到 RS485、CAN、以太网和 4G 工业场景。对于机械设计、PLC、工业物联网方向来说,它非常适合做一个长期实验平台。
这次的“按键点灯”只是第一步。
如果把这条路线完整走通,EDGE101 就不再只是一个开箱产品,而会变成一个可以用于学习、演示、接单和开发工业物联网原型的核心控制器。





