RFID期末复习总结

一.概念部分

1.基础概念

射频识别=无线电频率识别=RFID

应答器:存放识别信息的电子数据载体

阅读器:将识别信息从应答器中读出(还可以写入数据)

应答器是统称,在各种专业场合有专业名字,比如射频卡(门禁卡、校园卡),标签(商品标签)等。

阅读器也可以叫读/写器、基站等(都不准确,但遇到这些把他们当作阅读器)

耦合:指天线(阅读器)和标签(应答器)之间的电磁相互作用。

当一个 RFID 标签进入天线的工作范围内时,天线会向空间发射一定频率的电磁波,这些电磁波会被标签接收并利用它们来传输数据。当电磁波通过标签的天线时,它会激发标签中的电路并产生一个反馈信号,这个信号会被读取器天线接收并解码。这种相互作用被称为耦合。

读写器(阅读器)则是RFID系统中控制天线工作的设备,通常由计算机或嵌入式系统控制。读写器向天线提供能量和命令,并从天线接收标签返回的数据。在RFID系统中,读写器是与计算机或嵌入式系统交互的主要方式,可以通过它来实现对标签的管理和控制。

这里请注意,阅读器不是标签,但是为了方便理解耦合,我们可以理解为阅读器和应答器之间的相互作用,毕竟我们这里只是学习了解,不是专门进入这个领域。

2.耦合方式

RFID主要可以分为电感耦合方式(磁耦合)与反向散射耦合方式(电磁场耦合)两大类。

电感耦合方式:

  • 1.射频载波频率fc (工作频率)为13.56MHz或者小于135kHz的频段
  • 2.应答器与阅读器的工作距离在1m以下
  • 3.应答器几乎是无源的,能量(电源)从阅读器获得
  • 4.应答器向阅读器数据传输方法:负载调制
  • 5.阅读器向应答器数据传输方法:多种数字调制,通常指的是幅移键控(ASK)
  • 6.方式的变形:1)时序方式 2)扫频法 3)分频信号检测法

反向散射耦合方式:

  • 1.声表面波器件(ASW)以压电效应和与表面弹性相关的低速传播的声波为依据。
  • 2.方式变形:谐波检测法

3.应答器分类

  • 无源应答器:不附有电池 ,从阅读器发出射频能量中提取工作所需的电能。采用电感耦合方式的应答器多为无源应答器。
  • 半无源应答器 :内装有电池,起辅助作用,对维持数据的电路供电或对应答器芯片工作所需的电压作辅助支持,用于传输通信的射频能量源自阅读器。
  • 有源应答器:工作电源完全由内部电池供给,同时内部电池能量也部分地转换为应答器与阅读器通信所需的射频能量。

二.条码原理

1.说明

什么条码的概念就不说了,我们的目的是学会人为读取条形码即可。

本部分参考原文链接:条码原文

2.条码位数

  • 条形码一共有13位

  • 前2位或者前3位称为前缀,表示国家、地区或者某种特定的商品类型

  • 中国区条形码开头:690~699

  • 图书类条形码开头:978~979

  • 前缀后的4位或者5位称为厂商代码,表示产品制造商

  • 厂商代码后5位称为商品代码,表示具体的商品项目

  • 最后1位是校验码,根据前12位计算而出,可以用来防伪以及识别校验

3.条形码编码说明

条形码一共有8个区域:左侧空白区->起始符->左侧数据符->中间分隔符->右侧数据符->校验符->终止符->右侧空白区

  • 字符为0~9
  • 除空白区外的区域和字符都采用二进制编码表示,1表示bar(黑条),0表示space(白条)
  • 起始符,终止符编码为101,分隔符编码为01010
  • 0~9每种字符有3种编码方式,AB为左侧数据奇偶编码,C为右侧数据偶编码

  • 左侧数据的奇偶性由前置符决定

4.其他解码方式

以宽度为编码,去掉起始码,终止码,中间分隔码,不管白条还是黑条都算一个编码,最窄一节为1(最窄的为单位宽度),两个单位宽度就是2,三单位长度为3,四单位宽度为4。

四条(不管黑条还是白条都算条)代表一个数字,这里只管宽度不区分0和1

