带有WiFi Shield的Arduino可以使用多播IP发送UDP消息吗?

时间:2014-03-08 15:48:36

标签: networking udp arduino wifi upnp

我有一个带有WiFi盾牌的Arduino Uno R3。 WiFi屏蔽具有最新固件(V1.1.0)。简而言之,我试图通过Android智能手机与Arduino进行通信。我已成功地通过使用路由器分配的本地IP在本地执行此操作;但是,现在我想通过不在同一网络上安装Android来扩展这一点。例如,在Android设备上与世界上任何地方的Arduino进行通信。我知道我可以通过简单地转到我的路由器配置并设置一个前向Arduino的端口来实现这一点。但是,我想通过使用通用即插即用(UPnP)解决这个问题。为了能够在网络上找到Internet网关设备,我必须能够使用多播地址239.255.255.250:1900发送UDP消息。这是我的问题发生的地方。似乎WiFi屏蔽不能通过具有最新WiFi库的多播地址发送UDP数据包。有没有办法修改WiFi库,这样才有可能?

注意:我可以使用Arduino上的单播地址成功发送和接收UDP数据包,只是不使用多播。

此外,有一个库通过位于https://github.com/deverick/Arduino-Upnp-PortMapping的Arduino和以太网屏蔽来完成此操作。我试图修改此库以用于WiFi屏蔽。我假设以太网库能够使用多播地址发送UDP数据包,因为这个库就是这样做的。

编辑:当我说WiFi屏蔽"不能"时,我的意思是因为我无法使用多播地址发送UDP数据包。我没有收到任何我所知道的错误;代码运行没有错误,除了它实际上没有发送数据包的事实。我在GitHub上使用最新的Arduino WiFi库:https://github.com/arduino/Arduino/tree/master/libraries/WiFi。我只是用239.255.255.250和端口1900开始一个数据包,给套接字写一个字符串,然后结束数据包发送它。数据包永远不会实际传输。如果我使用它的本地IP向我的PC发送数据包,它就像一个魅力。似乎WiFi库不支持使用多播地址发送数据包的能力。

1 个答案:

答案 0 :(得分:0)

为没有Wifly库和前端的Wifly RN-XV调制解调器配置绘制Arduino和PIC固件:https://dl.dropboxusercontent.com/u/101922388/WiflySanUSB.zip 键入浏览器地址栏:192.168.1.195/YT以切换Led并打开HTML页面。 微控制器可以使用此固件和Wifly服务器(在地址栏中通过192.168.1.195/YT切换LED信号) 或客户端(AD转换器值插入谷歌数据库)。