下载  >  开发技术  >  C  > Arduino mega与AS3992 RFID通信读RSSI值代码

Arduino mega与AS3992 RFID通信读RSSI值代码 评分

Arduino mega与Eleckits AS3992 UHF RFID读写模块通信读RSSI值代码
、首先,要完成 与间的正常通讯,可通过下列代码实现: void setup( Serial begin (115200) Serial1begin(115200) //unsigned char i unsigned char val1, val2 void loop if(Serial available() vall=Serial read Serial1 print(val1) if(Serial1 available) val2=Serial1 read 0 Serial print(val2); 此代码实现了在 串口填写指令发送,接收区收到 的应答,见 串口调试工具 aE K-CIU [Co1281 PCS g Terminal Mod Line status 包e 画画 DSR DTR N RTS V Bre厂 Com port pack H 430301441601EDAC3COD 0.04 OE300030340000000003c000 ? 003F17 rd Pacget Byte count Display Send data Cle CASCI COM281152008-N-1 FLOW: NONE Rx: 22 bytes 这样仍需要通过串口调试工具填写发送数据,而且一串数据同时得到,对于要代 码实现得到其中一值并不可行,后用到 Serial write() 用 Serial write0)实现通信 unsigned char val; unsigned char SCMD[]={0×43,0X030×01} unsigned char RCMD[22] void setup Serial, begin(115200); Serial1 begin (115200); //Serial1 write(SCMD, 3); id loop Serial1write(SCMD, 3) //Write three bytes to the serial 1 delay(500) //The interval of reception of each byte if (Serial1 available(>0 ival= Serial1 reado Serial print(val);y CTU [CO夏28] Range Test Terminal Modem Confi e 吧 DDSR DTR V RTS M Break Fu Fucked LIterI He 441601EA4350D 0.04。。,, ...0E300030340000000003c000 00317441601FC370D 0.04....OE300030340000000003c000 ?.D 003F17441601匡mAC3C0D 0.04...E300030340000000003c000 003F17441601543AOD .0.01......0E300030340000,000003c000 ?,D,。,,5 003F17441601A4350D 0.04...OE300030340000000003c000 ?.D 003F17441601哐DFC370D 0.04 UE3000 4 00 ?.DDDDDDDDD 00 3E 17 414444 44444 DDDDDDDDDDDD444444444444444444444444 DDDDDDDDDDDD444444444444444444444444 DDDDDDDDDDDD444444444444444444444444 DDDDDDDDDDDD444444444444444444444444 DDDDDDDDDDDD444444444444444444444444 DDDDDDDDDDDD444444444444444444444444 DDDDDDDDDDDD444444444444444444444444 DDDDDDDDDDD4444444444444444444444 心UA21边N1+LwNU上 HA: 236 bytes 这个代码实现不断的向RFID发送指令,每隔接收到一个字节。 出现的问题是:对于RFID在扫描一个标签时RSS值是会变化的,而且在扫描到 第七次之后就出现如图屮框屮所示现象,只接收到值 原因:在发送 后,要接收到个字节(读到标签编号)或个 字节(未读到标签 )时再发送指令,而上面代码在接一个字节就 发送了一次指令,造成应答不完整。 后改代码如下 unsigned char va unsigned char SCMD[={0×43,0×030×01} unsigned int status=0 unsigned int i=0; void setup Serial begin (115200); Serial1 begin (115200); //Serial 1.write SCMD, 3); void loop if(status==0) Serial1 write(SCMD, 3 delay(200); status if (Serial 1. available(>0) val Serial1 read ( Serial print(val) + if(i==22) [status=0; 0;} 执行结果见串口调试工具 K-CTU [CO夏28 PC Settings Range Test Terminal Modem Configuration Line status Assert 四画 DTR V RTS V Break厂 Com Port Packet Screen Hex ,f,0E3000E20019838301006611 P.#D。 50012344160169543A0D 0 f.OE3000E20019838301006611 #D..h.5 0012344160⊥68A43501 f.|0E3000E20019838301006611 P, #D 5001 2344160179Fc370D P:…:「.0E3000E20019838301006611 0..0E3000E26019838301006611 P.#D..1T: 50012344160169543A0D 0....,f,OE3000E20019838301006611 #D..X.5 50012344160178A4350D f.E3000E20019838301006611 P,#D.,i.7 50012344160169 370D 0.f.0E3000E2001983 01006611 P,#D,,y, 50012344160179Ac3C0D f.0E3000E20019838301006611 P=0,IT. 50012344160169543A0D f.0E3000E20019838301006611 P.#D..h.5 50012344160168A4350D .0.......f.OE3000E20019838301006611 卩,#D。,1,7 50012344160169「c370D f.0E3000E20019838301006611 P.#D.,1,< 50012344160169Ac3C0D ..f.0E3000E20019838301006611 P. #D.,yT: 50012344160179543A0D P、…::,f,CE3000E20019838301006611 0 D..1.5 5001234416014AA4350D 0.……f.oE3000F200198383,01006611 P,#D,,, 500123405000000 COM201152000-N-1 FLDW.NONE Ax: 423 bytes 不雨出现重复情况,但仍有的问题是若出现扫不到标签,即接收到: 时,就会停止发送: 完善代码,并读RSSI值 //RFID reads the tag by arduino mega unsigned int status =0; unsigned char val, RSSI, Tag num, L, Q unsigned char SCMD[= 0x43, 0X03, 001; unsigned char Card[12]; unsigned char Freg3]; void setup( Serial begin (115200 Serial1 begin (115200) void loop if (status ==0) Serial1 write(SCMD, 3) delay(500) if (Serial1 available(>0i val= Serial1 reado switch(status)t case0:∥/pase0x44 f(val==0×44) Status =l; Serial print(val); y break case1:// parse0×16 if (val ==0x16) status=2 Serial print(va; 1 else if(val==0x×05 //(Serial print("No Tag");) [status =22; Serial- print(val); I red case 2: if (val status=3; Tag_num val; Serial print(val); 1 break. e 3 RSs=va;|=(va&0X0F)*2;Q=(va|>>4)*2 Serial print(val); //Serial print(RSSI) status =4: break case 4 ase 5 Freq[status-4]= val; status + Serial print(val break case 7 if (val ==OXOE) status =8 Serial print(val); 1 break. case 8 if(val==0×30) status =9; Serial print(val); 1 break; case 9: if v status= 10; Serial- print(val); 1 break: case 10 case 11 ase 12 case 13 case 15 case 16 case e18: e20 case 21 Rcard[status-10]=val status++ Serial print(val) if (status ==22 status=0 break: case 22 if (val ==0x00)(status=23; Serial. print(val); break. e23 if (val ==0x00)(status=24; Serial print(val); break: case 24 if (val ==0X00)(status =0; Serial. print(val); break: default. break. 一CTU[co夏29 About PCSeltings Range Test Terminal Modem Configuration Line status Assert Close Assemble Clear Hide 画 B DTR V RTS Bre厂[ Com Fort: Packet ScreenHex 441601A4350D 0.……f.OE3000E20019838301006611 P.#D,, 500123441601BFC370D 0 f.0E3000E20019838301006611 P,#D,,,,< 50012344160116AC3C0D 0.6.03000E20019838301006611 P.#D.,,T 5001234416011B543A0D f.0E3000E20019838301006611 P,#D,,,,5 500123441601A4350D 0 f.0E3000E20019838301006611 #D.……7·500123441601BFC370D 0.f.0E3000E20019838301006611 P.#D。,。,< 500123441601BAC3C0D 0 f.0E3000E2001988301006611 P.#D.,.T: 5001234416011B543A0D 0 f.0E3000E20019838301006611 P.#D.,..5 500123441601BA4350D f.0E3000E2001983830100 661 P.#D.,..7 5001234416011Fc370D 0.f.0E3000E20019R38301006611 P. #D 曹·曹 5001234416011BAC3CD 0 f.0E3000E20019338301006611 P,#D,,,T 500123441601543A0D :5105898题是:8861 P 5.13440500000044050000 #D,,,,D,,,D 4405000000 01BA435 D OD 0 0E3000E2001983830100 COM29 8-N-1 FLOW:NONE Rx. 318 bytes 此代码完成了不断重复读标签编号,并将RSS值赋给变量RSSl,可读几次取平 均值,也可计算出1Q值用来调用。也可计算工作频率Freq[0J<<16|Freq[1]<8 Freq[2](KHz),或选择判断标签。若只读一次,就将case21中“ status=0;”去掉 //RFID reads the tag by arduino mega unsigned int status =0; unsigned char val, RSSI, Tag_ num, L, Q: unsigned char SCMD[=0x43, 0x03, 0x01; unsigned char Card[12]; unsigned char Freq] void setup Serial begin(115200); Serial1 begin (115200) 'oid loop if (status ==0) Serial 1. write(SCMD, 3) delay (500) if (Serial1.available(>o)t val= Serial 1. reado switch(statusi case0:∥ parse 0x44 if (val ==0x44) [status=1; /*Serial. print(val); */ break case 1: //parse 0x16 f(va==0×16) status=2; /*Serial print(val); */ else if (val == 0X05 Serial. println " No tag read") status= 22; /*Serial print(val); */ break. case 2 f(va|>0) status =3 Tag num val Serial print( Tag_num="); Serial println(Tag_num, HEX); 1 break case 3 RSS|=va;|=(va&0x0F)*2;Q=(va|>>4)*2; Serial print( rsSi=; Serial println(RSSI, HEX) status= 4

...展开详情
所需积分/C币:13 上传时间:2015-09-08 资源大小:713KB
举报 举报 收藏 收藏
分享 分享
Android实现蓝牙连接,获取蓝牙名称、MAC地址、信号强度RSSI和连接状态等

程序实现功能:开启、关闭、连接蓝牙,SCAN周围蓝牙并获得蓝牙名字,地址,信号强度RSSI,连接状态,因为当时是为了做一个蓝牙定位,所以按照需求还添加了一个是否是自己买的蓝牙基站的Textview。 当判断SCAN到的蓝牙里面有自己的蓝牙基站时,就再用一个ListView把它们的名字、地址、信号强度、距离和之前设定的坐标单独列出来。

立即下载
Android蓝牙测距demo

该demo是通过手机蓝牙与蓝牙基站通信,并返回两者之间的距离,适合蓝牙测距开发者研究

立即下载
RFID RSSI 论文

本科基于RFID RSSI 的毕业设计及论文初版,水平有限只是一个简单的例子,有需要的可以查阅参考,欢迎沟通交流。

立即下载
AS3992_DEMO

奥微电子官方demo程序、很不错。直接可以用。

立即下载
发挥基于AS3992芯片的RFID读写模块的潜力

奥地利微电子AS3992芯片的RFID读写模块支持EPCClass 1 Gen 2协议(ISO18000-6c),支持DRM有较好的防冲撞和抗干扰能力,工作频率840~960MHz,支持USB和RS232接口。具备了RFID读写全部基本功能。 为了充分发挥这款模块电路的潜力,新开发的RFM-x系列超高频RFID读写模块在奥地利微电子原方案基础上从硬件上增加了以下主要功能。 1)双通道输出,功率独立可调,通道隔离度>37dB; 2)一个主动RS485接口,用于驱动扩展功能电路,例如在RFID发射信号前同步切换远端的多路天线复用开关,实现天线多点分布; 3)8个可编程GPIO接口。用于传感器探测目

立即下载
UHF RFID AS3992 开发代码

基于AS3992开发源代码, 全套3992代码资料

立即下载
AS3992芯片资料

超高频读写芯片资料。还要多少描述啊,知道找这文档的人都是通过型号查找的,找到下载下去自己看,里边不比我说的清楚吗?

立即下载
基于AS3992的900M RFID 读卡器原理图和PCB

基于AS3992+c8051的900M RFID 读卡器原理图和PCB,在奥地利微电子官方的板子上优化,比官方读取距离增加了20%。打开方式为altium design 6.9以上版本

立即下载
AS3992开发DEMO程序

915MHZ基站芯片AS3992DEMO程序

立即下载