# Bee_Project **Repository Path**: kxm21/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-11-04 - **Last Updated**: 2026-11-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智蜂眸 · 基于 ESP32-S3 的多模态智能蜂箱感知系统 > 面向中小蜂农的低成本蜂箱环境与蜂群活动监测方案 ![系统架构](docs/images/system_architecture.png) --- ## 项目简介 传统养蜂高度依赖人工开箱巡检,存在**巡检效率低、蜂群状态难预判、蜂蜜品质不稳定**三大痛点。 本项目以 **ESP32-S3** 为核心,集成多类传感器完成蜂箱内外环境与蜂群活动的连续采集, 通过滑动平均滤波与 **Z-Score 异常检测**进行边缘端判断,再经 WiFi 上传至巴法云, 并由 Blinker 实现手机端实时查看与远程控制。 系统在「多传感器感知 + 边缘计算 + 云端协同」三层架构上, 设计了**红外连续计数与视觉分析互补**的双模态监测路线。 --- ## 实物
蜂箱实物 电路与 App
智能蜂箱实物(底部为控制盒与电池) 控制板、供电与手机端实时数据
手机端(Blinker)实时界面: Blinker App 界面 --- ## 系统架构 系统分为五层: | 层级 | 组成 | 职责 | |---|---|---| | 感知层 | 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. --- ## 开源说明 本源代码仅用于学术交流。系统中涉及的第三方库版权归各自作者所有。