用arduino打造签到记录器——《无线电》2013.06
2013-07-18 14:59:04前些天,教我们ic卡应用的老师让我们自己设计一个有关无线射频卡(rfid)的应用,我想起寒假在家时,有亲戚和我说“现在上班都高级了,到了单位还得打卡签到”,这不就是无线射频卡的一个应用吗?于是我就萌生了做一个签到记录器的想法。从买器件到搭电路,再到写程序,断断续续半个月的时间,终于把签到记录器做出来了。在此我写一写制作过程中的一些心得经验。
方案设计
本系统是基于arduino搭建的签到记录器,主要功能是记录签到人的id和签到时间,并以txt文本文件的形式储存到sd卡中。首先来看看我的签到记录器的系统框图吧(见图1)。我用的arduino版本是uno,上面的主控芯片为atmega328,具有32kb的rom和2kb ram,足够我折腾了(实际程序全部写完才用了23kb)。再加上arduino提供了各种库文件,把复杂的底层硬件操作隔离,使编程简单了许多。其实我用arduino最主要的原因还是因为它有现成的sd库,可以简单实现文件系统,而文件系统正是我最头疼的地方。
图1 签到记录器系统框图
时钟芯片我用的是ds1302,主要是用来获取当前时间。这可能是时钟芯片里最弱的一款了吧?晶体振荡器配不好会影响走时的准确(要用6pf的晶体振荡器,走时才能准确)。我买的这个ds1302模块,走时就偏快,不过它自带电池,所以不用担心断电后时间丢失。
sd卡模块带有spi接口,用来存储签到人的id和签到时间。这里,我提醒大家一下,一定要买3.3v/5v i/o口兼容的那种,我就在这上面栽了跟头,一开始买的sd卡模块i/o口不带3.3v/5v电平转换,arduinouno的i/o口是5v的,而sd卡是3.3v的,所以直接连接时不能用。一开始我还以为是我的sd卡不兼容,后来换了个3.3v/5v i/o口兼容的sd模块,才能正常读取数据。
射频读卡器我用的是飞利浦的rc522,这个模块在网上比较多,价格也不贵,可读、可写,还可以加密,扩展性比较强,同时也是spi接口。之前我也在2012年第12期《无线电》杂志上看到过这个芯片的使用方法,所以就选用了它。这里再多说一句,这个模块的i/o口也是3.3v的,所以也要用3.3v/5v
i/o口兼容的模块,不过我在网上没找到,无奈之下只好再买个 3.3v/5v i/o口电平转换模块。显示模块我用的是lcd1602,这是最常见的lcd,就不多介绍了。按键用了3个微触按键,用来控制系统切换各种模式和调整数据等。
下面来看看这些模块的合影(见图2)吧,也给大家一个参考。
图2 所有模块
未完。。。
全文详见《无线电》2013.06