Atmosphere Demo 1 说明文档(beta5 · 算法 v2 第一版归档)
一、项目简介
Atmosphere 是面向野外溪流/漂流点的山洪 + 泥石流智能监测预警系统。
beta5 为第二版算法(v2)的第一版归档:在 beta4 基础上新增 LCD 现场显示、算法升级到 v2(传感器标定对齐 + 快速滑动基准 + 滞回保持 + 土壤饱和规则),并接入风速网络数据。
二、硬件连接方式
主控:Arduino Nano(ATmega328P,新 Bootloader)
- 土壤湿度传感器:AO→A2(模拟量),DO→D2(数字/断线检测),VCC→5V,GND→GND
- 流速传感器 YF-S401:红线→5V,黄线→D8(信号),黑线→GND
- 水泵:IO 接 D9(PWM 脚,软启动/调速,占空比越大抽水越快);建议独立供电(只共地)
- 温湿度 DHT11:v→5V,s→D4,g→GND(需 DHT sensor library)
- LCD 1602(I2C):SCL→A5,SDA→A4,地址 0x27(屏不亮改 0x3F)
- 风速传感器(三杯式,0~5V):接另一台电脑的 Arduino UNO A0,经 HTTP 8001 转发到本机
三、软件实现
两个文件(均已放入本文件夹):
FlowSensor.ino —— Arduino 固件(串口 115200,每秒输出一行 JSON):
- 三路采集:土壤湿度(带断线检测)、流速(YF-S401 脉冲计数)、温湿度(DHT11)
- 水泵 PWM 调速 + 软启动(0→255 约 0.5 秒平滑升降),D7 拉低兜底防误开
- 流速脉冲上升沿/下降沿分开计数 + D8 电平输出(诊断沿方向/接线问题)
- LCD 显示:行 1
W12.3 S45% F0.50(风速 km/h · 土湿度 % · 流速 L/min),行 2ALARM:3 L3(预警等级 0~3) - LCD 数据由服务端串口下发,D 行协议:
D<风速km/h>,<预警等级>\n(如D12.3,2)
server.py —— Python Web 服务(端口 8080):
- 串口读取 + 风速 HTTP 集成(轮询
http://192.168.1.200:8001/wind)+ v2 预警模型 + 网页(水泵滑块、四卡 + 曲线 + 预警卡) lcd_sender线程:每秒向 Arduino 下发 D 行(风速 + 当前等级)- 网页显示:泥石流 D / 山洪 F / 土壤 S / 流量 Q / 突变 dQ / 土湿涨 ΔS / 尖峰风险 / 风速风险
四、预警模型(算法 v2)
等级体系(数字越大越严重):0 = 正常 / 1 = 一级 / 2 = 二级 / 3 = 三级(最高)
最终等级 = max(泥石流 D, 山洪 F, 风速, 流量尖峰, 突变, 土壤饱和) ← 0~3
泥石流路径:
D = 0.30·S̄ + 0.35·Q̄ + 0.20·dQ̄ + 0.15·ΔS̄
- 门槛:土壤 < 60%(未饱和)时跳过本路径(山洪/风速不受限)
- 阈值:D ≥ 0.75 → 三级;≥ 0.55 → 二级;≥ 0.45 → 一级
- 特殊规则:土壤超当地 P90 + 流量上涨 + 5 分钟持续上升 → 直接三级;土壤超当地 P90 + 流量 ≥ 70% 满槽 → 二级;土壤 10 分钟涨幅 ≥ 20% → 至少一级
山洪路径(独立指数):
F = 0.60·Q̄ + 0.40·dQ̄
- 不受土壤门槛限制,流量暴涨即触发;阈值同上(0.45/0.55/0.75)
- 曼宁公式 70% 分量的流量近似替代(超声波水位方案已砍掉,流速为核心)
风速路径: ≥25 km/h → 一级;≥40 km/h → 二级;≥60 km/h → 三级
流量尖峰路径: 秒级变化率超当地历史 P95 → 二级;归一化 ≥ 0.8 → 一级(基准不足回退:变化率 ≥ 0.5 L/min/s = 满刻度)
突变路径(秒级响应): 土壤 5 秒内涨 ≥20% / 风速 60 秒内涨 ≥12 km/h → 立即一级
土壤饱和路径(v2 新增): 土壤 ≥85% 或超当地 P90 → 至少一级(土体饱和本身就是危险,不依赖流量)
滞回保持(v2 新增): 升级立即生效并保持;降级需超过保持时间——一级 10 秒 / 二级 15 秒 / 三级 20 秒(防抖)
滑动基准: 24 小时窗口每分钟采样,当前值映射到当地 [P10,P95] → 0~1;冷启动 15 分钟;数据不足回退绝对值(Qn=flow/3、dQn=变化率/0.5)
五、运行方式
- 编译上传 FlowSensor.ino 到 Arduino Nano(串口监视器选 115200)
- 运行
python3 -u server.py - 浏览器打开
http://localhost:8080;拖滑块调节水泵速度 - 保持风速服务
http://192.168.1.200:8001/wind在线
六、版本状态
beta5 为算法 v2 的第一版归档:Demo 1 完结后进入算法迭代阶段(数学预警模型 v1→v2,文档见 demo1/algorithm-iterations/);超声波水位方案已砍掉(与流速功能重叠,不做曼宁 70%)。
七、已知问题
- 风速数据依赖外部电脑(192.168.1.200:8001),该服务离线时风速路径失效、LCD 风速显示 0——物理迁移到综合板为后续项
- 流量计量程窄(YF-S401 实测 0.05~3 L/min),标定参数为当前测试环境服务,换环境需重新标定
- 突变阈值仍为经验值(土壤 5s+20%、风速 60s+12km/h),未做统计标定
- LCD 仅 ASCII,无法显示中文,现场人员需熟悉 0~3 等级含义