# Bee_Project **Repository Path**: Zh722503/bee_-project ## Basic Information - **Project Name**: Bee_Project - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-10-27 - **Last Updated**: 2026-11-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智蜂眸 · 基于 ESP32-S3 的多模态智能蜂箱感知系统 > 面向中小蜂农的低成本蜂箱环境与蜂群活动监测方案  --- ## 项目简介 传统养蜂高度依赖人工开箱巡检,存在**巡检效率低、蜂群状态难预判、蜂蜜品质不稳定**三大痛点。 本项目以 **ESP32-S3** 为核心,集成多类传感器完成蜂箱内外环境与蜂群活动的连续采集, 通过滑动平均滤波与 **Z-Score 异常检测**进行边缘端判断,再经 WiFi 上传至巴法云, 并由 Blinker 实现手机端实时查看与远程控制。 系统在「多传感器感知 + 边缘计算 + 云端协同」三层架构上, 设计了**红外连续计数与视觉分析互补**的双模态监测路线。 --- ## 实物
![]() |
![]() |
| 智能蜂箱实物(底部为控制盒与电池) | 控制板、供电与手机端实时数据 |
---
## 系统架构
系统分为五层:
| 层级 | 组成 | 职责 |
|---|---|---|
| 感知层 | SHT30、BME280、红外对管、土壤湿度、HX711 称重、ESP32-CAM | 采集箱内温湿度、外界温湿压、蜂群进出、土壤湿度、箱重、入口图像 |
| 控制层 | ESP32-S3 | 数据滤波、阈值判断、Z-Score 异常检测、通信调度 |
| 传输层 | WiFi(2.4GHz) | 数据上传巴法云、接收控制指令 |
| 云端平台层 | 巴法云(bemfa.com) | 数据存储、可视化、指令下发 |
| 应用层 | Blinker App | 实时查看、趋势显示、阈值调节、远程控制 |
---
## 硬件清单与接线
完整接线表见 **[hardware/接线表.md](hardware/接线表.md)**,传感器选型说明见 **[hardware/硬件清单.md](hardware/硬件清单.md)**。
| 传感器 | 接口 | ESP32-S3 引脚 | 说明 |
|---|---|---|---|
| BME280 | I²C-0 | SDA=GPIO6, SCL=GPIO7 | 地址 0x76,外界温/湿/气压 |
| SHT30 | I²C-1 | SDA=GPIO4, SCL=GPIO5 | 地址 0x44,400kHz,箱内温湿度 |
| 红外对管 | GPIO | OUT=GPIO18 | 箱口进出计数,50ms 消抖 |
| 土壤湿度 | ADC + GPIO | AO=GPIO9, DO=GPIO10 | 电容式,非线性映射 |
| HX711 称重 | GPIO | DOUT=GPIO38, SCK=GPIO39 | 增益 128,校准系数 429.4966 |
| ESP32-CAM | 独立模块 | — | MJPEG 推流,见 `firmware/cam_stream/` |
> ⚠️ `firmware/main_camera_pinmap/` 为**摄像头与主控共用同一块板**时的引脚重映射版本
> (BME→13/8、SHT→11/12、红外→2、HX711→21/40),未在实物上验证过,仅供参考。
---
## 功能特性
### 数据采集与滤波
- 5 点滑动平均滤波,覆盖 BME280 / SHT30 / 土壤湿度 / 重量四路
- 双温湿度传感器(SHT30 + BME280)交叉验证,降低单点失效风险
### 异常检测
| 检测项 | 算法 | 默认阈值 |
|---|---|---|
| 箱内温度越界 | 固定阈值 | 14 – 35 ℃ |
| 箱内湿度越界 | 固定阈值 | 50 – 80 %RH |
| 土壤湿度过高 | 固定阈值 | ≥ 80 % |
| 蜂群活动突变 | **Z-Score**(30 窗口历史) | 绝对阈值 > 2.5 |
| 分蜂热风险 | 温湿度条件组合 | 见下文 |
**分蜂热分级**:
- 温度异常 **且** 湿度异常 → 🔴 高风险
- 温度或湿度单一异常 → 🟠 中风险
- 均正常 → 🟢 安全
三色状态实时推送至 App。
### 云端通信
- 巴法云 MQTT(`bemfa.com:9501`),5 个数据主题 + 1 个控制主题
| 主题 | 内容 | 周期 |
|---|---|---|
| `BME280004` | 温度 / 湿度 / 气压 | 10 s |
| `SHT30004` | 温度 / 湿度 | 10 s |
| `SUM004` | 红外计数 | 10 s |
| `PRESS004` | 重量 / 原始 AD / 净 AD | 10 s |
| `SOIL004` | 土壤湿度 / 模拟值 / 数字值 | 10 s |
| `control` | 控制指令(订阅) | — |
云端控制台截图见 [docs/images/bemfa_console.png](docs/images/bemfa_console.png)。
### 手机端交互(Blinker)
- 6 个实时数值卡片、3 个趋势指示(↑ → ↓)
- 3 种参数模式切换:温度 / 湿度 / 警报
- 2 个滑动条在线调整阈值
- 3 个功能按钮:重置计数、传感器校准、设备重启
---
## 目录结构
```
.
├── firmware/
│ ├── main/ # 主固件(传感器 + 云端 + App)
│ ├── main_camera_pinmap/ # 摄像头共用板卡时的引脚重映射版本
│ ├── test_bme/ # BME280 掉线自动重连测试版
│ └── cam_stream/ # ESP32-CAM MJPEG 网页推流
├── hardware/
│ ├── 接线表.md # 完整引脚与接线说明
│ └── 硬件清单.md # 器件选型与功能对应
├── docs/
│ ├── project_brief.pdf # 项目简介
│ ├── research_report.docx # 研究报告
│ ├── quarterly_report.docx # 季度进展报告
│ └── images/ # 架构图、实物图、对比图
├── ml/ # PC 端数据采集 + LSTM 时序原型(详见 ml/README.md)
│ ├── beehive_data_saver/ # MQTT → SQLite / 日志
│ └── beehive_lstm/ # PyTorch LSTM 训练与预测脚本
├── media/
│ └── demo_2025_sensor_contest.mp4 # 项目演示视频
└── legacy/ # 2025 年分模块开发过程(仅供溯源)
```
---
## 快速开始
### 1. 环境准备
- [Arduino IDE](https://www.arduino.cc/en/software) 2.x
- 开发板管理器安装 **esp32 by Espressif Systems**
- 选择开发板:**ESP32S3 Dev Module**
- 分区方案建议 `Huge APP (3MB No OTA/1MB SPIFFS)`
### 2. 安装依赖库
| 库名 | 用途 |
|---|---|
| `Adafruit BME280 Library` | BME280 驱动 |
| `Adafruit Unified Sensor` | 传感器抽象层 |
| `ArtronShop SHT3x` | SHT30 驱动 |
| `HX711` | 称重模块驱动 |
| `Blinker` | 手机 App 框架 |
| `PubSubClient` | MQTT 客户端 |
### 3. 配置密钥(**必做**)
仓库中**不含任何真实凭据**。首次使用请复制模板并填入自己的信息:
```bash
cp firmware/main/config.example.h firmware/main/config.h
# 编辑 config.h,填写 WIFI_SSID / WIFI_PASSWORD / BLINKER_AUTH / MQTT_PRIVATE_KEY
```
`cam_stream/`、`main_camera_pinmap/`、`test_bme/` 同理,各自复制一份 `config.h`。
> `config.h` 已被 `.gitignore` 排除,请勿提交。
### 4. 烧录与验证
1. 按 [hardware/接线表.md](hardware/接线表.md) 完成接线
2. 打开 `firmware/main/main.ino` 编译并烧录
3. 串口监视器波特率 **115200**,应看到:
```
=============================================
智能蜂箱监测系统启动
多传感器数据采集 + 手机APP监控
带模式切换的阈值控制
=============================================
✅ 滤波数组初始化完成
...
✅ 系统初始化完成,开始数据采集
```
4. 随后每 2 秒输出一行汇总:
```
<毫秒> | BME:22.8C,50.0%,1004.3hPa | SHT:22.5C,48.2% | IR:28 | Soil:45%,1820 | Weight:1203.5g,AD:516820 | No_Swarm | OK | WiFi+MQTT✅
```
### 5. 摄像头推流(可选)
```bash
cp firmware/cam_stream/config.example.h firmware/cam_stream/config.h
# 填入 WiFi,烧录后浏览器打开 http://<设备IP>/stream
```
该路 MJPEG 流可被 PC 端 OpenCV 直接读取,供视觉模型抓帧使用。
### 6. PC 端 LSTM 原型(可选)
见 **[ml/README.md](ml/README.md)**。当前模型只做未来 6 小时的温/湿/气压预测,
训练数据以示例数据为主,尚未接入固件,也不能当作分蜂预测。
---
## 关键技术参数
| 参数 | 取值 | 位置 |
|---|---|---|
| 滤波窗口 | 5 点 | `FILTER_WINDOW_SIZE` |
| 红外消抖 | 50 ms | `COUNT_THRESHOLD` |
| Z-Score 历史窗口 | 30 | `IR_WINDOW_SIZE` |
| Z-Score 判定阈值 | 2.5 | `Z_SCORE_THRESHOLD` |
| 告警检查周期 | 5 s | `ALERT_CHECK_INTERVAL` |
| 云端上报周期 | 10 s | `MQTT_SEND_INTERVAL` |
| App 刷新周期 | 2 s | `BLINKER_SEND_INTERVAL` |
| WiFi / MQTT 重连检查 | 30 s | `WIFI_CHECK_INTERVAL` |
| HX711 校准系数 | 429.4966 | `WEIGHT_CALIBRATION_FACTOR` |
| 土壤干湿标定 | 3500 / 1500 | `dryValue` / `wetValue` |
---
## 当前实现状态
硬件与云端链路已在实物上运行验证。为保证技术透明度,**当前实现范围**如下:
| 能力 | 状态 | 说明 |
|---|---|---|
| 多传感器采集 + 滤波 | ✅ 已实现 | 5 路传感器全部实测运行 |
| 阈值告警 + Z-Score 检测 | ✅ 已实现 | 红外活动突变检测已实现 |
| 巴法云 MQTT 上传 | ✅ 已实现 | 5 主题周期性上报 |
| Blinker App 交互 | ✅ 已实现 | 数据展示 + 阈值调节 + 按钮控制 |
| 摄像头 MJPEG 推流 | ✅ 已实现 | 独立固件,已验证可出画面 |
| YOLOv8 蜜蜂检测与计数 | 🚧 进行中 | 硬件推流就绪,模型推理在 PC/云端,仓内尚无部署代码 |
| PC 端数据采集 + SQLite | ✅ 已实现 | `ml/beehive_data_saver/`,订阅巴法云并落库 |
| LSTM 时序原型 | 🚧 PC 端验证中 | `ml/beehive_lstm/` 已有 PyTorch LSTM,预测未来 6 小时温/湿/气压;尚未接入固件,也不是分蜂预测 |
| 高频电容蜂蜜成熟度 | 📋 规划中 | 方案已设计,实物未集成 |
| 执行器联动(风扇/加热) | 📋 规划中 | 当前仅告警,未驱动执行器 |
| 太阳能 + 锂电池供电 | 🚧 测试中 | 硬件已具备,续航数据待实场验证 |
> 如需了解规划中的算法设计,见 [docs/research_report.docx](docs/research_report.docx)。
---
## 已知限制
1. `readBME280()` / `readSHT30()` 为空实现,实际读取发生在 `printAllSensorData()` 中,导致 SHT30 实际读取周期与 `SHT_READ_INTERVAL` 不一致。
2. BME280 的温/湿/气压三路共用同一个滤波游标 `bmeFilter.index`,滤波结果存在串扰。
3. HX711 每累计 1000 次读数会重新校准零点,长时间运行将抵消缓慢的净重增长。
4. 分蜂检测中 `currentWeight < -50.0` 为绝对负值判断,实际难以触发。
5. 土壤湿度采用线性映射,未做温度补偿与非线性校正。
6. 仅支持 2.4GHz WiFi,未实现 LoRa / NB-IoT / 蓝牙通信。
7. `ml/` 下的 LSTM 原型尚未接入固件;输出是温/湿/气压,不是分蜂风险,且训练数据以示例数据为主。
8. `ml/beehive_lstm/predict.py` / `real_time_predict.py` 为 Keras 版本,与仓库中的 PyTorch `.pth` 模型不兼容。
以上问题在 [docs/research_report.docx](docs/research_report.docx) 的后续工作计划中有对应处理方案。
---
## 演示视频
- 🎬 [项目演示视频](media/demo_2025_sensor_contest.mp4)
---
## 参考文献
1. 杨选, 刘升平, 孙开梦, 等. 蜂箱关键参数在线监测系统及性能试验[J]. 智慧农业, 2020, 2(2): 115-125.
2. 皮安娟. 中华蜜蜂温、湿度监测系统开发及在越冬蜂群中的运用[J]. 重庆师范大学学报(自然科学版), 2025.
3. 洪葳, 胥保华, 刘升平, 等. 蜂群多特征长期监测系统设计与试验研究[J]. 智慧农业(中英文), 2020.
4. 刘升平, 张杰, 郭秀明, 等. 智能蜂箱及基于深度学习的蜜蜂识别跟踪计数系统[P]. 2022.
---
## 开源说明
本源代码仅用于学术交流。系统中涉及的第三方库版权归各自作者所有。