寻求建议让arduino和ESP8266 wifi模块读取网页上的PHP文件(不是局域网;我使用的是网页的域名和托管服务),这反映了#1;'或' 0'。如果它是' 1,我正在打开LED,如果' 0',则将其关闭。
例如,PHP文件看起来像这样打开LED:
<?php echo 1; ?>
我需要能够读取php文件以打开LED。在这种情况下,最好的方法是什么?将HTTP GET请求发送到ESP8266 wifi模块的IP地址是否更好?还是有办法对模块进行编程以读取php文件中的回显数据?还有另一个wifi模块可以让这更容易吗?
如果我没有说清楚,或者您需要进一步的信息告诉我,请告诉我。
提前感谢!
答案 0 :(得分:0)
我建议使用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";
}
?>
因此,除非您通过led
并且条件已满足,否则页面将始终显示为0.
如果您需要更多信息或更明确的回复,请更新您的问题并提供更多详细信息。发布你的代码。