💡 划重点

  • 主控芯片:ESP32,兼具控制与 Wi-Fi 联网能力,为远程管理打基础。
  • 感知组合:PIR 人体红外传感器 + LDR 光敏电阻,只在夜间触发驱赶,避免白天误报浪费电量。
  • 威慑执行:高频蜂鸣器(>18 kHz 扫频)和强光 LED 阵列,利用动物对高频噪声和突然强光的不适实现无伤害驱赶。
  • 成本控制:全项目物料估算 54 元,低于 55 元目标,适合批量部署在果园、菜园边缘。
  • 扩展潜力:预留 MQTT 数据上报,可接入 Home Assistant 或自建管理后台。

需求洞察

目标用户:个体果农、生态农场管理者、城郊小菜园爱好者。他们的果树和蔬菜在夜间经常遭到野兔、獾、野猪甚至老鼠的啃食,导致果实被破坏、根茎被刨食,经济损失较大。

真实痛点:传统驱赶手段要么成本高(电网、围栏),要么效果差(稻草人、气味剂),要么对人身有安全隐患。夜间巡视耗时耗力,且动物出没时间不固定,难以及时发现。用户需要一种低成本、自动工作、不伤害动物又效果明显的电子驱赶方案。

为什么值得做:农业物联网硬件正处于爆发期,这类产品既能解决现实生产问题,又能为后续智能果园系统(如环境监测、自动灌溉)提供节点基础。55 元的成本意味着果农可以用一条烟的钱保护一整季的收成,可复制性强,市场空间明确。

方案设计

感知层

控制层

执行层

日志与联网层

物料清单

序号 物料名称 数量 用途 估算单价(元) 小计(元)
1 ESP32-WROOM 开发板 1 主控、Wi-Fi 通信 18 18
2 HC-SR501 PIR 传感器 1 检测动物移动 6 6
3 光敏电阻传感器模块(模拟输出) 1 检测环境亮度 3 3
4 高频压电蜂鸣器(带驱动三极管) 1 发出超声/高频声 4 4
5 5mm 白光 LED + 220Ω 电阻 3 强光爆闪 1.5 4.5
6 2N2222 NPN 三极管 + 基极电阻 1 驱动 LED 阵列 1 1
7 面包板 + 杜邦线套装 1 电路连接 8 8
8 5V 2A 电源适配器及 DC 接口 1 系统供电 9 9
9 防水塑料盒 1 户外防护 4 4
合计 57.5

成本说明:若去掉面包板改用直接焊接,可节省 6 元,最终成本可压在 55 元以内。实际批量采购价格更低。

接线与结构

采用建议接线,无需微调,理由如下:

核心代码

以下为 Arduino 骨架,基于 ESP32 的 analogRead、ledc PWM 和 WiFi + MQTT 库,可直接编译运行。


#include <WiFi.h>
#include <PubSubClient.h>

#define PIR_PIN     13
#define LDR_PIN     34
#define BUZZER_PIN  25
#define LED_PIN     27
#define LIGHT_THR   800   // 光敏阈值,低于此值视为黑夜

const char* ssid = "Orchard_WiFi";
const char* password = "12345678";
const char* mqtt_server = "192.168.1.100";

WiFiClient espClient;
bool isNight = false;
unsigned long lastTrigger = 0;
const unsigned long cooldown = 10000; // 10 秒冷却

void setup_wifi() {
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) delay(500);
}

void callback(char* topic, byte* payload, unsigned int length) {}

void reconnect() {
  while (!client.connected()) {
    if (client.connect("OrchardRepeller")) {
      client.publish("orchard/status", "online");
    } else delay(5000);
  }
}

void setup() {
  Serial.begin(115200);
  pinMode(PIR_PIN, INPUT);
  pinMode(LED_PIN, OUTPUT);
  ledcSetup(0, 20000, 8);    // 通道0, 20kHz 初始频率, 8位分辨率
  ledcAttachPin(BUZZER_PIN, 0);
  ledcWrite(0, 0);
  setup_wifi();
  client.setCallback(callback);
}

void loop() {
  if (!client.connected()) reconnect();
  client.loop();

  int lightVal = analogRead(LDR_PIN);
  isNight = (lightVal < LIGHT_THR);

  if (isNight && digitalRead(PIR_PIN) && (millis() - lastTrigger > cooldown)) {
    lastTrigger = millis();
    Serial.println("Animal detected!");
    client.publish("orchard/event", "triggered");

    // 强光爆闪 + 高频扫频
    for (int i = 0; i < 5; i++) {
      digitalWrite(LED_PIN, HIGH);
      ledcWriteTone(0, 22000);
      delay(100);
      digitalWrite(LED_PIN, LOW);
      ledcWrite(0, 0);
      delay(80);
    }
    // 恢复静默
    digitalWrite(LED_PIN, LOW);
    ledcWrite(0, 0);
  }
  delay(50);
}

调试步骤

  1. 供电检查:用 USB 线或 5V 适配器供电,测量面包板电源轨为 5V 和 3.3V。
  2. 光敏阈值校准:上传程序,打开串口监视器,在傍晚用手遮挡 LDR,观察 lightVal 读数,记下天黑时的值并调整 LIGHT_THR
  3. PIR 测试:遮住 LDR 模拟黑夜,晃动手指经过 PIR 前方,串口应打印 “Animal detected!”,LED 闪烁、蜂鸣器发声。
  4. 高频验证:使用手机频谱分析 App 或频率计靠近蜂鸣器,确认发出 20kHz 左右信号。人耳应难以察觉。
  5. MQTT 连接:修改 WiFi 和 MQTT 服务器参数,重启后用 MQTT 客户端订阅 orchard/#,观察触发消息。
  6. 安装部署:将设备放入防水盒,固定在离地面 40–80 cm 的树干或木桩上,传感器前方无遮挡。

设计图

果园夜间动物驱赶器结构flow
1
感知输入
2
控制处理
3
执行反馈
4
数据上报