引言
在物联网(IoT)项目中,数据采集是核心环节。ESP32 Mini作为一款体积小巧、性能强大的微控制器,凭借其内置Wi-Fi和蓝牙功能,成为DIY项目的热门选择。然而,很多初学者在将ESP32 Mini采集的数据存储到数据库时常常遇到困难。本文将回答一个具体问题:如何用ESP32 Mini和PHP从零搭建MySQL数据采集系统?我们将从硬件连接、固件编写、PHP后端开发到数据库配置,提供完整的解决方案。
硬件准备与连接
首先,你需要以下硬件:
- ESP32 Mini开发板(如NodeMCU-32S)
- 传感器(例如DHT11温湿度传感器)
- 面包板和杜邦线
- Micro USB数据线
ESP32 Mini固件开发
使用Arduino IDE编写固件。首先安装ESP32开发板支持包,然后编写代码读取传感器数据并通过HTTP POST发送到PHP服务器。关键代码如下:
#include <WiFi.h>
#include <HTTPClient.h>
#include <DHT.h>
#define DHTPIN 4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
const char* ssid = "你的WiFi名称";
const char* password = "你的WiFi密码";
const char* serverUrl = "http://你的服务器地址/insert.php";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("连接WiFi...");
}
dht.begin();
}
void loop() {
float temp = dht.readTemperature();
float hum = dht.readHumidity();
if (isnan(temp) || isnan(hum)) {
Serial.println("传感器读取失败");
return;
}
HTTPClient http;
http.begin(serverUrl);
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
String postData = "temperature=" + String(temp) + "&humidity=" + String(hum);
int httpCode = http.POST(postData);
if (httpCode > 0) {
Serial.println("数据发送成功");
} else {
Serial.println("数据发送失败");
}
http.end();
delay(60000); // 每分钟发送一次
}PHP后端与MySQL数据库
在服务器上创建MySQL数据库和表。例如,数据库名为sensor_data,表名为readings,包含字段id(自增主键)、temperature、humidity和timestamp。SQL语句如下:
CREATE DATABASE sensor_data;
USE sensor_data;
CREATE TABLE readings (
id INT AUTO_INCREMENT PRIMARY KEY,
temperature FLOAT NOT NULL,
humidity FLOAT NOT NULL,
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);然后编写PHP文件insert.php接收数据并写入数据库:
<?php
$servername = "localhost";
$username = "数据库用户名";
$password = "数据库密码";
$dbname = "sensor_data";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$temp = $_POST['temperature'];
$hum = $_POST['humidity'];
$sql = "INSERT INTO readings (temperature, humidity) VALUES ('$temp', '$hum')";
if ($conn->query($sql) === TRUE) {
echo "数据插入成功";
} else {
echo "错误: " . $sql . "
" . $conn->error;
}
$conn->close();
?>测试与调试
上传固件到ESP32 Mini,打开串口监视器观察连接状态。确保WiFi连接成功且数据发送无错误。然后通过浏览器访问PHP文件或使用Postman测试POST请求。如果一切正常,MySQL中会持续添加新记录。
常见问题解决
1. ESP32 Mini无法连接WiFi:检查SSID和密码是否正确,确保路由器允许设备连接。 2. 数据发送失败:检查服务器地址是否可达,PHP文件是否有写入权限。 3. 数据库插入失败:检查SQL语句语法,确保字段名匹配。 4. 传感器读数异常:检查接线,尝试更换传感器。
扩展与优化
你可以进一步优化系统:
- 添加数据验证和清洗,防止SQL注入(建议使用预处理语句)。
- 使用JSON格式传输数据,提高可扩展性。
- 添加Web界面实时显示数据(基于PHP和Chart.js)。
- 集成MQTT协议实现更高效的数据传输。
总结
通过本文,你学会了如何用ESP32 Mini、PHP和MySQL构建一个完整的数据采集系统。整个过程门槛低,适合DIY爱好者实践。希望你能在此基础上发挥创意,打造更多有趣的物联网应用。
请先登录后再发布评论