我试图通过WIFI将两块Arduino Yun板相互连接(让一块板控制另一块板上的一个引脚,反之亦然),我无法按照我想要的方式工作。
这是我到目前为止所处的地方: 我有两个Arduino Yun板,每个板上都安装了一个简单的草图,只要我保持“连接 - 彼此连接”部分就可以正常工作。它使用模拟端口上的电位计,读取其值,将其映射到0-255的范围,根据给定的值,在其中一个数字引脚(更亮/更暗)上向上或向下淡化LED。现在我想使用一块电路板的电位计来控制OTHER板上的LED。
为此,我尝试使用REST API。我将我的草图与“Bridge”示例草图中的代码结合起来,它在Arduino Yun(Linux部分)上设置了一个http客户端/服务器,允许它通过http接收控制和读取心室引脚的请求。
在浏览器中使用REST API的特定URL时,它可以正常工作。例如:当我键入“http://myarduino.local/arduino/digital/3/1”时,它将数字引脚3的值设置为1(即LED打开) - >所以这一切都很好
我不知道如何继续这一点,因为我不想从浏览器或应用程序控制板,但让一个Arduino Yun直接控制另一个Arduino Yun。如果我通过client.get和client.read(如示例草图中所示)在我的草图中添加http请求,则它不起作用。请参阅下面的示例代码它没有任何影响也没有出现在串行监视器中(原始URL“http://arduino.cc/asciilogo.txt”,如示例中所示,ascii代码出现在串行监视器中)
HttpClient webclient;
webclient.get("http://ardu1.local/digital/3/1");
while (webclient.available()) {
char c = webclient.read();
Serial.print(c);
}
Serial.flush();
我是Arduino Yun董事会的初学者,也许我错过了什么?
感谢您的帮助或指导我朝着正确的方向前进。或者如果您需要更多信息来帮助我解决这个问题,请告诉我。
答案 0 :(得分:2)
我找到了另一种方法来直接连接两个Arduino Yun板,或者尽可能接近“直接”。 REST API不是正确的方法。所以这适用于任何可能遇到同样“问题”的人:
经过一番研究后,我遇到了“Spacebrew”。它基于“websockets”,需要服务器将板连接到彼此,但它非常灵活。在本地设置一个spacebrew服务器也相当容易。它允许连接到服务器的每个客户端(如Arduino Yun板)发布不同类型的数据(布尔值,范围,值)和/或使用简单的Web界面从其他设备订阅发布的数据。好处是,连接速度很快,并且在有数据要发送时无需等待连接重新建立。我使用了Arduino示例草图“spacebrewRange”,它对我来说很好。 在它可以工作之前还需要一些其他的东西,但它在网站和教程中解释:
http://docs.spacebrew.cc/gettingstarted/
http://de.slideshare.net/julioterra/spacebrew-server-workshop-itp
答案 1 :(得分:0)
尝试做同样的事情,似乎,对我来说它有效(至少这一点: - |
我让一个arduino使用运行cURL的进程请求URL“http://router.domain:port/arduino/key/value”。接收arduino使用YunClient解释此请求以设置值的键。
根据您问题中的网址,您似乎缺少路径名中的必需“/ arduino /”组件。据我所知,需要将针对OpenWRT堆栈的任何请求定向到arduino / Leonardo部分。