眾多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
|
测试Stronglink SL018
测试SL018是否正常工作可以说是非常的简单,只要供电5V至SL018模块就行了,当然这不包括测试I2C接口。
测试SL018是否正常工作可以说是非常的简单,只要供电5V至SL018模块就行了,当然这不包括测试I2C接口。

- +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文件夹,如图:

- 打开arduino软件
- 单击File>Examples>SL018,看到SL018例子(如图)表示安装成功

上载(Upload)Sketch至Arduino
SL018程序库自带了示范例子,用此例子上载至Arduino来测试最好不过了。
- 将Arduino连接至电脑
- 打开arduino软件
- 单击File>Examples>SL018>UID,是的,就用UID为例子吧!
#include <Wire.h> #include <SL018.h> SL018 RFID; int led = 13; void setup() { pinMode (LED, OUTPUT); Wire.begin (); Serial.begin (19200); Serial.println("Show me your tag"); // prompt for tag } void loop () { rfid.seekTag () / / start the seek mode while (! rfid.available ()) / / wait until detected tag Serial.println (rfid.getTagString ()); / / print some id }
把上面的例子上载至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,如图:

认证开关
改进上面的代码,形成了需要认证後才能决定开与关。以下代码使用RFID认证,认证通过後LED会亮,三秒后将会自动熄。
#include <Wire.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.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输入?将会显示所有指令,如图

a 命指令
是一个切换指令,当Auto read on时,只要 SL018侦察到RF卡在範围内,将会自动读取UID(s 指令)和列出RF卡的全部信息(r 指令)
是一个切换指令,当Auto read on时,只要 SL018侦察到RF卡在範围内,将会自动读取UID(s 指令)和列出RF卡的全部信息(r 指令)
d 指令
是一个切换指令,用于调试。当Debug on时,Serial Monitor将列出执行指令以及由SL018获得的信息
是一个切换指令,用于调试。当Debug on时,Serial Monitor将列出执行指令以及由SL018获得的信息
s 指令
读取与列出RF卡的UID
读取与列出RF卡的UID

r 指令
读取与列出RF卡的全部信息
读取与列出RF卡的全部信息

w 指令
写入两个字节
写入两个字节

Published in
电子与电脑
Tagged under