Arduino+RFID RC522 +继电器
博客园的第一篇博文就献给Arduino了。不知道能不能坚持自己喜欢的并且记录下来。
起码是个好的开始。
想实现一卡通代替钥匙开启电动车。
简单的原理,通过RC522模块读取一卡通的序列号,在程序中进行判断决定(继电器的控制端输出状态),继电器的被控端接电门锁。
对于识别通过的卡号第一次开启继电器,第二次断开继电器……(实现上下车开关)
一、先晒图:
1、开启电源,Arduino,RFID RC522模块运行。

2、一卡通靠近RC522 识别成功!信号灯亮,继电器工作导通被控制端。

3、一卡通靠近RC522 识别成功!信号灯熄灭,被控端断开。

二、连线部分
Arduino RC522 (工作电压3.3V)
· D5 <-------------> RST (这个脚不接貌似也可以)
· D10 <-------------> SDA (在RC522中即为CS)
· D11 <-------------> MOSI
· D12 <-------------> MISO
· D13 <-------------> SCK
· VCC <-------------> VCC
· GND <-------------> GND
继电器模块控制端
· D7 <-------------> In1
· VCC <-------------> VCC
· GND <-------------> GND
保留作者或是译者。
//整理者:极客工坊bg1lsy (lsy@sogou.com)
//整理时间:2013.05.25
#include <SPI.h>
#include <RFID.h> RFID rfid(,); //D10--读卡器MOSI引脚、D5--读卡器RST引脚 int led = ;
int relay=; bool state=true;
void setup()
{
Serial.begin();
SPI.begin();
rfid.init();
pinMode(led, OUTPUT);
pinMode(relay,OUTPUT);
digitalWrite(relay,HIGH);
} void loop()
{
unsigned char type[MAX_LEN];
//找卡
if (rfid.isCard( type)) {
Serial.println("Find the card!");
;
// Show card type
ShowCardType(type);
//读取卡序列号
if (rfid.readCardSerial()) {
Serial.print("The card's number is : ");
Serial.print(rfid.serNum[],HEX);
Serial.print(rfid.serNum[],HEX);
Serial.print(rfid.serNum[],HEX);
Serial.print(rfid.serNum[],HEX);
Serial.print(rfid.serNum[],HEX);
Serial.println(" ");
ShowUser(rfid.serNum);
}
//选卡,可返回卡容量(锁定卡片,防止多数读取),去掉本行将连续读卡
Serial.println(rfid.selectTag(rfid.serNum));
} rfid.halt();
} void ShowCardType( unsigned char* type)
{
Serial.print("Card type: ");
if(type[]==0x04&&type[]==0x00)
Serial.println("MFOne-S50");
else if(type[]==0x02&&type[]==0x00)
Serial.println("MFOne-S70");
else if(type[]==0x44&&type[]==0x00)
Serial.println("MF-UltraLight");
else if(type[]==0x08&&type[]==0x00)
Serial.println("MF-Pro");
else if(type[]==0x44&&type[]==0x03)
Serial.println("MF Desire");
else
Serial.println("Unknown");
} void ShowUser( unsigned char* id)
{
//EE 9B 9C 38 D1
if( id[]==0xEE && id[]==0x9B && id[]==0x9C && id[]==0x38 ) {
Serial.println("Hello Mary!");
state=RelayStatus(state);
}
else if(id[]==0x24 && id[]==0x12 && id[]==0xE0 && id[]==0x13) {
Serial.println("Hello MicroHao!");
state=RelayStatus(state);
}
else{
Serial.println("Hello unkown guy!");
BlinkLED(); }
}
bool RelayStatus(bool status)
{
if(status)
{
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) digitalWrite(relay,LOW);
return false;
}
digitalWrite(led, LOW); // turn the LED on (HIGH is the voltage level) digitalWrite(relay,HIGH);
return true;
}
void BlinkLED()
{
digitalWrite(relay,HIGH);
for(int i=;i<;i++)
{
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay();
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay();
}
}
居然不懂怎么加入附件!!汗。
http://files.cnblogs.com/MicroHao/RFID.zip
新的一天啦,
晚上不错应用实际了,看图。

work!

