今天我就分享一波自己的成果。
心心念念的想做一个物联网的东西出来,终于在上个月搞定了,虽说肯定是有些漏洞(目前我是没有找出来的),但是效果看起来还不错。学了这么久的Python、Qt、liunx命令总算派上用场了。
材料:
树莓派一台
指纹模块(AS608光学指纹识别模块)
OLED液晶屏
usb转TTL
杜邦线
先说明一下
如果想要附件可以点击下面 链接 去下载:
树莓派上的源码下载https://download.youkuaiyun.com/download/happy_grass/11253753
电脑上的上位机源码下载https://download.youkuaiyun.com/download/happy_grass/11253807
oled上的字体https://download.youkuaiyun.com/download/happy_grass/11253815
先上个最终成果的图
看起来感觉还可以,基本完成了电脑和手机都可以获得日志的效果
大家最期待的过程了
现在我来说是我的想法和思路
刚开始看到隔壁实验室的指纹打卡机时好像是那种用usb读取数据的(好像是节约成本吧),我就想能这也太不智能了吧,就想着能不能让它智能些,比如通过电脑看到它的日志啊,或者用手机看到它的日志啊什么的(后来我才知道淘宝上TM已经出现这种完善的成品指纹考勤机了)。光想没用啊,还是要靠实践来检验真理。于是我就想到了手上的树莓派,想想就有些兴奋,可以向网上那些大佬一样DIY一个东西出来了,由于我的知识有限,无法自己搞个指纹打卡模块,就到网上买了一个,先开始买的正点原子的指纹模块,原子哥不愧是我原子哥,和他讨论问题时真是尽心尽力。文档很好,不过他那个和模块通信的程序不是很全,就几个,可以能是直接储存在模块里的缘故,可是我不想储存在模块里啊,我学了Python加上Mysql,我想直接存在数据库里,这样更加安全可靠。于是我就开始解决通信问题,将他发回来的数据解码,捣鼓了2天才完成,有点心酸。
先把配置文件分享了,下面代码会用到
用户root 给电脑连接的
[root]
pwd = 123
数据库
[db]
db_port = 3306
db_user = root
db_host = 127.0.0.1
db_pwd = 123456
db_database = finger
db_table = test1
smtpServer 发送请求服务
popServer 接收请求服务
smtpSrcAddr 服务端的地址
smtpSrcAddrPwd 服务端的密码
smtpDstAddr 发送的目的邮箱
smtpPort 端口号 qq端口号为 465
[email]
smtpServer = smtp.qq.com
popServer = pop.qq.com
smtpSrcAddr = 发送请求的你的邮箱
smtpSrcAddrPwd = 允许的密码
smtpDstAddr = 目的邮箱
smtpPort = 465
TCP服务
[TCP]
ip = 192.168.137.249
port = 9090
串口服务
[serial]
port = /dev/ttyAMA0 (先不用这个串口,这个是我配置过的,你可以先用usb转ttl连接树莓派的usb口和指纹模块)
baudrate = 57600
timeout = 10
乐联网 网关信息
[lewei]
ip = tcp.lewei50.com
port = 9960
userKey = 你自己的userKey
gatewayNode = 02
1.首先要在电脑上调通指纹发送数据的所有命令
分享一波代码
要用电脑和指纹模块通信首先要装
python要serial模块,在cmd命令行中用命令 pip install serial 就可以下载serial 了
‘’’
import serial
import serial.tools.list_ports
import configparser
import os, sys
from core import dealFile
PATH=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(PATH)
SureCore = {
0x00: True, # 表示指令执行完毕或OK;
0x01: 101, # 表示数据包接收错误;
0x02: 102, # 表示传感器上没有手指;
0x03: 103, # 表示录入指纹图像失败;
0x06: 202, # 表示指纹图像太乱而生不成特征;
0x07: 203, # 表示指纹图像正常,但特征点太少而生不成特征;
0x15: 204, # 表示图像缓冲区内没有有效原始图而生不成图像;
0x08: 302, # 表示指纹不匹配;
0x09: 402, # 表示没搜索到;此时页码与得分为 0
0x0a: 502, # 表示合并失败(两枚指纹不属于同一手指);
0x0d: 802, # 表示指令执行失败;
0x0f: 1002, # 表示不能发送后续数据包;
0x1e: 1602, # 表示