2016-09-14 1241 views
2

我正在使用esp8266构建IR到wifi桥接。基本上,我正在建立一个IR接收器,连接到红外遥控器内的esp8266,通过无线网络将接收到的红外遥控按键转发到服务器。我正在使用Wemos D1 Mini。如何将esp8266从深度睡眠中唤醒而无需连续重置

我已经有红外解码和网络转发部分工作,但它始终打开,它使用大量的电池,特别是考虑到99%的时间没有按下按钮。

我想让它在某个时间没有按下按钮时进入深度睡眠。

如果我将红外接收器连接到RST引脚,可以将深呼吸从深度睡眠中唤醒,但问题在于当IR继续进入时它会一直重置esp,使esp无法实际解码IR命令,因为它不断被重置。

我需要它通过RST将深呼吸唤醒,但是接着忽略进一步的RST激活,直到我以编程方式将其重新发送到深度睡眠中。

我真正需要的是一个正确的gpio中断,因此我可以忽略进一步的重置,直到我进入深度睡眠,但AFAIK esp8266不支持从深度睡眠中唤醒gpio中断。

我需要某种可重置的一次性触发器才会发出一次复位,直到您告诉它您将要再次入睡。

我不知道如何能够实现这一点?有人有主意吗?我宁愿不必使用另一个外部微控制器来重置esp8266,遥控器内部的空间也很紧张,所以我宁愿不必使用很多外部部件。

回答

1

This post on electronics stack介绍了如何用一些额外的零件做一次性按钮。然而,从空间角度来看,它们的总和大于使用另一个微处理器,所以OP决定使用MCU。微型将使用最少的附加部件并要求最小的空间。

+0

虽然此链接可以回答这个问题,最好是在这里有答案的主要部件,并提供链接以供参考。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/ review/low-quality-posts/13671974) –

+0

感谢您的审查。 – leetibbett

+0

我很高兴你回答。你能改善你的答案吗? –

1

您是否看到过关于睡眠ESP8266模式的Espressif文档? 它可以在这里找到:http://www.espressif.com/sites/default/files/9b-esp8266-low_power_solutions_en_0.pdf

它说: In Deep-sleep mode, the chip can be woken up and initialized by a low-level pulse generated on the EXT_RSTB pin via an external IO.

所以,我不知道这是可能避免复位(尽管也许有些哈克的方式存在?),但对于另一种睡眠模式? 像睡觉一样。

+0

谢谢,我已经知道,只是如果我直接将红外线连接到该针上,它会醒来,但我相信它会持续重置ESP,所以我需要一些东西来阻止这种情况的发生。轻度睡眠仍然使用大约15mA,这对于使用两节AAA电池进行远程控制来说太远了。我不想每两天更换一次电池。 – localhost

+0

哎呀,只是纠正自己:轻睡眠使用高达1.8mA。仍然比我想继续使用我的项目,但我最终可能会在轻度睡眠和深度睡眠之间切换。 – localhost

1

这是一个电路,我使用它来允许在ESP8266上从深度睡眠中唤醒一次性中断。只有在深度睡眠定时器激活(D0拉低)之后才允许中断复位。在深度睡眠功能上设置一个短暂的暂停时间,以便立即启用中断。

Wake up interrupt control circuit

一些测试后,我发现,在电路上面,因为我以为不保存尽可能多的力量,因为它只是防止芯片启动,但ESP的内部一部分是主动和周围画15毫安等待重启。深度睡眠中,这比60ua多得多!

如果激活后有一个信号持续几秒钟(如PIR运动传感器),则下面的电路可能工作。它使用电容只允许边沿触发,然后运行代码可以检查GPIO4上的输入信号。但是,总体用电量仍然不佳,因为ESP8266的最大睡眠时间大约为1小时。这意味着ESP8266在睡觉前仍然醒来并使用15ma几秒钟。在5分钟的深度睡眠周期中,1500mah将在5天左右有效。

Deep Sleep edge trigger

+0

谢谢!我会在某个时候尝试。 – localhost

+0

@ user7151084如果第二次接收到中断信号,它将不会重置ESP,因为ESP已经唤醒并处理代码。只有在深度睡眠状态下,中断信号才会重置ESP。是对的吗? – rams

+0

@localhost你有没有得到上述的电路工作? – rams