news 2026/8/29 13:00:58

嵌入式Python实践:在Linux平台上开发环境监测应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
嵌入式Python实践:在Linux平台上开发环境监测应用

文章目录

    • 摘要
    • 1. 系统架构设计
    • 2. 开发环境搭建
      • 2.1 系统要求
      • 2.2 安装依赖库
    • 3. 硬件连接
      • 传感器接线图
    • 4. 核心代码实现
      • 4.1 数据采集模块 (sensor_reader.py)
      • 4.2 数据存储引擎 (data_storage.py)
      • 4.3 实时可视化 (visualization.py)
    • 5. 系统部署流程
    • 6. 常见问题解决
    • 7. 完整技术图谱

摘要

本教程详细讲解如何基于Python在Linux平台开发环境监测应用,涵盖传感器数据采集、实时处理、可视化展示等全流程,帮助开发者快速构建嵌入式环境监测系统。


1. 系统架构设计

GPIO

DHT11温湿度传感器

Raspberry Pi

Data Acquisition

Data Processing

SQLite Database

Real-time Visualization

Web Dashboard

Alert System

Email/SMS

2. 开发环境搭建

2.1 系统要求

  • Linux发行版:Raspberry Pi OS
  • Python版本:3.8+
  • 硬件:Raspberry Pi 4B + DHT11传感器

2.2 安装依赖库

# 安装必要驱动和库sudoapt-getinstallpython3-dev python3-pipsudopip3installAdafruit_DHT matplotlib pandas numpy smtplib

3. 硬件连接

传感器接线图

DHT11 Raspberry Pi VCC → 3.3V (Pin 1) DATA → GPIO4 (Pin 7) GND → GND (Pin 9)

4. 核心代码实现

4.1 数据采集模块 (sensor_reader.py)

importAdafruit_DHTimporttimeimportjsonclassSensorReader:def__init__(self,sensor_type=Adafruit_DHT.DHT11,pin=4):self.sensor=sensor_type self.pin=pin self.data_history=[]defread_data(self):humidity,temperature=Adafruit_DHT.read_retry(self.sensor,self.pin)ifhumidityisnotNoneandtemperatureisnotNone:timestamp=time.strftime("%Y-%m-%d %H:%M:%S")data={"timestamp":timestamp,"temperature":round(temperature,1),"humidity":round(humidity,1)}self.data_history.append(data)returndatareturnNone# 测试代码if__name__=="__main__":reader=SensorReader()for_inrange(3):print(reader.read_data())time.sleep(2)

4.2 数据存储引擎 (data_storage.py)

importsqlite3fromdatetimeimportdatetimeclassDataStorage:def__init__(self,db_path="environment.db"):self.conn=sqlite3.connect(db_path)self._create_table()def_create_table(self):cursor=self.conn.cursor()cursor.execute(''' CREATE TABLE IF NOT EXISTS sensor_data ( id INTEGER PRIMARY KEY, timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, temperature REAL NOT NULL, humidity REAL NOT NULL ) ''')self.conn.commit()definsert_data(self,temperature,humidity):cursor=self.conn.cursor()cursor.execute(''' INSERT INTO sensor_data (timestamp, temperature, humidity) VALUES (datetime('now'), ?, ?) ''',(temperature,humidity))self.conn.commit()defget_last_24h(self):cursor=self.conn.cursor()cursor.execute(''' SELECT timestamp, temperature, humidity FROM sensor_data WHERE timestamp > datetime('now', '-1 day') ''')returncursor.fetchall()# 示例用法if__name__=="__main__":storage=DataStorage()storage.insert_data(25.3,45.2)print(storage.get_last_24h())

4.3 实时可视化 (visualization.py)

