39082浏览
查看: 39082|回复: 0

[项目] 树莓派PHP+mariadb实现传感器数据记录与显示

[复制链接]
本帖最后由 宙仔 于 2024-1-9 00:03 编辑

原本打算做一个树莓派实时显示传感器数值,并用图表显示的项目,由于时间和技术问题,只好做个半成品了~~~


器材:树莓派3B,温湿度传感器,杜邦线若干
软件:python3,PHP,nginx,Mariadb。


一、环境配置:

步骤1.安装nginx,php7.3,mariadb-Server;

  1.     sudo apt-get install nginx
  2.     sudo apt-get install php-fpm
  3.     sudo apt-get install mariadb-server
复制代码

步骤2.配置nginx支持php;网上有教程,略

步骤3.配置mariadb,网上有教程,略。
在mariadb中创建数据库,在终端中输入以下命令登录mysql:
  1. mysql -u root -p
复制代码
输入密码后,创建一个名为dht11的数据库:
  1. CREATE DATABASE dht11;
复制代码

然后创建一个名为dht11_data的表:
  1. USE dht11;
  2. CREATE TABLE dht11_data (
  3.     id INT(11) NOT NULL AUTO_INCREMENT,
  4.     temperature FLOAT(4,2) NOT NULL,
  5.     humidity FLOAT(4,2) NOT NULL,
  6.     time DATETIME NOT NULL,
  7.     PRIMARY KEY (id)
  8. );
复制代码
二、硬件连接

  DHT11   VCC→5V,GNDGND,DATAGPIO4;为了稳定读取数据,加一个10KΩ的上拉电阻。

三、Python编程


需要安装几个库文件:Adafruit_DHT,pymysql

  1. import Adafruit_DHT
  2. import pymysql.cursors
  3. import time
  4. from datetime import datetime
  5. # 设置传感器类型和GPIO引脚
  6. sensor = Adafruit_DHT.DHT11
  7. pin = 4
  8. # 连接mysql数据库
  9. mydb = pymysql.connect(
  10.     host="localhost",
  11.     user="username",
  12.     password="password",
  13.     database="dht11"
  14. )
  15. # 获取游标
  16. mycursor = mydb.cursor()
  17. # 读取温湿度数据
  18. humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
  19. # 如果读取成功
  20. if humidity is not None and temperature is not None:
  21.     with mycursor as cursor:
  22.         while True:            
  23.             # 打印温湿度数据
  24.             print('Temperature={0:0.1f}*C  Humidity={1:0.1f}%'.format(temperature, humidity))
  25.             
  26.             # 将温湿度数据插入到mysql数据库中
  27.             sql = "INSERT INTO dht11_data (temperature, humidity, time) VALUES (%s, %s, %s)"
  28.             val = (temperature, humidity, datetime.now())
  29.             mycursor.execute(sql, val)
  30.             mydb.commit()
  31.             time.sleep(10)
  32. # 如果读取失败
  33. else:
  34.     print('Failed to get reading. Try again!')
复制代码
python程序运行情况:
树莓派PHP+mariadb实现传感器数据记录与显示图3

通过登录数据库查看dht11表中的数据:
  1. SELECT * FROM dht11_data;
复制代码

树莓派PHP+mariadb实现传感器数据记录与显示图1

四、编写php网页

1.数据连接
  1. <?php
  2. $cn=new mysqli("host","username","password","dht11",3306);//获取数据库连接
  3. if (!$cn)//判断连接是否为空
  4. {
  5. die("连接错误: " . mysqli_connect_error());//连接失败 打印错误日志
  6. }
  7. $cn->query("SET NAMES utf8");//设置 字符集为utf8格式
  8. $cn->select_db("dht11_data");//选择要操作的数据表
  9. ?>
复制代码
2.数据查询
  1. <?php
  2. require ("DBcon.php");    //    相对路径引用数据库连接类
  3. $sql="select * from dht11_data";   
  4. mysqli_query($cn,$sql);    //传入数据库连接参数,sql字符串。
  5. $res=$cn->query($sql);    //接收查询产生的结果集
  6. $row=mysqli_fetch_assoc($res);    //将结果集赋值给数组对象
  7. echo $row["id"]."".$row["temperature"]."".$row["humidity".$row["time"];   //输出结果
  8. ?>
复制代码
3.数据显示
  1. <?php
  2. $refreshTime = 5;
  3. #连接数据库
  4. $conn = mysqli_connect("host","username","password","dht11",3306);
  5. #判断是否连接成功
  6. if(!$conn){
  7. echo "失败";
  8. }
  9. //选择数据库
  10. mysqli_select_db($conn,"dht11");
  11. //准备sql语句
  12. $sql = "select * from dht11_data order by id desc";
  13. //发送sql语句
  14. $obj = mysqli_query($conn,$sql);
  15. echo "<center>";
  16.     echo "<table border = 1 cellspacing = '0' cellpadding = '10'>";
  17.         echo "<th>编号</th><th>温度</th><th>湿度</th><th>时间</th>";
  18.         while($row = mysqli_fetch_assoc($obj)){
  19.         echo "<tr>";
  20.             echo '<td>'.$row['id'].'</td>';
  21.             echo '<td>'.$row['temperature'].'</td>';
  22.             echo '<td>'.$row['humidity'].'</td>';
  23.             echo '<td>'.$row['time'].'</td>';
  24.             echo "</tr>";
  25.         }
  26.         echo "</table>";
  27.     echo "<center>";
  28.         //关闭连接
  29.         mysqli_close($conn);
  30. header("Refresh:$refreshTime");
  31. ?>
复制代码

数据显示情况:
树莓派PHP+mariadb实现传感器数据记录与显示图2


以上只是练手,还不是自己想要的项目内容,假期继续完善……





MonJanuary-202401089052..png
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail