我尝试修改光传感器的Temperature Web Panel示例(在arduino-1.5.6-rw / libraries / Bridge / examples / TemperatureWebPanel中找到)。不幸的是,即使是最简单的接收和发送结果通过wifi也行不通!我甚至评论说工作部分只是将一些文本发送回浏览器,但我仍然没有在浏览器中看到任何内容:
#include <Bridge.h>
#include <YunServer.h>
#include <YunClient.h>
// Listen on default port 5555, the webserver on the Yun
// will forward there all the HTTP requests for us.
YunServer server;
String startString;
long hits = 0;
void setup() {
Serial.begin(9600);
// For debugging, wait until the serial console is connected.
/*delay(4000);
while(!Serial);
Bridge.begin();
*/
// Bridge startup
pinMode(13, OUTPUT);
Bridge.begin();
digitalWrite(13, HIGH);
pinMode(A0, INPUT);
// Listen for incoming connection only from localhost
// (no one from the external network could connect)
server.listenOnLocalhost();
server.begin();
// get the time that this sketch started:
Process startTime;
startTime.runShellCommand("date");
while (startTime.available()) {
char c = startTime.read();
startString += c;
}
Serial.println("yeah\n");
Serial.println(startTime);
}
void loop() {
// Get clients coming from server
Serial.println("a\n");
YunClient client = server.accept();
// There is a new client?
if (client) {
Serial.println("Client!\n");
// read the command
String command = client.readString();
client.print('(This should definitely be sent over bridge)');
/*command.trim(); //kill whitespace
Serial.println(command);
// is "temperature" command?
if (command == "temperature") {
// get the time from the server:
Process time;
time.runShellCommand("date");
String timeString = "";
while (time.available()) {
char c = time.read();
timeString += c;
}
Serial.println(timeString);
int sensorValue = analogRead(A0);
// convert the reading to millivolts:
client.print("Current time on the Yún: ");
client.println(timeString);
client.print("<br>Current value: ");
client.print(sensorValue);
client.print("<br>This sketch has been running since ");
client.print(startString);
client.print("<br>Hits so far: ");
client.print(hits);
}*/
// Close connection and free resources.
client.stop();
hits++;
}
delay(50); // Poll every 50ms
}
我在串口监视器中多次看到“a”,但从未在arduino.local/arduino/temperature
网址中看到任何内容,只是空白回复。
更进一步,过了一段时间,似乎云正在断开与网络的连接,无法通过http或ssh访问。考虑到ssh是与这台计算机通信的主要方式,如何调试这样的问题?
答案 0 :(得分:1)
在我自己的配置上逐步调试后,我发现代码从未超过Bridge.begin()。
经过进一步调查,我发现默认的桥接波特率250000不再与内核波特率115200相匹配。
更改为:Bridge.begin(115200)
...为我解决了问题。
要确定内核速度,请从终端运行cat /proc/cmdline
到您的内容
有关详细信息,请参阅此链接:https://groups.google.com/forum/#!msg/linino/-rSmpjX4UOM/Cnjv-uzrlfgJ
如果这不是您的问题,请考虑在Bridge.cpp的实际源文件中添加调试信息(即.. Serial.print())等。不幸的是,似乎Arduino / Linino开发人员经常进行重大更改并且没有资源来更新文档,示例等。
答案 1 :(得分:0)
如果您使用的是Windows,请不要使用“arduino.local”,因为Windows在解析此主机时遇到问题。 你试过IP地址吗? 你必须通过wifi转发你的脚本,而不是通过串口(在arduino Ide中你必须改变端口) 你创建了路径'arduino / www /'
您需要在您的Yún上插入micro SD卡,并在根目录下输入名为“arduino”的文件夹。在“arduino”文件夹中,必须有一个名为“www”的目录。您需要通过WiFi上传草图以传输本地“www”文件夹的内容。您无法通过USB传输文件。上传后,您可以打开自己喜欢的浏览器并转到http://arduino.local/sd/TemperatureWebPanel。
答案 2 :(得分:0)
如果您使用的是 Yun Shield,您需要注释掉串行命令或删除对串行的所有引用,因为桥接器和串行端口都共享相同的硬件串行。我遇到了同样的问题,没有连接。
答案 3 :(得分:-1)
将serial.begin(115...)
替换为Bridge.begin()
。