基于Arduino制作智能门禁系统 借助于arduino硬件和mixly设计一个智能门禁系统,只有使用正确IC卡才可使舵机转动,拔出插销,打开大门。 材料准备
硬件连接 硬件管脚 Arduino UNO管脚 RFID射频模块SDA <------> 10 RFID射频模块SCK <------> 13 RFID射频模块MOSI <------> 11 RFID射频模块MISO <------> 12 RFID射频模块RST <------> 9 1602显示屏SDA <------> A4 1602显示屏SCL <------> A5 舵机信号 <------> 5 红外避障信号 <------> 6 读取ID值 使用RFID模块,读取ID卡数,打开串口监视器,将ID卡放置RFID射频IC感应卡上,串口监视器会显示ID卡数值,记录指定ID卡数值。 (串口打印程序) (不同ID卡,串口打印数值不同) 指定ID卡并显示
使用数组,在整个数组中,有其他ID卡数值与指定的一个正确ID卡值(也可设置两个指定开门的ID卡值),声明RC并赋值为读取rfid所读卡的卡号,使用步长模块,从步长循环次数为数组的长度,如果RC读取到 卡号是数组中的某一项,那就让舵机转动带动门插销,否则则门插销不动,处于关闭状态。 (指定ID卡)
1602显示门打开关闭的状态,如果插销处于落锁状态,1602显示屏显示close,打开插销,即可以开门,显示频显示open。 (加入1602显示屏程序) 自动落锁 该程序为智能门禁基础程序,实际运行当中,发现,只有ID卡一直放在RFID射频模块上,舵机才会拔出插销不动,但是一收回ID卡,插销会回去,将门锁住。所以,我们要将程序进行更改,RFID射频模块读取到正确ID卡时,转动舵机,拔出插销,如果在指定时间内,没有开门,插销将自动落锁。在指定时间内打开了门,插销不会落锁,直到再次关上门。这里,我们就要用到红外避障模块,判断是否打开门。 声明item为0,如果读取到正确ID值,判断item是否等于0,如果等于0,将item赋值为1。 (自动落锁程序1) 而当item等于1时,判断红外避障是否检测到前方有障碍,前方有障碍,表示门是处于合拢状态。声明T为100,如果红外避障输出为低电平,即前方有障碍物,延时T毫秒,变量C赋值为C加T,D赋值为C,变量C实际就是红外检测前方障碍物的时间。如果D等于5000,即时间到了5秒,门没有打开,那么插销将自动落锁。5秒内打开了门,即红外避障模块没有检测到前方有障碍物,插销不会自动落锁,计时时间停止,关上门后,会继续计时,然后自动落锁。 (自动落锁程序2) 总程序 (智能门禁总程序) |