Atmosphere Demo 1 说明文档(第四版 · 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 防抖);整机功率 = 固定功耗 0.4W + 占空比 × 水泵满载功率(默认 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%(用流量秒级变化率近似,滑动基准自适应,超当地 P95 判高风险)

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

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 查看监控页面,拖滑块调节水泵速度

六、版本状态

Demo 1 最终版:beta4 为 Demo 1 的最终版本,后续开发转入 Demo 2(新增超声波水位传感器,补全山洪曼宁 70% 分量)。

七、已知问题

水泵从 Arduino 取电,高速时电流大仍会拉垮 5V 断电复位(软启动只缓解启动冲击)——需改独立供电

整机功率为估算值(无电流传感器),满载功率需按水泵铭牌标定

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

尖峰滑动基准已落地,回退固定阈值(2.0 L/min/s)仍需实测标定