news 2026/10/16 6:22:28

校园小鸟访客智能计数器全解析:基于源师兄核心板与星闪技术的双端鸟类自动计数系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
校园小鸟访客智能计数器全解析:基于源师兄核心板与星闪技术的双端鸟类自动计数系统
  • 嵌入式
  • 物联网
  • 智能硬件
  • 示例工程

【免费下载链接】作品

本仓库用于系统化存储和管理源师兄在学习、竞赛及创作过程中产生的各类作品和项目资源。

项目地址:https://gitcode.com/yuanshixiong/creation
点击查看免费下载

导读

本文以“校园小鸟‘访客’智能计数器”作品为对象,系统拆解其从创意设计到双端程序实现的完整链路:客户端(监测端)通过超声波与触摸传感器的“双条件触发”实现小鸟到访自动计数,并实时监测水槽水位;服务端(显示端)借助星闪(SparkLink)无线通信接收数据,完成水位预警、蜂鸣报警与访客计数显示。读完本文,你将掌握源师兄核心板双开发板组网的核心编程范式、星闪消息协议的设计方法,以及可复用的鸟类生态观测智能化改造方案。


一、项目背景:为什么小鸟来访需要“自动计数”

在校园生态观察与投喂实践中,学生常需要在“美食站”旁人工记录小鸟的到访次数,用于统计周访客量、优化食物投放节奏。这种手工计数方式存在两个典型痛点:

  • 计数易混乱:小鸟到访时间分散、频率不定,人工一边观察一边记录容易漏记、错记;
  • 状态不可感知:水槽是否缺水、当前累计来访多少只鸟,都需要近距离查看才能获知。

该作品针对上述痛点,设计了一套“自动记录 + 实时提醒”的双端系统:客户端(监测端)自动感知、服务端(显示端)远程呈现,全程无需人工读数。

二、系统总体设计:双开发板 + 三大核心功能

2.1 双端架构

作品由两块源师兄核心板构成,通过星闪技术组网:

端角色职责
开发板一客户端(监测端)实时监测鸟儿数量与水位状态,并无线发送监测数据
开发板二服务端(显示端)接收星闪信号,实现水位预警、状态反馈及访客计数显示

说明:项目文档 程序说明文档 中明确两个程序分别为“校园小鸟访客智能计数器主_客户端(星闪)程序”与“校园小鸟访客智能计数器_服务端程序”,应先启动主程序(客户端),再启动接收端,通信链路方可建立。

2.2 三大核心功能

  1. 感应触发计数:超声波传感器与触摸传感器同时检测到小鸟时,计数器自动加 1——双条件“与”逻辑有效避免了单一传感器(如风吹草动)造成的误触发;
  2. 无线传输与预警:利用星闪技术将数据实时发送至服务端显示,触发声音与红灯预警;
  3. 水位监测:实时检测水槽水位,缺水时向服务端发送提醒消息。

三、硬件清单与接线要点

作品硬件清单来自 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 中特别强调,将计数工具与“小鸟访客日记”结合,可把冷冰冰的传感器数据转化为生态观察记录:学生依据计数器积累的到访量与水位消耗,优化食物投放时机与分量,同时将数据写进访客日记,增强生态教育的参与感与连续性。

八、应用场景

  • 校园生态观察:统计小鸟周到访量,据此优化食物投放,培养长期观察记录习惯;
  • 远程监测:通过服务端实现非接触式实时数据查看,监测人员不必靠近喂食点即可掌握小鸟动态与水槽余量。

九、程序运行与复刻指引

  1. 获取源码:主程序与客程序分别存放于 code/校园小鸟访客智能计数器主_程序.ohc 与 code/校园小鸟访客智能计数器客_程序.ohc,二者为 OHCode 图形化编程工程文件,可直接导入 OHCode 编程环境查看与修改;
  2. 接线:按第 3 节的引脚对照表完成传感器与两块核心板的连接;
  3. 烧录顺序:参考 程序说明文档,先启动主程序(客户端监测端),再启动客程序(服务端显示端);
  4. 通道一致性检查:确保两块板卡的星闪广播通道号均为 16、目标客户端标识均为c_1,否则消息无法送达;
  5. 阈值调试:水位阈值(当前为 300)与超声波距离阈值(当前为 10 cm)可依据实际安装环境在程序中调整。

十、开源许可

本作品在 README 中明确采用选项 A——宽松许可(MIT 风格):允许任何个人或组织在包括商业用途在内的任何场景下,无限制地使用、复制、修改、合并、出版、分发本作品及其衍生作品,仅需在相关副本中保留原始版权声明,作者不对作品适用性提供担保。仓库另附 Apache License 2.0 文本(见 license),复刻与二次开发时可依据许可条款合规使用。

  • 嵌入式
  • 物联网
  • 智能硬件
  • 示例工程

【免费下载链接】作品

本仓库用于系统化存储和管理源师兄在学习、竞赛及创作过程中产生的各类作品和项目资源。

项目地址:https://gitcode.com/yuanshixiong/creation
点击查看免费下载

相关推荐

上一篇:The Book of Shaders 第三章:Uniform 变量与 gl_FragCoord——打通 CPU 与 GPU 的着色器数据通道
下一篇:MShadow 张量模板库深度解析:MXNet 底层高效 CPU/GPU 张量计算的表达式模板与设备无关设计

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/16 6:21:54

Vue+ECharts雷达图实战:组件封装、配置详解与踩坑实录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/16 6:21:30

KBEngine 内嵌 CPython 3.7.3 的 Code Objects(代码对象)C API 深度解析

游戏开发后端 【免费下载链接】kbengine A MMOG engine of server. 项目地址&#xff1a; https://gitcode.com/gh_mirrors/kb/kbengine 点击查看 免费下载 本指南以 CPython 官方 C API 文档的 Code Objects 章节为主体&#xff0c;结合 KBEngine 仓库 kbe/src/lib/python 中…

作者头像 李华