射频模块(arduino射频模块)

Mark wiens

发布时间:2022-12-07

射频模块(arduino射频模块)

 

该项目实现了利用一块Arduino Uno开发板,同时控制三个RFID射频模块,用于识别6张白卡,并且配合全彩LED,以及mp3-TF-16P模块来响应不同的白卡。,

互联网小常识:应用代理与应用级网关不同之处在于:应用代理完全接管了用户与服务器的访问,隔离了用户与被访问的服务器之间的数据包的交换通道。而应用级网关采用的是存储转发的方式。

当初笔者在网上查找资料时候,发现网上很难找到利用一块Arduino Uno开发板,同时控制三个或以上的RFID射频模块,经过笔者3天的实践和摸索,终于实现了该功能。所以写此文章来给有需要的人分享笔者的做法,希望能给大家一些启示。

基础知识笔者在这里不再多说,大家可以参考:https://www.toutiao.com/a6733496055150674443/。其中,同时控制三个RFID射频模块,总结为下面代码(笔者做了注释,认真看能看明白的):

互联网小常识:Internet/Interanet通用服务器主要包括:DNS服务器、WWW服务器、Ftp服务器、E-Mail服务器,以及远程通信服务器、代理服务器等。

include"SPI.h"// SPI library//加载SPI通讯库include"MFRC522.h"//加载射频模块库include //加载软串口库include //加载MP3模块库constintpinRST =9;//定义RFID模块复位接口与Arduino的接口为9constintpinSDA1 =10;//定义1号RFID模块SDA接口与Arduino的接口为10constintpinSDA2 =5;//定义2号RFID模块SDA接口与Arduino的接口为5constintpinSDA3 =6;//定义3号RFID模块SDA接口与Arduino的接口为6MFRC522mfrc501(pinSDA1,9);//在Arduino上设置mfrc501MFRC522mfrc502(pinSDA2,9);//在Arduino上设置mfrc502MFRC522mfrc503(pinSDA3,9);//在Arduino上设置mfrc503voidsetup()//初始化函数{ SPI.begin();// 打开SPI连接mfrc501.PCD_Init();// 初始化接近耦合装置(PCD)mfrc502.PCD_Init();// 初始化接近耦合装置(PCD)mfrc503.PCD_Init();// 初始化接近耦合装置(PCD)Serial.begin(9600);// 打开串行连接}voidloop()//扫描循环程序{if(mfrc501.PICC_IsNewCardPresent())// ( 如果存在RFID标签/卡,则返回true) ,1号射频模块{if(mfrc501.PICC_ReadCardSerial())// 如果读取了RFID标签/卡,则返回true{ Serial.print("RFID TAG ID:");//在串口打印RFID TAG ID:for(byte i =0; i < mfrc501.uid.size; ++i)// read id (in parts)//读取打印卡ID{ Serial.print(mfrc501.uid.uidByte[i], HEX);// 以十六进制值打印id,DEC为十进制输出a[i]=mfrc501.uid.uidByte[i];//将信息存入数组中,与数据库做比较} Serial.println();// Print out of id is complete.//换行}if((a[0]==b[0])&&(a[3]==b[3])||((a[0]==c[0]) && (a[3]==c[3])))//ID卡权限判断条件{ mp3_play (1);//播放语音1LEDD(LEDa,LEDb);//LED灯函数引用}else//不通过{ mp3_play (2);//播放语音2LEDD(LEDc,LEDd);//LED灯函数引用} }//2号射频模块if(mfrc502.PICC_IsNewCardPresent())// ( 如果存在RFID标签/卡,则返回true) ,2号射频模块{if(mfrc502.PICC_ReadCardSerial())// 如果读取了RFID标签/卡,则返回true{ Serial.print("RFID TAG ID:");//在串口打印RFID TAG ID:for(byte i =0; i < mfrc502.uid.size; ++i)// read id (in parts)//读取打印卡ID{ Serial.print(mfrc502.uid.uidByte[i], HEX);// 以十六进制值打印id,DEC为十进制输出a[i]=mfrc502.uid.uidByte[i];//将信息存入数组中,与数据库做比较} Serial.println();// Print out of id is complete.//换行}if((a[0]==d[0])&&(a[3]==d[3])||((a[0]==e[0]) && (a[3]==e[3])))//ID卡权限判断条件{ mp3_play (1);//播放语音1LEDD(LEDa,LEDb);//LED灯函数引用}else{ mp3_play (2);//播放语音2LEDD(LEDc,LEDd);//LED灯函数引用} }//3号射频模块if(mfrc503.PICC_IsNewCardPresent())// ( 如果存在RFID标签/卡,则返回true){if(mfrc503.PICC_ReadCardSerial())// 如果读取了RFID标签/卡,则返回true{ Serial.print("RFID TAG ID:");//在串口打印RFID TAG ID:for(byte i =0; i < mfrc503.uid.size; ++i)// read id (in parts)//读取打印卡ID{ Serial.print(mfrc503.uid.uidByte[i], HEX);// 以十六进制值打印id,DEC为十进制输出a[i]=mfrc503.uid.uidByte[i];//将信息存入数组中,与数据库做比较} Serial.println();// Print out of id is complete.//换行}if((a[0]==f[0])&&(a[3]==f[3])||((a[0]==g[0]) && (a[3]==g[3])))//ID卡权限判断条件{ mp3_play (1);//播放语音1LEDD(LEDa,LEDb);//LED灯函数引用}else{ mp3_play (2);//播放语音2LEDD(LEDc,LEDd);//LED灯函数引用} } }

