问题
-使用以这种方式连接的ESP8266时,它将在为继电器供电时随机断开USB接口。然后,它可能会重新连接,但却是零星的。
-可以在下面查看代码,但实际上继电器会通电300毫秒,然后等待10秒钟循环。
接线图https://i.stack.imgur.com/4mycx.png
测试:
我已换下继电器,泵,ESP8266,并多次重新布线,以检查是否短路。我还在每个循环周期中增加了一个整数,当ESP8266能够重新连接时,它将打印此变量,这表明开发板没有崩溃:
串行输出 https://i.stack.imgur.com/ziM8g.png
然后我修改了该图,因此5v电源不是并联的,而是有两个不同的电源,一个用于ESP8266,一个用于泵浦电路,但是观察到相同的问题:
测试接线图https://i.stack.imgur.com/7S0aP.png
问题:
为什么向继电器发送控制信号时USB断开连接? 有办法减轻这种情况吗?
代码:
int relayInput = 5; // the input to the relay pin
int debug_test = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(relayInput, OUTPUT); // initialize pin as OUTPUT
}
void loop() {
// put your main code here, to run repeatedly:
debug_test ++ ;
Serial.println(debug_test);
digitalWrite(relayInput, HIGH); // turn relay on
Serial.println("Water on!");
delay(300);
digitalWrite(relayInput, LOW); // turn relay off
Serial.println("Water off!");
Serial.println("Waiting 10 seconds");
delay(10000);
}
零件:
ESP8255-https://www.amazon.co.uk/gp/product/B07F5FJSYZ/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1
中继-https://www.amazon.co.uk/gp/product/B07BVXT1ZK/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1
答案 0 :(得分:0)
好吧,因此对此进行研究,似乎在泵启动时,它会吸收比PC所能提供的更大的电流(安培)。 它将用于连接到应为其提供足够电流的外部电源,但是我还希望能够灵活地将其通过串行连接连接到PC,以进行故障排除。
最后,是这样的: https://i.stack.imgur.com/MKD1h.png
答案 1 :(得分:0)
您正在驱动具有3.3v输出的5v继电器模块,该模块对某些人来说效果很好,但是取决于继电器模块和电路板,这可能是问题所在。或继电器消耗的电流超过12mA,这是ESP8266的GPIO可以提供的最大电流。
所以我建议您为继电器使用外部电源,并通过引脚(在您的情况下为D1)对其进行控制。
或者仅使用带有外部5v电源的通用5v继电器并通过晶体管控制它,这是一个电路。