四条长度数字
32110
22211
21222
14113
11324
12315
11146
13127
12138
31129

5.校验码的计算方法

以下图所示的条形码举例说明:

  • 条形码的位数起始位为最右一位,即校验位,检验码计算方法如下:

  • 偶位数数值相加乘3((0+2+0+8+1+9)*3=60)

  • 不含校验位的奇位数相加(7+4+7+9+3+6=36)

  • 将前两步的结果相加(60+36=96)

  • 用10减去上一步结果的个位数数值(10-6=4)

  • 上一步结果的个位数即为校验码(4)

后面实验篇会有关于二维码识别的实验,期末会考关于其识别的实验题,本质上,二维码也是一种条形码,所以这里也就是一部分原理。

这里赠送一个条形码生成网站,可以自己尝试玩玩:生成条码

三.编码与调制

1.基础理解

  • 1.数据与信号(这个不想说了,太简单了)
  • 2.数字信号和模拟信号(单片机玩过没,玩过就知道了)
  • 3.输介质:传输介质是数据传输系统里发送器和接收器之间的物理通路。
  • 4.延迟变形:参考课本P63
  • 5.多径效应:无线信号通过直射、折射、反射等不同路径到达同一点时因信号叠加或相互抵消产生多经效应。(大学物理中应该接触过)

2.通信原理部分

  • 1.在数字通信中,一个数字脉冲称为一个码元。如字母A的ASCII码是01000001,可用7个脉冲来表示,亦可认为由7个码元组成,码元携带的信息量由码元的离散值个数决定。
  • 2.码元传输速率简称传码率,又称符号速率等。它表示单位时间内传输码元的数目,单位是波特 ,记为B。这是为了纪念电报码的发明者法国人波特(Baudot),故码元传输速率也称为波特率。
  • 3.对在给定条件,给定通信路径或信道上的数据传输速率称为信道容量。
  • 数据传输速率=码元传输速率×log2M

  • 信道的最大容量C为C=2BW log2M

  • 带宽受限且有高斯白噪声干扰的信道最大容量 C= BW log2(1+S/N)

这一部分通信原理里面涉及到,计算机网络里也有。

3.作业1的题目

作业1:曼切斯特编码碰撞检测的方法

曼切斯特编码数字“0”前半周期为低电平,后半周期为高电平,数字“1”前半周期为高电平,后半周期为低电平表示,因此,0,1组成的数字信号不可能出现连续3个半周期为高或低电平,如果出现连续3个半周期为高或低电平,那么,可以判断一个碰撞发生了。

作业2:RFID多标签识别时,碰撞是如何发生

当一个阅读器同时读多个RFID标签的信息,标签随机选择一个时间片和阅读器通信(时分多路访问机制),当两个以上标签同时和标签发生通信时,碰撞发生,通过曼切斯特碰撞检测方法阅读器就可以知道碰撞发生了。

4.补充

曼彻斯特编码:看中间突变,上升沿为0,下降沿为1。

本学期的第一个实验就是曼彻斯特编码的防冲突算法,老师说了,几乎所有的题都围绕几个实验来设计,那么实验的原理是重点,就看平时你的实验怎么完成的了,实验部分我放在最后面单独写。

四.二维码的原理

1.说明

具体的二维码原理不需要知道,我们只需要像了解条形码一样,去了解它的结构就行了,并学会用python编写生成和识别二维码,这是大题里面的送分题,记住代码,生成加识别代码就几行。

2.QR码特点

1.存储大容量信息

  • 传统的条形码只能处理20位左右的信息量,与此相比,QR码可处理条形码的几十倍到几百倍的信息量。

  • 支持所有类型的数据。(如:数字、英文字母、日文字母、汉字、符号、二进制、控制码等)。

2.在小空间内打印

  • QR码使用纵向和横向两个方向处理数据
  • 如果是相同的信息量,QR码所占空间为条形码的十分之一左右。

3.纠错功能

  • 即使部分编码变脏或破损,也可以恢复数据。

    数据恢复以码字为单位(是组成内部数据的单位,在QR码的情况下,每8比特代表1码字),最多可以纠错约30%

