第26章:环境监测系统实战

在野外、公园或城市街道部署环境监测站,面临着两大挑战:供电网络。Wi-Fi 覆盖不到,拉电线成本太高。

26.1 系统方案设计

  • 应用场景:监测森林公园的空气质量 (PM2.5, CO2) 和气象数据 (温湿度, 气压)。
  • 通信方案LoRa。传输距离远(几公里),功耗低。
  • 供电方案太阳能板 + 18650 锂电池
  • 休眠策略:每小时唤醒采集一次,其余时间深度休眠。

26.2 硬件选型

  • 主控:STM32L4 (低功耗系列) 或 ESP32 (关闭 WiFi/BT)。
  • LoRa 模组:SX1278 或 E32-TTL-100 (串口透传)。
  • 传感器
    • BME280 (温湿度气压)。
    • 攀藤 PMS7003 (PM2.5,注意它功耗大,需用 MOS 管控制电源)。

26.3 低功耗软件设计

核心思想:干完活马上睡

void loop() {
  // 1. 唤醒传感器电源
  digitalWrite(SENSOR_POWER_PIN, HIGH);
  delay(30000); // 预热30秒 (PM2.5传感器需要)

  // 2. 采集数据
  Data packet = readSensors();

  // 3. 关闭传感器电源 (省电)
  digitalWrite(SENSOR_POWER_PIN, LOW);

  // 4. LoRa 发送
  LoRa.beginPacket();
  LoRa.write((uint8_t*)&packet, sizeof(packet));
  LoRa.endPacket();

  // 5. 进入深度睡眠 1小时
  // ESP32:
  esp_sleep_enable_timer_wakeup(3600 * 1000000ULL);
  esp_deep_sleep_start();
}

26.4 LoRa 网关搭建

数据发出来后,需要一个网关接收并转发到云端。

  • 硬件:树莓派 + SX1278 LoRa HAT。
  • 软件:Python 脚本,监听 LoRa 信号,解析后通过 4G/以太网 发送 MQTT 到云平台。
# 网关伪代码
import time
from LoRa import LoRa
import paho.mqtt.client as mqtt

def on_receive(payload):
    # 解析二进制数据结构
    temp, hum, pm25 = struct.unpack('ffH', payload)
    
    # 转发到云端
    json_msg = json.dumps({"temp": temp, "hum": hum, "pm25": pm25})
    mqtt_client.publish("park/monitor/01", json_msg)

while True:
    if LoRa.available():
        payload = LoRa.read()
        on_receive(payload)

环境监测通常是“只读”的,而农业应用则需要“读写”闭环(如自动灌溉)。下一章我们将进入智慧农业

« 上一篇 智能家居系统实战 下一篇 » 智能农业解决方案