importmatplotlib.pyplotaspltimportmatplotlib.animationasanimationfromdata_storageimportDataStorage plt.style.use('dark_background')classLivePlotter:def__init__(self,storage):self.storage=storage self.fig,(self.ax1,self.ax2)=plt.subplots(2,figsize=(10,8))self.fig.suptitle('环境监测实时数据',fontsize=16)defupdate_plot(self,frame):data=self.storage.get_last_24h()timestamps=[row[0]forrowindata]temps=[row[1]forrowindata]humids=[row[2]forrowindata]self.ax1.clear()self.ax2.clear()# 温度图表self.ax1.plot(timestamps,temps,'r-o',linewidth=2)self.ax1.set_ylabel('温度 (°C)',color='white')self.ax1.tick_params(axis='y',labelcolor='white')self.ax1.set_title('温度变化趋势')# 湿度图表self.ax2.plot(timestamps,humids,'b-s',linewidth=2)self.ax2.set_ylabel('湿度 (%)',color='white')self.ax2.tick_params(axis='y',labelcolor='white')self.ax2.set_title('湿度变化趋势')# 格式化X轴foraxin[self.ax1,self.ax2]:ax.tick_params(axis='x',rotation=45)ax.grid(True,linestyle='--',alpha=0.6)plt.tight_layout()defstart(self):ani=animation.FuncAnimation(self.fig,self.update_plot,interval=10000# 10秒更新一次)plt.show()# 启动可视化if__name__=="__main__":storage=DataStorage()plotter=LivePlotter(storage)plotter.start()

5. 系统部署流程

硬件组装

系统烧录

依赖安装

代码部署

服务配置

启动监测

6. 常见问题解决

问题现象原因分析解决方案
读取传感器返回None接触不良或电压不足检查接线并确保使用3.3V供电
数据库写入失败权限问题使用chmod 777 environment.db修改权限
图表显示乱码缺少中文字体安装中文字体包sudo apt install fonts-wqy-microhei

7. 完整技术图谱

环境监测系统

操作系统

Linux

Raspberry Pi OS

编程语言

Python 3.8

核心库

Adafruit_DHT

Matplotlib

SQLite3

数据流

采集层

GPIO控制

传感器协议解析

处理层

数据清洗

异常检测

存储层

SQLite数据库

CSV备份

展示层

实时图表

Web API

扩展功能

邮件告警

移动端监控

历史数据分析

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 14:32:34

CI/CD测试覆盖率提升方法

‌一、背景:为什么测试覆盖率是CI/CD中的核心质量指标?‌在现代软件开发中,CI/CD流水线已从“构建-部署”工具链演变为‌质量保障中枢‌。测试覆盖率作为量化测试充分性的核心指标,直接关联发布风险、回归效率与系统稳定性。据阿里…

作者头像 李华
网站建设 2026/8/26 14:13:58

Z-Image-Turbo对比测评:5种预置环境方案助你快速找到最佳配置

Z-Image-Turbo对比测评:5种预置环境方案助你快速找到最佳配置 作为一名AI研究员,你是否遇到过这样的困扰:想要评估Z-Image-Turbo模型在不同硬件条件下的表现,却苦于手动搭建多个测试环境耗时耗力?本文将为你介绍5种预置…

作者头像 李华
网站建设 2026/8/25 12:39:34

本地化部署优势:数据安全+定制化翻译风格

本地化部署优势:数据安全定制化翻译风格 🌐 AI 智能中英翻译服务 (WebUI API) 📖 项目简介 在跨语言交流日益频繁的今天,高质量、低延迟的中英翻译工具已成为开发者、内容创作者和企业用户的刚需。然而,依赖云端API的…

作者头像 李华
网站建设 2026/8/24 10:00:27

跨境电商内容翻译实战:CSANMT日均处理万字无压力

跨境电商内容翻译实战:CSANMT日均处理万字无压力 🌐 AI 智能中英翻译服务 (WebUI API) 📖 项目简介 在跨境电商运营中,高质量的多语言内容生成是提升转化率的关键环节。商品描述、用户评价、营销文案等中文内容需要快速、准确地转…

作者头像 李华
网站建设 2026/8/29 6:36:23

批处理功能开发:一次提交多段文本的接口扩展

批处理功能开发:一次提交多段文本的接口扩展 📌 背景与需求分析 随着 AI 智能中英翻译服务在实际业务场景中的广泛应用,用户对翻译效率的要求日益提升。当前系统已支持通过 WebUI 和 API 实现单段文本的高质量中英互译,但在面对批…

作者头像 李华