QR码的纠错功能原理

是通过将RS编码附加到原数据中的方式实现的,由于RS编码的存在,即使在QR码中出现一定数量的像素损坏或丢失,也能够通过纠错机制来保证数据的完整性和准确性。
因此,在不同的纠错等级下,QR码所能存储的真实数据容量并没有太大差异。RS编码提供了一定的冗余,增强了QR码的容错性等级选择。

3.python需要安装的包

  • pip install opencv-python #cv2

  • pip install pillow #(anaconda3 已安装)

  • pip install myqr

  • pip install qrcode

  • pip install zxing

4.读取顺序

  • 1.定位:使用下方的三个大框、一个小框和两个横条

  • 2.了解编码的基本信息:下面红色区域部分

  • 3.纠错和实际数据:其余部分

  • 4.黄色是纠错区域,随着纠错等级增加,可存储区域减小

    在不同的纠错等级下,QR码所能存储的真实数据容量并没有太大差异

    存储数据较多时,可以选择较低的纠错等级

  • 5.为了避免出现大规模的黑和白,所以可以使用掩码操作

5.源码1:二维码的生成

import qrcode

# 创建 QRCode 对象,并指定需要生成二维码的内容
qr = qrcode.QRCode(
    version=1,
    box_size=10,
    border=5,
    error_correction=qrcode.constants.ERROR_CORRECT_Q,  # 设置错误纠正等级为 Q
)

qr.add_data("CSDN@墨城烟柳ベ旧人殇\n我的主页是:https://blog.csdn.net/weixin_51496226?spm=1000.2115.3001.5343")  # 内容
qr.make(fit=True)  # 生成可以使用 make_image() 方法创建图像的 QR 码图案

# 生成图片,并保存到本地文件
img = qr.make_image(fill_color="black", back_color="#F5DEB3")  # 设置填充色为黑色,背景颜色为 "#F5DEB3"(淡褐色)
img.save("1.jpg")

结果:

在这里插入图片描述

6.源码2:二维码的识别

import cv2

qrcode_filename = "1.jpg"
qrcode_image = cv2.imread(qrcode_filename)
qrCodeDetector = cv2.QRCodeDetector()
data, bbox, straight_qrcode = qrCodeDetector.detectAndDecode(qrcode_image)

print(data)

五.其他部分

1.M1卡存取识别

参考链接

这篇文章有点长,耐心看完,老师根据这个来出题。

2.arduino读写RFID

参考链接

 #include <SPI.h>      //include the SPI bus library
 #include <MFRC522.h>  //include the RFID reader library#define SS_PIN 10  //slave select pin选择引脚
 #define RST_PIN 5  //reset pin重置别针
 ​
 MFRC522 mfrc522(SS_PIN, RST_PIN);  // 实例化MFRC522读取器对象.
 MFRC522::MIFARE_Key key;          //创建一个名为'key '的mifare_key struct,它将保存卡信息这是我们将写入然后阅读的块号
 int block=2;  
 ​
 byte blockcontent[16] = {"Last-Minute-Engg"};  //定义了16个字节的数组
 //byte blockcontent[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};  //all zeros. 这可以用来删除一个块。//此数组用于读取一个块。
 byte readbackblock[18];void setup() 
 {
     Serial.begin(9600);        // Initialize serial communications with the PC
     SPI.begin();               // Init SPI bus
     mfrc522.PCD_Init();        // INIT MFRC522卡(如果您想知道PCD的含义:接近耦合设备)
     Serial.println("Scan a MIFARE Classic card");
   
   //为读取功能准备安全键。
   for (byte i = 0; i < 6; i++) {
     key.keyByte[i] = 0xFF;  //keyByte is defined in the "MIFARE_Key" 'struct' definition in the .h file of the library
   }
 }void loop()
 {  
   // Look for new cards
   if ( ! mfrc522.PICC_IsNewCardPresent()) {
     return;
   }
   
   // Select one of the cards
   if ( ! mfrc522.PICC_ReadCardSerial()) 
   {
     return;
   }
     Serial.println("card selected");
          
    //the blockcontent array is written into the card block
    writeBlock(block, blockcontent);
    
    //read the block back
    readBlock(block, readbackblock);
    //如果您想查看整个1K内存,则在线下方的块。
    //mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
    
    //print the block contents
    Serial.print("read block: ");
    for (int j=0 ; j<16 ; j++)
    {
      Serial.write (readbackblock[j]);
    }
    Serial.println("");
 }
 

