我想从一个ESP8266向远处发送一小段(几个字节)数据。
我认为信号太弱而无法将一个ESP8266连接到另一个,但是他们可能会收到一些延迟的小信息?
如何使用arduino-esp8266库(或其他)实现这一目标?
答案 0 :(得分:0)
如果ESP8266板由于信号较弱(它们之间大约超过50米)无法直接相互连接,如果它们连接到外部路由器创建的同一个WiFi网络,您仍可以(间接)将它们相互连接。或互联网。但是,只有当它们在彼此的范围内时,您才可以将它们彼此连接而无需连接到任何外部网络。
它们都连接到同一个本地WiFi网络路由器,您可以在它们之间进行通信,就像它们彼此直接连接一样。只是在这种情况下路由器选项" WiFi客户端隔离"必须在路由器设置页面中禁用板卡才能看到对方(如果路由器具有此命名或类似命名选项)。
否则如果ESP板连接到完全不同的网络,但这两个网络都可以访问互联网,你仍然可以将它们相互连接,但是你必须在每个路由器上使用端口转发,所以两个ESP8266板都是可见形式互联网。谷歌有点关于它,它并不是那么复杂。在这种情况下,您可以在世界上任何两个位置安装电路板,只要可以从互联网访问它们,就可以相互通信。
当你的代码没有开箱即用时,也许很难测试它,所以我建议你使用一些TCP或UDP终端来测试不同或同一网络上两个WiFi客户端之间的连接。网上有很多这样的终端。
例如,对于发送和接收UDP数据包的方式与从串行端口发送/接收数据的方式相同,我使用Docklight Scripting。 https://docklight.de/downloads/ 我实际上也将它用于其他串口通信,因此没有太大区别。不要让他们页面上的描述文字欺骗你。它还可以发送/接收TCP / UDP数据:)
当您创建新项目时,请转到工具 - >项目设置并键入您要连接的其他设备的IP和端口(这可以是另一台运行docklight脚本或您的ESP板的PC)。例如,在我的情况下,我输入 发送/接收通信:UDP:192.168.0.154:9761 因为这是我在本地WiFi网络上的ESP板的IP,然后按"播放按钮"或F5。现在,您可以使用UDP以与通信到基本串行端口相同的方式将接收数据发送到您的主板,并以此方式测试基本连接。或者甚至使用两台笔记本电脑来确认网络上两个WiFi客户端之间的连接。
如果您无法访问路由器设置页面(它们受密码保护)并且无法设置端口转发,那么第三个最难的选项必须是最通用的,那么您必须在从Internet可见的某个服务器上创建服务器应用程序并具有公共知识产权因此,两个ESP8266板都作为客户端连接到此服务器(不需要设置客户端端口转发,但在这种情况下,您必须能够通过两个客户端访问Internet),并且服务器可以将它们的消息转发给彼此。但这超出了这个主题的范围。也许为了开始你只使用TCP / UDP终端来检查两个WiFi客户端之间的连接,看看ESP8266是否可以直接通信。 Docklight脚本只是建议,因为它是我个人选择的TCP / UDP / RS232 / RS485 / MODBUS / USB HID,但您可以使用其他软件。
我希望这有助于间接连接两个ESP8266电路板的方法。