ESP32是一款功能強(qiáng)大的物聯(lián)網(wǎng)設(shè)備,它可以通過WiFi模塊實現(xiàn)數(shù)據(jù)的上傳和下載。為了方便管理數(shù)據(jù),我們可以使用MySQL數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲。
假設(shè)我們已經(jīng)搭建好了MySQL環(huán)境并建立了一張數(shù)據(jù)表,我們需要在ESP32端編寫代碼實現(xiàn)數(shù)據(jù)的上傳操作。下面是一個示例代碼:
#include <WiFi.h> #include <MySQL_Connection.h> #include <MySQL_Cursor.h> // WiFi連接信息 const char* ssid = "your_SSID"; const char* password = "your_password"; // MySQL連接信息 IPAddress server_addr(192,168,1,100); unsigned int server_port = 3306; const char* user = "your_username"; const char* password = "your_password"; const char* database = "your_database"; // 數(shù)據(jù)上傳的SQL語句 char* insert_stmt = "INSERT INTO your_table (data1, data2, data3) VALUES (%d, %d, %d)"; // 數(shù)據(jù) int data1 = 10; int data2 = 20; int data3 = 30; // WiFi客戶端對象 WiFiClient client; // MySQL連接對象和游標(biāo)對象 MySQL_Connection conn((Client*)&client); MySQL_Cursor* cursor; void setup() { Serial.begin(115200); // WiFi連接 WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } // MySQL連接 if (conn.connect(server_addr, server_port, user, password, database)) { Serial.println("Connected to MySQL."); cursor = new MySQL_Cursor(&conn); } else { Serial.println("MySQL connection failed."); while (1); } } void loop() { // 發(fā)送SQL語句 char stmt[100]; sprintf(stmt, insert_stmt, data1, data2, data3); cursor->execute(stmt); // 延時1s,上傳數(shù)據(jù)周期可以根據(jù)需求設(shè)置 delay(1000); }
在這段示例代碼中,我們首先定義了WiFi連接信息和MySQL連接信息。在setup()函數(shù)中,我們通過WiFi.begin()函數(shù)連接無線網(wǎng)絡(luò),然后通過MySQL_Connection對象的connect()函數(shù)連接MySQL數(shù)據(jù)庫。如果連接成功,我們就可以創(chuàng)建一個MySQL_Cursor對象,用于執(zhí)行SQL語句。
在loop()函數(shù)中,我們通過sprintf()函數(shù)將數(shù)據(jù)插入到SQL語句中,然后通過MySQL_Cursor對象的execute()函數(shù)發(fā)送SQL語句。上傳數(shù)據(jù)的周期可以根據(jù)需要設(shè)置,這里我們簡單地設(shè)置為1s。
總的來說,ESP32上傳數(shù)據(jù)到MySQL非常方便,我們只需要在代碼中設(shè)置好WiFi和MySQL連接信息,然后編寫SQL語句即可。有了這樣的功能,我們可以輕松地實現(xiàn)數(shù)據(jù)的采集和存儲,為我們的物聯(lián)網(wǎng)應(yīng)用帶來更多可能性。