这个项目也是我当初折腾社团无线电测向设备时候一起开发的,首先介绍一下这个打卡器是个啥。https://item.taobao.com/item.htm?spm=a230r.1.14.1.5532434auduV3I&id=591310669610&ns=1&abbucket=14#detail
就是chinahealth这套设备,用于无线电测向和定向越野的计分功能,官方报价非常高昂,每个节点要1680元,属于垄断销售,无线电测向任务一套需要十几个节点,功能分别是:
清空节点:每次运动员出发前需要现在这个节点清空RFID卡片中的数据
开始节点:比赛出发时,RFID卡片刷此节点,获取第一个时间信息
1-10号节点:每经过一个打卡点,就刷一次卡机,将该节点的刷卡时间及节点号写入RFID卡片
结束节点:运动员回到大本营时,马上刷卡,得到节点号及时间,意味着比赛结束,运动员可以开始休息
主站节点:读入运动员卡片中的数据,可以通过串口连接小票打印机,打印该运动员所有时间作为凭证,另外还需要一台主站接入电脑,由分析软件获取卡片中所有数据,并进行排名,计分等,计分除了看时间还要看找到的点全不全以及顺序是否正确。,最终统计结果并排名。
额外功能:
1.由于防水需求,不能有外置开关,需要干簧管+磁棒开机,红外关机
2.需要高精度时间,并且有校时功能,采用红外接收器+遥控器统一校时
3.打卡时,需要有声光提示
4.普通节点工作人员复查,节点需要可以保存历史信息,在需要工作人员复查时可以输出历史数据,使用专门的大内存RFID卡片,一次性获得所有数据
5.长续航,另外最好可以增加NFC版本,进行全民用手机打卡计时
硬件:
由于每个节点功能不同,为了减少成本,将所有功能放到一套硬件上,根据需求进行焊接。
这一部分,采用arduino pro mini作为主控,不采用328p芯片作主控方便维修,RFID模块为SPI总线,红外模块占用D7数字脚,另外还有一个串口作为调试口
此部分为电源模块,采用LDO TPS79333,将1S电池降压到3.3V,我们可以看到,TPS79333的使能脚,连接了D4数字脚,以及一个干簧管,干簧管的特性就是遇到磁铁通,离开磁铁断。开机时,一节磁棒靠近干簧管,使使能脚拉高,整机上电,同时D4在开机后马上置高保持开机状态,在遥控器给出关机指令后,该管脚拉低,整机断电。
A4 A5是I2C的管脚,拉高,A6用于测试电池电压,在电压低时,通过指示灯提示充电。
此部分使用了4bit的跳线,可以表示16种状态 ,可以全部包含功能需求中的所有节点,另外电池充电部分直接将电池电压引到外面,使用专用充电器进行充电,减小系统复杂度。
此部分为声光报警,帮助运动员判断已经打卡,同时可以表示一些异常状态。
此部分采用SP3232作为串口芯片,可以直接连接串口小票打印机,时钟采用高精度DS3231,同时自带后备电池。
flash用于存储每个节点的运动员数据,用于工作人员检查。
我们的硬件进行焊死,所以跳线选择以及对应的功能模块也选择完毕。
主站节点(跳线15号1111):RFID模块,SP3232
清零节点(跳线14号1110):RFID模块
开始(跳线0号0000)、结束(跳线13号1101)、0-9节点(0001-1100):RFID模块,FLASH,红外,高精度时钟
其中热敏打印机选配https://detail.tmall.com/item.htm?id=37233437742&spm=a1z09.2.0.0.406d2e8d4bRHhr&_u=mvroet18fd5&skuId=3431124280186(黑色串口版)
代码参见https://github.com/BG2CRW/DaKaQi,其中libraries文件夹中内容需要合并到arduino安装目录中的libraries文件夹。