💡 划重点
- 夜间智能驱赶:利用LDR光敏电阻检测环境光线,只在夜晚自动激活保护模式,白天设备休眠,极致省电。
- 精准感应:采用PIR人体红外传感器,覆盖120°锥形区域,锁定中小型动物入侵,误报率低。
- 双重驱离:高频蜂鸣器发出2.2kHz-4.5kHz变频刺耳声波,同时高亮LED阵列瞬间爆闪,形成听觉与视觉双重威慑。
- 成本可控:全部物料控制在55元以内,单个设备可守护2-3亩果园,极具推广价值。
- 远程可管:基于ESP32内建WiFi,可将触发次数、电池电压等数据上报至手机或云平台,无人值守时也能掌控果园动态。
需求洞察
目标用户
- 山区丘陵地带的小型果园、家庭菜园种植户,尤其是种植苹果、桃子、葡萄等易遭野生动物啃食的农户。
- 生态农场主,拒绝使用电网、毒饵,寻求无伤害驱赶方案。
- 农业合作社或助农项目,需要低成本、易部署的标准化驱兽设备。
真实痛点
- 果实损失惨重:果园夜间常遭獾、豪猪、野兔、果子狸等动物入侵,成熟期一夜间可摧毁数十棵果树,直接经济损失上千元。
- 传统手段效果差:稻草人、反光带很快被动物适应;养狗看护成本高、夜间巡查辛苦;围网造价高昂且易被破坏。
- 用电困难:多数果园未覆盖稳定市电,长距离拉线成本高且不安全,急需电池或太阳能供电方案。
- 误伤保护动物:电网或夹子可能伤害国家保护动物,面临法律风险,无物理伤害的声音和光线驱赶是唯一合规路径。
为什么值得做
果园夜间驱赶器直击果农核心痛点,成本仅一杯咖啡的价格,却能挽回数万元损失。ESP32方案自带联网能力,未来可接入农业物联网平台,采集动物活动规律数据,辅助农户制定精准防范策略。从技术可行性与市场空缺看,这是一个需求真实、回报清晰的硬件小微项目。
方案设计
感知层
- PIR传感器:数字信号输出,连接到GPIO13,通过中断方式唤醒ESP32,避免轮询增加功耗。
- LDR光敏电阻模块:模拟电压输出,接GPIO34(ADC1_CH6),持续检测环境光强度。当电压低于设定阈值(如0.8V)判定为夜晚,解除PIR中断屏蔽,使能驱赶逻辑。
- 供电电压监测(可选):利用内部ADC或外部电阻分压,监测锂电池电压,实现低电量报警。
控制层
- 主控MCU:ESP32-WROOM-32模组,双核240MHz,内置WiFi与蓝牙,提供4MB Flash。运行MicroPython固件,便于快速迭代逻辑。
- 逻辑状态机:
- 休眠态:白天LDR判定光照充足,关闭PIR中断,buzzer和LED阵列断电,仅ESP32深度睡眠,间隔30秒唤醒一次检查光线。
- 警戒态:夜晚降临,ESP32唤醒并对GPIO13使能外部中断,PIR一旦检测到红外变化,立即进入驱赶态。
- 驱赶态:PWM驱动buzzer发出变频声波,同时GPIO27驱动MOS管控制LED阵列爆闪(占空比50%,闪烁间隔300ms),持续5秒,然后将触发事件记录并上报,最后回到警戒态。
执行层
- 高频buzzer:使用有源蜂鸣器或压电陶瓷片,配合简单驱动电路,工作频率通过GPIO25输出PWM信号调节。为提升驱赶效果,频率在2.2kHz与4.5kHz之间循环切换,模拟天敌鸣叫或不规则噪声。
- LED阵列:采用3颗1W白光LED串联,由5V升压模块供电,通过AO3400 N-MOS管控制通断。GPIO27输出高电平时MOS导通,LED爆闪。聚光杯设计使光线投射更远。
日志与联网层
- 本地存储:ESP32内部闪存中维护一个简单CSV日志,记录每次触发的时间戳(RTC维护)。
- WiFi上报:设备连接预设WiFi热点,通过MQTT协议向私有云或Blynk平台发送驱赶事件计数、电池电压、设备心跳。网络不好时日志缓存,重连后补发。
- 调试接口:保留一个UART(TX=GPIO1, RX=GPIO3)用于命令行监控,可实时打印光线值、触发次数。
物料清单
| 序号 | 物料名称 | 数量 | 用途 | 估算单价(元) | 小计(元) |
|---|---|---|---|---|---|
| 1 | ESP32-WROOM-32开发板 | 1 | 主控核心 | 18.00 | 18.00 |
| 2 | HC-SR501 PIR传感器模组 | 1 | 动物红外检测 | 5.00 | 5.00 |
| 3 | 光敏电阻传感器模块(带比较器) | 1 | 环境光检测 | 3.50 | 3.50 |
| 4 | 有源高频蜂鸣器 (3-24V) | 1 | 声波驱赶 | 2.00 | 2.00 |
| 5 | 1W白光LED (带20mm聚光杯) | 3 | 爆闪光源 | 2.50 | 7.50 |
| 6 | AO3400 N-MOS管模块 | 1 | LED驱动开关 | 1.00 | 1.00 |
| 7 | 5V升压模块 (MT3608) | 1 | 电池升压至5V供LED | 1.80 | 1.80 |
| 8 | 18650锂电池 2500mAh | 1 | 系统供电 | 10.00 | 10.00 |
| 9 | TP4056锂电池充电模块 | 1 | 电池充电管理 | 1.50 | 1.50 |
| 10 | 洞洞板、排针、电阻电容、导线 | 批 | 连接与固定 | 3.70 | 3.70 |
| 11 | 防水接线盒 | 1 | 外壳防护 | 1.00 | 1.00 |
| 合计 | 54.00 |
注:成本符合55元预算,未计入太阳能板,可后期升级。
接线与结构
接线定义
- PIR传感器:VCC→3.3V,GND→GND,OUT→GPIO13。使用中断引脚,响应迅速。
- LDR光敏模块:VCC→3.3V,GND→GND,AO→GPIO34(ADC1_CH6)。GPIO34为仅输入通道,无法输出,此处仅作模拟输入,满足要求。
- 高频蜂鸣器:正极→GPIO25(PWM输出),负极→GND。若电流较大可串接NPN三极管(S8050)驱动,本方案用有源蜂鸣器直接驱动负载电流<20mA,可直连。
- LED阵列:三颗LED串联后正极接5V升压模块输出,负极接AO3400漏极(D);源极(S)接GND;栅极(G)接GPIO27并下拉10kΩ电阻到GND,限流电阻根据LED参数计算(串接在LED回路中,约1.2Ω/2W)。5V升压模块输入接电池正极,使能脚可不接(常开)。
- 供电:18650电池正极→TP4056模块BAT+,输出接到ESP32 5V引脚(注意:ESP32开发板通常带LDO,可接受5V输入,也可直接接3.3V引脚,为稳定使用5V引脚)。TP4056模块充电口接Micro-USB,方便外接充电宝或太阳能板。
结构组装
所有元件焊接在洞洞板上,PIR传感器和LDR从接线盒侧面开孔伸出并用密封胶防水。蜂鸣器内置,开透声孔。LED阵列安装在盒子正面并加装聚光杯。电池仓单独隔离。整体固定在果园树干或竹竿上,离地1.2-1.5米,面向重点防护区域。
核心代码
# 使用MicroPython固件,开发环境:Thonny或VSCode+mpy插件
import time, network, ntptime
# 引脚定义
PIR_PIN = 13
LDR_PIN = 34
BUZZER_PIN = 25
LED_PIN = 27
# 阈值
LIGHT_THRESHOLD = 2000 # ADC值,约0.8V,根据实际校准
# 初始化设备
pir = Pin(PIR_PIN, Pin.IN)
ldr = ADC(Pin(LDR_PIN))
ldr.atten(ADC.ATTN_11DB) # 量程0-3.3V
buzzer = PWM(Pin(BUZZER_PIN), freq=2200, duty=0)
led = Pin(LED_PIN, Pin.OUT)
# 网络配置(SSID和密码需修改)
WIFI_SSID = "Orchard_WiFi"
WIFI_PASS = "12345678"
MQTT_BROKER = "test.mosquitto.org"
TOPIC = b"orchard/event"
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
for _ in range(10):
if wlan.isconnected():
break
time.sleep(1)
return wlan.isconnected()
def sync_time():
try:
ntptime.settime()
except:
pass
def log_event(count):
if connect_wifi():
client = MQTTClient("orchard_driver", MQTT_BROKER)
client.connect()
client.disconnect()
def drive_away():
event_count = 0
for _ in range(5): # 持续5秒
# 变频蜂鸣器
buzzer.freq(freq)
buzzer.duty(512) # 50%占空比
# LED爆闪
led.value(1)
time.sleep(0.15)
led.value(0)
time.sleep(0.15)
event_count += 1
buzzer.duty(0)
led.value(0)
# 记录日志并上报
f.write("{}\n".format(time.time()))
log_event(event_count)
# 主循环
sync_time()
# 安装中断,下降沿或上升沿触发均可,HC-SR501重复触发模式
pir.irq(trigger=Pin.IRQ_RISING, handler=lambda p: drive_away())
while True:
light_val = ldr.read()
if light_val < LIGHT_THRESHOLD:
# 夜晚使能中断
# 中断已开启,此处可进入轻度睡眠节省功耗
time.sleep(0.5)
else:
# 白天失能中断,LED和蜂鸣器不工作
pir.irq(handler=None)
buzzer.duty(0)
led.value(0)
time.sleep(30) # 30秒检测一次光线
调试步骤
- 模块单独测试:使用USB线供电,在REPL下读取LDR值和PIR状态,确认光敏模块遮挡后ADC值变化,PIR在人体移动时输出高电平。
- 蜂鸣器调频:固定占空比512,手动设置freq从1000Hz到5000Hz,耳朵听声音变化,选择刺耳频段。记录动物最敏感的频点,微调代码中的扫频区间。
- LED驱动检测:用万用表测量GPIO27输出3.3V时,升压模块5V输出是否导通,LED两端电压及亮度正常。
- 夜晚模拟:用黑胶带遮住LDR,观察系统是否自动解除PIR中断屏蔽,靠近传感器后蜂鸣器响起、LED闪烁。撤离后是否恢复警戒。
- 连网上报:修改WiFi信息,重启设备。触发一次,查看MQTT服务器(或Blynk)是否收到事件计数。
- 整机功耗评估:串联电流表,记录深睡、警戒、驱赶三种状态的平均电流,估算单节18650续航天数,确定是否需要添加太阳能充电板。
设计图
果园夜间动物驱赶器结构flow
1
感知输入
→
2
控制处理
→
3
执行反馈
→
4
数据上报