我很难通过以太网盾将arduino数据发布到php中。我有来自arduino(环境温度,设备等)的数据,并希望将其存储到mysql数据库中并显示在php网页上。所以我发现有人在github:https://github.com/ericbenwa/POST-Arduino-Data-Wireless/blob/master/arduino_post/arduino_post.ino
上进行无线连接所以我决定从它修改一些代码并在我的localhost服务器上执行。但是当我在arduino上运行时,它没有连接并且连接失败。请帮忙!
//#包括 // #include
// EDIT: Change the 'ssid' and 'password' to match your network
//char ssid[] = "yournetwork"; // wireless network name
//char password[] = "yourpassword"; // wireless password
//int status = WL_IDLE_STATUS;
//WiFiClient client;
#include <Ethernet.h>
#include <SPI.h>
byte mac[] = { 0x90,0xA2,0xDA,0x0D,0x0D,0xB1}; //Replace with your Ethernet shield MAC
EthernetClient client;
IPAddress ip(198, 100, 130, 65); //ethernet ip address attatched to my ethernet shield
// EDIT: 'Server' address to match your domain
char server[] = "127.0.0.1"; // This could also be 192.168.1.18/~me if you are running a server on your computer on a local network.
// This is the data that will be passed into your POST and matches your mysql column
int yourarduinodata = 999;
String yourdatacolumn = "yourdata=";
String yourdata;
void setup()
{
Serial.begin(9600);
Ethernet.begin(mac,ip);
delay(1000);
Serial.println("connecting...");
postData();
}
// This is the data that will be passed into your POST and matches your mysql column
/*int yourarduinodata = 999;
String yourdatacolumn = "yourdata=";
String yourdata;
void setup() {
Serial.begin(9600);
connectWifi();
// You're connected now, so print out the status
printWifiStatus();
postData();
}*/
void loop() {
}
/*void connectWifi() {
// Attempt to connect to wifi network
while ( status != WL_CONNECTED) {
Serial.print("Attempting to connect to SSID: ");
Serial.println(ssid);
status = WiFi.begin(ssid, password);
// Wait 10 seconds for connection
delay(10000);
}
}*/
/*void printWifiStatus() {
// Print the SSID of the network you're attached to
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// Print your WiFi shield's IP address
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
// Print the received signal strength
long rssi = WiFi.RSSI();
Serial.print("signal strength (RSSI):");
Serial.print(rssi);
Serial.println(" dBm");
}*/
// This method makes a HTTP connection to the server and POSTs data
void postData() {
// Combine yourdatacolumn header (yourdata=) with the data recorded from your arduino
// (yourarduinodata) and package them into the String yourdata which is what will be
// sent in your POST request
yourdata = yourdatacolumn + yourarduinodata;
// If there's a successful connection, send the HTTP POST request
if (client.connect(server, 80)) {
Serial.println("connecting...");
// EDIT: The POST 'URL' to the location of your insert_mysql.php on your web-host
client.println("POST /data/insert_mysql.php HTTP/1.1");
// EDIT: 'Host' to match your domain
client.println("Host:127.0.0.1 ");
client.println("User-Agent: Arduino/1.0");
client.println("Connection: close");
client.println("Content-Type: application/x-www-form-urlencoded;");
client.print("Content-Length: ");
client.println(yourdata.length());
client.println();
client.println(yourdata);
}
else {
// If you couldn't make a connection:
Serial.println("Connection failed");
Serial.println("Disconnecting.");
client.stop();
}
}
答案 0 :(得分:1)
您在此处显示的程序在您的设备上运行,对吗?
主机IP号127.0.0.1是一个特殊的IP地址。它总是意味着“当前程序运行的机器”。因此,您的arduino代码正在尝试连接到同一个arduino设备上的Web服务器,而不是您的服务器。
您需要使用要连接的服务器计算机的网络IP地址。更新此行。
char server[] = "127.0.0.1"
我会告诉你这里要放什么,但我不知道。您必须找出服务器的IP地址。