国内外实现自行接入以太网的资料不多,主要自己慢慢摸索。具体的原理就是为ESP32加一块PHY芯片,接入GPIO口就行了。X宝上有售相关的模块,但是模块价格高,而且我一贯不喜欢线飞来飞去,所以必须自己设计PCB才够放心。
https://esphome.io/components/ethernet.html 在ESPHOME的Ethernet网页中写到,ESP32支持两种PHY芯片,LAN8720和TLK110 芯片价格前者2元左右,后者50元左右,且110的芯片引脚太多,太占体积,高下立判选择前者无疑。
LAN8720是低功耗的 10/100M 以太网 PHY 层芯片, I/O 引脚电压符合 IEEE802.3-2005 标准,支持通过 RMII 接口与以太网 MAC 层通信,内置 10-BASE-T/100BASE-TX 全双工传输模块,支持 10Mbps 和 100Mbps。
LAN8720A 可以通过自协商的方式与目的主机最佳的连接方式(速度和双工模式),支持 HP Auto-MDIX 自动翻转功能,无需更换网线即可将连接更改为直连或交叉连接。 LAN8720A 的主要特点如下: 高性能的 10/100M 以太网传输模块 支持 RMII 接口以减少引脚数 支持全双工和半双工模式 两个状态 LED 输出 可以使用 25M 晶振以降低成本 支持自协商模式 支持 HP Auto-MDIX 自动翻转功能 支持 SMI 串行管理接口 支持 MAC 接口
因为千兆的普及,这块芯片的价格已经降到1块多。但是甭说百兆,十兆的带宽都足矣让智能家居控制的流量飞奔起来。。
买他!
其中的GPIO口连接是关键,没资料就慢慢翻datasheet。这里直接帮大家排坑了:一部分引脚,有规定的连接GPIO,非这么接不可;一部分引脚可以自己在ESP32中定义,随便选都行。
我先上一个连接的图吧:
连接方法:
GPIO23-MDC
GPIO18-MDIO
GPIO17 CLK_IN
GPIO21-TX_EN
GPIO19-TX0
GPIO22 TX1
GPIO25-RX0
GPIO26-RX1
GPIO27-CRS_DRV
其中,MDC MDIO CLK_IN的脚可以随便接哪个GPIO,其他的必须按照我写的接法连接。
一个PHY芯片占用了这么多的GPIO口,可能这也是8266不支持以太网的原因。
实际应用电路:
RJ45就是带网络变压器的RJ45百兆网口,我使用的型号是HR911105A。
请各位注意,其中外围元件的连接方式、参数请务必按照我给的数值,此电路经过了我的大量测试,请不要省料,否则将可能导致网络不通、不稳定。
在图中,部分元件上标了一个NC,表示不用连接,这个后面会讲到。
按照以上方法连接后,配置方式如下:
esphome:
name: supersonic
platform: ESP32
board: esp-wrover-kit
ethernet:
type: LAN8720
mdc_pin: GPIO23
mdio_pin: GPIO18
clk_mode: GPIO17_OUT
phy_addr: 0
> 引用自:「瀚思彼岸」