六.实验参考

由于实验涉及相当多,平时大部分实验也几乎独立完成并写了博客,针对每个实验我给出参考链接,复习看一遍就完事了。

  • 实验1:曼彻斯特编码与防碰撞算法点我阅读

  • 实验2:CRC循环冗余检验点我阅读

  • 实验3:实现ALOHA协议模拟算法点我阅读

  • 实验4:RFID的三次认证过程点我阅读

  • 实验5:二维码的识别点我阅读

  • 实验6:对象解析服务点我阅读

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/28728.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2022 年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题

2022 年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题 一. 逻辑推理&#xff1a;第 26~55 小题&#xff0c;每小题 2 分&#xff0c;共 60 分。下列每题给出的 A、B、C、D、E 五个选项中&#xff0c;只有一项是符合试题要求的。 26.百年党史充分揭示了中国共产党为什么…

object类clone、finalize

2 什么是API API&#xff08;Application Programming Interface&#xff0c;应用程序接口&#xff09;是一些预先定义的函数。目的是提供应用程序与开发人员基于某软件可以访问的一些功能集&#xff0c;但又无需访问源码或理解内部工作机制的细节. API是一种通用功能集,有时公…

Linux操作系统——第四章 进程间通信

目录 进程间通信介绍 进程间通信目的 进程间通信发展 进程间通信分类 管道 System V IPC POSIX IPC 管道 什么是管道 匿名管道 管道读写规则 管道特点 命名管道 创建一个命名管道 匿名管道与命名管道的区别 命名管道的打开规则 system V共享内存 共享内存示意…

TS系列之keyof详解,示例

文章目录 前言一、keyof是什么总结 前言 如果你用过TS的工具类型&#xff0c;Partial、Required、Pick、Record。那么你可能看过他们内部实现都有共同点就是keyof关键字。即使没有见过&#xff0c;那么下面就一起来了解一下&#xff0c;keyof关键字的详细作用吧。 一、keyof是…

基于Java家政服务网站系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

今天面了个京东拿 38K 出来的,让我见识到了基础的天花板

今年的春招结束了&#xff0c;而秋招也马上要开始了&#xff0c;很多小伙伴收获不错&#xff0c;拿到了心仪的 offer。 各大论坛和社区里也看见不少小伙伴慷慨地分享了常见的面试题和八股文&#xff0c;为此咱这里也统一做一次大整理和大归类&#xff0c;这也算是划重点了。 …

应聘求职自荐信优秀范文5篇

应聘求职自荐信优秀范文篇1 尊敬的领导&#xff1a; 您好!衷心的感谢您在百忙之中翻阅我的这份材料&#xff0c;并祝愿贵单位事业欣欣向荣&#xff0c;蒸蒸日上! 我是哈尔滨理工大学测控技术及通信工程学院________届毕业生&#xff0c;自从今日大学之后&#xff0c;高考后的轻…

Python实现面向对象版学员管理系统

如有错误&#xff0c;敬请谅解&#xff01; 此文章仅为本人学习笔记&#xff0c;仅供参考&#xff0c;如有冒犯&#xff0c;请联系作者删除&#xff01;&#xff01; 1.1需求分析 1.1.1使用面向对象编程思想完成学员管理系统的开发&#xff0c;具体如下&#xff1a; 系统要求…

Linux防火墙学习笔记12

iptables nat表应用案例&#xff1a; nat表作用&#xff1a; 导流 nat表作用位置&#xff1a; KVM或者OpenStack中虚拟机或云主机与外部通信。&#xff08;云主机导流&#xff09; Docker管理的容器与外部通信 nat表规则动作所对应的链&#xff1a; SNAT 源地址转换 应…

CSS--Java EE

