网站首页 > 技术教程 正文
本实例包含4个案例,覆盖了M1卡的几乎所有应用,实例以RC522模块和树莓派实现,这些实例均 以 MFRC522-python 库(https://github.com/mxgxw/MFRC522-python)为基础
可以参考 树莓派3B连接MFRC522模块进行RFID读写全指南 和 树莓派+RC522模块
(https://blog.csdn.net/coder9999/article/details/79196753)两个链接的内容,完成硬件连接和库的引用
应该有这么几个步骤: 1、硬件连接;2、打开spi和IIC端口;3、安装spi-py库;4安装MFRC522-python库。
案例1:门禁系统
门禁程序原型说明
根据给定的示例程序,设计的门禁程序原型,采用了直接读卡id号的模式,与登记在sqlite3库中的记录比较,如有记录,点亮led灯,模拟开门,同时登记刷卡开门的记录。
************************
程序特点:因判断的是卡id,须使用登记的ic卡,采用了本地sqlite3库记录,可以根据py_mysql.py修改为读取远程mysql的程序。
****************************
原有程序文件
MFRC522.py 库文件
Dump.py 显示所有扇区数据
Read.py python2的读卡id的程序
Write.py python2的写扇区8的程序
*********************************************
io.py 控制led显示,模拟开门程序,开门程序只需要一个i/o口,在输出out为1的时候,开门,然后自动关门
db_rz.db sqlite3的数据库文件,含两个表 py_cb.py python3创建sqlite数据库中表的程序
py_insery.py 插入数据
py_select.py 查询数值
py_sqlite.py 显示表记录
py_mysql.py python3连接mysql数据库的程序
*****************************************************
r.py python3的读卡程序,id为10进制
r_id.py python3的读卡id程序,id为16进制
ck.py 门禁主程序,查询卡id是否登记的库中,是,开门,不是,给出提示,只要刷卡,就记录
zk.py 注册卡的程序,将卡登记入库 可以参考更为方便的另一种web门禁
案例2:web门禁系统
web门禁
基于ic卡的门禁,在主程序中,根据卡id是否登记在sqlite3库中记录情况开门,因主程序记录了登记的ic的记录,也记录 了没有登记的ic的记录,因此结合phpliteadmin,web管理sqlite3数据库的软件,通过对记录的处理,完成整个门禁功能
案例3:一卡通系统
M1卡充值消费示例程序
类似一卡通消费,公交卡,地铁卡,饭卡等与数字存取有关的操作
******************************************
根据给定的示例程序,设计的卡消费程序原型,采用了直接读写block8,存取数字的模式实现了充值与消费,采用了本地数据 库sqlite记录流水,卡本身保存剩余金额的方式。block8中数字的存取,没有采用通用的值,反值,校验位的模式保证数据的一致性, 而是采用了对block8的16字中的前后8个字保存一样的数字方式方便读写,同时前后对照,也有一定的容错性。 因库MFRC522.py不能满足要求,在MFRC522_Read函数的基础上增加了MFRC522_Read_data库函数,满足对指定扇区读取数据的需求。 根据M1卡对扇区读写数据的要求,为简化难度,没有采用将数字转换为16进制存储在扇区的模式,参考input_s.py,没有完全实现。 而是采用了直接将10进制数字转换为单个数字列表的方式,将每一个10进制数转换为ascii内码的方式形成列表,储存在block中,读取 过程相反,具体的过程可以参考input_store.py,因采用了block的一半存储数字,考虑到货币需要精确到0.01元,因此采用了将货币金 额元乘以100保存,没有考虑存储负值,所以能够保存的货币金额最大是999999.99元,可以满足绝大多数的需求。
*********************************************
原有程序文件
MFRC522.py 库文件
Dump.py 显示所有扇区数据
Read.py python2的读卡id的程序
Write.py python2的写block8的程序
***********************************************
cz.py python3充值程序,直接写卡,没有库操作
xf.py 消费程序,默认直接扣除10元,直接写卡,没有在库中记录
czk.py 充值程序,充值金额写库,写卡
xfk.py 消费程序,记录记库,卡中金额不能超过库里金额,否则废卡
input_s.py 过程测试,没有实现
input_store.py 过程测试,将10进制数字形成适合在卡中保存的数据
up.py 本地上传记录程序,将本地sqlite中的消费记录上传到远程总库中,将远程库中的总金额同步到本地
案例4:类身份证系统
M1卡类身份证存、读中文和字符示例程序
******************************************
M1卡的类似身份证的示例程序,直接将姓名,性别,地址,身份证号写在卡上,然后读出来。 根据实例代码中的Write.py 和Dump.py程序改写,示例中将性别名字写在一个数据块4,将住址写在 数据块5,身份证号写在了数据块9和10,发现对一个扇区写需要验证一次,分两部分写,没有做数据校验,没有做卡作废处理 因库MFRC522.py不能满足要求,在MFRC522_Read函数的基础上增加了MFRC522_Read_data库函数,满足对指定扇区读取数据的需求。 根据M1卡对扇区读写数据的要求,对一个扇区写需要验证key,即使所有的key一样,对不同的扇区写仍然要验证一次key,性别名字保 存在扇区1的block4,直接采用了GBK编码,一个汉字占两个字节,比UNICODE占用三个字节节省一些,家庭住址保存在扇区1的block5, 作为实例程序,地址最多只能有8个汉字,如不能满足要求,自己考虑增加。身份证号保存在扇区2的block9和block10,目前身份证位数为18位, 可以考虑将前部分两个数字保存一个字,这样在一个块就可以保存身份证号,可以参考input_store2.py,涉及编码问题,没有最终实现, 最终实现的可以参考input_store3.py,将身份证号前16位保存在block9,后两位保持在block10,采用了gbk编码,一个数字占一个字,这样身份 证最长可以保存32位数字或字母。
*********************************************
原有程序文件
MFRC522.py 库文件 增加了MFRC522_Read_data函数
***********************************************
d.py 原有dump.py的改写
input_store1.py 一些测试想法
input_store2.py 想法,对身份证号码合并储存,没有实现
input_store3.py 对性别姓名地址身份证号综合的一个在卡存储的测试
rk.py 读身份证 rw.py 没有实现,发现对多个扇区写需要多个key验证
rw1.py 写身份证中姓名性别地址,对扇区1中block4,block5读写
rw2.py 写身份证中身份证号,对扇区2中block9,block10读写
w.py 测试对多个扇区写的测试
另外一个选择,当更换树莓派的系统,重新配置时候发现,MFRC522-python库不是那么稳定,有时拔掉rst线时又可以读卡,经过查找,可以使用pi-rc522库,这个库在MFRC522-python库基础上改进,使用了IRQ也就是中断的模式,原理上效率更高,对系统的占用更小,经测试,这个库比较稳定。
猜你喜欢
- 2024-11-07 超值一篇分享,Docker:从入门到实战过程全记录
- 2024-11-07 首创引入蛋白动态信息的AI模型,高效预测药物-蛋白亲和力
- 2024-11-07 这个高中女生建立了一个道德黑客站,让人们进入数据安全
- 2024-11-07 「洞幺邦」智能停车场车位管理系统
- 2024-11-07 基于ARM的商用车信息系统的设计 基于arm的车辆中控娱乐系统报告
- 2024-11-07 CrowPi2树莓派4教育笔记本电脑的评测
- 2024-11-07 浅谈嵌入式开发朋友的身边事 嵌入式开发实例
- 2024-11-07 校园一卡通系统中RFID读写器的设计
- 2024-11-07 学生设计——小区门禁系统设计 小区门禁系统安装图教程
- 2024-11-07 电容式触控开关实验(二):触控式LED调光器
你 发表评论:
欢迎- 05-1613步震撼淘宝大促闪光裂纹破墙立体字PS制作教程
- 05-16AI教程 | 绘制扁平的萌萌哒图标
- 05-160基础学平面设计所需了解的基础常识汇总
- 05-16自学平面设计需要多长时间?十六年职业设计总监告诉你
- 05-16平面设计都要学习哪些内容?
- 05-16李涛PS教程 高手之路PS教程 合成教程 —制作一个小星球
- 05-16Illustrator实例教程:制作炫酷的漩涡效果
- 05-16Illustrator实例教程:利用混合工具制作一朵炫酷的花
- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)