回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

基于物联网的行空板 M10 自动环境监测报警系统项目 简单

头像 楼主 2025.07.06 11 0

一、项目背景

在我们生活的环境中,及时了解环境参数对我们来说至关重要。于是,我决定基于行空板 M10 和扩展板打造一个自动环境监测报警系统,借助物联网技术,实现对环境数据的实时监测和远程报警。


二、功能演示

这个系统可以实时监测温湿度、空气质量(比如一氧化碳、二氧化碳、PM2.5 等)、光照强度和噪音水平。所有数据通过网络传到物联网云平台,像 ThingSpeak 或者阿里云 IoT 这种,我们随时都能用手机或电脑查看环境情况。一旦监测到的环境参数,比如有害气体浓度、噪音分贝等,超过我们设定的安全范围,系统就会自动给我们预设的联系方式,像手机短信、邮件或者 APP 推送等,发去报警信息,提醒我们赶紧采取措施。
三、材料清单

行空板 M10×1

行空板扩展组合×1

DHT22 温湿度传感器×1

MQ 系列气体传感器(比如 MQ-7 CO 传感器、MQ-135 空气品质传感器等)×若干

光照传感器×1

噪声传感器×1

OLED 显示屏(可选,用于本地数据显示)×1

电阻、电容、面包板、杜邦线等电子元件若干

电源模块(比如电池或 USB 电源适配器)×1

高精度DHT22温湿度传感器Gravity: 色温照度传感器模拟分贝计模拟一氧化碳气体传感器 (MQ7)
四、硬件组装

把 DHT22 温湿度传感器的数据引脚连接到行空板 M10 的 GPIO 引脚,比如 GPIO4。

将 MQ 系列气体传感器的输出引脚分别连接到行空板 M10 的模拟输入引脚,比如 GPIO32、GPIO33 等,记得按传感器要求连好电源和地线,加上合适的上拉电阻。

光照传感器和噪声传感器的输出引脚分别连接到行空板 M10 的其他 GPIO 引脚,比如 GPIO25、GPIO26 等。

若是用了 OLED 显示屏,将其 I²C 接口连到行空板 M10 的相应引脚,比如 GPIO21 是 SCL,GPIO22 是 SDA。

把所有传感器和模块的电源引脚连接到行空板 M10 的 3.3V 或 5V 电源引脚,依据具体传感器要求选合适的电源电压。

用面包板和杜邦线进行电路连接,一定要连牢靠,避免短路。

把组装好的硬件用合适的外壳或支架固定好,方便放置和使用。
五、程序逻辑

系统启动后,行空板 M10 先初始化各个传感器。接着,按设定的时间间隔,比如每分钟,依次读取各传感器的数据,包含温湿度、气体浓度、光照强度和噪声水平。读取的数据经简单滤波和处理后,通过网络模块上传至物联网云平台。在云平台上,我们预设了各环境参数的安全阈值,当上传的数据超出这些阈值时,云平台就自动触发报警规则,向用户设定的联系方式发送报警通知。同时,系统还可在本地 OLED 显示屏上实时显示环境数据,方便我们现场查看。

程序代码:

import network
import time
import dht
from machine import Pin, ADC
import urequests as requests
import json

# Wi-Fi配置
SSID = "你的WiFi名称"
PASSWORD = "你的WiFi密码"

# 物联网云平台配置(以ThingSpeak为例)
THINGSPEAK_API_KEY = "你的ThingSpeak API密钥"
THINGSPEAK_URL = "https://api.thingspeak.com/update"

# 初始化传感器
dht_pin = Pin(4)  # DHT22温湿度传感器连接到GPIO4
dht_sensor = dht.DHT22(dht_pin)

co_sensor = ADC(Pin(32))  # MQ-7 CO传感器连接到GPIO32
light_sensor = ADC(Pin(33))  # 光照传感器连接到GPIO33
noise_sensor = ADC(Pin(34))  # 噪声传感器连接到GPIO34

# 连接到Wi-Fi
def connect_wifi():
   wlan = network.WLAN(network.STA_IF)
   wlan.active(True)
   wlan.connect(SSID, PASSWORD)
   while not wlan.isconnected():
       pass
   print("Connected to WiFi")

# 读取传感器数据
def read_sensors():
   # 读取温湿度
   dht_sensor.measure()
   temperature = dht_sensor.temperature()
   humidity = dht_sensor.humidity()

   # 读取CO浓度
   co_value = co_sensor.read()

   # 读取光照强度
   light_value = light_sensor.read()

   # 读取噪声水平
   noise_value = noise_sensor.read()

   return {
       "temperature": temperature,
       "humidity": humidity,
       "co": co_value,
       "light": light_value,
       "noise": noise_value
   }

# 上传数据到ThingSpeak
def upload_data(data):
   try:
       response = requests.get(
           THINGSPEAK_URL,
           params={
               "api_key": THINGSPEAK_API_KEY,
               "field1": data["temperature"],
               "field2": data["humidity"],
               "field3": data["co"],
               "field4": data["light"],
               "field5": data["noise"]
           }
       )
       response.close()
       print("Data uploaded to ThingSpeak")
   except Exception as e:
       print("Error uploading data:", e)

# 检查报警条件并发送报警
def check_alerts(data):
   # 根据需要设置报警阈值
   temp_threshold = 30.0  # 温度报警阈值(摄氏度)
   co_threshold = 500     # CO浓度报警阈值(模拟值)
   noise_threshold = 500  # 噪声报警阈值(模拟值)

   alerts = []
   if data["temperature"] > temp_threshold:
       alerts.append("Temperature too high: {}°C".format(data["temperature"]))
   if data["co"] > co_threshold:
       alerts.append("CO concentration too high: {}".format(data["co"]))
   if data["noise"] > noise_threshold:
       alerts.append("Noise level too high: {}".format(data["noise"]))

   if alerts:
       send_alert(alerts)

# 发送报警通知(可以改为发送邮件、短信等)
def send_alert(alerts):
   print("Alerts detected:")
   for alert in alerts:
       print(alert)
   # 可以添加发送邮件、短信等代码

# 主循环
def main():
   connect_wifi()
   while True:
       data = read_sensors()
       print("Sensor Data:", data)
       upload_data(data)
       check_alerts(data)
       time.sleep(60)  # 每分钟读取一次数据

if __name__ == "__main__":
   main()
六、环境搭建

在电脑上装好 mind+,添加行空板 M10 开发板的支持库,这样才能编写和上传代码到行空板 M10。

依据用到的传感器,安装对应的 Arduino 库,比如 DHT 传感器库、MQTT 通信库等,这样在代码里就能方便地用传感器功能。

注册并配置物联网云平台账户,创建新设备和数据通道,获取设备连接要的 API 密钥、设备 ID 等信息。

在行空板 M10 的代码里配置好 Wi-Fi 网络名称(SSID)和密码,让设备能连上互联网并访问云平台。

七、运行程序

用 mind+把编写好的代码上传到行空板 M10。

确认行空板 M10 已正确连接到电源,所有传感器和模块都连接好了。

打开串口监视器,看看程序运行状态和传感器数据输出是否正常。

检查物联网云平台上的设备数据是否开始更新,确认数据上传功能正常。

测试报警功能,可以手动模拟环境参数超限,比如用打火机靠近气体传感器模拟有害气体泄漏,验证报警是否及时、准确地发送到预设联系方式。

评论

user-avatar