在前端的代码中&#xff0c;CSS 相关的代码写在什么位置呢&#xff1f; CSS 可以写在<style>标签中外部引入&#xff1a;输入 link: css写在 div 标签中 目录 一、选择器的种类 1 基础选择器 1.1 类选择器 1.2 id选择器 1.3 标签选择器 1.4 通用选择器 小结 2 …

facebook文本生成音乐项目-audiocraft 安装教程

文章目录 所需环境安装ffmpeg克隆项目仓库安装相关依赖库运行项目模型下载自动下载模型失败MusicGen 模型下载地址 所需环境 ffmpegpython>3.9gitcuda118&#xff08;torch>2.0&#xff09; 安装ffmpeg 下载地址 下载后解压&#xff0c;然后将解压后的目录配置到系统…

电影《天空之城》观后感

上周看了电影《天空之城》这部电影&#xff0c;这部电影是六一儿童节时上映的&#xff0c;本周也算是补票吧&#xff0c;童年时&#xff0c;看的都是免费的&#xff0c;早已经忘记是在哪里看到的&#xff0c;但当时对自己触动很大&#xff0c;算是启蒙电影&#xff0c;所以今天…

Tinker 组件修复,踩坑

1、You need to use a Theme.AppCompat theme (or descendant) with this activity. 复现步骤 补丁加载成功之后重启应用&#xff0c;再退出应用重进闪退 日志 TinkerUncaughtHandler catch exception:java.lang.IllegalStateException: You need to use a Theme.AppCompat th…

网络传输中的那些编码之-UTF8编码漫谈

编码为什么是一个重要的话题&#xff0c;因为我们和计算机交互的主要方式目前还是文字字符。作为一个程序员&#xff0c;相信大部分都都被字符和编码的问题折磨过&#xff0c;从键盘输入文字字符到编辑器 中&#xff0c;编辑器存储字符到硬盘&#xff0c;再到具体一个编程语言如…

Java 八股文-基础篇

Java 基础 一、Java 概述 1.什么是 Java&#xff1f; Java 是一门面向对象的编程语言&#xff0c;不仅吸收了 C语言的各种优点&#xff0c;还摒弃了 C里难以理解的多继承、指针等概念&#xff0c;因此 Java 语言具有功能强大和简单易用两个特征。Java 语言作为静态面向对象编…

NB-lot和LoRa真正的差别在哪里?

就像要把大象装冰箱一样&#xff0c;物联网&#xff0c;万物互联也是要分步骤的。 一、感知层(信息获取层)&#xff0c;即利用各种传感器等设备随时随地获取物体的信息; 二、网络层(信息传输层)&#xff0c;通过各种电信网络与互联网的融合&#xff0c;将物体的信息实时准确地…

Mybatis学习之插件

Mybatis学习之插件 Plugins Mybatis中的插件虽然名称叫插件&#xff0c;但实质上是通过动态代理实现的。和我们平时讲的插件概念不一样&#xff0c;但是本质上都是给外部提供接口进行扩展。 MyBatis 允许我们在映射语句执行过程中的某一点进行拦截调用。MyBatis允许我们使用…

浪潮 KaiwuDB x 大数据中心 | 数据驱动政府治理能力快速提升

业务背景 我国工业互联网大数据资源存在孤立、分散、封闭等问题&#xff0c;数据价值未能得到有效利用&#xff0c;数据主权和数据安全面临重大威胁。 发挥数据对工业经济的基础支撑和创新引擎作用&#xff0c;可促进工业互联网的创新发展&#xff0c;加速数据驱动政府治理能…

CVPR23 | 可编辑3D场景布局的文本引导多对象合成NeRF

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://arxiv.org/abs/2303.13843 0.背景&#xff1a; 最近&#xff0c;文本到图像生成通过将视觉-语言预训练模型与扩散模型相结合&#xff0c;取得了巨大的成功。这些突破也使得强大…

cortex A7核按键中断实验

cortex A7核按键中断实验 一、分析电路图 实验目的&#xff1a;完成板子三个按键操作 1.1 电路图IO口 KEY1------>PF9 KEY2------>PF7 KEY3------>PF8 1.2 工作原理 KEY1 ------> PF9 ------> 按键触发方式&#xff1a;下降沿触发 KEY2 ------> PF7 …