【DIY】制作一个刷卡进门装置
2017-08-16 15:15
176 查看
摘要:本文主要介绍了如何通过Arduino和RFID射频卡外加一个舵机来DIY一个自动开锁作品
本文也发表在个人平台【DIY】制作一个刷卡进门装置
基本想法
宿舍里使用的是钥匙开门,近来接触Arduino,又刚好看到有朋友使用RFID射频识别卡实现了读取卡片信息功能,于是自己也想试试。
基本想法就是使用一块Arduino芯片作为控制,一块RFID射频卡作为读取卡片信息的载体来读取校园卡的ID号,然后让Arduino驱动一个舵机来控制锁舌,从而实现刷卡开门的功能
准备工作
购买内容:
Arduino Nano芯片一块
RFID射频识别卡一块
导线若干
45g金属齿舵机一个
固定装置
由于门口锁的位置需要放置舵机,Arduino和电池等东西,所以需要使用一个固定的装置,这个可以从简,楼主在这里使用的是3D打印框架,先使用UG建好模型,然后发给商家进行3D打印
上面的内容,看起来像方向盘的那个是用来固定在锁的旋转头上,然后在外圈固定一根线,使用舵机拉动线然后带动锁转动
别的则是用来安装舵机和固定电池的
连接Arduino与rfid卡,参考下图进行连线
连接之后通电测试一下是否正常
写代码测试
安装设备
接下来把设备安装到门上,这个安装过程稍有复杂,需要一些耐心
安装完之后接上电池,看看效果吧
本文也发表在个人平台【DIY】制作一个刷卡进门装置
基本想法
宿舍里使用的是钥匙开门,近来接触Arduino,又刚好看到有朋友使用RFID射频识别卡实现了读取卡片信息功能,于是自己也想试试。
基本想法就是使用一块Arduino芯片作为控制,一块RFID射频卡作为读取卡片信息的载体来读取校园卡的ID号,然后让Arduino驱动一个舵机来控制锁舌,从而实现刷卡开门的功能
准备工作
购买内容:
Arduino Nano芯片一块
RFID射频识别卡一块
导线若干
45g金属齿舵机一个
固定装置
由于门口锁的位置需要放置舵机,Arduino和电池等东西,所以需要使用一个固定的装置,这个可以从简,楼主在这里使用的是3D打印框架,先使用UG建好模型,然后发给商家进行3D打印
上面的内容,看起来像方向盘的那个是用来固定在锁的旋转头上,然后在外圈固定一根线,使用舵机拉动线然后带动锁转动
别的则是用来安装舵机和固定电池的
连接Arduino与rfid卡,参考下图进行连线
连接之后通电测试一下是否正常
写代码测试
#include <SPI.h> #include <RFID.h> #include <Servo.h> Servo myservo; unsigned char n1[]={ 214 ,146 ,200 , 189 ,49 }; unsigned char n2[]={ 35 ,102 ,248 , 14 ,179 }; unsigned char n3[]={ 67 ,87 ,249 , 14 ,227 }; unsigned char n4[]={ 211, 57 ,250 ,14 , 30 }; unsigned char n5[]={ 118 ,58 ,207 , 189 ,62 }; unsigned char n6[]={ 38 ,82 ,199 , 189 ,14 }; unsigned char n7[]={ 69 ,6 ,5 , 109 ,43 }; RFID rfid(10,5); int name=0; char temp=0; void setup() { Serial.begin(9600); myservo.attach(7); myservo.write(180); pinMode(4,OUTPUT); digitalWrite(4,HIGH); SPI.begin(); rfid.init(); } void loop() { //找卡 if (rfid.isCard()) { //读取卡序列号 if (rfid.readCardSerial()) { shibie(); if(temp == 1) { temp=0; myservo.write(0); delay(2000); myservo.write(180); } else delay(300); } //选卡,可返回卡容量(锁定卡片,防止多数读取),去掉本行将连续读卡 rfid.selectTag(rfid.serNum); } rfid.halt(); delay(200); } int shibie() { if( rfid.serNum[0] == n1[0] && rfid.serNum[1] == n1[1] && rfid.serNum[2] == n1[2] && rfid.serNum[3] == n1[3] && rfid.serNum[4] == n1[4] ) { //Serial.println("n1 OK"); temp=1; } if( rfid.serNum[0] == n2[0] && rfid.serNum[1] == n2[1] && rfid.serNum[2] == n2[2] && rfid.serNum[3] == n2[3] && rfid.serNum[4] == n2[4]) { //Serial.println("n2 OK"); temp=1; } if( rfid.serNum[0] == n3[0] && rfid.serNum[1] == n3[1] && rfid.serNum[2] == n3[2] && rfid.serNum[3] == n3[3] && rfid.serNum[4] == n3[4]) { //Serial.println("n3 OK"); temp=1; } if( rfid.serNum[0] == n4[0] && rfid.serNum[1] == n4[1] && rfid.serNum[2] == n4[2] && rfid.serNum[3] == n4[3] && rfid.serNum[4] == n4[4]) { //Serial.println("n4 OK"); temp=1; } if( rfid.serNum[0] == n5[0] && rfid.serNum[1] == n5[1] && rfid.serNum[2] == n5[2] && rfid.serNum[3] == n5[3] && rfid.serNum[4] == n5[4]) { //Serial.println("n5 OK"); temp=1; } if( rfid.serNum[0] == n6[0] && rfid.serNum[1] == n6[1] && rfid.serNum[2] == n6[2] && rfid.serNum[3] == n6[3] && rfid.serNum[4] == n6[4]) { //Serial.println("n6 OK"); temp=1; } if( rfid.serNum[0] == n7[0] && rfid.serNum[1] == n7[1] && rfid.serNum[2] == n7[2] && rfid.serNum[3] == n7[3] && rfid.serNum[4] == n7[4]) { //Serial.println("n7 OK"); temp=1; } }
安装设备
接下来把设备安装到门上,这个安装过程稍有复杂,需要一些耐心
安装完之后接上电池,看看效果吧
相关文章推荐
- 【DIY】使用竹签制作一个埃菲尔塔
- 电子小制作-一个家用热水器开门装置
- 极客DIY:制作一个可以面部、自主规划路径及语音识别的无人机
- 电子小制作-一个土壤温湿度检测装置
- 自己动手制作(DIY)一个Mini-Linux系统
- 电子小制作:一个家庭常见物理量显示装置
- 打包测试 之 制作一个可以上传到 FIR.im 的 ipa 文件 - Ad-Hoc篇
- MetaTrader软件的功能扩展(关于程序补丁制作的一个例子)
- 三 Gazebo学习总结之制作一个模型及导入网格
- [置顶] Android DIY之路 (四)拖拽替换,一个view发送其他所有view绑定即可监听到。
- 使用java完成一个简单的播放器的制作
- 制作一个能copy到Applications目录的mac版本的eclipse.app
- Qt学习笔记-制作一个计算器-对话框Message Box
- Python3 网易有道词典结合PyInstaller,tkinter制作一个简单的中英文翻译exe文件
- 初识Spring Boot框架(二)之DIY一个Spring Boot的自动配置
- 轻松学习JavaScript十:JavaScript的Date对象制作一个简易钟表
- 用Construct 2制作一个升级版的坦克大战
- iOS:制作一个简易的计算器
- 使用Eric4+PyQt4制作一个简单的文本编辑器
- Qt学习笔记(三)---制作一个记事本