基于 RFID 的树莓派/Arduino 物品定位管理系统
组件与材料
| 组件 | 数量 |
|---|---|
| Raspberry Pi 2 Model B | 1 |
| Arduino UNO | 1 |
| JT2850 UHF RFID 读写模块 | 1 |
| JT606 UHF RFID 天线 | 1 |
所需工具
- 运行 Windows 10 + Visual Studio 2015 的 PC
- Android 手机
软件与服务
- Windows 10 IoT Core
- Microsoft Azure
- Visual Studio 2015
项目背景
找东西费时费力?利用 UHF RFID 技术,给物品贴标签、录入信息,手机 App 一键查询物品所在房间。
系统架构
多个 UHF RFID 读写器分布在各房间,每个连接一块 Arduino UNO,所有 Arduino 通过串口/USB 连接到运行 Windows 10 IoT Core 的 Raspberry Pi 2。核心流程:
- 新物品贴 RFID 标签,录入名称、类型、位置等信息,经 Azure Web API 存入 Azure SQL 数据库。
- 手机 App 发起搜索请求 → Pi 广播给所有 Arduino → Arduino 发送读标签命令 → 任一读写器检测到目标标签 → 返回位置信息 → Pi 处理后回传 App 显示。

开发步骤
1. 准备 Raspberry Pi 2
安装 Windows 10 IoT Core(参考 官方指南)。用网线直连 PC,通过 “Windows IoT Core Watcher” 获取 Pi 的 IP 地址。


2. 创建 Visual Studio 后台应用
- 新建项目 → Visual C# → “Background Application (IoT)”。
- 配置调试:平台 ARM,目标设备 Remote Machine,远程机器填 Pi IP,取消“使用身份验证”。
- 在
StartupTask.cs编写逻辑:串口轮询各 Arduino,解析 RFID 数据,调用 Azure Web API。



3. 调试技巧
- 灰栏打断点,点击“Remote Machine”启动调试。
- 进入调试模式后工具栏出现“继续”、“单步执行”、“单步进入”、“单步跳出”。
- 鼠标悬停查看变量,或右键“添加监视”跟踪变量。


4. 构建 Azure Web API
- 新建 ASP.NET Web Application (MVC, .NET 4.5.2),认证选“无”,可勾选“Host in the cloud”直接发布到 Azure Web App。
- 用 Entity Framework Code First 创建模型类
MyThing(含 Id, Rfid, Name, Type, Location, CreatedAt 等)。 - 脚手架生成 Web API 2 Controller (含 CRUD)。
- Package Manager Console 运行
Enable-Migrations、Add-Migration Initial、Update-Database创建数据库。 - 发布到 Azure Web App,配置连接字符串并勾选“Execute Code First Migrations”。














测试 POST 示例 (JSON):
{
"id":1,
"status":"0",
"rfid":"1009622005390623",
"image":"",
"name":"some tool",
"type":"tool",
"location":"bedroom",
"createdAt":"2015-10-13T10:26:01.14",
"lastUpdatedAt":"2015-10-13T10:26:01.14"
}
5. 开发 Windows 通用 App (UWP)
新建 Universal App 项目,替换为 GitHub 共享代码。调试时选 x64 + Local Machine。


6. 配置推送通知
- 在 Windows 开发者中心 预留应用名称。
- 项目右键 → Store → Associate App with the Store。
- 创建 Azure Notification Hub(参考 官方教程)。
- 在
App.xaml.cs添加InitNotificationsAsync()注册推送通道,并在OnLaunched中调用;MainPage.cs设置NavigationCacheMode.Required。 - Web API
MyThingsController新增记录后,启动线程调用NotificationHubClient发送 Toast 通知(含 RFID 值)。



代码仓库
- Arduino RFID 读取代码:
/* 发送读取命令至 RFID 模块,读取到标签后通过串口返回 */ #include <SoftwareSerial.h> SoftwareSerial mySerial(10, 11); // RX, TX void setup() { Serial.begin(9600); while (!Serial) { ; } mySerial.begin(9600); } void loop() { if (mySerial.available()) { byte message[] = {0xA0,0x06,0x80,0x00,0x01,0x02,0x01,0xD6}; mySerial.write(message, sizeof(message)); if(Serial.available()) Serial.write(mySerial.read()); } } - 完整项目:https://github.com/seeyouu87/where-is-my-thing
自定义零件
- UHF RFID 读写模块外壳 (
uhf_reader_jt2850.svg)
原理图
Fritzing 原理图:Arduino 到 UHF RFID 模块连接

参考链接
- Windows 10 IoT Core 入门:ms-iot.github.io
- VS2015 环境搭建:Setup PC
- Pi 2 安装 IoT Core:Setup RPI
- Blinky 示例:Blinky
- 串口通信示例:SerialSample
- MS-IoT GitHub:github.com/ms-iot
- Windows on GitHub:microsoft.github.io/windows
- Arduino SoftwareSerial:SoftwareSerialExample
- SparkFun 串口教程:Serial Communication
- Azure Notification Hub 入门:Notification Hubs
- 移动服务推送:Mobile Services Push
- Code First Migrations:Code First Migrations
- VS 发布到 Azure:Publish to Azure
- Web API 发布:Deploy to Azure App Service
制造工艺
- 集成二维码、RFID与体温验证的门禁控制系统
- 选择正确开发场地:创客空间、加速器与生产合作伙伴
- 锯切概念起源:从远古工具到现代机床的演进
- FDM 3D打印现状里程碑与未来展望:从桌面级走向工业级量产的演进路径
- 工业4.0现状:2017年展望与格局演进
- 压缩空气无处不在:干洗、冰箱、玻璃瓶、过山车背后的隐形动力
- Microsoft Azure 2020 速查大全:服务与架构权威指南
- 定义边缘:边缘计算真正发生在哪里?
- 超越被动 RFID 的 4 种先进资产追踪替代方案
- 主动 RFID 全景解析与实战用例
- PTFE(特氟龙)应用版图:石化、电子、半导体、实验室、轴承六大核心领域
- 金属起源:从恒星到工业