使用树莓派SPI接口实现RFID门禁功能

文章目录

  • 0 背景知识
    • 0.1 什么是RFID
    • 0.2 组成
    • 0.2 工作原理
  • 1 准备工作
    • 1.1 器件
    • 1.2 连线
  • 2 代码思路

0 背景知识

0.1 什么是RFID

射频识别,RFID(Radio Frequency Identification)技术,又称无线射频识别,是一种通信技术,俗称电子标签,可通过无线电讯号识别特定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或光学接触。
射频的话,一般是微波,1-100GHz,适用于短距离识别通信。
RFID读写器也分移动式的和固定式的,目前RFID技术应用很广,如:食堂,图书馆,门禁系统,食品安全溯源等。
很多好莱坞电影中,都有这种技术,就是在手掌处植入一个芯片,别人用一个机器刷一下,就知道你有多少战斗值,或者多少金钱。
或者你开了个养猪场,给每个猪都植入芯片,你就可以知道每只猪是哪头猪了。

0.2 组成

从结构上讲RFID是一种简单的无线系统,只有两个基本器件,RFID则使用专用的RFID读写器及专门的可附着于目标物的RFID标签,利用频率信号将信息由RFID标签传送至RFID读写器。
使用树莓派SPI接口实现RFID门禁功能_第1张图片

  • 标签(Tag):由耦合元件及芯片组成,每个标签具有唯一的电子编码,附着在物体上标识目标对象;
    又被称为应答器,应答器是RFID系统的信息载体,应答器大多是由耦合原件(线圈、微带天线等)和微芯片组成无源单元。

  • 阅读器(Reader):读取(有时还可以写入)标签信息的设备,可设计为手持式或固定式;
    阅读器根据使用的结构和技术不同可以是读或读/写装置,是RFID系统信息控制和处理中心。
    阅读器通常由耦合模块、收发模块、控制模块和接口单元组成。

  • 天线(Antenna):在标签和读取器间传递射频信号。

0.2 工作原理

RFID技术的基本工作原理并不复杂:
标签进入磁场后,接收解读器发出的射频信号,凭借感应电流所获得的能量发送出存储在芯片中的产品信息(无源标签或被动标签),或者由标签主动发送某一频率的信号(Active Tag,有源标签或主动标签),解读器读取信息并解码后,送至中央信息系统(应用系统)进行有关数据处理。

一套完整的RFID系统, 是由阅读器与电子标签也就是所谓的应答器及应用软件系统三个部份所组成,
以RFID 卡片阅读器及电子标签之间的通讯及能量感应方式来看大致上可以分成:感应耦合及后向散射耦合两种。一般低频的RFID大都采用第一种式,而较高频大多采用第二种方式。

阅读器和应答器之间一般采用半双工通信方式进行信息交换,同时阅读器通过耦合给无源应答器提供能量和时序。

在实际应用中,可进一步通过Ethernet或WLAN等实现对物体识别信息的采集、处理及远程传送等管理功能。

1 准备工作

1.1 器件

  • 1,RC522 RFID模块在单片机开发中常用来作为读卡器使用,在本文中我们把它连接到树莓派,然后就可以制作读卡器了,比如读取门禁卡的UID。淘宝很便宜,5元配有卡和芯片。
  • Mifare卡俗称M1卡,是IC卡的一种,原装芯片通常被称为NXP卡或飞利浦S50卡。兼容国产芯片有复旦的M1卡,和华鸿的M1卡。淘宝买RC522会顺带给你一张复旦卡。

科普
ID卡全称身份识别卡(Identification Card),是一种不可写入的感应卡,含固定的编号,主要有台湾SYRIS的EM格式,美国HID,TI,MOTOROLA等各类ID卡.。
IC卡内所记录数据的读取、写入均需相应的密码认证,甚至卡片内每个区均有不同的密码保护,全面保护数据安全,IC卡写数据的密码与读出数据的密码可设为不同,提供了良好分级管理方式,确保系统安全。

  • 3,树莓派,桦桦使用的是树莓派3B
  • 4,杜邦线

1.2 连线

首先,你得下载bcm2835的库,以及打开树莓派的SPI接口,参考下面两篇博客。
https://blog.csdn.net/weixin_46027505/article/details/107385029
https://blog.csdn.net/weixin_46027505/article/details/107390567

使用树莓派SPI接口实现RFID门禁功能_第2张图片

使用树莓派SPI接口实现RFID门禁功能_第3张图片

3.3V-------1	
RST-------	22	
GND------- 20
IRQ--------Not connected
MISO-------21	
MOSI------19	
SCK	-------23	
SDA(SS)------	24	

2 代码思路

下面是桦桦GitHub地址,拉去到本地,直接make就行了。
https://github.com/LRblazer/raspberry/tree/master/RFID

下面只给出测试代码

/*********************************************************************************
 *      Copyright:  (C) 2020 BIG WORLD
 *                  All rights reserved.
 *
 *       Filename:  test.c
 *    Description:  This file 
 *                 
 *        Version:  1.0.0(2020年07月22日)
 *         Author:  xuxinhua <[email protected]>
 *      ChangeLog:  1, Release initial version on "2020年07月22日 22时05分34秒"
 *                 
 ********************************************************************************/

#include 
#include "rc522.h"
#include 
#include 
#include 

int main()
{
	unsigned char s;//读出2个字节数据TagType--卡片类型代码
	unsigned char id[10];//卡片序列号,4字节
	int i;
	if(!bcm2835_init())
		return -1;
	RFID_init();

	bcm2835_gpio_fsel(21, BCM2835_GPIO_FSEL_OUTP);
	bcm2835_gpio_write(21, LOW);
	while(1)
	{
		printf("finding\n");
		if(findCard(0x52,&s)==MI_OK)
		{
			printf("hello huahua!\n");
			if(anticoll(id)==MI_OK)
			{
				for(i=0;i<4;i++)
					printf("%d ",id[i]);
				printf("\n");
				bcm2835_gpio_write(21,HIGH);
				delay(1000);
				bcm2835_gpio_write(21,LOW);
			}
			else printf("ERROR\n");
		}
		sleep(1);
	}
	bcm2835_spi_end();
	bcm2835_close();
	return 0;
}

使用树莓派SPI接口实现RFID门禁功能_第4张图片

你可能感兴趣的:(树莓派,项目,物联网,嵌入式,linux)