2017-07-22 102 views
-1

我目前正在为我的最终项目工作,但我遇到了问题。我想使用XAMPP和phpMyAdmin将我的传感器数据发送到MySQL数据库。我一直在使用NodeMCU进行WiFi连接。但我无法发送价值。将数据从NodeMCU保存到PHP MySQL

这是我工作的完整代码。

#include <ESP8266HTTPClient.h> 
#include <ESP8266WiFi.h> 
#include <WiFiEsp.h> 
#include <WiFiEspClient.h> 

// Sensor 1 
int sensorPin1 = 5; 
int ledPin1 = 13; 

// Sensor 2 
int sensorPin2 = 4; 
int ledPin2 = 12; 

// Sensor 3 
int sensorPin3 = 0; 
int ledPin3 = 14; 

//Wifi Connection 
const char* ssid = "xxxxxx"; 
const char* password = "xxxxx"; 
const char* web = "192.168.1.69"; 

int status = WL_IDLE_STATUS; 

WiFiServer server(80); 

//Initialize the Wifi werver library 
WiFiClient client; 


void setup(void) { 
    //start serial port 
    Serial.begin(9600); 

    pinMode(ledPin1, OUTPUT); 
    pinMode(ledPin2, OUTPUT); 
    pinMode(ledPin3, OUTPUT); 

    // Connect to WiFi network 
    Serial.println(); 
    Serial.println(); 
    Serial.print("Connecting to "); 
    Serial.println(ssid); 

    WiFi.begin(ssid, password); 

    while (WiFi.status() != WL_CONNECTED) {  
    delay(500);  
    Serial.print("."); 
    } 
    Serial.println(""); 
    Serial.println("WiFi connected"); 
    // Start the server 
    server.begin(); 
    Serial.println("Server started"); 
    // Print the IP address 
    Serial.print("This is your ip address: "); 
    Serial.print(WiFi.localIP()); 

} 

void loop() { 
    // Check if a client has connected 
    WiFiClient client = server.available(); 
    if (!client) {  
    return; 
    } 
    // Wait until the client sends some data 
    Serial.println("new client"); 
    while(!client.available()){  
    delay(1); 
    } 
    // Read the first line of the request 
    String request = client.readStringUntil('\r'); 
    Serial.println(request); 
    client.flush(); // Match the request 
if (client.connect(web, 80)) { 
    int sensor = digitalRead(sensorPin1); 
    int sensor1 = digitalRead(sensorPin2); 
    int sensor2 = digitalRead(sensorPin3); 
    //connect to the server (your computer or web page) 
    Serial.println("--> connection ok\n"); 
    client.print("POST /smart_parking/sensor.php?"); //This 
    client.print("sensor="); 
    client.print(sensor); 
    client.print("&sensor1="); 
    client.print(sensor1); 
    client.print("&sensor2="); 
    client.print(sensor2); 
// client.print("sensor="); //This 
// client.print("100"); 
    client.println(" HTTP/1.1"); 
    client.print("Host: "); 
    client.println(web); 
    client.println("Connection: close"); //Part of the GET request telling the server that we are over transmitting the message 
    client.println();//empty line 
    client.println(); //empty line 
    client.stop(); //Closing connection to server 
    Serial.println("--> finished transmission\n"); 
    } 
    else { 
    // If Arduino can't connect to the server (your computer or web page) 
    Serial.println("--> connection failed\n"); 
    } 
} 
+0

好密码.... – Farkie

回答

0

希望它有帮助! :)

#include <ESP8266HTTPClient.h> 
#include <ESP8266WiFi.h> 

// Sensor 1 
int sensorPin1 = 5; 
int ledPin1 = 13; 

// Sensor 2 
int sensorPin2 = 4; 
int ledPin2 = 12; 

// Sensor 3 
int sensorPin3 = 0; 
int ledPin3 = 14; 

void setup() { 

    pinMode(ledPin1, OUTPUT); 
    pinMode(ledPin2, OUTPUT); 
    pinMode(ledPin3, OUTPUT); 
    Serial.begin(115200);         //Serial connection 
    WiFi.begin("yourSSID", "yourPASS"); //WiFi connection 

    while (WiFi.status() != WL_CONNECTED) { //Wait for the WiFI connection completion 

    delay(500); 
    Serial.println("Waiting for connection"); 

    } 

} 

void loop() { 

if(WiFi.status()== WL_CONNECTED){ //Check WiFi connection status 

    HTTPClient http; //Declare object of class HTTPClient 
    int sensor = digitalRead(sensorPin1); 
    int sensor1 = digitalRead(sensorPin2); 
    int sensor2 = digitalRead(sensorPin3); 
    http.begin("http://192.168.1.69:80/smart_parking/sensor.php");  //Specify request destination 
    http.addHeader("Content-Type", "text/plain"); //Specify content-type header 
    String reqBody = "sensor=" + sensor + "&sensor1=" + sensor1 + "&sensor2=" + sensor2; 
    int httpCode = http.POST(reqBody); //Send the request 
    String payload = http.getString();     //Get the response payload 

    Serial.println(httpCode); //Print HTTP return code 
    Serial.println(payload); //Print request response payload 

    http.end(); //Close connection 

}else{ 

    Serial.println("Error in WiFi connection"); 

} 

    delay(30000); //Send a request every 30 seconds 

}