一、项目任务与功能介绍
1. 原始任务
硬件TCP/IP以太网通信模块:设计一款基于硬件TCP/IP协议栈控制器的以太网通信模块,使MCU无需运行完整的软件TCP/IP协议栈,即可实现稳定的10/100 Mbps有线网络通信。
主要要求包括:
- 采用W5500或同类硬件TCP/IP控制器;
- 通过SPI接口与MCU连接;
- 支持多路独立Socket;
- 包含网络变压器和RJ45接口;
- 使用25 MHz晶振;
- TX±、RX±按照100 Ω差分对进行布线。
2. 本次项目功能
本项目在原始以太网通信模块的基础上增加了ESP32,设计了一款以太网蓝牙网关模块。
其中:
- W5500负责有线以太网接入;
- ESP32负责扫描周围的BLE设备;
- ESPHome负责设备配置和数据转发;
- Home Assistant负责蓝牙设备发现和数据展示。
该模块可作为Home Assistant的蓝牙代理,接收BTHome温湿度计、人在传感器、小米温湿度计等BLE设备的数据。
二、模块设计思路与器件选型
系统总体结构如下:

1. ESP32-C3:113991054 Seeed Technology Co., Ltd | 射频、RFID、无线评估板 - DigiKey
ESP32集成BLE功能,负责蓝牙扫描、ESPHome程序运行以及与W5500之间的SPI通信。
2. W5500:W5500 WIZnet | 控制器 - DigiKey
W5500内部集成10/100 Mbps以太网MAC、PHY和硬件TCP/IP协议栈,并支持8路独立Socket,能够降低ESP32处理网络协议的负担。
3. 网络接口
W5500通过中心抽头型网络变压器连接RJ45接口。网络变压器主要用于信号耦合、电气隔离和共模干扰抑制。
三、原理图与PCB设计

模块主要包括以下电路:
- SEEED XIAO ESP32C3模块;
- W5500及SPI接口;
- 25 MHz晶振电路;
- 网络变压器和RJ45接口;
- 3.3 V电源电路;
- 下载、复位和状态指示电路。



PCB设计中主要注意以下几点:
- W5500尽量靠近网络变压器放置;
- TX±、RX±按照差分对布线,并尽量等长;
- 差分对下方保持完整参考地平面;
- 晶振靠近W5500,走线短且对称;
- ESP32天线区域避免铺铜、走线和放置金属器件;
- 电源引脚附近放置去耦电容;
- RJ45接口附近预留静电防护器件。
本项目共制作了1版PCB,功能正常。
四、软件配置与调试
本项目使用ESPHome进行固件配置,并通过Home Assistant完成设备接入。
ESPHome的主要配置如下:
注意:api_encryption_key和ota_password需要配置成自己的,无需WiFi账号和密码
esphome:
name: seeed-xiao-c3-w5500
friendly_name: Seeed XIAO C3 W5500 Bluetooth Proxy
esp32:
board: seeed_xiao_esp32c3
variant: esp32c3
framework:
type: esp-idf
# =========================
# 日志
# =========================
logger:
# =========================
# Home Assistant API
# =========================
api:
encryption:
key: !secret api_encryption_key
# =========================
# OTA在线升级
# =========================
ota:
- platform: esphome
password: !secret ota_password
# =========================
# W5500有线以太网
# =========================
ethernet:
type: W5500
# SPI接口
mosi_pin: GPIO10
miso_pin: GPIO9
clk_pin: GPIO8
cs_pin: GPIO4
# W5500控制接口
reset_pin: GPIO2
interrupt_pin: GPIO3
# W5500 SPI通信时钟
clock_speed: 25MHz
# =========================
# BLE扫描
# 建议先使用ESPHome默认扫描参数
# =========================
esp32_ble_tracker:
# =========================
# Home Assistant蓝牙代理
# =========================
bluetooth_proxy:
active: true
connection_slots: 3
# =========================
# 设备在线状态
# =========================
binary_sensor:
- platform: status
name: "Gateway Status"
# =========================
# 以太网信息
# =========================
text_sensor:
- platform: ethernet_info
ip_address:
name: "Ethernet IP Address"
- platform: version
name: "ESPHome Version"
# =========================
# 运行时间
# =========================
sensor:
- platform: uptime
name: "Gateway Uptime"
update_interval: 60s
# =========================
# 远程重启
# =========================
switch:
- platform: restart
name: "Restart Gateway"
调试过程主要包括:
- 检查PCB焊接和电源是否正常;
- 检查ESP32是否能够正常启动;
- 检查W5500的晶振、复位和SPI通信;
- 插入网线并观察网络指示灯;
- 查看ESPHome是否成功获取IP地址;
- 在Home Assistant中添加该设备;
- 测试BLE设备是否能够被正常发现。
五、功能展示
- 焊接完成图:


- ESPHOME烧录后状态与logs:接入同一局域网的网线,状态变为在线,并成功获取了IP,我这里是192.168.10.214。


- HA配置:在设备中自动发现了该蓝牙网关,选择添加(密钥在ESPHOME中查看),添加后可以看到已经正确获取了信息。


- 蓝牙广播扫描:相比于WiFi版本的蓝牙网关,这个可连接设备从3个提升到了6个;并且轻轻松松扫描到30+的广播的信号。


- 蓝牙网关功能:自动解析一款自制的毫米波人在传感器的广播数据,该传感器使用BTHOME格式广播,可以看到正确解析了人在和光强。


六、复刻教程
复刻之前,请确保安装成功了Home Assistant和ESPHOME。有如下两种方式烧录固件:
- 自行编译与烧录:在ESPHOME中创建一个设备,复制上述的配置YAML或下载附件中YAML文件,按照页面提示进行编译和下载即可。其中api_encryption_key和ota_password需要配置成自己的。
- 使用已有固件烧录:如果不想自己编译,可以直接烧录附件中的固件,使用网页ESPHome Web进行设备连接和烧录即可。其中api_encryption_key为9RIV69t52HSDYNGO59XeKTvYX49wpmeKQ0wEc4FDHWU=,在添加至HA时需要输入。
七、心得体会
通过本次项目,我掌握了W5500以太网电路、ESP32最小系统、网络变压器和RJ45接口的基本设计方法,并加深了对差分布线、晶振布局、电源去耦和蓝牙天线净空的理解。
在调试过程中,应按照“电源、主控、SPI、以太网、Home Assistant、蓝牙设备”的顺序逐级排查,这样能够更快定位问题。
本项目不仅完成了原始的硬件以太网通信任务,还扩展实现了Home Assistant蓝牙网关功能,具有一定的实际应用价值。
后续可增加PoE供电、外置蓝牙天线、ESD防护和外壳设计,进一步提高模块的可靠性和工程化程度。