将数据从NodeMCU保存到PHP MySQL

问题描述 投票:-1回答:2

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

这是我工作的完整代码。

#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");
  }
}
php mysql arduino nodemcu
2个回答
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

}

0
投票

使用此示例代码

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

/* Set these to your desired credentials. */
const char *ssid = "";  //ENTER YOUR WIFI SETTINGS
const char *password = "";

//Web/Server address to read/write from 
const char *host = "192.168.8.100";   / website or IP address of server

//=======================================================================
//                    Power on setup
//=======================================================================

void setup() {
  delay(1000);
  Serial.begin(115200);
  WiFi.mode(WIFI_OFF);        //Prevents reconnection issue (taking too long to connect)
  delay(1000);
  WiFi.mode(WIFI_STA);        //This line hides the viewing of ESP as wifi hotspot

  WiFi.begin(ssid, password);     //Connect to your WiFi router
  Serial.println("");

  Serial.print("Connecting");
  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  //If connection successful show IP address in serial monitor
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());  //IP address assigned to your ESP
}

//=======================================================================
//                    Main Program Loop
//=======================================================================

void loop() {
  HTTPClient http;    //Declare object of class HTTPClient

  String ADCData, station, postData;
  int adcvalue=analogRead(A0);  //Read Analog value of LDR
  ADCData = String(adcvalue);   //String to interger conversion
  station = "A";

  //Post Data
  postData = "status=" + ADCData + "&station=" + station ;

  http.begin("http://192.168.8.100/Plot_01/test.py");              //Specify request destination
  http.addHeader("Content-Type", "application/x-www-form-urlencoded");    //Specify content-type header

  int httpCode = http.POST(postData);   //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

  delay(5000);  //Post Data at every 5 seconds
}
//=======================================================================
© www.soinside.com 2019 - 2024. All rights reserved.