转载–通过chatgpt来理解不太熟悉的知识

ESP8266-01S模块给大家带来了更多的想象空间,但是具体使用过ESP8266的GPIO引脚的同学一定也遇到ESP8266上电时GPIO引脚抖动的问题。如果把GPIO作为输入引脚、点亮LED、连接其他模块等作用,这个抖动都还时可以接受,上电时无非就是LED闪烁一下,但是如果把GPIO连接继电器模块,感受就比较直接:继电器闭合又马上断开,会导致继电器后的用电器发生闪断,有可能烧毁。

1、ESP8266-01S的GPIO抖动现象

经过实际测试发现ESP8266-01S在如下情况下会发生GPIO状态的抖动:

1)上电的一瞬间GPIO0、GPIO2都会从高电平变为低电平,然后再变为高电平

2)将GPIO0配置为输出时,GPIO0马上从高电平变为低电平。GPIO2也存在同样的问题

 

2、ESP8266-01S的GPIO抖动原因

通过查询资料发现时芯片bug,emm… 芯片的bug我还是第一次听说,有人也使用测试仪进行了测试给出了实锤的证据。最开始学习时发现上电时LED会闪两下,一直以为自己的代码问题,当使用了继电器模块才发现上电瞬间ESP8266-01S的GPIO电平变化并不受代码的控制。至于具体的产生原因咱们也不去过多的去了解,最重要的是想一个办法来解决问题。

 

3、ESP8266-01S的GPIO抖动解决方案

ESP8266-01S的GPIO抖动解决方案有多种

方案 优点 缺点
方案1 根据官方文档修改官方代码并重新编译固件 一劳永逸,彻底解决问题 难度巨大
方案2 不使用GPIO0和GPIO2接继电器,使用TXD和RXD引脚接继电器 解决方式简单可靠 串口不能使用,调式不方便
方案3 继电器电路增加电容滤波,上电时滤除电流的高频抖动 引脚GPIO0和GPIO2、串口都能够正常使用 需要改动硬件电路;

继电器关闭时会出现一点点延迟;

如果快速上电又下电依然存在抖动

我相信具有折腾精神的同学都会选择方案3,当然我也选择了方案3,但是方案3依然存在不小的坑,接下来我会做一个大概的分析。

1)ESP8266-01S继电器驱动电路原理图

首先大家要先看看ESP8266-01S的驱动电路,来了解一下GPIO引脚是如何让继电器工作的

1.png

这个是某宝上畅销的一款ESP8266-01S继电器电路原理图,使用引脚GPIO0来驱动继电器(这里我很困惑大家买了以后都是如何解决抖动问题的),这个电路是带光耦隔离、mso管驱动的,该有的基本上都有,唯一不足的就是没有考虑ESP8266-01S引脚抖动问题。

2)ESP8266-01S继电器改进电路原理图

ESP8266-01S的继电器驱动电路修改也很简单,就是再电阻R2边上并联一个点解电容到地,也许已经有同学发现了这个电容没有容值,先别着急,要看完才能知道为什么。

3.jpg

假设使用引脚GPIO0驱动继电器,GPIO0为低电平时继电器闭合,引脚GPIO0为高电平时继电器断开。

原理如下:上电时当ESP8266-01S的引脚GPIO0突然变为低电平时,光耦工作,光耦的引脚3输出低电平,这时新加的电容就会开始充电,mos管的引脚1依然保持高电平,如果直到电容充满电光耦的引脚3一直保持低电平那么电流就会流过电阻R2,把mos管的引脚1就会被拉低,继电器闭合;如果电容还没充满电光耦的引脚3就变为了高电平,那么就不会有电流留到电阻R2,mos管的引脚1依然保持高电平,继电器就不会闭合。

 

3)ESP8266-01S继电器驱动电路电容选择

明白了原理,接下来就是确定电容的容值了。

首先分析一下:ESP8266-01S上电时GPIO引脚会发生一次抖动,我们标记为抖动A;当代码初始化时把GPIO引脚初始化为输出时GPIO引脚会突然变为0,然后再通过代码把引脚输出置为1,又会发生一次抖动,我们标志为抖动B。

如果只有抖动A,就是你的电路只需要解决ESP8266-01S上电一瞬间的抖动A,这个电容容值选择10~100uF就可以;

如果解决GPIO0的抖动A和抖动B,这里假设ESP8266-01S上电后代码马上去初始化引脚GPIO0,这个电容容值是220uF左右;

如果解决GPIO2的抖动A和抖动B,这里假设ESP8266-01S上电后代码马上去初始化引脚GPIO2,这个电容容值是470uF左右;

至于为什么GPIO0和GPIO2选择的容值不一样,我猜测是因为官方代码里GPIO0和GPIO2的初始化时间不一样。

 

回忆

一个夏日的午后,小男孩躺在床上,带着一点不情愿地躺着,窗外阳光明媚,屋子里却没有那么明亮,甚至还有些黑,原来是因为窗户外面就是一堵墙,隔了不到两米,墙上爬了葡萄藤,给斑驳的水泥墙上点缀出绿色的生机。知了一直叫个不停,这样一个无忧无虑的夏日,永远铭记在了小男孩的记忆里。

再探IPv6

终于将Wordpress迁移到了NAS上,做好了反向代理,基本上达到目的,迁移过程也是比较费力,主要几个点:数据库恢复时没有auto_increment属性,导致无法新建文章。链接地址需要更新,在其中一个数据表中。删除.user.ini文件。

回来IPv6, IPv6目前在提速,各种基础设施都已经开始支持或者即将支持,电信的5G网络已经达成,宽带网络似乎也已经能够使用,但是偶尔会获取不成功?腾讯的云服务器似乎已经支持,但不去折腾,轻量云在某些区域已经开始试点,铺开也是早晚的问题。

目前发现IPv6能够给某些直播软件带来不错的观看体验,特别是电视直播软件,在翻墙方面,亚马逊的服务器默认支持IPv6,因此如果NAS本地有IPv6地址,从亚马逊过来的流量将直接通过IPv6,myqnapcloud.com的DDNS似乎更新IPv6的地址并没有IPv4迅速,使用IPv6的好处是,可以在不开放端口映射的情况下,直接去访问NAS的web服务器,这给访问带来很好的体验。

NAS上IPv6和IPv4是两个不同的防火墙,因此需要同时设置两个类型,因为不清楚对方过来访问的时候,到底是使用IPv4还是v6。

 

 

 

最近一些折腾记录

买了一个机柜,把一些网络设备塞进去,内网网速提升千兆,UPS换电池,能够正常工作了!

NAS:千兆有线网络,开启IPv6,gitea服务器,进入机柜居住;

苹果盒子:千兆有线,进入机柜;

树莓派+bt:WIFI新HA 带zigbee,更多新功能可以探索;

汽车GPS软硬件更新,蓝牙开锁;

Vps不续费及加购,墙是真的狗🐶:不续费腾讯云,加购亚马逊ls,为加密货币…

希望迁移一切顺利,家庭服务器YYDS