不错,哈哈!
Arduino+RFID RC522 +继电器的更多相关文章
- Arduino + RFID 读取 IC 卡 Arduino uno中获得RFID的UID 并通过串口转发RFID卡号
RFID简介:射频识别即RFID(Radio Frequency IDentification)技术,又称无线射频识别,是一种通信技术,可通过无线电讯号识别特定目标并读写相关数据,而无需识别系统与特定 ...
- 基于 Arduino 的 RFID 识别实验
http://www.it165.net/embed/html/201512/3287.html 2015年12月04日(周五) 上午 博士的智能卡实验--RFID识别实验,基于51单片机: 我们的 ...
- RFID 读写器 Reader Writer Cloner
RFID读写器的工作原理 RFID的数据采集以读写器为主导,RFID读写器是一种通过无线通信,实现对标签识别和内存数据的读出和写入操作的装置. 读写器又称为阅读器或读头(Reader).查询器(Int ...
- RFID Reader 线路图收集
This 125 kHz RFID reader http://www.serasidis.gr/circuits/RFID_reader/125kHz_RFID_reader.htm http:// ...
- 低成本安全硬件(二):RFID on PN532
引言 鉴于硬件安全对于大多数新人是较少接触的,而这方面又非常吸引我,但是部分专业安全研究设备较高的价格使人望而却步.在该系列中,笔者希望对此感兴趣的读者在花费较少金钱的情况下体会到硬件安全的魅力所在. ...
- 花 1 小时,开源设计 LoRa 继电器开关
提示1:锐米所有 LoRa 产品严格遵循国标标准的 LoRaWAN 协议. 提示2:您可以免费复制,修改和商用本项目,请注明锐米原创. 提示3:如果您有其他 LoRa 需求或建议,欢迎联系锐米 sup ...
- 不二之选_iTOP-4418开发板研发之旅_缩短开发时间
迅为iTOP-4418开发板拿到手?用能力印证梦想,培养你的研发路程,能力·思维 一.板载WIFI蓝牙.4G.GPS.千兆以太网接口.串口.重力加速度计等. 二.自选模块支持500W摄像头自动对焦摄像 ...
- 利用DoHome APP和音箱控制继电器通断电实验参考步骤
准备材料: Arduino Uno 一块 Arduino 扩展板 购买链接 DT-06模块一个 购买链接 安卓手机一个 小度音箱一个 继电器模块一个 杜邦线若干 1.DT-0 ...
- 【雕爷学编程】Arduino动手做(43)---单路继电器模块
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备 ...
随机推荐
- django中的filter和get的区别 (MultipleObjectsReturned: get() returned more than one Publisher --)(DoesNotExist: Publisher matching query does not exist.)
上面的例子中`` filter()`` 函数返回一个记录集,这个记录集是一个列表. 相对列表来说,有些时候我们更需要获取单个的对象, `` get()`` 方法就是在此时使用的: >>&g ...
- NDK(8)"Unknown Application ABI"的解决方案
ndk 调试本地应用时 报错如下 : console信息: [2015-08-17 19:52:05 - NdkSample] Unknown Application ABI: [2015-08-17 ...
- 径向基函数(RBF)神经网络
RBF网络能够逼近任意的非线性函数,可以处理系统内的难以解析的规律性,具有良好的泛化能力,并有很快的学习收敛速度,已成功应用于非线性函数逼近.时间序列分析.数据分类.模式识别.信息处理.图像处理.系统 ...
- cocos2dx 坐标系 -转
(原文出处找不到了) 无论是搞2d还是3d开发,最需要搞清楚的就是坐标系,这部分混乱的话就没啥奔头了.所以玩cocos2d,一上来就先把各种与坐标有关的东西搞清楚. 基本的两个坐标系:屏幕坐标系和GL ...
- Web程序员最常用的11款PHP框架
PHP框架是Web程序员和开发人员最为有用的工具. PHP框架可以帮助用户更快地开发项目. 今天我将为开发人员带来几款最好的PHP框架,希望能对你有用. 1.Agavi Agavi是一款强大的,可扩展 ...
- IOS中微博正文开发步骤总结
微博正文开发步骤总结 1.新建正文控制器,在点击首页的某一条微博时跳转过去 2.在MainController中设置导航控制器的代理,监听所有导航控制器的跳转 1> 如果即将显示的不是根控制器 ...
- JDK,JRE,JVM区别与联系-理解与概括
我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析 ...
- php时区测试
php里面关于时间的函数有date,time,strtotime,gmdate等,里面只要和时间字符串相关的基本都收到时区的影响,所以时间戳才是唯一稳定时间记录,因为标准都是统一的.这里联想到数据库的 ...
- Mac设置截图保存位置
补充: killall 用来杀死指定名字的进程 defaults 可以对一些系统属性进行read,write,delete操作 下面举几个常用的例子: 1.显示隐藏文件 defaults write ...
- python-socket.error[10054]:对象的复制
1.socket.error[10054],对方强制关闭了连接 在用socket.recvfrom时,若事先没有bind时, 先使用socket.sendto,socket.recvfrom 有时会出 ...