Saturday, 13 April 2013 16:47

Arduino与Stronglink SL018 RFID模块

Written by
Rate this item
(0 votes)

Stronglink SL018 RFID module

眾多RFID模块中,Stronglink SL018是我找到最便宜的模块且支持读取及写入。SL018 使用了I2C接口(只使用两条信号线)与外界沟通,支持的RFID卡包括MIFARE Classic 1K, MIFARE Classic 4K 和 MIFARE Ultralight,频率则是13.56MHz。以下是SL018规则说明:
Model
MIFARE Module SL018
Frequency
13.56MHz
Protocol
ISO14443A
Tag supported
Ultralight, NTAG203, MIFARE Mini, MIFARE™ Classic 1K, MIFARE™ Classic 4K, FM11RF08
Interface
I2C
Supply voltage
4.4 - 7.0VDC
Dimension
65 × 45 mm
由于Marc Boon已经编写好了SL018用于 Arduino 程序库(Library)Arduino与SL018进行沟通将会变得非常的容易,只须几行代码,就能读取RFID卡的UID了。 

 
测试Stronglink SL018
测试SL018是否正常工作可以说是非常的简单,只要供电5V至SL018模块就行了,当然这不包括测试I2C接口。
Stronglink SL018 pinout
  • +5V及Gnd分别连接Pin4和Pin5,然後通电
  • SL018侦察到MIFARE RFID卡,L3 LED将会转亮
  • 对地(Gnd)测量Pin1(TAG),将会得到3V
  • 将MIFARE RFID卡移开,L3 LED又熄了
简单的说,如果不需要认证,只使用一片SL018模块,通Pin1(TAG)输出,就可以控制电子设备了。
 
 
安装SL018程序库
  • 下载SL018程序库,此程序库也支持SL030 RFID模块
  • 解压ZIP文件(RFIDuino-master.zip)
  • 只需要SL018文件夹,将之拷贝到 arduino的libraries文件夹,如图:
SL018 Library
 
  • 打开arduino软件
  • 单击File>Examples>SL018,看到SL018例子(如图表示安装成功
Stronglink SL018 examples
 
 
 
上载(Upload)Sketch至Arduino
SL018程序库自带了示范例子,用此例子上载至Arduino来测试最好不过了。
  • Arduino连接电脑
  • 打开arduino软件
  • 单击File>Examples>SL018>UID,是的,就UID为例子吧!
  1. #include <Wire.h>
  2. #include <SL018.h>
  3. SL018 RFID;
  4. int led = 13;
  5.  
  6. void setup()
  7. {
  8. pinMode (LED, OUTPUT);
  9. Wire.begin ();
  10. Serial.begin (19200);
  11. Serial.println("Show me your tag"); // prompt for tag
  12. }
  13.  
  14. void loop ()
  15. {
  16. rfid.seekTag () / / start the seek mode
  17. while (! rfid.available ()) / / wait until detected tag
  18. Serial.println (rfid.getTagString ()); / / print some id
  19. }

上面的例子上载至Arduino後,可以与SL018沟通了。代码是不是很简单?

 
 
 SL018模块与Arduino连接
SL018的Pin1,Pin2(SDA)Pin3(SLC),分别连接至Arduino的A3,A4及A5
SL018
Arduino
1(TAG) 
A3 (Analog 3)
2 (SDA)
A4 (Analog 4)
3 (SLC)
A5 (Analog 5)
4 (VCC)
VCC
5 (GND)
GND
 
 
SL018模块与Arduino沟通
这里我们使用Arduino软件自带的串口监视器(Serial Monitor)来监视与测试
  • 根据以上方式,连接SL018至Arduino
  • 打开Arduino软件,然後运行Serial Monitor
  • 当SL018侦察到MIFARE RFID卡,L3 LED将会转亮,同时Serial Monitor将显示此RFID卡的UID,如图:
Show your tag
 
 
 
认证开关
改进上面的代码,形成了需要认证後才能决定开与关。以下代码使用RFID通过後LED会亮,三秒后将会自动熄。 

#include <Wire.h>
#include <SL018.h>

SL018 rfid;

int led = 13;  // Pin 13 has an LED connected on most Arduino boards
String cardUID;
 

void setup()
{

  pinMode(led, OUTPUT);  // initialize the digital pin as an output.

  Wire.begin();
  Serial.begin(19200);

  Serial.println("Show me your tag"); // prompt for tag
}

void loop()
{
  rfid.seekTag();  // start seek mode
  
  while(!rfid.available());  // wait until tag detected
  cardUID = rfid.getTagString();
  Serial.println( cardUID);  // print tag id
  if ( cardUID == "0467CB11E20280") {
     digitalWrite(led, HIGH);   // turn the LED on
     delay(3000);  //wait for 3 seconds
     digitalWrite(led, LOW);   // turn the LED off
  }
}

 

RFID读取与写入示范
接下来是一个比较复杂的示范,功能包括:
  • 读取UID
  • 读取RF卡内的全部信息
  • 写入两字节(2 Bytes)至RF卡
这里使用由SL018程序库自带的sl018demo例子作示范,同样的使用Serial Monitor来监视与测试,baud rate必须设成19200。一切就绪后,开始测试了:
 
在Serial Monitor输入?将会显示所有令,如图
Help
 
a 命指令
是一个切换指令,当Auto read on时,只要 SL018侦察到RF卡在範围内,将会自动读取UID(s 指令)和列出RF卡的全部信息(r 指令)
 
d 指令
是一个切换指令,用于调试。当Debug on时,Serial Monitor将列出执行指令以及由SL018获得的信息
 
s 指令
读取与列出RF卡的UID
Seek UID
 
r 指令
读取与列出RF卡的全部信息
Read Data
 
w 指令
写入两个字节
Write string AB to RFID card
Read 39356 times Last modified on Tuesday, 23 April 2013 21:58
More in this category: Arduino读取键盘 »
Back to Top