duanjianxi8439 2017-07-22 16:20
浏览 160

将数据从NodeMCU保存到PHP MySQL

I am currently working for my final project, but I have a problem. I want to send my sensor data to MySQL database using XAMPP and phpMyAdmin. I have been using NodeMCU for the WiFi connection. But I am unable to send the value.

Here is the full code of my work.

#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('');  
  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
");
    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
");
   }
    else {
    // If Arduino can't connect to the server (your computer or web page)
    Serial.println("--> connection failed
");
  }
}
  • 写回答

3条回答 默认 最新

  • doubu1950 2017-07-24 14:26
    关注

    Hope it helps! :)

    #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
    
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化