请选择 进入手机版 | 继续访问电脑版

『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 68177|回复: 69

[修仙教程] ESP32接入以太网教程——从此不怕WiFi飘

  [复制链接]

11

主题

217

帖子

3208

积分

元老级技术达人

积分
3208
金钱
2956
HASS币
170

活跃会员教程狂人卓越贡献

发表于 2020-5-27 09:59:04 | 显示全部楼层 |阅读模式
用过WiFi或者zigbee的小伙伴可能都有这样的担心,我的WiFi不稳定,时不时断一下咋整。。。
其实我自己还没遇到过这个情况,但可以肯定的是,以太网有线传输,一定比无线稳定性更高,在对家中重要的节点进行控制时,我们还是应该尽可能地应该选择更可靠的方案,所以今天这篇文章跟大家分享一下ESP32接入以太网的方法。

最开始折腾的时候我就想过用有线来完成设备接入,奈何8266可玩性确实很高,无线确实很方便,一度忘掉了初心。
后来重拾稳定大旗,然而通过8266的datasheet不难发现,8266的小身板是无法接入以太网的,此时必须他的老大哥上场,ESP32。

国内外实现自行接入以太网的资料不多,主要自己慢慢摸索。具体的原理就是为ESP32加一块PHY芯片,接入GPIO口就行了。X宝上有售相关的模块,但是模块价格高,而且我一贯不喜欢线飞来飞去,所以必须自己设计PCB才够放心。


一、PHY芯片选型
https://esphome.io/components/ethernet.html
在ESPHOME的Ethernet网页中写到,ESP32支持两种PHY芯片,LAN8720和TLK110
芯片价格前者2元左右,后者50元左右,且110的芯片引脚太多,太占体积,高下立判选择前者无疑。

微信截图_20200527092803.png
(没拍微距,随便用的一张网图,非广告)

LAN8720是低功耗的 10/100M 以太网 PHY 层芯片, I/O 引脚电压符合 IEEE802.3-2005 标准,支持通过 RMII 接口与以太网 MAC 层通信,内置 10-BASE-T/100BASE-TX 全双工传输模块,支持 10Mbps 和 100Mbps。
3045366950.png

LAN8720A 可以通过自协商的方式与目的主机最佳的连接方式(速度和双工模式),支持 HP Auto-MDIX 自动翻转功能,无需更换网线即可将连接更改为直连或交叉连接。 LAN8720A 的主要特点如下:
高性能的 10/100M 以太网传输模块
支持 RMII 接口以减少引脚数
支持全双工和半双工模式
两个状态 LED 输出
可以使用 25M 晶振以降低成本
支持自协商模式
支持 HP Auto-MDIX 自动翻转功能
支持 SMI 串行管理接口
支持 MAC 接口
因为千兆的普及,这块芯片的价格已经降到1块多。但是甭说百兆,十兆的带宽都足矣让智能家居控制的流量飞奔起来。
买他!

二、芯片电路
其中的GPIO口连接是关键,没资料就慢慢翻datasheet。这里直接帮大家排坑了:一部分引脚,有规定的连接GPIO,非这么接不可;一部分引脚可以自己在ESP32中定义,随便选都行。
我先上一个连接的图吧:


微信截图_20200527093458.png

连接方法:
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不支持以太网的原因。
实际应用电路:
微信截图_20200527093154.png
RJ45就是带网络变压器的RJ45百兆网口,我使用的型号是HR911105A。
请各位注意,其中外围元件的连接方式、参数请务必按照我给的数值,此电路经过了我的大量测试,请不要省料,否则将可能导致网络不通、不稳定。
在图中,部分元件上标了一个NC,表示不用连接,这个后面会讲到。

三、ESPHOME中如何配置
按照以上方法连接后,配置方式如下:
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


四、一些重要的问题:

1、接地。该芯片采用QFN-24封装,GND是芯片的底部焊盘,没有额外的GND引脚,所以焊接的时候比较考验焊工。我的经验是先用电烙铁上一层薄锡,再用热风枪380°风速3.5吹,焊盘摆正后用镊子轻推能够自动回位表示底部焊盘已经充分融化连接;随后再用电烙铁补引脚拖锡,最后可以万用表确认连接情况,熟练之后成功率百分百。
3423459158.jpg

2、电源隔离。LAN8720的VCC电压为3.3V,如果使用线性稳压电源就不用考虑这一步。如果采用LM2596等开关电源供电,需要考虑在电源前安装一颗磁珠电阻,滤掉150KHz高频干扰(LM2596假货太多,多半是2576的打磨片,2576振荡频率是50KHz)。我采用的稳压芯片是圣邦微SGM6232YPS8G,开关频率为1.4MHz,所以并没有使用磁珠进行电源隔离。后面有时间了打算单独开个帖子,讲一下开关电源电路,电源这部分自己DIY的时候必须要用到,且必须做好。

3、PHY芯片地址设置。LAN8720可以通过PHYAD0引脚来配置,该引脚与RXER引脚复用,芯片内部自带下拉电阻,当硬复位结束后, LAN8720A 会读取该引脚电平,作为器件的 SMI 地址,接下拉电阻时(浮空也可以,因为芯片内部自带了下拉电阻),设置 SMI 地址为 0,当外接上拉电阻后,可以设置为 1。我使用时引脚浮空,即设置 LAN8720 地址为 0。

