您好,登录后才能下订单哦!
# 树莓派4B加微雪2.13寸墨水屏怎样监测PM2.5信息
## 一、项目概述
### 1.1 背景与意义
随着环境污染问题日益严重,空气质量监测成为公众关注的焦点。PM2.5作为空气污染的重要指标,其实时监测对健康防护具有重要意义。本项目利用树莓派4B和微雪2.13寸墨水屏搭建低成本、低功耗的PM2.5监测系统,具有以下优势:
- 实时显示空气质量数据
- 超低功耗(墨水屏仅在刷新时耗电)
- 可扩展性强(支持接入更多传感器)
- 适合家庭/办公室场景部署
### 1.2 硬件组成
| 组件 | 型号 | 备注 |
|------|------|------|
| 主控板 | 树莓派4B | 推荐4GB内存版本 |
| 显示屏 | 微雪2.13寸墨水屏 | 型号:Waveshare 2.13inch e-Paper HAT |
| PM2.5传感器 | 攀藤PMS5003 | 激光散射原理,精度±10% |
| 连接线 | GPIO杜邦线 | 用于传感器连接 |
| 电源 | 5V3A Type-C电源 | 保证稳定供电 |
## 二、硬件连接
### 2.1 墨水屏连接
微雪2.13寸墨水屏通过PH2.0-8PIN接口与树莓派GPIO直连:
墨水屏引脚 -> 树莓派GPIO VCC -> 3.3V GND -> GND DIN -> MOSI (GPIO10) CLK -> SCLK (GPIO11) CS -> CE0 (GPIO8) DC -> GPIO25 RST -> GPIO17 BUSY -> GPIO24
### 2.2 PM2.5传感器连接
攀藤PMS5003采用UART通信:
传感器引脚 -> 树莓派GPIO VCC -> 5V GND -> GND RX -> TX (GPIO14) TX -> RX (GPIO15) SET -> 可悬空 RESET -> 可连接GPIO控制
> **注意**:需在树莓派设置中启用UART接口:
> ```bash
> sudo raspi-config
> ```
> 选择 `Interfacing Options` -> `Serial` -> 禁用登录shell/启用硬件串口
## 三、软件环境配置
### 3.1 系统准备
推荐使用Raspberry Pi OS Lite版本:
```bash
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装必要组件
sudo apt install python3-pip git libopenjp2-7 libtiff5
从微雪官方获取驱动库:
git clone https://github.com/waveshare/e-Paper.git
cd e-Paper/RaspberryPi_JetsonNano/python
sudo pip3 install .
sudo pip3 install pms5003
创建pm25_reader.py
:
import serial
from pms5003 import PMS5003
def get_pm_data():
pms = PMS5003(
device='/dev/ttyAMA0',
baudrate=9600,
pin_enable=22,
pin_reset=27
)
data = pms.read()
return {
'pm1_0': data.pm_ug_per_m3(1.0),
'pm2_5': data.pm_ug_per_m3(2.5),
'pm10': data.pm_ug_per_m3(10)
}
创建eink_display.py
:
from waveshare_epd import epd2in13_V2
from PIL import Image, ImageDraw, ImageFont
class EinkDisplay:
def __init__(self):
self.epd = epd2in13_V2.EPD()
self.epd.init(self.epd.FULL_UPDATE)
self.font = ImageFont.truetype('DejaVuSans.ttf', 14)
def show_pm_data(self, data):
image = Image.new('1', (self.epd.height, self.epd.width), 255)
draw = ImageDraw.Draw(image)
# 绘制空气质量指数
draw.text((10, 10), f"PM2.5: {data['pm2_5']} μg/m³", font=self.font, fill=0)
# 添加空气质量评价
status = self._get_air_status(data['pm2_5'])
draw.text((10, 40), f"空气质量: {status}", font=self.font, fill=0)
# 显示更新时间
from datetime import datetime
draw.text((10, 70), f"更新: {datetime.now().strftime('%H:%M')}", font=self.font, fill=0)
self.epd.display(self.epd.getbuffer(image))
def _get_air_status(self, pm25):
if pm25 <= 35: return "优"
elif pm25 <= 75: return "良"
elif pm25 <= 115: return "轻度污染"
else: return "污染严重"
创建main.py
:
import time
from pm25_reader import get_pm_data
from eink_display import EinkDisplay
def main():
display = EinkDisplay()
while True:
try:
data = get_pm_data()
display.show_pm_data(data)
time.sleep(300) # 5分钟更新一次
except Exception as e:
print(f"Error: {e}")
time.sleep(60)
if __name__ == "__main__":
main()
sudo apt install cpufrequtils
echo 'GOVERNOR="conservative"' | sudo tee /etc/default/cpufrequtils
sudo systemctl restart cpufrequtils
推荐使用3D打印外壳,设计要点: - 预留传感器进气孔 - 确保显示屏可视角度 - 考虑散热需求(树莓派4B发热较大)
添加SQLite数据库支持:
import sqlite3
from datetime import datetime
def save_to_db(data):
conn = sqlite3.connect('air_quality.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS pm_data
(timestamp TEXT, pm1_0 REAL, pm2_5 REAL, pm10 REAL)''')
c.execute("INSERT INTO pm_data VALUES (?,?,?,?)",
(datetime.now().isoformat(), data['pm1_0'], data['pm2_5'], data['pm10']))
conn.commit()
conn.close()
# 在显示代码前加入全刷清除
epd.init(epd.FULL_UPDATE)
epd.Clear(0xFF)
配置systemd服务实现开机自启:
sudo nano /etc/systemd/system/pm25_monitor.service
添加以下内容:
[Unit]
Description=PM2.5 Monitor Service
After=network.target
[Service]
ExecStart=/usr/bin/python3 /home/pi/main.py
WorkingDirectory=/home/pi
User=pi
Restart=always
[Install]
WantedBy=multi-user.target
启用服务:
sudo systemctl enable pm25_monitor
sudo systemctl start pm25_monitor
通过MQTT协议上传到Home Assistant:
import paho.mqtt.publish as publish
def upload_to_mqtt(data):
auth = {'username':"pi", 'password':"raspberry"}
publish.single("home/air/pm25", data['pm2_5'], hostname="192.168.1.100", auth=auth)
可扩展连接: - 温湿度传感器(DHT22) - CO2传感器(MH-Z19) - 甲醛传感器(ZE08-CH2O)
使用Grafana创建仪表盘:
docker run -d -p 3000:3000 --name=grafana grafana/grafana
本项目展示了如何利用树莓派4B和微雪墨水屏构建实用的PM2.5监测系统。通过合理的硬件选型和软件设计,实现了低功耗、高可读性的空气质量显示方案。读者可根据实际需求进行功能扩展,如添加报警阈值、联网数据共享等功能,打造更加智能的环境监测设备。 “`
注:实际使用时建议: 1. 根据具体硬件型号调整引脚连接 2. 定期清洁PM2.5传感器进气口 3. 在干燥环境中使用(墨水屏对湿度敏感) 4. 完整代码可参考项目仓库:示例GitHub链接
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。