完整代码如下所示:

include"SPI.h"// SPI library//加载SPI通讯库include"MFRC522.h"//加载射频模块库include //加载软串口库include //加载MP3模块库constintpinRST =9;//定义RFID模块复位接口与Arduino的接口为9constintpinSDA1 =10;//定义1号RFID模块SDA接口与Arduino的接口为10constintpinSDA2 =5;//定义2号RFID模块SDA接口与Arduino的接口为5constintpinSDA3 =6;//定义3号RFID模块SDA接口与Arduino的接口为6intvalue =0;intLEDa =3;//定义LED灯a与Arduino的接口为3intLEDb =4;//定义LED灯b与Arduino的接口为4intLEDc =7;//定义LED灯c与Arduino的接口为7intLEDd =8;//定义LED灯d与Arduino的接口为8inta[4];//定义数组a[4],变量名为a,长度为4intb[4] = {25,171,59,186};//定义数组b[4],值为{25,171,59,186}intc[4] = {105,1,66,186};//定义数组c[4],值为{105,1,66,186}intd[4] = {25,61,4,195};//定义数组d[4],值为{25,61,4,195}inte[4] = {185,152,165,194};//定义数组e[4],值为{185,152,165,194}intf[4] = {179,125,81,123};//定义数组f[4],值为{179,125,81,123}intg[4] = {175,33,77,21};//定义数组g[4],值为{175,33,77,21}MFRC522mfrc501(pinSDA1,9);//在Arduino上设置mfrc501MFRC522mfrc502(pinSDA2,9);//在Arduino上设置mfrc502MFRC522mfrc503(pinSDA3,9);//在Arduino上设置mfrc503voidsetup()//初始化函数{ pinMode(LEDa,OUTPUT);//声明LEDa接口为输出pinMode(LEDb,OUTPUT);//声明LEDb接口为输出pinMode(LEDc,OUTPUT);//声明LEDc接口为输出pinMode(LEDd,OUTPUT);//声明LEDd接口为输出SPI.begin();// 打开SPI连接mfrc501.PCD_Init();// 初始化接近耦合装置(PCD)mfrc502.PCD_Init();// 初始化接近耦合装置(PCD)mfrc503.PCD_Init();// 初始化接近耦合装置(PCD)Serial.begin(9600);// 打开串行连接mp3_set_serial (Serial);//设置DFPlayer mini mp3模块的序列号mp3_set_volume (30);//设置音量为20,范围可为0~30}voidLEDD(intled1,intled2)//自定义LED灯函数,可随时调用{ digitalWrite(led1,HIGH);//参数led1对应的灯亮digitalWrite(led2,HIGH);//参数led2对应的灯亮delay(500);//亮灯持续0.5秒digitalWrite(led1,LOW);//参数led1对应的灯灭digitalWrite(led2,LOW);//参数led2对应的灯灭delay(200);//灭灯持续0.5秒digitalWrite(led1,HIGH);//参数led1对应的灯亮digitalWrite(led2,HIGH);//参数led2对应的灯亮delay(500);//亮灯持续0.5秒digitalWrite(led1,LOW);//参数led1对应的灯灭digitalWrite(led2,LOW);//参数led2对应的灯灭}voidloop()//扫描循环程序{if(mfrc501.PICC_IsNewCardPresent())// ( 如果存在RFID标签/卡,则返回true) ,1号射频模块{if(mfrc501.PICC_ReadCardSerial())// 如果读取了RFID标签/卡,则返回true{ Serial.print("RFID TAG ID:");//在串口打印RFID TAG ID:for(byte i =0; i < mfrc501.uid.size; ++i)// read id (in parts)//读取打印卡ID{ Serial.print(mfrc501.uid.uidByte[i], HEX);// 以十六进制值打印id,DEC为十进制输出a[i]=mfrc501.uid.uidByte[i];//将信息存入数组中,与数据库做比较} Serial.println();// Print out of id is complete.//换行}if((a[0]==b[0])&&(a[3]==b[3])||((a[0]==c[0]) && (a[3]==c[3])))//ID卡权限判断条件{ mp3_play (1);//播放语音1LEDD(LEDa,LEDb);//LED灯函数引用}else//不通过{ mp3_play (2);//播放语音2LEDD(LEDc,LEDd);//LED灯函数引用} }//2号射频模块if(mfrc502.PICC_IsNewCardPresent())// ( 如果存在RFID标签/卡,则返回true) ,2号射频模块{if(mfrc502.PICC_ReadCardSerial())// 如果读取了RFID标签/卡,则返回true{ Serial.print("RFID TAG ID:");//在串口打印RFID TAG ID:for(byte i =0; i < mfrc502.uid.size; ++i)// read id (in parts)//读取打印卡ID{ Serial.print(mfrc502.uid.uidByte[i], HEX);// 以十六进制值打印id,DEC为十进制输出a[i]=mfrc502.uid.uidByte[i];//将信息存入数组中,与数据库做比较} Serial.println();// Print out of id is complete.//换行}if((a[0]==d[0])&&(a[3]==d[3])||((a[0]==e[0]) && (a[3]==e[3])))//ID卡权限判断条件{ mp3_play (1);//播放语音1LEDD(LEDa,LEDb);//LED灯函数引用}else{ mp3_play (2);//播放语音2LEDD(LEDc,LEDd);//LED灯函数引用} }//3号射频模块if(mfrc503.PICC_IsNewCardPresent())// ( 如果存在RFID标签/卡,则返回true){if(mfrc503.PICC_ReadCardSerial())// 如果读取了RFID标签/卡,则返回true{ Serial.print("RFID TAG ID:");//在串口打印RFID TAG ID:for(byte i =0; i < mfrc503.uid.size; ++i)// read id (in parts)//读取打印卡ID{ Serial.print(mfrc503.uid.uidByte[i], HEX);// 以十六进制值打印id,DEC为十进制输出a[i]=mfrc503.uid.uidByte[i];//将信息存入数组中,与数据库做比较} Serial.println();// Print out of id is complete.//换行}if((a[0]==f[0])&&(a[3]==f[3])||((a[0]==g[0]) && (a[3]==g[3])))//ID卡权限判断条件{ mp3_play (1);//播放语音1LEDD(LEDa,LEDb);//LED灯函数引用}else{ mp3_play (2);//播放语音2LEDD(LEDc,LEDd);//LED灯函数引用} } }

互联网小常识:IEEE802.11b运作模式基本分为两种:点对点模式(ad hoc,无线网卡与无线网卡之间的通信方式,最多256台),基本模式(无线网络规模扩充或无线和有线网络并存时的通信方式,是802.11b最常用的工作模式,最多1024台)。

免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186