【发布时间】:2016-10-14 11:16:50
【问题描述】:
我已经使用运行 Web 服务器的 ESP8266 和我为使用 RF433 发射器的 livolo 开关找到的库实现了 Livolo 灯开关的基本灯控制器。
我对这样的代码没有任何问题..(如果需要,我可以发布它)Web 服务器侦听请求,然后调用函数发送 rf433 信号(大约需要 2 秒 - 因为livolo 协议基本上是把同一件事炸了 100 次)。
问题是 Web 服务器/整个 arduino/esp8266 在发送 RF 信号时“阻塞” - 最多 2 秒。
如果我只是让网络服务器监听,并说只是向串行调试器写入一个字符串,它的闪电般的速度.. 可以在一秒钟内多次击中它。
通常这没问题,但是发送我正在使用的网络请求的家庭自动化系统不会等待......所以如果它连续发送 10 个请求(关闭所有灯),我的小网络服务器基本上跟不上,因为 esp8266 正忙于进行 RF 广播,它落后了,然后发送请求的系统收到套接字错误。我无法更改发送的系统。
我尝试将其实现为基本的 FIFO 队列,但基本上发生了同样的问题。我想知道在两者之间使用像 i2c 这样的总线来实现两个 arudino (esp8266) 是否更好?一台网络服务器可以接受请求并将它们放入队列,另一台可以懒惰地读取队列并进行射频发送......
我想知道是否有人对 a) 提出建议,这是正确的方法吗? b) 我应该在硬件之间使用什么总线.. c) 远程队列读取实现的任何示例?
任何想法都非常感谢..如果需要,我可以在 web 服务器等上共享代码,但它非常基本的 arudino esp8266 web 服务器实现,这并不是我真正陷入困境的地方.. 我想我对代码示例更感兴趣这表明一个硬件读取在另一个上实现的队列是否有意义?
【问题讨论】:
-
您也许可以使用 gpio 分线板以不占用 esp 的方式处理 rf 发送,但是第二个 esp(尤其是 01)会更便宜,而且效果会很好好吧:“双核”设计。
-
感谢您的建议.. 是的,已经开始在 i2c 上下降 2 个芯片。