news 2026/6/22 15:29:40

嵌入式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/6/18 13:37:35

M2FP模型API性能优化:高并发处理解决方案

M2FP模型API性能优化:高并发处理解决方案 📌 背景与挑战:从单请求到高并发的演进需求 随着计算机视觉技术在内容创作、虚拟试衣、智能安防等领域的广泛应用,多人人体解析服务正逐步成为图像理解的核心能力之一。M2FP(M…

作者头像 李华
网站建设 2026/6/22 10:49:29

开发者必备:5个高可用开源翻译工具,这款CPU适配最稳

开发者必备:5个高可用开源翻译工具,这款CPU适配最稳 在AI驱动的全球化开发浪潮中,高质量、低延迟、易集成的中英翻译能力已成为开发者构建多语言应用的核心需求。无论是国际化产品界面、技术文档本地化,还是跨语言API通信&#x…

作者头像 李华
网站建设 2026/6/18 21:38:46

2026年多语言AI趋势:开源翻译镜像+WebUI成中小企业首选

2026年多语言AI趋势:开源翻译镜像WebUI成中小企业首选 🌐 AI 智能中英翻译服务 (WebUI API) 📖 项目简介 随着全球化进程加速,跨语言沟通已成为企业日常运营的重要组成部分。尤其在跨境电商、国际协作与内容出海等场景下&…

作者头像 李华
网站建设 2026/6/15 12:12:26

如何评估翻译质量?BLEU、METEOR指标应用入门

如何评估翻译质量?BLEU、METEOR指标应用入门 📖 引言:AI 智能中英翻译服务的兴起与挑战 随着全球化进程加速,跨语言沟通需求激增,AI智能中英翻译服务已成为自然语言处理(NLP)领域的重要应用场景…

作者头像 李华