4、nINT/REFCLKO 引脚功能配置。nINT/REFCLKO 引脚可以用作中断输出,或者参考时钟输出。通过 LED2(nINTSEL)引脚设置, LED2 引脚的值在芯片复位后,被LAN8720读取,当该引脚接上拉电阻(或浮空,内置上拉电阻),那么正常工作后,nINT/REFCLKO 引脚将作为中断输出引脚(选中REF_CLKIN模式)。当该引脚接下拉电阻时,正常工作后, nINT/REFCLKO 引脚将作为参考时钟输出(选中REF_CLK OUT模式)。在REF_CLK IN模式,外部必须提供50Mhz参考时钟给LAN8720的XTAL1(CLKIN)引脚。在REF_CLK OUT模式, LAN8720可以外接25Mhz石英晶振,通过内部倍频到 50Mhz,然后通过 REFCLKO 引脚,输出 50Mhz 参考时钟给 MAC 控制器。这种方式,可以降低 BOM成本。我使用时将LED2悬空,即REF_CLKIN模式,由ESP32的GPIO口输出50MHz的时钟信号,所以电路图上同时设计有这两种电路,自己选择其中一种方式即可,NC留空的选择的就是免外部晶振。

5、RJ45网口插座相关问题。为nINT/REFCLKO选择不同的模式时,应当注意与RJ45的连接方式,连接错误会导致网口LED灯反相。我选择的RJ45插座是HR911105A。这里再把图放出来,务必注意R9 R10。
1111556811.png

好啦,先写到这里吧,这段时间太忙了,以后再更其他内容,谢谢大家支持~




评分

参与人数 9金钱 +64 HASS币 +20 收起 理由
pengguilian + 2 感谢楼主分享!
blindlight + 16 感谢楼主分享!
924215947 + 10
Chong83 + 2 感谢楼主分享!
hejie127 + 5 膜拜大神!,全是牛xx的干货
yaochi + 2 感谢楼主分享!
coollofty + 2
ultraz + 5 墙都不扶,就服楼主!
+ 20 + 20 专门注册账号来顶你!

查看全部评分

回复

使用道具 举报

0

主题

75

帖子

703

积分

高级会员

Rank: 4

积分
703
金钱
628
HASS币
0
发表于 2020-5-27 10:12:12 | 显示全部楼层
真的大神啊,花了不少时间吧
回复

使用道具 举报

6

主题

151

帖子

1195

积分

金牌会员

Rank: 6Rank: 6

积分
1195
金钱
1044
HASS币
0
发表于 2020-5-27 11:11:40 | 显示全部楼层
POE供电
回复

使用道具 举报

46

主题

641

帖子

4394

积分

元老级技术达人

积分
4394
金钱
3723
HASS币
120
发表于 2020-5-27 11:22:07 | 显示全部楼层
poe供电的摄像头就是这么来的?
回复

使用道具 举报

57

主题

402

帖子

3011

积分

论坛元老

Rank: 8Rank: 8

积分
3011
金钱
2609
HASS币
0
发表于 2020-5-27 11:32:56 | 显示全部楼层
很屌,但是却又觉得后退了
回复

使用道具 举报

33

主题

680

帖子

4317

积分

论坛元老

Rank: 8Rank: 8

积分
4317
金钱
3627
HASS币
50
发表于 2020-5-27 12:07:36 | 显示全部楼层
很屌炸天,,,我觉得用于对网络要求高的设备还是有用,如果只是控制一下灯什么的就无所谓i了
回复

使用道具 举报

0

主题

204

帖子

1011

积分

金牌会员

Rank: 6Rank: 6

积分
1011
金钱
807
HASS币
0
发表于 2020-5-27 12:49:53 | 显示全部楼层
谢谢分享     
回复

使用道具 举报

0

主题

19

帖子

91

积分

注册会员

Rank: 2

积分
91
金钱
72
HASS币
0
QQ
发表于 2020-5-27 16:03:15 | 显示全部楼层
这个是不是有点太专业了!!
回复

使用道具 举报

71

主题

1145

帖子

6288

积分

论坛元老

Rank: 8Rank: 8

积分
6288
金钱
5138
HASS币
30
发表于 2020-5-27 16:13:06 | 显示全部楼层
连接方法:
GPIO23-MDC
GPIO18-MDIO
GPIO17 CLK_IN
GPIO21-TX_EN
GPIO19-TX0
GPIO22 TX1
GPIO25-RX0
GPIO26-RX1
GPIO27-CRS_DRV


用以上接飞线,能正常使用吗?有什么要注意的?
回复

使用道具 举报

0

主题

90

帖子

1012

积分

金牌会员

Rank: 6Rank: 6

积分
1012
金钱
922
HASS币
0
发表于 2020-5-27 17:25:58 | 显示全部楼层
又多一个搞有线的,can方案改图中~~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-3-29 19:06 , Processed in 0.062837 second(s), 37 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表