0

寻求有关让 arduino 和 ESP8266 wifi 模块读取网页(不是 LAN;我正在使用网页的域名和托管服务)上的 PHP 文件的建议,该文件回显“1”或“0”。如果它是“1”,我正在考虑打开 LED,如果是“0”,则将其关闭。

例如,打开 LED 的 PHP 文件如下所示: <?php echo 1; ?>

我需要能够读取 php 文件才能打开 LED。在这种情况下,最好的方法是什么?向 ESP8266 wifi 模块的 IP 地址发送 HTTP GET 请求是否更好,或者有没有办法对模块进行编程以从 php 文件中读取回显数据?是否有另一个 wifi 模块可以使这更容易?

如果我没有说清楚,或者您需要更多信息来告诉我,请告诉我。

提前致谢 !

4

1 回答 1

0

我建议使用HTTP GET来自 Arduino 的请求。根据您的堆栈代码,如果未设置 DNS,它可能无法解析域名。因此,除非您知道它可以将您的域解析为正确的 IP,否则我建议您使用 IP。您可以在 WebClient 示例中查看更多信息:http ://www.arduino.cc/en/Tutorial/WebClient

  // if you get a connection, report back via serial:
  if (client.connect(server, 80)) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /arduino.php?led=1 HTTP/1.1");
    client.println("Host: www.yourwebsite.com");
    client.println("Connection: close");
    client.println();
  }
  else {
    // kf you didn't get a connection to the server:
    Serial.println("connection failed");
  }

然后在您的循环中,您寻找正确的响应(假设LEDPIN已在设置中定义):

void loop()
{
  // if there are incoming bytes available
  // from the server, read them and print them:
  if (client.available()) {
    char c = client.read();
    if(c == 1){
      digitalWrite(LEDPIN, HIGH);
    } else {
      digitalWrite(LEDPIN, LOW);
    }
    Serial.print(c);
  }

  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();

    // do nothing forevermore:
    while(true);
  }
}

然后 PHP 可以执行以下操作:

<?php

if(isset($_GET['led']) && $_GET['led']){
  // LED is on, send 0 to turn it off
  echo "0";
} else {
  // Turn LED on
  echo "1";
}

?>

所以页面总是会显示一个0,除非你通过了一个led被通过并且条件得到满足。

如果您需要更多信息或更明确的答复,请更新您的问题并提供更多详细信息。发布您的代码。

于 2015-04-28T18:24:31.297 回答