颠覆考勤方式之---扫码考勤

标签:
arduinowifi扫码杂谈 |
起因:
我们公司考勤模式经历过: 打卡->指纹->刷脸 三种方式(鉴于太容易互相帮打卡,所以没采用过刷卡方式);
从最原始的打卡(纸卡)到最先进的刷脸都使用了个遍! 就是没用过不打卡.......(一是BOSS不给, 二是自律性成迷)
之前使用过和正在用的这些模式都有个大问题, 就是行政统计数据太麻烦, 费时费力,
后2种方案也需要用U盘定期把数据导出Excel再统计, 这不符合高科技公司的做风, 所以决定尝试.....改!
- 方式要高大上, 跟得上潮流
- 体验上要足够方便快捷,(不快的话你想急S差1秒钟就迟到的同学么!)
- 考勤数据能与企业ERP打通,实现自动统计和查询
- 造价要低!
采用现在烂大街的方式: 扫码! (别告诉我你没试过支付宝/微信扫码支付喔)
这方法牛X吧, 有手机的都会用, 有效防呆(不会用), 防帮(代打卡), 防盗.....这个防不了!
-
Dreamer Nano V4.0 (兼容Arduino Leonardo)
- Z1406
TTL接口一维条码扫描模块(不用二维码的原因主要是成本考虑)
- ESP8266-01
WIFI模块
- 人体热释电红外传感器
- LED(红)+LED(绿)
- 220欧电阻2只
- 万能洞洞一块
- 3D打印外壳
- 微信公众号一枚
- 公网服务器一台(需有域名,并与公众号绑定) -
用于公众号/接口数据传递
- 企业ERP(需支持自定义开发) -
考勤模块数据接口/条码生成逻辑
因同时使用了2个串口模块, 且走的是软串口方式, 需要用到一个与串口通讯相关的listen()函数, 如果不使用它,
大家在测试的时候会发现永远只有一个串口模块能工作,另一个处于不可用的状态.
使用方法也很简单, 当你需要监听扫码模块时(假设扫码的软串口名称定义是 bar), 需要先执行 bar.listen();
需要监听Wifi数据时也是同样道理(假设Wifi的软串口名称定义是 wifi), 需要先执行 wifi.listen().
-
增加蜂鸣器, 扫码成功与否用声音提示比用LED提示更直接
-
增加小屏幕, 可以显示扫码信息(比如显示当前扫码成功的人名及有无迟到之类)
-
增加Wifi可配置的功能, 这样成品拿到任何一个新的公司都能配置使用.
改造要求:
制定方案:
准备硬件材料:
准备软件资源:
模块接线
(注: 为了方便, Wifi的EN直接与3.3V并联)
流程设计 - Arduino工作流程
流程设计 - 系统框架流程
制作过程图解
背面接线图
Z1406条码模块(上面是扫描头,
下面是开发板,引出的线中, 只有右边4条用得上, 从右至左分别是5V-/5V+/TX/RX)
正面来一张,可以看到扫描头
接线先测试一下
此处测试的关键代码:
#include
#define BAR_TX
10
#define BAR_RX
11
SoftwareSerial bar(BAR_RX, BAR_TX);
//RX, TX
unsigned char cmd_r[4] = {0x02, 0x82, 0x03, 0x83};
//读码命令
void setup() {
bar.begin(9600); while(!bar);
bar.write(&cmd_r[0],4); //发送扫码命令
}
void loop() {}
bar.write(&cmd_r[0],4); //发送扫码命令
}
void loop() {}
运行代码, 启动完成后, 如果扫描头两侧红灯会亮,表示控制成功
接下来准备装模块的模具, 这里用Maya做了简单建模
建好模后,在3D打印机打印.
底部结构(放置洞洞板)
第二层结构, 放置扫描头和人体红外模块
微信(服务号)中打开自己开发的打卡功能, 出现每10s刷新一次的条码(否则A同事截个图给B同事帮代打卡怎么破)
扫描头扫条码成功,并验证通过时,指示LED亮绿灯(不成功时亮红灯), 并推送微信消息.完成打卡过程.
注意事项
实用视频演示
(未弄好, 录好再上传)
后期可拓展性