智能鸟类喂食监测站:Arduino 101 + Intel Edison BLE 网关 + 云端实时流式数据与图像
元件清单
| 模块 | 元件 | 数量 |
|---|---|---|
| 喂食端(Arduino 101) | Arduino 101(内置 BLE + 加速度计) | 1 |
| Intel Edison + Arduino Breakout Board | 网关端 | 1 |
| Logitech C270 USB 摄像头 | Edison 拍照 | 1 |
| Sharp GP2Y0D815Z0F 数字红外测距模块(15 cm) | 检测鸟落栖木,两侧各一 | 2 |
| Adafruit Si7021 温湿度传感器 | I²C 接口 | 1 |
| Interlink 406 方形压力传感器 (FSR) | 监测种子余量 | 1 |
| 4×AA 电池盒(带开关) | 喂食端供电 | 1 |
| Seeed Grove Starter Kit Plus (Intel IoT 版) | 可选,简化接线 | 1 |
| 电容 47 µF | 红外传感器供电去耦 | 2 |
| 电阻 1 kΩ | FSR 分压 | 1 |
| 可调 DC-DC 电源模块 (3-12V) | Edison 供电 | 1 |
| 终端块、万用板、杜邦线 | 连接用 | 若干 |
工具与软件
- 3D 打印机、烙铁
- Autodesk Fusion 360(外壳建模)
- Intel XDK for IoT(Edison 开发)
- PubNub 实时数据流、Cloudinary 图像存储/变换、noble.js (BLE 中央端)
系统总览
喂食端:Arduino 101 嵌入 3D 打印外壳置于苏打瓶喂食器内。两路 Sharp 红外检测鸟落栖木,FSR 感知种子重量,Si7021 采集温湿度。Arduino 101 作 BLE 外设,周期性广播并推送传感器数据(温度、湿度、种子量、栖木触发计数)。
网关端:Intel Edison 作 BLE 中央设备(noble.js),接收通知,栖木触发时调用 fswebcam 拍照存 SD 卡,上传至 Cloudinary,通过 PubNub 实时推送 JSON(含传感器数据、最新 3 张图片 URL)到前端网页。前端仅需 HTML+JS(引入 PubNub SDK 与 Eon 图表库),无需服务器。
关键硬件挑战与解决
- 红外传感器供电抖动:Sharp 模块工作电流脉冲大,单路正常,双路并联失效。官方 FAQ 建议每模块并联 10 µF 电容,作者用 47 µF 电解电容并直连 5V 引脚解决。
- FSR 灵敏度不足:种子重量分布大面积,压力小。借鉴帕斯卡原理,在 FSR 中心做小面积压力传导柱,压强放大 10 倍以上,实现线性段测量。
- Edison USB 摄像头驱动:Yocto 系统需安装
kernel-module-uvcvideo与fswebcam,拍照命令fswebcam -r 1280x720 --jpeg 100 -D 3 -S 13 test.jpg。 - BLE 掉线:电池电量低时 BLE 最先失效,需监控电压或加大容量电池。
Arduino 101 固件要点
- 使用
union将 float 温湿度、int 种子量拆解为字节数组,通过BLECharacteristic.setValue()发送。 - 避免
delay()阻塞 BLE,采用millis()非阻塞定时轮询各传感器(参考 Adafruit 多任务教程)。 - 栖木触发采用边沿检测(上升沿),立即发送 BLE 通知。
Edison 端 Node.js 核心流程
// noble.js 扫描连接 Arduino 101 BLE 服务
noble.on('discover', peripheral => {
if(peripheral.advertisement.localName === 'bird') {
peripheral.connect(err => {
peripheral.discoverServices([SERVICE_UUID], (err, services) => {
services[0].discoverCharacteristics([], (err, chars) => {
chars.forEach(c => {
c.on('data', (data, isNotif) => transformRawData(c.uuid, data));
c.notify(true);
});
});
});
});
}
});
// transformRawData: 解析特征值
// 栖木触发 -> child_process.execFile('fswebcam', ...) 拍照
// 上传 Cloudinary -> 获取 URL
// 组装 JSON -> PubNub publish('feederView', payload)
前端网页 (index.html)
- 引入 PubNub SDK + Eon 图表库。
- 订阅
feederView频道,解析 JSON 更新仪表盘(温度、湿度、种子量计、栖木计数)与最近 3 张图片轮播。 - 纯静态页面,可离线打开、邮件分享、手机浏览器查看。
3D 打印外壳
苏打瓶直径约 105 mm,设计分体式外壳:主体容纳 Arduino 101+两块万用板,底部电池仓省材结构,顶部把手便于取出。FSR 压力传导柱一体化打印。STL 文件托管于 GitHub:ItsForTheBirds/tree/master/3DBuild。
部署实测
- 鸟类发现喂食器后极其活跃,数小时产生 2000+ 张照片。
- Cloudinary 仪表盘可浏览/筛选图片;PubNub 实时图表展示种子消耗曲线。
- 数据与 Project FeederWatch 方法学部分配合:环境参数自动化、种子消耗量化、稀有鸟种影像留存。
后续改进(Seeed Grove 版)
改用 Grove Base Shield 供电,双路红外无需外接电容即稳定工作,布线大幅简化。标准 Grove 红外传感器需飞线改接 GND/VIN/SIG 适配 Base Shield。
项目资源
- 完整代码:GitHub 仓库
- 3D 模型:仓库
3DBuild目录 - 原理图:馈电端 Fritzing 图、Edison 端实物接线照片
制造工艺
- 树莓派紧凑型 DHT 温湿度扩展板:ATtiny85 + DHT22/DHT11
- 树莓派连接 HC-SR04 超声波传感器实战指南
- 解锁树莓派全部潜力的必备配件推荐
- SIGHT:助盲智能眼镜 — 树莓派 + TensorFlow + Android Things
- 深情告别:我在出版界的40年旅程
- 将 5S 管理融入工业 4.0:破解实施难题
- Intel Edison 物联网模组回顾:规格、扩展板、软件生态、气象站实战与替代方案
- 灌装传感器选型指南:精度、可靠性与盈利能力的平衡
- 先进TOMOPEX传感器膜实现航空航天实时监测
- 国际空间站传感器精准WiFi RSSI定位追踪
- 革命性数学框架助工程师选定最优飞机传感器
- 英特尔携手Udacity推出边缘AI开发认证学位