ESP8266 wifi模块读取PHP文件

6za6bjd0  于 2023-03-16  发布在  PHP
关注(0)|答案(1)|浏览(156)

寻求建议,让arduino和ESP8266 wifi模块读取网页上的PHP文件(而不是局域网;我正在使用网页的域名和托管服务),如果它是"1“或”0“,我正在查看打开LED,如果是”0“,则关闭它。
例如,打开LED时,PHP文件如下所示:<?php echo 1; ?>
我需要能够读取php文件来打开LED。在这种情况下,最好的方法是什么?发送HTTP GET请求到ESP8266 WiFi模块的IP地址是否更好,或者是否有一种方法可以编程模块来读取php文件中的回显数据?是否有其他WiFi模块可以使此操作更容易?
如果我没有说清楚,或者你需要更多的信息来向我提供建议,请告诉我。
先谢了!

km0tfn4u

km0tfn4u1#

我建议使用来自Arduino的HTTP GET请求。根据您的堆栈代码,如果没有设置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并且满足条件。
如果您需要更多信息或更明确的答复,请更新您的问题与更多细节.张贴您的代码.

相关问题