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

0 背景知识

0.1 什么是RFID

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

0.2 组成

从结构上讲RFID是一种简单的无线系统,只有两个基本器件,RFID则使用专用的RFID读写器及专门的可附着于目标物的RFID标签,利用频率信号将信息由RFID标签传送至RFID读写器。
在这里插入图片描述

  • 标签(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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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 <1411032148@qq.com>
 *      ChangeLog:  1, Release initial version on "2020年07月22日 22时05分34秒"
 *                 
 ********************************************************************************/

#include <stdio.h>
#include "rc522.h"
#include <bcm2835.h>
#include <stdlib.h>
#include <unistd.h>

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;
}

在这里插入图片描述

  • 3
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
树莓派(Raspberry Pi)是一个流行的微型单板计算机,它支持GPIO(General Purpose Input/Output,通用输入输出)接口,用于连接各种外设,包括SPI(Serial Peripheral Interface,串行外围接口)。打开SPI接口树莓派上通常涉及以下步骤: 1. **安装必要的库和驱动**: 首先,确保已经更新了系统并安装了SPI库,如`spidev`。可以通过以下命令进行安装: ```bash sudo apt-get update sudo apt-get install python3-spi ``` 2. **配置GPIO模式**: 在树莓派上,你需要将GPIO引脚设置为SPI模式。可以通过修改GPIO配置文件(`/boot/config.txt`)或使用GPIO引脚特定的配置命令来完成,例如设置CE0为SPI模式: ```bash echo "dtparam=spi=on" >> /boot/config.txt ``` 3. **识别SPI设备**: 使用`lsmod`或`ls /dev/spi*`命令检查SPI设备是否已经被识别。 4. **创建设备文件**: 在树莓派的内核驱动下,SPI设备会自动创建文件系统中的设备文件,如`/dev/spidevX.Y`,其中X和Y是设备编号。你需要找到对应的设备文件路径。 5. **Python示例**: 如果你想通过Python使用SPI,你可以导入`spidev`模块,然后创建一个SPI设备对象,如下所示: ```python import spidev spi = spidev.SpiDev() spi.open(0, 0) # 设备编号,通常是0和0,因为树莓派只有一个SPI通道 ``` 6. **配置和通信**: 根据你需要与之通信的SPI设备,设置数据速率、模式等参数,并进行数据传输。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值