硬件学习_ESP8266_IOT_ESP-01(S)继电器模块_简单解决ESP8266上电IO抖动

本期主角

淘宝上常见的使用ESP-01的继电器
一、MOS管驱动款↓
硬件学习_ESP8266_IOT_ESP-01(S)继电器模块_简单解决ESP8266上电IO抖动_第1张图片
二、光耦隔离款↓
硬件学习_ESP8266_IOT_ESP-01(S)继电器模块_简单解决ESP8266上电IO抖动_第2张图片

使用模块

很久之前买ESP-01的时候顺便买了一块第一款的继电器,也就是老款的。
前段时间想做个ESP01的继电器。发现老款模块上的三极管给击穿了。
于是就在学长指导下又焊了一块三极管驱动继电器的的板子,用的PNP三极管,低电平触发,但存在一个问题就是继电器是5V的但ESP01的引脚电平为3.3V的。当ESP01的GPIO0拉高的时候,不足以让继电器断开(没学过模电也不知道怎么改= =)然后就没有再用了,。

问题出现

后来在淘宝看见有光耦隔离款的ESP01继电器,一下子就买了五个。回来也顺利调通了程序。但发现在上电时,继电器会闭合一下(这样的闪断在日常使用中很有可能会造成电器损坏),将触发引脚飞线至GPIO2也无法解决。后来经过查询资料,发现ESP01系列的模块在上电时部分IO口会发生抖动,而ESP01上的GPIO0和2都是会抖动的。

在网上搜索到以下解决方案:

Esp8266上电时IO抖动解决方案
消除esp8266上电时继电器抖动的几种方法

都采用了外部电路来进行消抖,但这样还是治标不治本。于是偶然想起以前前ESP01接入DHT11的时候不是将TX、RX当作GPIO用了吗。于是想试试这两个引脚上电时会不会抖动。

在国外问答社区得到了RX、TX与IO口的对应关系

Using ESP-01 RX and TX pins as additional GPIO pins

Add this to your code at the beginning of set void setup():

//********** CHANGE PIN FUNCTION  TO GPIO ********** 
//GPIO 1 (TX)swap the pin to a GPIO. 
pinMode(1, FUNCTION_3);  
//GPIO 3 (RX) swap the pin to a GPIO. 
pinMode(3, FUNCTION_3); 
//************************************************** ```

RX为接收口,在WIFI控制继电器过程中基本不会使用
于是便将继电器触发引脚飞线至RX(GPIO3)并切断其原与GPIO0的的连接
上电测试。
果然上电时不会触发继电器,wifi控制功能正常,串口打印功能正常。
大功告成。

总结

这个继电器模块的设计存在一定程度的问题,之后我也会尝试自己设计一块ESP8266的继电器模块,后续可以关注我的博客qwq。
通过ESP8266控制继电器的项目研究过许久了。ESP01给我的感觉就是很不靠谱,不管是其稳定性,还是调试的难度,都让我感觉浪费了大量时间。
在使用ESP-12的过程中就没有这些问题 ,在拆解了市面上常见的一些WIFI插座后发现其基本使用的都是ESP-12的主控,况且现在ESP-12的贴片价格甚至比ESP01模块的价格要低 ,所以ESP-12是更好的选择。

建议

建议可以抛弃ESP01去使用ESP-12了,会节省大量的时间。
学习ESP8266、IOT的话建议买一块Nodemcu,不到20块。
包含了基本的电源驱动部分,和自动烧录电路,可用micropython、Arduino IDE进行编程,超级容易上手,主要是不会有ESP01那些阴间问题。后期再学习一下简单PCB绘制,就可以很容易的做出一个IOT小项目了。

你可能感兴趣的:(硬件学习,物联网)