通过RFID耳环实现的智能牲畜监测,帮助农民轻松识别和追踪动物
畜牧业是一门讲究细节的行业。了解每头牲畜最后一次接种疫苗的时间、出生日期、主人信息以及健康状况记录,对农民、兽医和畜牧检查员来说至关重要。然而,在大多数中小型农场中,这些记录却散落在手写笔记本、电子表格或仅仅依靠记忆之中。
误识别确实存在风险。对于同一种病症接受两次治疗的动物,或者更糟的是,因检查时无法在入口处可靠确认其身份而被遗漏——这些都不是边缘情况。
该项目通过基于ESP32的便携式RFID扫描仪,结合SSD1306 OLED显示屏实现设备即时反馈,并配合PHP/MySQL网络仪表盘进行数据记录和历史追踪,从而解决了这一问题。
这个想法
每只动物都佩戴着一种被动式RFID标签,这种标签与门禁卡相同,固定在项圈或耳标上。当农民或兽医扫描动物时,设备会读取标签的唯一ID,通过Wi-Fi查询数据库,并在几秒钟内将动物的完整信息显示在OLED屏幕上。
如果标签未注册,将显示错误信息,并通过蜂鸣器提醒操作员。成功扫描后,LED指示灯会亮起,并将事件记录到服务器。
网络仪表板让农场管理者能够通过浏览器添加新动物、更新记录以及查看扫描历史。
工作原理
系统流程
固件运行一个主循环,持续轮询MFRC522以检测标签。当检测到标签时:
•UID 被读取并转换为十六进制字符串。
•向PHP后端发送一个HTTP GET请求,参数为UID。
•服务器检查MySQL数据库,返回动物的名称、种类、年龄、疫苗接种状态和主人信息。
•OLED显示屏显示此信息。
•绿色的LED灯亮起,蜂鸣器发出短暂的提示音。
如果数据库中未找到该标签的UID,OLED将显示“未知动物”,红色LED会亮起,蜂鸣器发出长鸣的错误提示音。
在扫描前按住注册按钮,可将设备置于注册模式——下次扫描的标签将通过网络仪表板排队进行注册,而非直接查询。
固件 — ESP32(Arduino / C++)
固件使用Arduino ESP32框架编写。主要库:
•MFRC522 — RFID通信
•Adafruit_SSD1306 — OLED 显示
•WiFi.h + HTTPClient.h — Wi-Fi 和 HTTP POST/GET
•ArduinoJson — 解析来自PHP服务器的JSON响应
•后端 — PHP + MySQL
服务器端运行在 XAMPP(Apache + MySQL)上,并提供两个端点:
•lookup.php — 接收一个UID,查询数据库并返回JSON。
•register.php — 接受来自仪表板表单的新动物数据和UID。
•log.php — 记录每次扫描事件并附带时间戳。
网页仪表盘
管理仪表板是一个由 Apache 服务的 PHP/HTML 前端界面,可让农场工作人员实现以下功能:
•添加新动物并将其与RFID标签UID关联
•编辑动物记录(更新疫苗接种状态、年龄、备注)
•删除已注销的动物
•查看扫描历史 — 每次RFID扫描的带时间戳日志
仪表板使用一个简单的HTML表格,通过PHP从MySQL数据库渲染行,并针对桌面和移动浏览器进行了可读性优化的样式设计。
通知系统
每次扫描成功后,PHP后端可以使用数据库中存储的联系信息触发所有者的通知。该功能通过PHP内置的mail()函数实现,并可连接至SMTP中继服务器以确保消息可靠送达。
外壳
该设备是一款定制的3D打印楔形桌面单元,专为在扫描站上稳定放置而设计,而非随身携带。其倾斜的前表面将所有控制按钮和指示灯朝向操作人员,便于在动物被带到扫描点时使用。
正面有五个开口,其中主要的包括:
•OLED窗口——位于倾斜面板顶部的矩形凹槽,用于安装SSD1306显示屏,略微凹陷,使屏幕平整贴合并得到保护。
•两个小圆形孔,位于OLED下方,分别用于绿色(成功)和红色(错误)LED灯,与面板成角度设计,以便操作人员清晰可见。
•USB接口位于机箱底部,可直接通过墙适配器或扫描站的USB电源持续为设备供电,无需打开机壳。
•整个产品采用圆角和倒角设计,使外部表面光滑且易于擦拭,这在畜牧环境中尤为重要。所有部件均内嵌于一个简单的印刷支架上,盖子则通过卡扣或螺丝固定在底座上,便于组装和维护时取用。
结果
结论
管理牲畜不应依赖于文书记录、猜测或试图记住上次检查的是哪只动物。该项目证明,只要配备经济实惠的硬件并进行相对简单的设置,就有可能建立一个可靠的识别系统,使其在实际农场环境中运行,并准确记录每头牲畜的数字信息。
本文编译自hackster.io





