Atmosphere Demo 1 说明文档(第三版)
一、项目简介
Atmosphere 是面向野外溪流/漂流点的山洪 + 泥石流智能监测预警系统。
Demo 1 实现:土壤湿度、流速、风速三路环境采集 + 水泵 PWM 调速控制 + Web 实时监控 + 预警数学模型。
二、硬件连接方式
主控:Arduino Nano(ATmega328P,新 Bootloader)
土壤湿度传感器:AO→A2(模拟量),DO→D2(数字/断线检测),VCC→5V,GND→GND
流速传感器 YF-S401:红线→5V,黄线→D8(信号),黑线→GND
水泵:IO 接 D9(PWM 脚,软启动/调速,占空比越大抽水越快);VCC/GND 接电源,D7 已拉低兜底
风速传感器(三杯式,0~5V):接另一台电脑的 Arduino UNO A0,经 HTTP 转发到本机
三、软件实现
两个文件(均已放入本文件夹):
FlowSensor.ino —— Arduino 固件:三路采集 + 水泵 PWM 调速(软启动),每秒输出一行 JSON 到串口(9600)
server.py —— Python Web 服务(端口 8080):串口读取 + 风速 HTTP 集成 + 预警模型 + 网页(含水泵滑块调速 + 功率显示)
串口命令:发送速度值 0~255 + 换行(0 = 停止,255 = 全速)。
水泵调速:D9 PWM + 软启动(0→255 约 0.5 秒平滑升/降,抹平启动电流冲击)。
网页滑块:0~100% 拖动实时调速(150ms 防抖);功率 = 占空比 × 满载功率(默认 1.25W 估算,可标定)。
风速接口:对方电脑 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̄ 土壤湿度涨幅
门槛:土壤湿度 < 60%(土体未饱和)直接判安全,不参与 D 分级
特殊规则:土壤高湿 + 流量连涨 → 拉高等级
山洪(部分落地):
曼宁公式 70%(缺超声波水位传感器,暂未落地)
尖峰检测 30%(用流量秒级变化率近似,阈值待标定)
滑动基准(自适应气候):
24 小时滑动窗口,用 P10/P95 分位数判断「偏离当地正常多少」,数据积累 2 小时后生效。
预警档位(一级最严重):
🟢 正常:D < 0.45(土壤湿度 < 60% 时直接安全)
🟡 三级预警:0.45 ≤ D < 0.55
🟠 二级预警:0.55 ≤ D < 0.75
🔴 一级预警:D ≥ 0.75
五、运行方式
编译上传 FlowSensor.ino 到 Arduino Nano
运行 python3 -u server.py
浏览器打开 http://localhost:8080 查看监控页面,拖滑块调节水泵速度
六、已知问题
水泵从 Arduino 取电,高速时电流大仍会拉垮 5V 断电复位(软启动只缓解启动冲击)——需改独立供电
功率为估算值(无电流传感器),满载功率需按水泵铭牌标定
山洪曼宁 70% 缺超声波水位传感器,待补
尖峰检测阈值待实测标定