亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino 传感器数据上传 MySQL 数据库:PHPMyAdmin 完整指南

零部件与物料

零部件 数量 备注
Arduino UNO 1 主控板
Arduino Ethernet Shield 2 1 有线网络连接
DHT11 温湿度传感器(3 针) 1 数字输出

项目简介

本教程详细演示如何将 Arduino 采集的传感器数据通过以太网上传至 MySQL 数据库,并使用 PHPMyAdmin 进行可视化管理。适合物联网入门者快速掌握「设备 → 网关 → 数据库」的完整数据链路。

软件准备

1. Arduino IDE

下载最新版:https://www.arduino.cc/en/Main/Software

2. 本地服务器环境搭建

Windows 推荐 XAMPP(含 Apache、MySQL、PHP、PHPMyAdmin):

Linux (Ubuntu) 推荐 LAMP 栈:

sudo apt-get update
sudo apt-get install apache2
sudo apt-get install mysql-server
sudo apt-get install php libapache2-mod-php php-mysql
sudo systemctl restart apache2
sudo apt-get install phpmyadmin

安装过程中需配置 MySQL root 密码、选择 Apache2 作为 Web 服务器。完成后访问 https://localhost/phpmyadmin 验证。

硬件连接

  1. 将 Ethernet Shield 2 直接堆叠在 Arduino UNO 上
  2. 用 RJ45 网线连接路由器/交换机
  3. DHT11 接线:VCC→5V、GND→GND、DATA→Digital Pin 2
Arduino 传感器数据上传 MySQL 数据库:PHPMyAdmin 完整指南
Ethernet Shield + DHT11 接线图

数据库准备

在 PHPMyAdmin 中创建数据库 arduino_data,建表 sensor_log:

CREATE TABLE sensor_log (
  id INT AUTO_INCREMENT PRIMARY KEY,
  temperature FLOAT,
  humidity FLOAT,
  recorded_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

PHP 接收脚本 (save_data.php)

放置在 Web 服务器根目录(如 /var/www/html/ 或 XAMPP 的 htdocs/):

<?php
$host = "localhost";
$user = "root";
$pass = "your_mysql_password";
$db   = "arduino_data";

$conn = new mysqli($host, $user, $pass, $db);
if ($conn->connect_error) {
  die("连接失败: " . $conn->connect_error);
}

$temp = $_GET["temp"] ?? "";
$humi = $_GET["humi"] ?? "";

if ($temp !== "" && $humi !== "") {
  $stmt = $conn->prepare("INSERT INTO sensor_log (temperature, humidity) VALUES (?, ?)");
  $stmt->bind_param("dd", $temp, $humi);
  $stmt->execute();
  echo "OK";
} else {
  echo "参数缺失";
}
$conn->close();
?>

Arduino 代码

#include <SPI.h>
#include <Ethernet.h>
#include <DHT.h>

#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(192, 168, 1, 100);  // 你的服务器局域网 IP
EthernetClient client;

unsigned long lastSend = 0;
const unsigned long interval = 30000;  // 30 秒上传一次

void setup() {
  Serial.begin(9600);
  dht.begin();

  if (Ethernet.begin(mac) == 0) {
    Serial.println("DHCP 失败,使用静态 IP");
    IPAddress ip(192, 168, 1, 177);
    Ethernet.begin(mac, ip);
  }
  delay(1000);
  Serial.print("本机 IP: ");
  Serial.println(Ethernet.localIP());
}

void loop() {
  if (millis() - lastSend > interval) {
    float h = dht.readHumidity();
    float t = dht.readTemperature();

    if (isnan(h) || isnan(t)) {
      Serial.println("读取 DHT11 失败");
      return;
    }

    if (client.connect(server, 80)) {
      String url = "/save_data.php?temp=" + String(t) + "&humi=" + String(h);
      client.print(String("GET ") + url + " HTTP/1.1\r\n" +
                   "Host: " + server.toString() + "\r\n" +
                   "Connection: close\r\n\r\n");
      Serial.println("数据已发送: " + url);
    } else {
      Serial.println("连接服务器失败");
    }
    client.stop();
    lastSend = millis();
  }
}

验证与进阶

原理图

Arduino 传感器数据上传 MySQL 数据库:PHPMyAdmin 完整指南
系统整体原理图

制造工艺

  1. 打造低成本家庭无线传感器网络:Arduino + 树莓派 + Xively 物联网平台
  2. 两块 Arduino 通过 Firebase 传递温湿度数据
  3. 基于 Infineon 3D 磁传感器的 Arduino 无线磁通讯实验
  4. K30 CO₂ 传感器:室内空气质量实时监测
  5. Arduino + DHT11 + 以太网盾板温湿度数据记录仪
  6. DIY 数字身高仪:Arduino Nano + VL53L0X 激光测距 + OLED 显示
  7. 自制简易红外避障传感器:IR LED + 光电二极管 + Arduino
  8. DFRobot 电容指纹传感器 (ID809) 接入 Arduino/ESP8266 完整教程
  9. Arduino Cloud 传感器塔:温度、动作与气体监测
  10. 基于 Arduino Nano 的智能运动感应水枪
  11. 紧凑型Arduino雷达系统:HC-SR04超声波传感器配1.8英寸显示屏
  12. Arduino 传感器数据上传 MySQL 数据库:PHPMyAdmin 完整指南