news 2026/4/23 10:00:20

嵌入式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/4/17 17:02:13

AI绘画生产力革命:如何用云端Z-Image-Turbo实现商业级图像批量生成

AI绘画生产力革命:如何用云端Z-Image-Turbo实现商业级图像批量生成 对于电商运营人员来说,每天需要制作数百张产品展示图是一项繁重的任务。手工设计不仅效率低下,而且难以保证风格统一。Z-Image-Turbo作为阿里通义实验室开源的6B参数图像生成…

作者头像 李华
网站建设 2026/4/22 1:46:54

M2FP模型在智能相框中的人物识别技术

M2FP模型在智能相框中的人物识别技术 📌 技术背景与应用需求 随着智能家居设备的普及,智能相框已不再局限于静态图片展示,而是逐步向“感知交互”型终端演进。其中,人物识别与理解能力成为提升用户体验的关键一环。传统人脸识别仅…

作者头像 李华
网站建设 2026/4/19 16:15:45

美客多自养号测评:从0到1打造销量增长策略

在竞争激烈的跨境电商市场中,美客多(MercadoLibre)作为拉美地区最大的电商平台,为卖家提供了广阔的商机。然而,要在众多卖家中脱颖而出,提升店铺销量并非易事。自养号测评技术作为一种有效的运营策略&#…

作者头像 李华
网站建设 2026/4/16 1:30:17

Thinkphp的骑行俱乐部交流论坛活动组织系统的设计与开发

目录摘要关键词项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理摘要 随着户外运动与健康生活理念的普及,骑行俱乐部逐渐成为人们社交与锻炼的重要平台。基于ThinkPHP框架设计的骑行俱乐部交流论坛活动组织系统,旨在为骑行爱…

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

从0到1搭建企业级专利管理系统:一个后端工程师的实战复盘

作者:友为软件 后端开发工程师 技术栈:Spring Boot MyBatis Plus Activiti MinIO Vue3最近半年,我主导开发了一套企业知识产权(IP)管理系统,核心模块之一就是专利全生命周期管理。 和市面上通用OA不同…

作者头像 李华
网站建设 2026/3/28 0:32:44

Z-Image-Turbo开源生态:如何快速部署社区贡献的最佳实践工作流

Z-Image-Turbo开源生态:如何快速部署社区贡献的最佳实践工作流 如果你是一名热衷于尝试各种AI图像生成模型的技术极客,一定对Z-Image-Turbo不陌生。这款由阿里通义实验室开源的6B参数图像生成模型,凭借仅需8步推理即可实现亚秒级生成的能力&…

作者头像 李华