安装在门禁上的RFID读卡器读取到访客手持的射频标签后,将标签号码通过Wifi传输至机智云,云端通过一系列认证后下发开锁命令,控制开发板上的继电器吸合以达到开锁的目的,该方案设计具有以下优势:
♦ 访客射频标签成本极低,只有几毛钱,为每个访客发一张也不会有太大的成本负担;
♦ 访客射频标签是可写入的,这样我们就可以控制访客在楼宇中的到访时限,以及不同级别访客的开门权限;
♦ 访客到访的每个门禁都会将访客记录通过Wifi上传到云端,这样就可以监控每个访客到访的轨迹。
视频演示教程及实物展示
项目演示和解说视频:
【十分钟开发物联网】-- RFID楼宇访客门禁系统
接线实物图和App监测页面:
下图是在机智云后台看到的RFID读卡数据:
硬件端接线图
材料清单
名称 | 推荐购买源 | 资料下载 |
---|---|---|
通用版机智云 App | 免费 | 登录_机智云 |
ShineBlink 万能物联网开发板 | 淘宝搜索“机智云”或“ShineBlink”店铺有售 | shineblink.com |
带机智云GAgent固件的ATK-ESP8266模块 | 淘宝搜索“机智云”或“ShineBlink”店铺有售 | gizwits.com |
R200 UHF RFID读卡器 | 淘宝搜索”ShineBlink“店铺有售 | shineblink.com |
继电器模块 | 淘宝搜索”ShineBlink“店铺有售,或任意继电器,只要能 3.3v GPIO 控制即可 | |
黑色底板 | 该底板只是为了省掉接杜邦线,让外观好看一些,不是必需品,开发者如果没有可以用杜邦线来替代。如果仍想获取该底板,可通过右边提供的PCB工程资料自己打样PCB制作即可。 |
硬件端完整源代码
--配置D3为普通输出,控制控制门锁的继电器LIB_GpioOutputConfig("D3","STANDARD")
LIB_GpioWrite("D3",1)--控制继电器断开
--设置R200读卡器模块占用TX1和RX1引脚,EN引脚占用D7引脚,并开始扫描工作
--工作国家区域:China2区 (920.125~924.875MHz)
--工作信道:0通道,即工作频率为920.125MHz
--发射功率:设置为最大的20.00dBm
LIB_R200ReaderConfig("UART1","D7","CHINA2",0,2000)
--机智云平台为每个产品类别分配的唯一PK和PS,一定要改成您自己的PK和PS
PK = "baa7394638a7427b931e3c84da5f2bdd"
PS = "437665aced3b46d9b8c416321b50a926"
--初始化Wifi模块
LIB_GizWifiConfig(PK,PS,6000,120,"UART0","D5","D10","D8")
--定义一个64元素的table用来向机智云发送HEX字节流数据
SendData = {0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,}
num = 0
while(GC(1) == true)
do
--扫描标签的演示程序
Cnt, R = LIB_R200GetCard()
if Cnt >= 1 then --打印Cnt张扫描到的标签卡号
n = 0
--Print打印出扫描到的Cnt张标签的卡号
--[[for i=1, Cnt do
print(string.format("%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x",R[1+n],R[2+n],R[3+n],R[4+n],R[5+n],R[6+n],R[7+n],R[8+n],R[9+n],R[10+n],R[11+n],R[12+n]))
n = n + 12
end]]--
--这里我们只将扫描到的第一张标签的卡号(12字节)上传给机智云
--至于多张标签的去重,去重后的上传请发挥您的聪明才智
SendData[1] = R[1]
SendData[2] = R[2]
SendData[3] = R[3]
SendData[4] = R[4]
SendData[5] = R[5]
SendData[6] = R[6]
SendData[7] = R[7]
SendData[8] = R[8]
SendData[9] = R[9]
SendData[10] = R[10]
SendData[11] = R[11]
SendData[12] = R[12]
SendData[13] = num&0x000000ff --这里是为了确保每包发送的数据不同
num = num + 1
LIB_SendToGizCloud("RawData", SendData)
end
--查询机智云是否下发了写"Sw1"开关量数据点的动作
flag,recv_data = LIB_RecvFromGizCloud("Sw1")
if flag == 1 then
if recv_data == 1 then -- 云下发了1
LIB_GpioWrite("D3",0)--控制继电器导通
LIB_DelayMs(1000)--这里只给了一秒钟开门的时间,麻溜的
LIB_GpioWrite("D3",1)--控制继电器断开
end
else
LIB_DelayMs(1000)
end
end
上面代码中出现的"LIB_"开头的库函数的详细介绍可点击查询。
机智云接入和App开发(三个选择)
► 选择一:机智云+通用版APP访问设备(难度最低)
通过《Wifi设备接入机智云教程》我们可以很快掌握机智云的接入流程,并使用现成的通用版机智云App即可很快的实现手机App远程访问我们的开发板。缺点就是通用版App的UI页面看起来不够专业。
本例中我们使用了"Sw1"的布尔值型数据点和“RawData”的透传数据点,记得在机智云平台修改相应的数据点的名称。
►选择二:机智云+零代码定制版App访问设备(难度较低)
在选择二之前,必须完成上面选择一的工作,然后参考《赛博坦零代码App开发(wifi版)》教程实现定制版App访问设备。
开发好以后的页面如下:
► 选择三:定制化开发APP或微信小程序(难度较高)
如果有一定开发能力,开发者可以考虑在机智云免费提供的开源代码上做一定的定制开发形成自己的App。
如果开发者希望开发一个专属的App,机智云也会提供代码开源的安卓和IOS SDK框架,帮助开发者快速完成App开发,开发者仅需关注App的UI和UE设计即可,而相对复杂的协议与错误处理等事项可忽略。关于开源SDK的介绍和获取请进入docs.gizwits.com了解更多内容。
如果开发者希望开发一个专属的微信小程序应用, 可以进入docs.gizwits.com了解相关开发教程。