- 嵌入式
- 物联网
- 智能硬件
- 示例工程
【免费下载链接】作品
本仓库用于系统化存储和管理源师兄在学习、竞赛及创作过程中产生的各类作品和项目资源。
导读
本文以“校园小鸟‘访客’智能计数器”作品为对象,系统拆解其从创意设计到双端程序实现的完整链路:客户端(监测端)通过超声波与触摸传感器的“双条件触发”实现小鸟到访自动计数,并实时监测水槽水位;服务端(显示端)借助星闪(SparkLink)无线通信接收数据,完成水位预警、蜂鸣报警与访客计数显示。读完本文,你将掌握源师兄核心板双开发板组网的核心编程范式、星闪消息协议的设计方法,以及可复用的鸟类生态观测智能化改造方案。
一、项目背景:为什么小鸟来访需要“自动计数”
在校园生态观察与投喂实践中,学生常需要在“美食站”旁人工记录小鸟的到访次数,用于统计周访客量、优化食物投放节奏。这种手工计数方式存在两个典型痛点:
- 计数易混乱:小鸟到访时间分散、频率不定,人工一边观察一边记录容易漏记、错记;
- 状态不可感知:水槽是否缺水、当前累计来访多少只鸟,都需要近距离查看才能获知。
该作品针对上述痛点,设计了一套“自动记录 + 实时提醒”的双端系统:客户端(监测端)自动感知、服务端(显示端)远程呈现,全程无需人工读数。
二、系统总体设计:双开发板 + 三大核心功能
2.1 双端架构
作品由两块源师兄核心板构成,通过星闪技术组网:
| 端 | 角色 | 职责 |
|---|---|---|
| 开发板一 | 客户端(监测端) | 实时监测鸟儿数量与水位状态,并无线发送监测数据 |
| 开发板二 | 服务端(显示端) | 接收星闪信号,实现水位预警、状态反馈及访客计数显示 |
说明:项目文档 程序说明文档 中明确两个程序分别为“校园小鸟访客智能计数器主_客户端(星闪)程序”与“校园小鸟访客智能计数器_服务端程序”,应先启动主程序(客户端),再启动接收端,通信链路方可建立。
2.2 三大核心功能
- 感应触发计数:超声波传感器与触摸传感器同时检测到小鸟时,计数器自动加 1——双条件“与”逻辑有效避免了单一传感器(如风吹草动)造成的误触发;
- 无线传输与预警:利用星闪技术将数据实时发送至服务端显示,触发声音与红灯预警;
- 水位监测:实时检测水槽水位,缺水时向服务端发送提醒消息。
三、硬件清单与接线要点
作品硬件清单来自 README,整理如下:
| 序号 | 名称 | 功能 | 数量 |
|---|---|---|---|
| 01 | 源师兄核心板 | 系统控制与星闪数据收发 | 2 |
| 02 | 水位传感器 | 监测水槽余量 | 1 |
| 03 | 超声波传感器 | 距离感应,判断小鸟靠近 | 1 |
| 04 | 触摸传感器 | 感应小鸟是否接触特定位置 | 1 |
| 05 | 杜邦线/电源 | 电路连接与供电 | 若干 |
3.1 从源码确认的引脚分配
结合客户端程序 主_程序.ohc 的底层 Blockly 描述,各传感器的实际引脚配置如下(供接线与复刻参考):
| 传感器 | 引脚/配置 | 读取方式 |
|---|---|---|
| 水位传感器 | 模拟引脚PIN 1 | 模拟量读取(read_analog_data) |
| 触摸传感器 | 数字引脚PIN 13 | 数字量读取(read_digital_data),高电平1视为触发 |
| 超声波传感器 | Trig = 14,Echo = 15 | 距离测量(单位:cm) |
| RGB 灯 | 板载灯(-1) | 绿灯/红灯状态指示 |
| 蜂鸣器 | 板载 | 音符播放预警 |
接线时请将水位传感器信号线接至 A1(模拟引脚 1),触摸传感器接至数字引脚 13,超声波传感器的 Trig 与 Echo 分别接至引脚 14、15,并统一供电与共地。
四、客户端(监测端)程序源码级解析
客户端程序对应 主_程序.ohc,采用 OHCode 图形化编程(Blockly XML),整体逻辑为“初始化 → 主循环(喝水 + 数鸟儿)”。
4.1 初始化阶段
初始化星闪广播通道:16 显示表情:GIFT 变量 n(访客计数)← 0 等待 1000 ms 屏幕第 1 行显示:「欢迎使用检测鸟儿数量系统」 屏幕第 2 行显示:「开始工作了」 等待 1000 ms RGB 灯 → 绿色(待机状态) 刷新屏幕初始化要点:
- 广播通道号统一为 16,客户端与服务端必须配置一致才能互相通信;
- 变量
n为全局访客计数器,从 0 开始累计; - 开机即置绿灯,对应 README 中“绿灯代表待机”的状态可视化设计。
4.2 “喝水”函数:水位监测与状态上报
主循环中持续调用“喝水”函数,其逻辑如下:
清屏 屏幕第 3 行显示:「水深:」+ 模拟读取(PIN 1) 刷新屏幕 如果 模拟读取(PIN 1) ≥ 300: 星闪发送消息 "two" → 客户端 c_1(缺水预警) 如果 模拟读取(PIN 1) < 300: 星闪发送消息 "one" → 客户端 c_1(水位正常)从源码结构看,这里以模拟量阈值 300作为“缺水”与“正常”的分界线:
- 读数≥ 300:判定缺水,向服务端发送消息
"two",触发红灯与蜂鸣预警; - 读数< 300:判定正常,发送消息
"one",服务端恢复绿灯并提示“正常了”。
该阈值与传感器的安装深度、水槽材质相关,复刻时可依据实测水位调整这一数值。
4.3 “数鸟儿”函数:双条件触发计数
主循环中的第二个核心函数“数鸟儿”,其判定条件为触摸与超声波“与”逻辑:
如果 数字读取(PIN 13) == 1 并且 超声波(Trig=14, Echo=15) 距离 ≤ 10 cm: n ← n + 1 屏幕第 4 行显示:「现在有」+ n +「只鸟儿!」 刷新屏幕 星闪发送消息 "three" → 客户端 c_1 等待 100 ms 否则: 星闪发送消息 "four" → 客户端 c_1逻辑要点:
- 双条件“与”触发:触摸传感器检测到小鸟接触(PIN 13 为高电平),同时超声波检测到小鸟距离 ≤ 10 cm,才判定为一次有效到访,计数器
n加 1; - 防重复误计数:计数成功后等待 100 ms 再进入下一轮判断,从时序上抑制连续误触发;
- 每次循环都上报状态:命中则发送
"three",未命中则发送"four",服务端可据此区分“来访事件”与“常态”,实现状态反馈闭环。
4.4 客户端程序截图
五、服务端(显示端)程序源码级解析
服务端程序对应 客_程序.ohc,其核心是“等待星闪消息 → 按消息内容分支处理”,完全围绕接收到的消息驱动状态变化。
5.1 初始化阶段
初始化星闪广播通道:16 屏幕第 1 行显示:「欢迎使用校园小鸟 "访客" 智能计数器」 刷新屏幕 RGB 灯 → 绿色(待机)服务端开机即进入待机绿色状态,与客户端的“绿灯代表待机”约定保持一致。
5.2 消息驱动的主循环
服务端主循环不断检查receive_broadcast_message(是否收到星闪广播消息),收到后按消息内容执行对应分支。
分支一:收到"two"(缺水预警)
RGB 灯 → 红色 重复 2 次: 播放音符 1310(时值 2000) 播放音符 1470(时值 500)- 红灯亮起,同时蜂鸣器以两段不同音高(1310 → 1470)循环提示,实现“看得见 + 听得见”的双通道预警;
- 对应 README 中“红灯代表来访/异常,无需读数即可掌握动态”的设计目标。
分支二:收到"one"(水位正常)
屏幕第 2 行显示:「正常了」 刷新屏幕 RGB 灯 → 绿色服务端将水位恢复正常的消息反馈到屏幕与灯色,形成“缺水→红灯预警、补水→绿灯恢复”的可视化闭环。
分支三:收到"three"(小鸟来访)
屏幕第 3 行显示:「鸟儿来了」 屏幕第 4 行显示:「一共有」+ 消息内容 +「只鸟儿」 刷新屏幕 RGB 灯 → 绿色从源码的文本拼接结构看,服务端在收到访客计数消息后,将消息中的计数信息与文案拼接,展示“一共有 X 只鸟儿”的累计结果,完成访客计数显示。
5.3 服务端程序截图
六、星闪通信协议:消息语义一览
综合两块开发板的源码,可以整理出本项目的星闪消息协议(广播通道 16,目标客户端标识c_1):
| 消息内容 | 发送端场景 | 接收端动作 |
|---|---|---|
"one" | 水位正常(模拟量 < 300) | 屏幕显示“正常了”,RGB 灯转绿 |
"two" | 水位缺水(模拟量 ≥ 300) | RGB 灯转红,蜂鸣器双音循环报警 |
"three" | 检测到小鸟到访(计数 +1) | 屏幕显示“鸟儿来了”与累计数量 |
"four" | 未检测到小鸟(常态) | 维持待机状态(无显式分支动作) |
这套“极简字符串消息 + 接收端分支”的协议设计,非常便于理解与调试:每类事件对应一条固定消息,服务端只做字符串匹配即可完成全部状态切换,无需解析复杂的数据帧结构。复刻或扩展时(例如增加“食物不足”事件),只需在客户端新增一个发送分支、在服务端新增一个字符串比较分支即可。
七、创新点与状态可视化设计
7.1 灯色即状态,无需读数
作品将 RGB 灯作为全局状态指示器:
- 绿灯 = 待机/正常:开机置绿、水位恢复置绿、来访计数后恢复绿色;
- 红灯 = 异常/来访预警:水位缺水时红灯常亮并伴随蜂鸣。
“看一眼灯色即可掌握系统动态”的设计,显著降低了观察门槛,尤其适合课堂与低龄使用者。
7.2 观察联动:计数工具 × 生态教育
README 中特别强调,将计数工具与“小鸟访客日记”结合,可把冷冰冰的传感器数据转化为生态观察记录:学生依据计数器积累的到访量与水位消耗,优化食物投放时机与分量,同时将数据写进访客日记,增强生态教育的参与感与连续性。
八、应用场景
- 校园生态观察:统计小鸟周到访量,据此优化食物投放,培养长期观察记录习惯;
- 远程监测:通过服务端实现非接触式实时数据查看,监测人员不必靠近喂食点即可掌握小鸟动态与水槽余量。
九、程序运行与复刻指引
- 获取源码:主程序与客程序分别存放于 code/校园小鸟访客智能计数器主_程序.ohc 与 code/校园小鸟访客智能计数器客_程序.ohc,二者为 OHCode 图形化编程工程文件,可直接导入 OHCode 编程环境查看与修改;
- 接线:按第 3 节的引脚对照表完成传感器与两块核心板的连接;
- 烧录顺序:参考 程序说明文档,先启动主程序(客户端监测端),再启动客程序(服务端显示端);
- 通道一致性检查:确保两块板卡的星闪广播通道号均为 16、目标客户端标识均为
c_1,否则消息无法送达; - 阈值调试:水位阈值(当前为 300)与超声波距离阈值(当前为 10 cm)可依据实际安装环境在程序中调整。
十、开源许可
本作品在 README 中明确采用选项 A——宽松许可(MIT 风格):允许任何个人或组织在包括商业用途在内的任何场景下,无限制地使用、复制、修改、合并、出版、分发本作品及其衍生作品,仅需在相关副本中保留原始版权声明,作者不对作品适用性提供担保。仓库另附 Apache License 2.0 文本(见 license),复刻与二次开发时可依据许可条款合规使用。
- 嵌入式
- 物联网
- 智能硬件
- 示例工程
【免费下载链接】作品
本仓库用于系统化存储和管理源师兄在学习、竞赛及创作过程中产生的各类作品和项目资源。
相关推荐
校园智能植物养护小助手:源师兄双主板星闪联动自动浇灌与预警系统解析
校园智能植物养护小助手:源师兄双主板星闪联动自动浇灌与预警系统解析 本篇文章围绕「赛事/2025年源师兄创意开发赛/校园智能植物养护小助手/README.md」
嵌入式物联网智能硬件示例工程DeepSpeed-VisualChat 视觉编码器提取指南:从 QWen-VL 中剥离 Vision Encoder 并接入多模态训练流水线
DeepSpeed VisualChat 视觉编码器提取指南:从 QWen VL 中剥离 Vision Encoder 并接入多模态训练流水线 导读 本文围绕
嵌入式物联网智能硬件示例工程智慧校园巡线机器人:基于源师兄主板的"机器+人工"双模式校园安防巡线系统
智慧校园巡线机器人:基于源师兄主板的"机器+人工"双模式校园安防巡线系统 本文以开源仓库 赛事/2025年源师兄创意开发赛/智慧校园巡线机器人 https://
嵌入式物联网智能硬件示例工程
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考