两种方案方案一ESP8266/ESP32 阿里云物联网推荐稳定可靠cpp#include ESP8266WiFi.h#include AliyunIoTSDK.h// WiFi配置const char* ssid 你的WiFi名称;const char* password 你的WiFi密码;// 阿里云配置#define PRODUCT_KEY 你的ProductKey#define DEVICE_NAME 你的DeviceName#define DEVICE_SECRET 你的DeviceSecret#define REGION_ID cn-shanghai// 传感器引脚#define SENSOR_PIN A0 // 模拟输入#define THRESHOLD 300 // 淹没阈值根据实际传感器校准// 淹没计时unsigned long floodStartTime 0;bool isFlooding false;const unsigned long FLOOD_DELAY 5000; // 持续淹没5秒后报警void setup() {Serial.begin(115200);pinMode(SENSOR_PIN, INPUT);WiFi.begin(ssid, password);while (WiFi.status() ! WL_CONNECTED) {delay(1000);Serial.println(连接WiFi中...);}Serial.println(WiFi已连接);// 连接阿里云AliyunIoTSDK::begin(REGION_ID, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET);}void loop() {AliyunIoTSDK::loop();int sensorValue analogRead(SENSOR_PIN);bool currentlyFlooded (sensorValue THRESHOLD);if (currentlyFlooded) {if (!isFlooding) {floodStartTime millis();isFlooding true;}// 持续淹没超过设定时间发送报警if (millis() - floodStartTime FLOOD_DELAY) {sendAlert(⚠️ 传感器被液体淹没请检查);// 上报到阿里云AliyunIoTSDK::send(alert, 1);floodStartTime millis(); // 防止重复发送}} else {isFlooding false;if (sensorValue THRESHOLD - 50) { // 恢复阈值带滞回AliyunIoTSDK::send(alert, 0);}}delay(100);}// 通过微信公众号/钉钉等推送void sendAlert(String message) {Serial.println(message);// 这里可以调用第三方推送服务如钉钉机器人、Server酱等}---方案二Arduino 蓝牙模块 手机APP简单本地报警硬件Arduino Nano HC-05蓝牙模块 土壤湿度传感器cpp#include SoftwareSerial.h// 蓝牙模块引脚#define BLUETOOTH_TX 10#define BLUETOOTH_RX 11SoftwareSerial BTSerial(BLUETOOTH_TX, BLUETOOTH_RX);#define SENSOR_PIN A0#define THRESHOLD 400#define FLOOD_DELAY 3000 // 持续3秒报警unsigned long floodStart 0;bool flooding false;void setup() {Serial.begin(9600);BTSerial.begin(9600);pinMode(SENSOR_PIN, INPUT);Serial.println(系统启动等待传感器数据...);}void loop() {int value analogRead(SENSOR_PIN);bool isWet (value THRESHOLD);if (isWet) {if (!flooding) {floodStart millis();flooding true;}if (millis() - floodStart FLOOD_DELAY) {// 发送报警通过蓝牙或串口String alert ALERT: 传感器被淹没! 湿度值 String(value);BTSerial.println(alert); // 发送到手机APPSerial.println(alert);// 手机端APP如蓝牙串口助手收到ALERT关键字触发通知floodStart millis(); // 重置防止刷屏}} else {flooding false;}// 定期发送状态static unsigned long lastSend 0;if (millis() - lastSend 10000) {BTSerial.println(STATUS: String(value));lastSend millis();}delay(200);}---手机端报警接收方式方式 优点 缺点阿里云钉钉机器人 稳定、不限距离 需联网配置蓝牙串口APP 无需网络 距离短10米内Bark/Server酱 推送直达手机 依赖第三方服务GSM模块SIM800 无网也可用 需SIM卡和流量---硬件连接注意事项1. 传感器校准干土和淹没时的ADC值差异很大建议用 analogRead() 测出实际值再设阈值2. 供电稳定传感器插入土壤后可能电解腐蚀建议使用电容式传感器更耐用3. 防误触设置5秒以上的持续淹没判断避免雨水瞬间滴落误报