first commit

This commit is contained in:
2024-06-07 21:27:26 +08:00
commit 7ea32e33af
48 changed files with 710 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

View File

@@ -0,0 +1,15 @@
> 用手机拍一张生活中常见的天线,猜测其天线特征,然后上网学习研究下,和你猜测一样吗?
<img src="photo.jpg" alt="photo" style="zoom: 33%;" />
拍摄对象为一款路由器天线,该设备配置了四根天线。基于对路由器功能及其基本参数的了解,我进行以下初步猜测:
- **方向特性**:我预测这是一款全向性天线,它能够在所有方向上较为均匀地发射和接收信号。
- **频率范围**该天线可能支持2.4GHz和5GHz的双频段。
- **带宽**预计带宽约为1000Mbps。
为了验证我的猜测,我进行了网上研究,包括查阅路由器的官方规格说明和阅读相关的分析文章。分析结果如下:
- **方向特性**:实际上,这款天线是贴片天线,它能在天线平面方向上提供更强的信号,这与我最初的全向天线假设不符。观察天线的外观可以发现,它们不是标准的圆柱形,而是扁平的设计。
- **工作频率**路由器天线在ISM频段工作包括2.4GHz和5GHz这属于UHF和SHF的范围主要用于无线数据通信。
- **耦合方式**:这些天线在辐射远场区工作,其电磁波的传播并不依赖于天线与接收设备之间的具体距离,非常适合用于远距离通信。

View File

@@ -0,0 +1,93 @@
# 2.
> 请谈谈你所理解的RFID及其在物联网中的作用
RFID是一种无线通信技术它通过无线电波来识别和追踪附着有RFID标签的物体。RFID系统主要包括三个组成部分RFID标签、RFID读写器和数据管理系统。
RFID标签通常包含一个微型电子芯片和天线芯片存储着标签的唯一信息。这些标签可以是被动的也就是说它们没有自己的电源而是通过读写器发出的无线电波激活并返回一个信号也可以是主动的拥有内置电源并能主动发送信号。
RFID读写器是一个设备用来发射信号激活标签并读取或写入数据。读写器可以是固定式的比如安装在仓库入口也可以是手持式的便于移动使用。
数据管理系统是后台计算机系统用于存储、处理和分析从RFID标签收集到的数据并根据应用需求将信息整合和共享给其他系统。
在物联网中RFID扮演的角色
1. **自动识别和数据采集**RFID系统能够自动识别物体并采集数据这是实现物联网中物品智能管理和追踪的基础。
2. **无需视线要求**与条形码等需要直接视线的识别技术不同RFID不需要直接视线就能读取标签数据大大提高了操作的灵活性。
3. **即时追踪**RFID可以提供实时的物品追踪信息这对于库存管理、供应链优化等应用至关重要。
4. **多标签读取**RFID读写器可以同时识别多个标签这使得处理大量物品变得高效。
5. **环境适应性**RFID标签可以设计成耐水、耐化学品、耐高温等适合各种环境的应用。
6. **安全性和隐私**RFID系统可以采用加密和认证技术来保护数据的安全性和隐私。
在物联网的框架内RFID使得物理世界的物品与数字世界的信息系统连接成为可能它们共同构成一个智能化、自动化、高效率的网络。这在零售、制造、物流、医疗、安全管理等领域都有广泛的应用。
# 3.
> RFID的关键技术有哪些?请说明原因;
1. **工作频率**RFID设备工作在不同的频率带宽上例如低频LF高频HF超高频UHF和微波频段。工作频率影响着RFID的读取距离和穿透能力。
2. **天线设计**天线是RFID系统的重要组成部分它决定了标签和读写器的通信效率。天线设计涉及其形状、大小、方向性等这些因素影响着能量的耦合效率和读取范围。
3. **耦合机制**:射频识别中,天线之间的耦合可以是密耦合、遥耦合和远距离系统,这涉及到能量的传递方式和数据的传输机制。如电感耦合通常用于近距离通信,而反向散射耦合方式适用于远距离通信。
4. **数据编码和调制方式**:数据的编码和调制方式是确保数据传输准确性和效率的关键技术。这涉及到如何将数据信号转换为射频信号以及如何在接收端解调这些信号。
5. **多应答器读取能力**在RFID系统中通常需要在同一时间读取多个标签这就要求系统具有防碰撞或防冲突的能力。
6. **应答器(标签)设计**:应答器或标签的设计涉及到是否有源、半有源或无源,以及它们的存储容量、安全性能(如密钥、认证)等。
7. **安全机制**随着RFID的广泛应用安全性越来越受到重视涉及通信加密、数据存储加密等以保护数据不被未授权访问或篡改。
8. **标准化**RFID的技术标准化是其大规模商用的前提有助于不同系统和应用之间的兼容。
# 4.
> HF RFID reader的典型工作频率是多少?Transponder向reader发送数据时为何采用和reader相同的工作频率?它是如何实现数据发送的?
HF RFID reader的典型工作频率是13.56 MHz。
因为Transponder通常是被动的它利用由读写器发出的射频能量来激活其电路并利用近场通信的方式进行能量和信息的传递。这种方式要求Transponder和reader之间的频率必须一致以便进行有效的能量转换和数据通信。
在HF RFID系统中Transponder通过负载调制的方式实现数据发送。这意味着它会改变其内部电路的阻抗从而改变其从reader获得的能量量这种变化反映为对reader发送的信号的调制。reader能够检测这些由Transponder所引起的信号强度的变化并将其解调成数字数据。通过这种方式Transponder能够在没有自己的电源供应的情况下向reader发送信息。
# 5.
> 请介绍一个身边的基于RFID技术的应用系统。尽可能描述全些: 比如card/tag/label的形状系统组成、系统功能等;
**卡片形状与类型**
- 校园卡是一张塑料卡尺寸遵循ISO/IEC 7810标准的ID-1尺寸和身份证/银行卡一样大小。
- 卡片内嵌有一个RFID芯片和天线使其能够进行无线通信。基于ISO/IEC 14443A协议属于HF RFID工作频率是13.56 MHz。
- 校园卡表面印有学生的个人信息,如姓名、照片、学号等。
**系统组成**
1. **Transponder卡片**学生持有的身份识别卡内置RFID芯片存储学生的身份信息和余额等其他相关数据。
2. **Reader**:安装在门禁、食堂、图书馆入口等地方,用于读取卡片信息并进行验证。
3. **天线**Reader有内置天线用于与卡片进行电磁场的交互。
4. **控制系统**连接Reader的后端系统负责处理读取的信息并进行相应的逻辑处理如开门、扣费等。
5. **数据库系统**:存储所有卡片的数据,包括个人信息、访问权限、账户余额等。
6. **应用接口**:为食堂、图书馆等提供与校园卡系统对接的接口,以便实现各种功能。
**系统功能**
1. **身份验证**:在校园内用作身份识别,如门禁系统自动检测学生身份允许进入住宿区、教学楼等。
2. **支付功能**:在校园食堂、超市、打印店等处使用校园卡支付,替代现金交易。
3. **图书管理**:在图书馆借阅和归还书籍时作为用户识别的凭证。
4. **访问控制**:控制和记录学生对宿舍等特定区域的访问。
5. **公共交通**:校园卡还具有公共交通支付的功能,可以在北京地铁/公交上使用。
# 6.
> 请谈谈你对RFID未来的技术发展方向和应用场景的看法。
**发展方向:**
**更高的集成度** RFID芯片可以变得更小、更节能且成本更低可将它们集成到更多的日常产品中比如将校园卡集成到一个徽章或戒指/手环中。
**更精准的定位技术** 通过与Wi-Fi、蓝牙等其他无线技术融合RFID可提供更精准的室内定位和导航功能对于零售、博物馆、医院等场景尤其有价值。
**应用场景:**
除了传统的库存管理、物流跟踪、个人身份验证外RFID技术可能会被用于更多创新的领域比如医疗健康监测、食品安全追溯、智能交通系统、自动化零售以及个性化服务等。

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

