网站首页/ 信息中心/ 技术指南/

搭建综合档案管理系统配套树莓派温湿度监控零门槛实操指南

发布时间:2026年06月09日 14:05:24 浏览量:0

一、前置准备清单

1.1 硬件清单

1.2 软件准备

二、树莓派基础环境搭建

2.1 烧录Raspberry Pi OS Lite

打开Raspberry Pi Imager,点击「选择设备」选对应树莓派型号,点击「选择操作系统」→「Raspberry Pi OS (Other)」→「Raspberry Pi OS Lite (64-bit)」,点击「选择存储」选SD卡,务必点击右下角齿轮图标配置:

配置好点击「烧录」,完成后SD卡插入树莓派,通电等待2-3分钟启动。

2.2 连接树莓派并更新系统

Windows打开MobaXterm,点击左上角「Session」→「SSH」,远程主机填raspberry-archive.local,用户名pi,点击OK输入密码登录;Mac/Linux终端输入:

``` ssh pi@raspberry-archive.local ```

登录成功后执行以下命令更新系统:

``` sudo apt update && sudo apt upgrade -y ```

三、DHT22硬件连接与驱动配置

3.1 硬件接线(避免接反烧坏传感器)

树莓派GPIO引脚对应关系可通过SSH输入gpio readall查看(64位OS需先安装工具:sudo apt install wiringpi -y),按以下顺序连接:

3.2 安装DHT22 Python驱动

执行以下命令:

``` sudo apt install python3-pip -y sudo pip3 install Adafruit_DHT ```

四、本地温湿度采集与存储

4.1 创建SQLite数据库(无需额外安装数据库服务)

输入以下命令创建数据库和数据表:

``` python3 << 'EOF' import sqlite3 conn = sqlite3.connect('/home/pi/archive_env.db') c = conn.cursor() c.execute('''CREATE TABLE env_data (id INTEGER PRIMARY KEY AUTOINCREMENT, temperature REAL NOT NULL, humidity REAL NOT NULL, record_time DATETIME DEFAULT CURRENT_TIMESTAMP)''') conn.commit() conn.close() EOF ```

4.2 编写采集存储脚本

输入以下命令创建脚本文件:

``` nano /home/pi/get_env_data.py ```

将以下代码完整复制粘贴(Ctrl+Shift+V在MobaXterm中有效,Mac/Linux终端直接粘贴):

```python import Adafruit_DHT import sqlite3 import time 固定配置:传感器型号DHT22,GPIO4 sensor = Adafruit_DHT.DHT22 pin = 4 db_path = '/home/pi/archive_env.db' def read_and_save(): humidity, temperature = Adafruit_DHT.read_retry(sensor, pin) if humidity is not None and temperature is not None: 保留1位小数,符合档案温湿度精度要求 temp_rounded = round(temperature, 1) humi_rounded = round(humidity, 1) conn = sqlite3.connect(db_path) c = conn.cursor() c.execute('INSERT INTO env_data (temperature, humidity) VALUES (?, ?)', (temp_rounded, humi_rounded)) conn.commit() conn.close() if __name__ == "__main__": while True: read_and_save() 档案场景建议每5分钟采集1次,可修改此处调整间隔(单位:秒) time.sleep(300) ```

搭建综合档案管理系统配套树莓派温湿度监控零门槛实操指南

按Ctrl+X,输入Y,按Enter保存退出。

4.3 测试并设置开机自启动

先测试脚本:

``` python3 /home/pi/get_env_data.py & ```

按Ctrl+C退出前台,验证数据是否写入:

``` python3 << 'EOF' import sqlite3 conn = sqlite3.connect('/home/pi/archive_env.db') c = conn.cursor() print(c.execute('SELECT FROM env_data ORDER BY id DESC LIMIT 1').fetchall()) conn.close() EOF ```

设置开机自启动:

``` sudo nano /etc/systemd/system/archive-env.service ```

粘贴以下内容:

``` [Unit] Description=Archive Environment Monitor Service After=network.target [Service] User=pi WorkingDirectory=/home/pi ExecStart=/usr/bin/python3 /home/pi/get_env_data.py Restart=always [Install] WantedBy=multi-user.target ```

保存退出后执行:

``` sudo systemctl daemon-reload sudo systemctl enable archive-env.service sudo systemctl start archive-env.service ```

查看服务状态:

``` sudo systemctl status archive-env.service ```

显示active (running)即为成功。

五、对接现有综合档案管理系统(HTTP接口方式)

5.1 前置条件

现有系统需提供接收JSON格式温湿度数据的POST接口,接口示例字段:temperature(浮点数)、humidity(浮点数)、device_id(字符串,设备唯一标识)、record_time(ISO格式时间)。

5.2 修改采集脚本添加接口对接

输入以下命令打开原有脚本:

``` nano /home/pi/get_env_data.py ```

替换为以下完整代码(替换前请修改第13-15行的接口配置):

```python import Adafruit_DHT import sqlite3 import time import requests from datetime import datetime 固定硬件配置 sensor = Adafruit_DHT.DHT22 pin = 4 db_path = '/home/pi/archive_env.db' 请修改此处对接配置 API_URL = "http://your-archive-system.com/api/env-data" 替换为你的档案系统接口地址 DEVICE_ID = "archive-001" 替换为你的设备唯一标识 def read_and_save(): humidity, temperature = Adafruit_DHT.read_retry(sensor, pin) if humidity is not None and temperature is not None: temp_rounded = round(temperature, 1) humi_rounded = round(humidity, 1) record_time_iso = datetime.now().isoformat() 本地存储备份 conn = sqlite3.connect(db_path) c = conn.cursor() c.execute('INSERT INTO env_data (temperature, humidity, record_time) VALUES (?, ?, ?)', (temp_rounded, humi_rounded, record_time_iso)) conn.commit() conn.close() 对接档案系统 try: payload = { "temperature": temp_rounded, "humidity": humi_rounded, "device_id": DEVICE_ID, "record_time": record_time_iso } headers = {"Content-Type": "application/json"} response = requests.post(API_URL, json=payload, headers=headers, timeout=5) response.raise_for_status() 接口返回4xx/5xx会抛出异常 except Exception as e: print(f"接口对接失败:{e}") 错误信息仅本地记录,不影响采集 if __name__ == "__main__": while True: read_and_save() time.sleep(300) ```

保存退出后重启服务:

``` sudo systemctl restart archive-env.service ```

六、异常阈值本地预警(可选但实用)

档案温湿度标准:温度14-24℃,相对湿度45-60%RH。修改脚本添加本地LED或邮件预警(邮件预警需配置SMTP,此处以LED为例)。

6.1 LED硬件连接

6.2 修改脚本添加LED预警

修改脚本开头和read_and_save函数,添加LED控制代码即可。

数字档案馆系统学籍数字档案馆系统实用操作指南
数字档案馆系统学籍数字档案馆系统实用操作指南
上个月我闺蜜评中级职称,需要提供当年的本科学籍档案证明。她跑了三趟原学校档案馆,人家说十年前的纸质档案,早就挪去郊外的仓库了。要调档得提前一周预约,还得本人签字才能调,给她急得连着两晚睡不着。后来才知...
2026年06月09日 14:05:24
微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818