1

我尝试为光传感器修改温度 Web 面板示例(在 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/temperatureurl 中看到任何内容,只是一个空白响应。

此外,一段时间后,云似乎与网络断开连接,无法通过 http 或 ssh 访问。考虑到 ssh 是与这台计算机通信的主要方式,如何调试这样的问题?

4

4 回答 4

1

在我自己的配置上一步一步调试之后,我发现代码从来没有超过 Bridge.begin()。

经过进一步调查,我发现默认的 Bridge 波特率 250000 不再匹配内核波特率 115200。

更改为: Bridge.begin(115200)...为我解决了这个问题。

要确定您的内核速度,请cat /proc/cmdline从终端运行到您的 Yun

有关更多信息,请参阅此链接:https ://groups.google.com/forum/#!msg/linino/-rSmpjX4UOM/Cnjv-uzrlfgJ

如果这不是您的问题,请考虑在 Bridge.cpp 等的实际源文件中添加调试信息(即 Serial.print())。不幸的是,似乎 Arduino/Linino 开发人员经常进行重大更改并且不拥有更新文档、示例等的资源。

于 2014-09-05T20:51:38.767 回答
0

如果您使用的是 Yun Shield,您需要注释掉串行命令或删除所有对串行的引用,因为桥接器和串行端口都共享相同的硬件串行。我遇到了同样的问题,没有连接。

于 2021-04-24T08:43:30.413 回答
0

如果您使用的是 Windows,请不要使用“arduino.local”,因为 Windows 无法解决此主机问题。您是否尝试过使用 IP 地址?您必须通过 wifi 传输您的脚本,而不是通过串行传输(在 arduino Ide 中您必须更改端口)您是否创建了路径“arduino/www/”

您需要将微型 SD 卡插入您的 Yún,根目录下有一个名为“arduino”的文件夹。在“arduino”文件夹内,必须有一个名为“www”的目录。您需要通过 WiFi 上传草图以传输本地“www”文件夹的内容。您无法通过 USB 传输文件。上传后,您可以打开您喜欢的浏览器并转到http://arduino.local/sd/TemperatureWebPanel

你必须打开http://YUNS_IP/sd/TemperatureWebPanel

于 2017-08-07T09:10:18.847 回答
-1

Replace serial.begin(115...) by Bridge.begin().

于 2015-10-22T19:10:22.337 回答