OK,本实验分为两个部分
一、读卡
二、显示不同的卡的信息,同时继电器动作
01 硬件电路设计
读卡ID,两张卡,白卡和蓝卡,用txt文件名称体现
lib里面是库文件
把它放在自己的Arduino相应的文件家里,最好是从lib里面有单独的文件夹,用传感器名称命名的文件夹,放着一个文件夹进去就可以了
C:\Program Files (x86)\Arduino\libraries
我的是这一个,你的根据自己的文件夹路径来就可以了
这是整体电路连接
接口:
RFID 射频模块与 Arduino Uno 之间的连线如下:
RFID 射频模块 | Arduino Uno |
3.3V | 3.3V |
RST | 2 |
GND | GND |
MISO | 3 |
MOSI | 4 |
SCK | 5 |
SDA | 6 |
IRQ | 7 |
12C LCD1602 与 Arduino Uno 之间的接线:
I2C LCD1602 | Arduino Uno |
GND | GND |
vcc | 5V |
SDA | A4 |
ScL. | A5 |
继电器模块和 Arduino Uno 之间的接线:
继电器模块 | Arduino Uno |
SIG | 8 |
VCC | 5V |
GND | GND |
面包板怎么接继电器我就不介绍了,前面指导书里有,同学们自己看看就可以了,找继电器一章
02 软件
#include "rfid1.h"
RFID1 rfid;
char serNum[5];
void setup() {
// put your setup code here, to run once:
rfid.begin(7,5,4,3,6,2);
delay(100);
rfid.init();
Serial.begin(115200);
}
void loop() {
uchar status;
uchar str[MAX_LEN];
status=rfid.request(PICC_REQIDL,str);
if(status!=MI_OK)
return;
rfid.showCardType(str);
status=rfid.anticoll(str);
if(status==MI_OK)
{
Serial.print("The card's number is:");
memcpy(serNum,str,5);
rfid.showCardID(serNum);
Serial.println();
Serial.println();
}
delay(500);
rfid.halt();
}
获得ID,也就是卡号
#include "rfid.h"
#include<LiquidCrystal_I2C.h>
#include<Wire.h>
LiquidCrystal_I2C lcd(0x27,16,2);
RFID rfid;
#define relayPin 8
uchar serNum[5];
void setup() {
// put your setup code here, to run once:
lcd.init();
lcd.backlight();
Serial.begin(9600);
rfid.begin(7,5,4,3,6,2);
delay(100);
rfid.init();
pinMode(relayPin,OUTPUT);
digitalWrite(relayPin,LOW);
lcd.setCursor(0,0);
lcd.print(" Welcome! ");
delay(2000);
}
void loop() {
uchar status;
uchar str[MAX_LEN];
status=rfid.request(PICC_REQIDL,str);
if(status!=MI_OK)
{
return;
}
rfid.showCardType(str);
status=rfid.anticoll(str);
if(status==MI_OK)
{
lcd.setCursor(0,0);
lcd.print("ID:");
memcpy(serNum,str,5);
rfid.showCardID(serNum);
uchar* id=serNum;
if(id[0]==0x73&&id[1]==0xDC&&id[2]==0xE4&&id[3]==0x1D)
{
digitalWrite(relayPin,HIGH);
lcd.setCursor(0,1);
lcd.print("Hello good boy~");
delay(2000);
lcd.clear();
digitalWrite(relayPin,LOW);
}
else if(id[0]==0xE3&&id[1]==0xFD&&id[2]==0x27&&id[3]==0x94)
{
digitalWrite(relayPin,HIGH);
lcd.setCursor(0,1);
lcd.print("Hello good girl~");
delay(2000);
lcd.clear();
digitalWrite(relayPin,LOW);
}
else
{
lcd.setCursor(0,1);
lcd.print("Hello unkown guy~");
delay(2000);
lcd.clear();
}
}
lcd.setCursor(0,0);
lcd.print(" Welcome! ");
delay(2000);
rfid.halt();
}
卡测试代码
具体代码就不解释了
每个老师习惯不同哈哈
03 实验结果
RFID读卡
读卡实验视频
读卡-LCD显示卡主人信息-继电器动作灯亮2秒
卡测试代码
我没有别的卡了,其实其它卡扫卡有操作,没有别的卡,也懒得找,就不演示了