View File

@@ -0,0 +1,5 @@
[Main]
Principle=1
PrincipleCom=3
HF=1
HFCom=3

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 KiB

View File

@@ -0,0 +1,541 @@
<h1><center>课程实验</center></h1>
<div style="text-align: center;">
<div><span style="display: inline-block; width: 65px; text-align: center;">课程名称</span><span style="display: inline-block; width: 25px;">:</span><span style="display: inline-block; width: 210px; font-weight: bold; text-align: left;">RFID 原理与应用</span></div>
<div><span style="display: inline-block; width: 65px; text-align: center;">实验名称</span><span style="display: inline-block; width: 25px;">:</span><span style="display: inline-block; width: 210px; font-weight: bold; text-align: left;">防碰撞和访问 ISO15693 卡</span></div>
<div><span style="display: inline-block; width: 65px; text-align: center;">学号</span><span style="display: inline-block; width: 25px;">:</span><span style="display: inline-block; width: 210px; font-weight: bold; text-align: left;">21281280</span></div>
<div><span style="display: inline-block; width: 65px; text-align: center;">姓名</span><span style="display: inline-block; width: 25px;">:</span><span style="display: inline-block; width: 210px; font-weight: bold; text-align: left;">柯劲帆</span></div>
<div><span style="display: inline-block; width: 65px; text-align: center;">班级</span><span style="display: inline-block; width: 25px;">:</span><span style="display: inline-block; width: 210px; font-weight: bold; text-align: left;">物联网2101班</span></div>
<div><span style="display: inline-block; width: 65px; text-align: center;">指导老师</span><span style="display: inline-block; width: 25px;">:</span><span style="display: inline-block; width: 210px; font-weight: bold; text-align: left;">赵帅锋</span></div>
<div><span style="display: inline-block; width: 65px; text-align: center;">日期</span><span style="display: inline-block; width: 25px;">:</span><span style="display: inline-block; width: 210px; font-weight: bold; text-align: left;">2024年6月4日</span></div>
</div>
---
[TOC]
# 1. 实验环境准备
- **RFID HF Reader 硬件**MSP370 + TRF7970
- **实验 PC **Windows 11 笔记本
- **实验软件**HF.exe
PC 和 RFID HF Reader 通过 USB 口连接,但软件接口其实是 UART 。Reader 端使用 CH340CH340 和 CPU 通过 UART 连接,对外提供 USB 接口PC 端安装 CH340 的驱动程序,当 Reader 连接到 USB 口上后PC 会发现一个 COM 端口,软件使用该 COM 口和 Reader 进行通信。
使用 HF.exe 连接 RFID HF Reader。
<img src="images\连接图.png" alt="连接图" style="zoom:33%;" />
# 2. 命令帧分析
在实验软件的日志框中可以看到 Reader 发送的命令,其帧结构如下:
<div id='t2_1' align='center'>表 2-1</div>
| | SOF | Flag | Cmd | Arguments | Data | CRC16 | EOF |
| :------: | :--: | :----: | :----: | :-------: | :--: | :-----: | :--: |
| **长度** | | 8 bits | 8 bits | | | 16 bits | |
对于 `Flag` 值和 `Cmd` 值,将在以下两节中论述。
对于 `Arguments``Data` 值,具体见每一个命令。
## 2.1. Flag 值
对于 8 bits 的 `Flag` 值,其结构定义如下:
<div id='t2_2' align='center'>表 2-2</div>
| 位bit | 标志名称 | 值描述 | 备注 |
| :-------: | :------: | ------------------------------------------------------------ | :--------------------------------------- |
| b1 | 副载波 | `0` - VICC 应使用单个副载波频率;`1` - VICC 应使用两个副载波频率 | 对应 `Request Flag` 框中 `Sub_carrier` |
| b2 | 数据速率 | `0` - 低速率数据;`1`- 高速率数据 | 对应 `Request Flag` 框中 `HighData_rate` |
| b3 | 目录 | `0` - 第 5 到 8 位按照[表 A ](#t2_3)规定;`1`- 第 5 到 8 位按照[表 B ](#t2_4)规定 | |
| b4 | 协议扩展 | `0` - 无协议格式扩展;`1`- 协议格式已扩展(保留供以后使用) | |
`Flag` 值的第 5 到 8 位依据第 3 位指定,由以下的 A 表或 B 表规定:
- A 表:
<div id='t2_3' align='center'>表 2-3</div>
| 位bit | 标志名称 | 值描述 | 备注 |
| :-------: | :------: | ------------------------------------------------------------ | :----------------------------------- |
| b5 | 选择 | `0` - 根据寻址标志设置,请求将由任何 ⅥCC 执行;`1` - 请求只由处于选择状态的 VICC 执行,寻址标志应设置为 0UID 域应不包含在请求中 | 对应 `Request Flag` 框中 `Select` |
| b6 | 寻址 | `0` - 请求没有寻址。不包括 UID 域。可以由任何 VICC 执行;`1`- 请求有寻址。包括 UID 域。仅由那些自身 UI 与请求中规定的 UID 匹配的 VICC 才能执行 | 对应 `Request Flag` 框中 `Addressed` |
| b7 | 选择权 | `0` - 含义由命令描述定义。如果没有被命令定义它应设置为0`1`- 含义由命令描述定义 | |
| b8 | RFU | 固定为 `0` | |
- B 表:
<div id='t2_4' align='center'>表 2-4</div>
| 位bit | 标志名称 | 值描述 | 备注 |
| :-------: | :------: | ------------------------------------------------------------ | :---------------------------------------- |
| b5 | AFI | `0` - 无指定 AFI 域;`1` - 指定 AFI 域 | 对应 `Request Flag` 框中 `AFI is present` |
| b6 | Nb_slots | `0` - 有 16 个 slots`1`- 有 1 个 slots | 对应 `Request Flag` 框中 `One_slot` |
| b7 | 选择权 | `0` - 含义由命令描述定义。如果没有被命令定义它应设置为0`1`- 含义由命令描述定义 | |
| b8 | RFU | 固定为 `0` | |
## 2.2. Cmd 值
对于 8 bits 的 `Flag` 值,其值定义如下:
<div align='center'>表 1-5</div>
| 命令编码 | 类型 | 功能 |
| :---------: | :----: | :----------------: |
| '01' | 强制的 | 目录 |
| '02' | 强制的 | 保持静默 |
| '03' - '1F' | 强制的 | RFU |
| '20' | 可选的 | 读单个块 |
| '21' | 可选的 | 写单个块 |
| '22' | 可选的 | 锁定块 |
| '23' | 可选的 | 读多个块 |
| '24' | 可选的 | 写多个块 |
| '25' | 可选的 | 选择 |
| '26' | 可选的 | 复位准备 |
| '27' | 可选的 | 写 AFI |
| '28' | 可选的 | 锁定 AFI |
| '29' | 可选的 | 写 DSFID |
| '2A' | 可选的 | 锁定 DSFID |
| '2B' | 可选的 | 获取系统信息 |
| '2C' | 可选的 | 获取多个块安全状态 |
| '2D' - '9F' | 可选的 | RFU |
| 'A0' - 'DF' | 定制的 | IC Mfg 决定 |
| 'E0' - 'FF' | 私有的 | IC Mfg 决定 |
# 2. Inventory 命令
`Inventory` 命令用于清点射频场中的卡片。
## 2.1. 工作原理
`Inventory` 命令工作原理如下:
- **发送请求**:读写器向射频场中的所有卡片发送一个 `Inventory` 请求命令。
- **范围响应**指定一个叫号范围例如0-15卡片根据序列号最低4位0000-1111逐一响应。
- **无冲突响应**如果某个序列号响应时没有冲突即只有一张卡片响应该卡片的序列号UID被记录在读写器中。
- **帧结束标志**读写器发送帧结束标志通知下一组卡片响应。例如最低4位为0000的卡片响应后发送帧结束标志通知最低4位为0001的卡片响应。
- **重复过程**重复发送帧结束标志依次让最低4位为0000到1111的卡片响应直到所有范围内的卡片都被询问一遍。
- **选择卡片**:在某个响应过程中,如果没有发生冲突,读写器就可以选择该张卡片进行进一步操作。
## 2.2. 实验过程
将 3 张 ISO I5693 的卡片放到 RFID HF Reader 的射频区域上方。
选择 `Command` 区域中的 `Inventory`,点击 `Execute Command` 按钮。
<img src="images\Inventory.png" alt="Inventory" style="zoom: 33%;" />
`Cmd` 区域自动填充命令,日志框中打印 PC 向 Reader 发送了命令 `040100` PC 收到 Reader 返回的数据。
右上角卡片信息区域显示出 3 张卡,分别为 `E007816306B07370``E0040100232DB58A``E00401007B277A2E`,其最后一个字节并未冲突,分别占据 slot 0、slot 10 和 slot 14。
## 2.3. 命令帧数据分析
日志框中发送的数据为 `040100` ,依照[表 2-1](#t2_1)
| | SOF | Flag | Cmd | Mask Len | Mask Value | CRC16 | EOF |
| :----: | :--: | :--: | :--: | :------: | :--------: | :----: | :--: |
| **值** | | `04` | `01` | `00` | - | `BC75` | |
- 对于 `Flag` = `04`
依照[表 2-2](#t2_2)
| 位bit | 标志名称 | 值 | 值描述 |
| :-------: | :------: | :--: | ---------------------------------- |
| b1 | 副载波 | 0 | VICC 应使用单个副载波频率 |
| b2 | 数据速率 | 0 | 低速率数据 |
| b3 | 目录 | 1 | 第 5 到 8 位按照[表 B ](#t2_4)规定 |
| b4 | 协议扩展 | 0 | 无协议格式扩展 |
和[表 2-4](#t2_4)
| 位bit | 标志名称 | 值 | 值描述 |
| :-------: | :------: | :--: | ------------------ |
| b5 | AFI | 0 | 无指定 AFI 域 |
| b6 | Nb_slots | 0 | 有 16 个 slots |
| b7 | 选择权 | 0 | 含义由命令描述定义 |
| b8 | RFU | 0 | 固定为 `0` |
- 对于 `Cmd` = `01`
依照[表 2-5](#t2_5),表示这是一条目录命令,即为 `Inventory` 命令。
- 对于 `Mask Len` = `00`
对于一开始查找,`Mask Len` 肯定等于 `00` ;查找后发现射频场中的所有卡的最低位并未冲突,所以不需掩蔽任何位。
# 3. Select 命令
## 3.1. 工作原理
`Select` 命令的工作逻辑如下:
1. **选择标签**:通过 `SELECT` 命令选择一个标签VICC
2. **进入选中状态**:被选中的标签进入 `selected` 状态,确保只有一个标签处于 `selected` 状态。
3. **后续命令指定**:之后发送的命令会直接针对这个处于 `selected` 状态的标签。
4. **响应所有命令**:该标签可以响应所有带有 `select``addr/uid` 标志的命令。
这种机制确保了特定标签在被选中后可以被直接通信,避免了与其他标签的冲突。
## 3.2. 实验过程
1. 选择 `Command` 区域中的 `Select`
2. 勾选 `Request Flags` 区域中的 `Addressed`
3.`UID` 复选框中选择 `E0040100232DB58A`
4. 点击 `Execute Command` 按钮。
<img src="images\Select.jpg" alt="Select" style="zoom: 33%;" />
`Cmd` 区域自动填充命令,日志框中打印 PC 向 Reader 发送了命令 `20258AB52D23000104E0` PC 收到 Reader 返回的数据 `00` ,表示成功选择。
## 3.3. 命令帧数据分析
日志框中发送的数据为 `20258AB52D23000104E0`
| | SOF | Flag | Cmd | UID | CRC16 | EOF |
| :----: | :--: | :--: | :--: | :----------------: | :----: | :--: |
| **值** | | `20` | `25` | `8AB52D23000104E0` | `1079` | |
- 对于 `Flag` = `20`
依照[表 2-2](#t2_2)
| 位bit | 标志名称 | 值 | 值描述 |
| :-------: | :------: | :--: | ---------------------------------- |
| b1 | 副载波 | 0 | VICC 应使用单个副载波频率 |
| b2 | 数据速率 | 0 | 低速率数据 |
| b3 | 目录 | 0 | 第 5 到 8 位按照[表 A ](#t2_3)规定 |
| b4 | 协议扩展 | 0 | 无协议格式扩展 |
和[表 2-3](#t2_3)
| 位bit | 标志名称 | 值 | 值描述 |
| :-------: | :------: | :--: | ------------------------------------------------------------ |
| b5 | 选择 | 0 | 根据寻址标志设置,请求将由任何 ⅥCC 执行 |
| b6 | 寻址 | 1 | 请求有寻址。包括 UID 域。仅由那些自身 UI 与请求中规定的 UID 匹配的 VICC 才能执行 |
| b7 | 选择权 | 0 | 含义由命令描述定义 |
| b8 | RFU | 0 | 固定为 `0` |
- 对于 `Cmd` = `25`
依照[表 2-5](#t2_5),表示这是一条选择命令,即为 `Select` 命令。
- 对于 `UID` = `8AB52D23000104E0`
它是 `UID` = `E0040100232DB58A` 的小端字节序。
# 4. Read Single Block 命令
查询指定卡中的指定块中的数据。
## 4.1. 实验过程
将单张 ISO I5693 的卡片放到 RFID HF Reader 的射频区域上方,经过 `Inventory` 识别后:
1. 选择 `Command` 区域中的 `Read Single Block`
2. 勾选 `Request Flags` 区域中的 `Addressed`
3.`UID` 复选框中选择 `E0040100232DB58A`
4.`(first) Block` 文本框中填写查询的块号 `03`
5. 点击 `Execute Command` 按钮。
<img src="images\读单块.jpg" alt="读单块" style="zoom:33%;" />
`Cmd` 区域自动填充命令,日志框中打印 PC 向 Reader 发送了命令 `20208AB52D23000104E003` PC 收到 Reader 返回的数据 `0000000000`
## 4.2. 命令帧数据分析
日志框中发送的数据为 `20208AB52D23000104E003`
| | SOF | Flag | Cmd | UID | Block | CRC16 | EOF |
| :----: | :--: | :--: | :--: | :----------------: | :---: | :----: | :--: |
| **值** | | `20` | `20` | `8AB52D23000104E0` | `03` | `B00E` | |
- 对于 `Flag` = `20`
依照[表 2-2](#t2_2)
| 位bit | 标志名称 | 值 | 值描述 |
| :-------: | :------: | :--: | ---------------------------------- |
| b1 | 副载波 | 0 | VICC 应使用单个副载波频率 |
| b2 | 数据速率 | 0 | 低速率数据 |
| b3 | 目录 | 0 | 第 5 到 8 位按照[表 A ](#t2_3)规定 |
| b4 | 协议扩展 | 0 | 无协议格式扩展 |
和[表 2-3](#t2_3)
| 位bit | 标志名称 | 值 | 值描述 |
| :-------: | :------: | :--: | ------------------------------------------------------------ |
| b5 | 选择 | 0 | 根据寻址标志设置,请求将由任何 ⅥCC 执行 |
| b6 | 寻址 | 1 | 请求有寻址。包括 UID 域。仅由那些自身 UI 与请求中规定的 UID 匹配的 VICC 才能执行 |
| b7 | 选择权 | 0 | 含义由命令描述定义 |
| b8 | RFU | 0 | 固定为 `0` |
- 对于 `Cmd` = `20`
依照[表 2-5](#t2_5),表示这是一条读单个块命令,即为 `Read Single Block` 命令。
- 对于 `UID` = `8AB52D23000104E0`
它是 `UID` = `E0040100232DB58A` 的小端字节序。
- 对于 `Block` = `03`
这是我指定的块序号。
如果在 `Request Flags` 区域中**勾选** `Select` 、**不勾选** `Addressed` 且不必填写 `UID` ,则 `Flag` 会变成 `10`,表示根据之前被 `Select` 命令选择的卡进行操作;
如果在 `Request Flags` 区域中不**勾选** `Select` 、**不勾选** `Addressed` 且不必填写 `UID` ,则 `Flag` 会变成 `00`,表示所有卡都要回复指定块的数据。
# 5. Write Single Block 命令
向指定卡中的指定块中写入数据。
## 5.1. 实验过程
对刚刚读取过的 ISO I5693 的卡片:
1. 选择 `Command` 区域中的 `Write Single Block`
2. 勾选 `Request Flags` 区域中的 `Addressed`
3.`UID` 复选框中选择 `E0040100232DB58A`
4.`(first) Block` 文本框中填写查询的块号 `03`
5.`Data` 文本框中填写要写入的数据 `21281280`
6. 点击 `Execute Command` 按钮。
<img src="images\写单块.jpg" alt="写单块" style="zoom:33%;" />
`Cmd` 区域自动填充命令,日志框中打印 PC 向 Reader 发送了命令 `20218AB52D23000104E00380122821` PC 收到 Reader 返回的数据 `0000000000`
## 5.2. 命令帧数据分析
日志框中发送的数据为 `20208AB52D23000104E003`
| | SOF | Flag | Cmd | UID | Block | Data | CRC16 | EOF |
| :----: | :--: | :--: | :--: | :----------------: | :---: | :--------: | :----: | :--: |
| **值** | | `20` | `21` | `8AB52D23000104E0` | `03` | `80122821` | `660F` | |
- 对于 `Flag` = `20`
依照[表 2-2](#t2_2)
| 位bit | 标志名称 | 值 | 值描述 |
| :-------: | :------: | :--: | ---------------------------------- |
| b1 | 副载波 | 0 | VICC 应使用单个副载波频率 |
| b2 | 数据速率 | 0 | 低速率数据 |
| b3 | 目录 | 0 | 第 5 到 8 位按照[表 A ](#t2_3)规定 |
| b4 | 协议扩展 | 0 | 无协议格式扩展 |
和[表 2-3](#t2_3)
| 位bit | 标志名称 | 值 | 值描述 |
| :-------: | :------: | :--: | ------------------------------------------------------------ |
| b5 | 选择 | 0 | 根据寻址标志设置,请求将由任何 ⅥCC 执行 |
| b6 | 寻址 | 1 | 请求有寻址。包括 UID 域。仅由那些自身 UI 与请求中规定的 UID 匹配的 VICC 才能执行 |
| b7 | 选择权 | 0 | 含义由命令描述定义 |
| b8 | RFU | 0 | 固定为 `0` |
- 对于 `Cmd` = `21`
依照[表 2-5](#t2_5),表示这是一条写单个块命令,即为 `Write Single Block` 命令。
- 对于 `UID` = `8AB52D23000104E0`
它是 `UID` = `E0040100232DB58A` 的小端字节序。
- 对于 `Block` = `03`
这是我指定的块序号。
- 对于 `Data` = `80122821`
这是我指定写入的数据 `21281280` 的小端字节序。
再次使用 `Read Single Block` 命令读取写入数据的块:
<img src="images\重新读单块.jpg" alt="重新读单块" style="zoom:33%;" />
卡片回复 `0080122821` ,可见卡片中第 `03` 个块的低 4 字节已经写入指定数据 `21281280`
# 6. Get System Info 命令
该命令用于获取卡片信息。
## 6.1. 实验过程
将单张 ISO I5693 的卡片放到 RFID HF Reader 的射频区域上方,经过 `Inventory` 识别并 `Select` 后:
1. 选择 `Command` 区域中的 `Get System Info`
2. 勾选 `Request Flags` 区域中的 `Select`
3. 点击 `Execute Command` 按钮。
<img src="images\获取信息.jpg" alt="获取信息" style="zoom:33%;" />
`Cmd` 区域自动填充命令,日志框中打印 PC 向 Reader 发送了命令 `102B` PC 收到 Reader 返回的数据 `000F8AB52D23000104E006071B0301`
## 6.2. 命令帧数据分析
日志框中发送的数据为 `102B`
| | SOF | Flag | Cmd | CRC16 | EOF |
| :----: | :--: | :--: | :--: | :----: | :--: |
| **值** | | `10` | `2B` | `0507` | |
- 对于 `Flag` = `10`
依照[表 2-2](#t2_2)
| 位bit | 标志名称 | 值 | 值描述 |
| :-------: | :------: | :--: | ---------------------------------- |
| b1 | 副载波 | 0 | VICC 应使用单个副载波频率 |
| b2 | 数据速率 | 0 | 低速率数据 |
| b3 | 目录 | 0 | 第 5 到 8 位按照[表 A ](#t2_3)规定 |
| b4 | 协议扩展 | 0 | 无协议格式扩展 |
和[表 2-3](#t2_3)
| 位bit | 标志名称 | 值 | 值描述 |
| :-------: | :------: | :--: | ------------------------------------------------------------ |
| b5 | 选择 | 1 | 请求只由处于选择状态的 VICC 执行,寻址标志应设置为 0UID 域应不包含在请求中 |
| b6 | 寻址 | 0 | 请求没有寻址。不包括 UID 域。可以由任何 VICC 执行 |
| b7 | 选择权 | 0 | 含义由命令描述定义 |
| b8 | RFU | 0 | 固定为 `0` |
- 对于 `Cmd` = `2B`
依照[表 2-5](#t2_5),表示这是一条获取系统信息命令,即为 `Get System Info` 命令。
## 4.3. 卡片回复数据分析
日志框中卡片返回的数据为 `000F8AB52D23000104E006071B0301` ,查阅 ISO 15693 标准后分析:
| 内容 | 值 |
| :--------------------------: | :----------------: |
| SOF | |
| 标志8 bits | `00` |
| 信息标志8 bits | `0F` |
| UID | `8AB52D23000104E0` |
| DSFID8 bits | `06` |
| AFI8 bits | `07` |
| VICC 内存容量信息16 bits | `1B03` |
| IC 参考8 bits | `01` |
| EOF | |
- 对于信息标志:
| 位bit | 标志名称 | 值描述 | 实验值 |
| :-------: | :-----------: | ------------------------------------------------------------ | :----: |
| b1 | DSFID | `0` - 不支持 DSFID。DSFID 域不出现;`1` - 支持 DSFID。DSFID 域出现 | 1 |
| b2 | AFI | `0` - 不支持 AFI。AFI 域不出现;`1`- 支持 AFI。AFI 域出现 | 1 |
| b3 | VICC 内存容量 | `0` - 不支持信息的 VICC 内存容量。内存容量域不出现;`1`- 支持信息的 VICC 内存容量。内存容量域出现 | 1 |
| b4 | IC 参考 | `0` - 不支持信息的 IC 参考。IC 参考域不出现;`1`- 支持信息的 IC 参考。IC 参考域出现 | 1 |
| b5 | RFU | - | 0 |
| b6 | RFU | - | 0 |
| b7 | RFU | - | 0 |
| b8 | RFU | - | 0 |
- 对于 VICC 内存容量:
| | RFU3 bits | 块容量的字节数4 bits | 块数目8 bits |
| :--------: | :-----------: | :----------------------: | :--------------: |
| **实验值** | `0b000` | `0b11011` = `27` | `0x03` = `3` |
注意到 `AFI` = `07`
# 7. Write AFI 命令
`AFI` 是应用族标识符,用于标志卡片所用的领域。
使用 `Write AFI` 命令可以修改 `AFI`,之后可以使用 `Lock AFI` 命令锁定 `AFI` 使其不可被更改。
## 7.1. 实验过程
对刚刚读取过系统信息的 ISO I5693 的卡片:
1. 选择 `Command` 区域中的 `Write AFI`
2. 勾选 `Request Flags` 区域中的 `Select`
3.`AFI` 文本框中填写要写入的数据 `08`
4. 点击 `Execute Command` 按钮。
<img src="images\写AFI.jpg" alt="写AFI" style="zoom:33%;" />
`Cmd` 区域自动填充命令,日志框中打印 PC 向 Reader 发送了命令 `102708` PC 收到 Reader 返回的数据 `00`,说明写入成功 。
## 7.2. 命令帧数据分析
日志框中发送的数据为 `20208AB52D23000104E003`
| | SOF | Flag | Cmd | AFI | CRC16 | EOF |
| :----: | :--: | :--: | :--: | :--: | :----: | :--: |
| **值** | | `10` | `27` | `08` | `A12A` | |
- 对于 `Flag` = `10`
依照[表 2-2](#t2_2)
| 位bit | 标志名称 | 值 | 值描述 |
| :-------: | :------: | :--: | ---------------------------------- |
| b1 | 副载波 | 0 | VICC 应使用单个副载波频率 |
| b2 | 数据速率 | 0 | 低速率数据 |
| b3 | 目录 | 0 | 第 5 到 8 位按照[表 A ](#t2_3)规定 |
| b4 | 协议扩展 | 0 | 无协议格式扩展 |
和[表 2-3](#t2_3)
| 位bit | 标志名称 | 值 | 值描述 |
| :-------: | :------: | :--: | ------------------------------------------------------------ |
| b5 | 选择 | 1 | 请求只由处于选择状态的 VICC 执行,寻址标志应设置为 0UID 域应不包含在请求中 |
| b6 | 寻址 | 0 | 请求没有寻址。不包括 UID 域。可以由任何 VICC 执行 |
| b7 | 选择权 | 0 | 含义由命令描述定义 |
| b8 | RFU | 0 | 固定为 `0` |
- 对于 `Cmd` = `27`
依照[表 2-5](#t2_5),表示这是一条写 AFI命令即为 `Write AFI` 命令。
- 对于 `AFI` = `08`
这是我指定写入的`AFI` = `08`
再次使用 `Get System Info` 命令读取卡片系统信息:
<img src="images\再次读系统信息.jpg" alt="再次读系统信息" style="zoom:33%;" />
卡片回复 `000F8AB52D23000104E006081B0301` ,可见卡片中的 `AFI` 已经写入指定 `AFI` = `08`
# 8. 总结
对于其他命令,由于实验过程中忘记拍照,不再展示。
总的来说,这是一次复现实验, Reader 向卡片发送的每一个字节都严格按照 ISO 15693 规范,因此对于其他命令的构造与实验,做法都一样。
我从本次实验中学到了许多东西:
1. 首先是加深了对规范标准的理解。无规矩不成方圆,正是由于设计出了良好的规范,便捷的 RFID 通信得以推广。
2. 其次是巩固了 ISO 15693 协议防碰撞算法的知识:
-`Inventory` 阶段ISO 15693 协议通过依次在范围内叫号获得卡片响应,从而有序识别射频场中的各个卡;
- 在读写阶段ISO 15693 协议通过 `Flag` 的第 3 个 bit ,指定使用两种方式中的一种来避免碰撞:
1. 通过 `Select` 命令指定要响应的卡片,然后发送对该卡片的操作命令;
2. 在命令中添加指定卡片的 `UID`
这是一次让我受益匪浅的实验。

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,56 @@
## 基于RFID技术的计算机视觉数据标注系统在医院自动抓药机中的应用
### 概要
本文介绍了一种基于RFID技术的计算机视觉数据标注系统在医院自动抓药机中的应用。该系统利用RFID技术和计算机视觉技术相结合实现药品包装过程中药丸数量的精确控制从而提高医院药品管理的效率和准确性。
### 概述
随着医疗信息化的快速发展医院对药品管理的要求也越来越高。传统的人工抓药方式存在效率低、误差率高等问题而自动抓药机可以显著提高药品包装的效率和准确性。然而如何在自动抓药机中精确控制药丸的数量是一个亟待解决的问题。本文提出了一种利用RFID技术和计算机视觉技术相结合的方法通过RFID技术进行数据标注为计算机视觉模型提供高质量的训练数据从而实现药丸数量的精确控制。
### 系统介绍
#### 1. 使用的RFID频点及理由
本系统使用UHF频段860MHz~960MHz的RFID标签。选择该频段的理由包括以下几点
- UHF频段的读取距离较远适合在大型自动抓药机中应用。
- 该频段的RFID标签具有较高的读取速度和多标签识别能力能够满足系统实时性和高效性的要求。
- UHF标签天线的尺寸可以足够小适合嵌入到药丸内部。
#### 2. 系统组成
系统主要由以下几部分组成:
- RFID标签嵌入在样例药丸内部用于标记药丸的数量。
- 摄像头:用于拍摄药丸的图像,供计算机视觉模型进行识别。
- RFID阅读器放置在摄像头旁边用于读取RFID标签信息计算出摄像头前药丸的数量作为图像的标签。
- 药库:负责随机释放一定数量的药丸。
- 药盘:用于承接药库释放的药丸,使得摄像头拍摄稳定的药丸图像。
- 控制计算机:向各个部件发出相应指令,控制数据采集和标注流程。
- 计算机视觉模型:拍摄数据训练的对象,用于识别摄像头拍摄的图像中的药丸数量。
#### 3. 部署方案
为了隔绝药库和药盘之间的RFID信号传播我们采用以下措施
- 在药库和药盘之间安装RFID信号屏蔽材料如金属板阻挡RFID信号的传播。
- 调整药库和药盘中RFID阅读器的功率使其只能读取到近距离内的RFID标签减少RFID信号的传播范围。
- 在药盘中使用定向天线将RFID阅读器的信号集中在药盘区域避免信号向不需要的区域传播。
具体部署如下:
1. 药库安装一个RFID阅读器控制其功率确保每次吐药前药库中的样例药丸数量正确。
2. 抓药机药盘安装一个摄像头和一个定向天线的RFID阅读器摄像头用于拍摄药丸图像RFID阅读器用于读取样例药丸的RFID标签信息。
#### 4. 工作流程
1. **药库释放药丸**首先药库内部的RFID阅读器清点药丸中的RFID芯片总量。若总量正确随机释放一定数量的样例药丸。若总量不正确发出警报中止采集流程
2. **药盘承接药丸**:药盘承接药库释放的药丸,通过振动等方式使药丸铺开,随后静止等待采集数据;
3. **采集数据**摄像头拍摄药盘图像RFID阅读器读取药丸内部RFID标签信息统计药丸数量。控制计算机获取摄像头和RFID阅读器设备信息组成图像数量数据对写入数据集保存
4. **模型训练与部署**:使用数据集训练视觉模型,最终用于生产环境。
#### 5. 系统安全性设计
为了确保系统的安全性和数据的准确性,系统设计了以下安全措施:
- 在药库中安装RFID阅读器每次吐药前先检查药库中的样例药丸数量确保数量正确、RFID芯片没有损坏。
- 隔绝药库和药盘之间的RFID信号传播防止药盘的RFID阅读器误读药库中的药丸芯片。
### 总结展望
通过本文介绍的基于RFID技术的计算机视觉数据标注系统医院可以实现药丸包装过程中的精确控制提高药品管理的效率和准确性。未来可以进一步优化系统的算法和硬件设计提升系统的性能和可靠性同时探索RFID技术在其他医疗场景中的应用潜力。