BeeMonitor:基于边缘 AI 的智能养蜂监测系统
项目背景与痛点
养蜂业面临蜂群健康监测难、分蜂(swarming)预警滞后、人工巡检成本高等挑战。分蜂是蜂群自然繁衍行为,老蜂王率领大量工蜂离巢,若未及时捕捉将造成蜜源损失与蜂群衰弱。传统人工听诊法依赖经验,主观性强且无法全天候覆盖。本项目利用 Arduino Nano 33 BLE Sense 内置麦克风与 IMU,结合 TinyML 边缘推理,实现蜂群嗡嗡声谱分析、分蜂事件识别、温湿度环境监测,通过蓝牙低功耗(BLE)同步至 Android App,助力养蜂人科学决策。
系统架构
边缘节点(蜂箱端)
- MCU:Arduino Nano 33 BLE Sense (nRF52840, 64MHz, 1MB Flash, 256KB RAM)
- 传感器融合:板载 PDM 麦克风(采样率 16kHz)、HTS221 温湿度传感器(±0.5℃/±3.5%RH)、LSM9DS1 9轴 IMU(预留振动分析)。
- 推理引擎:Edge Impulse 导出的 C++ 库(EON Compiler 优化),模型体积 < 20KB,推理延迟 < 50ms。
- 供电:3.7V 锂电池 + 太阳能充电板,深度睡眠电流 < 10μA,单次充电续航 > 30 天。
移动端
- Android App (Kotlin):BLE GATT 客户端,自动扫描/连接/重连,实时图表(MPAndroidChart)、事件推送通知、历史数据本地存储(Room DB)、导出 CSV。
- 云端同步(可选):MQTT 网关桥接至云数据库,多蜂箱集中管理、长期趋势分析、协同预警。
机器学习模型训练流程
数据采集
- 在多个蜂箱部署原型机,录制含蜂王/无蜂王/分蜂前后的嗡嗡声片段,每类 ≥ 200 样本,时长 2s,16kHz/16bit mono。
- 同步记录温湿度、时间、天气、蜂箱编号等元数据,构建结构化数据集。
特征工程
- 频谱图:STFT 窗长 256、步长 128,生成 32×32 梅尔频谱图,归一化至 [-1,1]。
- 统计特征:基频、谐波能量比、频谱质心、频谱带宽、零交叉率等 12 维向量,作为辅助输入。
模型架构
// Edge Impulse 生成的模型结构摘要
Input: (1, 32, 32) // Mel-spectrogram
Conv2D(16, 3x3, relu) -> MaxPool(2x2)
Conv2D(32, 3x3, relu) -> MaxPool(2x2)
Conv2D(64, 3x3, relu) -> GlobalAvgPool
Dense(32, relu) -> Dropout(0.3)
Dense(3, softmax) // 输出: 0=有蜂王, 1=无蜂王, 2=分蜂
Params: ~18K MACs: ~1.2M
训练与验证
- 优化器:Adam, lr=0.001, batch=32, epoch=50, early stopping(patience=5)。
- 数据增强:时域随机平移、频域 SpecAugment (mask freq/time)、加性高斯噪声 (SNR 20dB)。
- 交叉验证准确率:96.2%(有蜂王)、94.8%(无蜂王)、92.1%(分蜂),混淆矩阵显示分蜂与无蜂王易混淆,需增补分蜂早期样本。
部署与推理
Edge Impulse 一键导出 Arduino Library (ei-smartbees-arduino-1.0.6.zip),集成至主程序:
// 主循环推理片段
void loop() {
if (central.connected()) {
delay(2000); // 间隔采样
bool ok = microphone_inference_record(); // PDM 采集 2048 样本
float temp = HTS.readTemperature();
float humi = HTS.readHumidity();
signal_t sig = {EI_CLASSIFIER_RAW_SAMPLE_COUNT, microphone_audio_signal_get_data};
ei_impulse_result_t result;
run_classifier(&sig, &result, false);
// 后处理:取最大概率类别
int idx = argmax(result.classification, 3);
const char* evt = (idx==0)?"MATICA":(idx==1)?"NIMATICE":"ROJENJE";
// 打包 JSON 通过 BLE 发送
StaticJsonDocument<600> doc;
doc["temperature"] = round(temp*10)/10.0;
doc["humidity"] = round(humi*10)/10.0;
doc["event"] = evt;
String json; serializeJson(doc, json);
serviceOutput.writeValue(json);
}
}
Android App 核心功能
- 设备发现与配对:扫描 "BeeHive" 前缀设备,一键绑定,存储 MAC 地址自动重连。
- 实时仪表盘:温度/湿度仪表盘、事件状态卡片(正常/无蜂王/分蜂预警)、信号强度 RSSI。
- 事件时间轴:按时间倒序列出所有事件,支持筛选、导出、分享。
- 参数配置:采样间隔(默认 30min,分蜂高发期 10-13 点可加密至 5min)、阈值灵敏度、推送通知渠道。
- OTA 固件升级:基于 Nordic DFU,App 端一键推送新版模型/固件。
现场部署实践
- 安装位置:模块固定于蜂箱内盖板下方中央,麦克风朝下距巢脾 2-3cm,避免蜂胶封堵。
- 天线优化:板载 PCB 天线受金属蜂箱屏蔽,建议外接 2.4GHz 柔性天线引出箱外。
- 供电方案:18650 电池 + TP4056 充电板 + 5V 太阳能板,MPPT 充电效率 >90%。
- 定标校准:新蜂箱部署首周采集人工标注数据,微调模型阈值(迁移学习微调最后一层 Dense)。
性能指标与局限
| 指标 | 实测值 | 备注 |
|---|---|---|
| 分蜂检出率 | 92.1% | 提前 1-2 小时预警 |
| 误报率 | 4.3% | 主要源于暴雨/风噪声 |
| BLE 通信距离 | 50m (LOS) | 蜂箱金属箱体衰减约 15dB |
| 单次推理功耗 | 1.8 mJ | 含 PDM 采集+推理+BLE 发送 |
| 模型体积 | 18.7 KB | Flash 占用 < 5% |
未来演进路线
- 多模态融合:引入 IMU 振动谱、CO2 浓度、重量传感器,构建多特征决策树/Transformer。
- 联邦学习:多蜂箱本地训练,仅上传模型梯度聚合全局模型,保护数据隐私。
- LoRaWAN 组网:打破 BLE 距离限制,实现公里级覆盖,接入农业物联网平台。
- 蜂王健康评分:基于产卵声纹、工蜂喂养行为声学特征,量化蜂王品质。
- 开放数据集:发布标注好的蜂群声学数据集,推动领域基准建设。
制造工艺