Atmosphere Demo 1 说明文档(第一版)

一、项目简介

Atmosphere 是面向野外溪流/漂流点的山洪 + 泥石流智能监测预警系统。

Demo 1 实现:土壤湿度、流速、风速三路环境采集 + 水泵控制 + Web 实时监控 + 预警数学模型。

二、硬件连接方式

主控:Arduino Nano(ATmega328P,新 Bootloader)

土壤湿度传感器:AO→A2(模拟量),DO→D2(数字/断线检测),VCC→5V,GND→GND

流速传感器 YF-S401:红线→5V,黄线→D8(信号),黑线→GND

水泵:接 D7(高电平抽水,低电平停止)

风速传感器(三杯式,0~5V):接另一台电脑的 Arduino UNO A0,经 HTTP 转发到本机

三、软件实现

两个文件(均已放入本文件夹):

FlowSensor.ino —— Arduino 固件:三路采集 + 水泵控制,每秒输出一行 JSON 到串口(9600)

server.py —— Python Web 服务(端口 8080):串口读取 + 风速 HTTP 集成 + 预警模型 + 网页

串口命令(单字节):发送 1 开泵 / 0 关泵。

风速接口:对方电脑 http://192.168.1.200:8001/wind 返回 JSON(wind_ms / wind_kmh / temp / hum)。

四、预警模型

泥石流(已完整落地):

危险指数 D = 0.40·S̄ + 0.30·Q̄ + 0.20·dQ̄ + 0.10·ΔS̄

S̄ 土壤湿度归一化,Q̄ 流量归一化,dQ̄ 流量突变,ΔS̄ 土壤湿度涨幅

特殊规则:土壤高湿 + 流量连涨 → 拉高等级

山洪(部分落地):

曼宁公式 70%(缺超声波水位传感器,暂未落地)

尖峰检测 30%(用流量秒级变化率近似,阈值待标定)

滑动基准(自适应气候):

24 小时滑动窗口,用 P10/P95 分位数判断「偏离当地正常多少」,数据积累 2 小时后生效。

预警档位(一级最严重):

🟢 正常:D < 0.30

🟡 三级预警:0.30 ≤ D < 0.55

🟠 二级预警:0.55 ≤ D < 0.75

🔴 一级预警:D ≥ 0.75

五、运行方式

编译上传 FlowSensor.ino 到 Arduino Nano

运行 python3 -u server.py

浏览器打开 http://localhost:8080 查看监控页面

六、已知问题

水泵从 Arduino 取电会导致供电不稳、USB 反复断电复位(自己开关)——需改独立供电

山洪曼宁 70% 缺超声波水位传感器,待补

尖峰检测阈值待实测标定