我正在尝试使用Arduino和以太网PHP访问服务器中的shield文件。此文件捕获URL参数"传感器"和"价值"并将读取的数据存储到数据库中。
这是我的代码:
#include <SPI.h>
#include <Ethernet.h>
EthernetClient client;
byte MACaddress[] = {0xDE,0xAD,0xBE,0xEF,0xFE,0xED};
byte IPaddress[] = {10,0,0,178};
byte DNSserverIPaddress[] = {4,4,4,4};
byte gatewayIPaddress[] = { 10, 0, 0, 100 };
byte subnetMask[] = { 255, 255, 255, 0 };
char serverName[] = "log.server.com";
void setup() {
Serial.begin(9600);
Ethernet.begin(MACaddress, IPaddress, DNSserverIPaddress, gatewayIPaddress, subnetMask);
}
void loop()
{
delay (5000);
Serial.println("connecting to server...");
client.connect(serverName, 80);
Serial.println("making HTTP request...");
client.println("GET /logger.php?sensor=temp&value=19 HTTP/1.1");
client.println("HOST: log.server.com");
client.println();
}
将此代码上传到我的Arduino Mega +以太网屏蔽后,我的数据库中没有任何变化......
有什么问题?
答案 0 :(得分:1)
那么,首先你应该添加一个条件检查,以了解Arduino是否认为它是否有效:
if (client.connect(...)) {
/* Stuff you do on success */
}
else {
Serial.println("failure! :-(")
}
failure!
,则Arduino端出现网络配置问题。如果确实有效,问题出在Arduino之后。然后尝试使用nc -kl 42000
打开服务器,并在Arduino sketch中的42000
上更改连接的端口,以确保网络连接是否正常工作。
然后,您应该尝试连接到服务器的IP address而不是fully qualified domain name(FQDN)。如果可行,则可能是DNS服务器无法访问,您应该尝试使用8.8.8.8
(或本地网络的DNS服务器)。
同时检查您使用的IP地址是否确实无用(并且未由DHCP分配或由另一台计算机使用),以及MAC address确实未使用过。 (像{0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
这样的地址往往会在黑客中使用很多......)。
我的意见是,您的错误是无法访问的DNS服务器,因为4.4.4.4
上没有打开DNS解析器。