• 105
密码锁在我们生活中并不少见,无论是高功率、高成本的
GPRS开锁,还是芯片数量大、差异大等问题的蓝牙解锁。通过了解当前共享单车智能锁存在的很多问题,我们研发了免通讯与低功耗的共享单车密码锁,有效的解决共享单车密码锁中存在的低安全性、高功耗、高成本等问题。针对目前共享单车密码锁中存在的这些痛点进行探索和研究,作为本项目的主要方向。故通过结合App Inventor开发软件和单片机技术设计了一种免通讯模块、密码伪随机性、低功耗的共享单车密码锁。其中密码锁硬件设计部分使用低功耗MSP430的单片机可以进行免通迅从而减少繁锁的开锁、太阳能电池板给电池充电从而给单片机和模块供电、按键模块输入密码、AT24C02存储器模块储器密码、蜂鸣器提示等模块;软件通过开发一款基于App Inventor的Android出行应用程序,其主要功能是实现人脸识别注册与登录、扫描获取解锁密码、定位与计时等。
随着我国在“互联网+”和“中国制造2025”两大战略上不断取得的突破,我国人们的生活正在呈现出数字化、网络化、智能化。与此同时,随着优步、滴滴打车的出现以及它们在市场经济中取得的巨大成功,共享经济的兴起和发展受到了全社会的广泛关注和热议,同时掀起大量的市场资本投入到共享经济的狂潮。
当前我国正在解决人们出行的最后一公里的难题,共享单车能够很好的解决这一问题,但是单纯依靠机械锁降低单车成本的做法在运营中的缺点日益突出。试图使用传统的机械锁运营的共享单车,在具体的实践中逐渐被证明是不可能的,并且现在的无线通讯过于麻烦,带来了一系列的问题。蓝牙开锁,原理是通过业务层校验,手机下载指令加密包,再将包发送到蓝牙,从而完成解锁的。但蓝牙的芯片版本兼容太差,华为能开的话,魅族和小米不一定能开,何况市场上数十种的安卓手机,同样是华为的在不同的版本都有兼容问题,目前的主要原因是因为采购的蓝牙芯片差异太大。因此通讯过于繁琐,给我们开锁带来不便。我们通过去研究低功耗的智能密码锁,使用更低功耗的单片机MSP340去产生与手机相同的密码,且密码是复杂可变的。以密码锁在共享单车行业中所出现的各种问题为出发点,通过结合App Inventor开源开发软件和单片机开发技术,设计了一种免通讯模块、高安全性、低功耗的共享单车密码锁,它能够有效的解决共享单车中的密码锁出现的密码单一、低安全性能、高功耗等问题。而且我们的密码是随机产生的,安全性能高。智能锁在共享单车中的作用也是越来越明显,智能锁的性能影响着整个共享单车的利益链。除了密码锁的基本功能外,使用微处理器的智能电
子密码锁还可以引入智能化管理,使电子密码锁具备更高的安全性和可靠性。1  共享单车密码锁硬件设计
其中硬件设计部分由M S P430F413单片机、按键模块、AT24C02存储器、蜂鸣器等构成。采用MSP430F413单片机,是TI 推出的超低功耗混合信号16位单片机系列中的一种。单片机的三种工作模式分别为:正常工作模式、空闲模式、休眠模式。单片机的空闲模式能够有效的降低系统的功耗,提升了电源的续航能力。当单片机处于空闲模式时,单片机的某些寄存器都会保留着原来的数据,如随机存取机器、堆栈指针、程序计数器、程序状态字、累加器等。单片机正常工作模式利用其做密码控制系统,我们可以通过手机扫描已经做好的二维码,从而在手机获取一个随机不同的密码,再输入密码给MSP430单片机开锁。当输入的密码与单片机已经产生伪随机码相同时,便可以开锁。而且利用AT24C02是一种串行E2PROM,它遵循I2C-BUS的存储元件,遵循二线制协议,由于它有许多优点如体积小,接口便利,数据在掉电之后不会无缘无故的丢失等优点,从而可以储存好随机密码,做好相关密码储存。
2  共享单车密码锁软件设计
使用App Inventor网站进行Andord手机客户端的设计。手机客户端主要是实现用户注册与登录界面、扫码获取解锁密码模块算法、用户骑行定位与计时等的开发。该智能锁的手机端APP有人脸识别登录
的功能,使用户方便登录使用。APP还通过调用高德地图搜索中静态地图URL显示用户的位置,能够给用户准确的位置信息。这将大大提高用户对该智能锁及APP的体验和认可。2.1  用户注册
用户点击的是“注册”按钮时,拍照完后,调用“TaifunImage”组件将图片修改为小于500×500px尺寸的图片。首先我们要对人脸进行识别(Detect Face),并获得这个人脸的标识值,根据api文档,我们将使用base64编码上传图片,于是调用“SimpleBase64”组件对图片进行Base64编码,然后执行POST文本请求提交相应的请求参数“api_key”“api_secret”“image_base64”。将图片上传至Face++旷视平台建立人脸集合即完成用户的注册。
2.2  用户登录流程
当用户点击登录按钮拍照获得图片后,获取SearchAPI返回值,首先根据列表长度判断是否识别到人脸,然后从返回的列表中提取拍照的脸和人脸集合中的脸的匹配度confidence,范围为[0,100],这里的逻辑设计中设置是匹配度达到85则登录成功。如图1所示。
免通讯与低功耗的共享单车密码锁广东石油化工学院电子信息工程学院  伍思源  马远佳  罗  佩
• 106
图1 人脸注册与登录
2.3  扫码获取解锁密码
制作了特定的二维码,二维码主要作用是标注车辆的编号信息。当用户点击“扫码骑车”按钮时会调用“二维码”组件扫描制作好的二维码。获取到车辆信息后进行处理随机生成五位数的密码,再将五位数的解锁密码传递给“密码文本”。如图2
所示。
图2 扫码获取密码及车辆信息2.4  用户定位
用户进入扫码界面时,手机客户端会根据位置传感器获取当前位置的经纬度,通过高德地图的静态地图URL 将位置传感器获取的经纬度信息传输进行搜索,将搜索所得的图片显示在“地图”组件之中。如图3所示。2.5  按键开锁
通过手机客户端扫描共享单车上的二维码获取解锁密码,这样做的方法虽然给平凡枯燥的生活带来许多的便利和方便。同时,在
共享单车上输入获得的解锁密码即可使用共享单车。如果输入密码不正确会进行报警,提醒用户当前输入的密码是错误的。也是当前主流的方案。如图4
所示。
图3 用户骑行时的导航、定位与计算骑行时间
图4 按键开锁流程图
3  系统搭建与测试
本项目的类型为软硬件开发,软件运行在Android 手机APP 上,硬件使用低功耗MSP430单片机。然后将硬件部分和软件部分这两部分分开进行调试与测试,将每个部分的具体功能进行测试,检查是否能够正常运行。每个功能都能够实现的情况下,再进行整个项目的整体调试。通过这样的方法,可以尽量减小开发的难度、缩小项目的设计周期从而更好的实现所需要的功能。即使在调试过程中
• 107
遇到了问题,也能快速到问题出现的原因并进行处理。然后一一去排除软件和硬件的问题,这样不仅大大的改善了系统调试效率,而且也能确保系统更加稳定,后期的维护与完善也比较方便。
3.1  共享单车智能锁APP功能模块测试
(1)登录进入软件后显示的人脸注册与登录页面上是否有注册与登录的按钮;
(2)点击注册按钮能否调用手机的相机;
(3)上传照片至“Face++旷视”人工智能平台能否完成注册;
(4)点击登录按钮能否调用手机的相机;
(5)点击登录按钮拍照后能否与“Face++旷视”人工智能平台的数据库进行对比;
(6)“Face++旷视”人工智能平台的数据库与对比后能否成功登录;
(7)定位与计时页面是否有在地图上显示当前位置的标识。
3.2  密码智能锁测试解锁与上锁
共享单车智能锁APP生成智能锁解锁密码具有一定的随机性,同时也存在着前后两个密码一致的可能。因为解锁密码的生成机制中有两个数字车辆的编号和三个伪随机的数字所确定的,如果在同一辆车扫描两次共享单车上的二维码则存在一定概率是相同的。在APP生成解锁密码功能初步实现的情况下,增加前后两次生成的解锁密码对比的算法,进一步降低解锁密码重复的概率提升智能锁的安全性。经过软件端和硬件系统的各个功能模块测试后,再对密码锁的解锁功能进行全面的测试,通过这种方法发现仍存在的问题,并可以避免各个模块功能不兼容的问题。经过反复的调试与完善,共享单车密码锁的解锁功能已基本实现。解锁功能是共享单车智能锁最重要的功能,关系到整个项目能否正常工作的关键。本部分是针对密码锁的解锁进行硬件系统和软件端的同步测试,以检验是否实现密码同步、密码锁解锁是否有反馈信号等问题。
结论:本文设计了一个基于免通讯与低功耗的共享单车密码锁,低功耗、无线通信的特点,将大大减少了共享单车的成本及后期的维护成本。通过不断探索和完善共享单车的密码锁,更好突出共享单车的优势,促进共享单车市场朝着更好、更快、更高的方向发展。所以是本项目的不仅仅只能应用在共享单车上,我相信,在未来,要需要“锁”的地方,就有本项目及以后设计的智能锁出现。
本文受到广东石油化工学院2019年大学生创新创业校级培育计划项目NO.733486的资助。
软件测试app
作者简介:伍思源(1998—),男,广东云浮人,大学本科,现就读于广东石油化工学院电子信息工程学院,研究方向:单片机嵌入式设计。
通讯作者:罗佩(1983—)女,湖南湘潭人,硕士,广东石油化工学院高级实验师,研究方向:嵌入式设计。
(上接第104页)
4  FPGA硬件仿真
图6显示给出了检测算法的仿真结果图,仿真采用modelsim 软件,可以真实的仿真verilog程序的时序关系,图中DataIn是检测算法输入信号,信号由MATLAB软件产生,产生的数据导入到verilog工程文件内,DataOut是检测算法输出信号,当没有检测到有用信号时,输出为0,当检测到有用信号时,输出输进来的有用信号。Frame是检测算法输出信号的判决位,图中可以看出,当Frame标志位为0时,DataOut没有输出,当Frame标志位为1时,输出有数据,并且数据开始输出到接收机。
结语:根据分组检测算法原理及特点,在工程实际应用中,可作为一种解决接收机信号检测的处理方式,通用Matlab软件仿真分组检测算法,并用FPGA仿真验证,给出了硬件时序仿真结果,具有工程应用意义。
作者简介:
陈妹(1984-),女,安徽蚌埠人,硕士,中级工程师,现供职于四川九洲空管科技有限责任公司,
研究方向:数字信号处理/射频收发。
郑超(1979-),男,浙江湖州人,硕士,高级工程师,现供职于四川九洲空管科技有限责任公司,研究方向:信号与信息处理。
杨志强(1988-),男,内蒙古赤峰人,硕士,中级工程师,现供职于四川九洲空管科技有限责任公司,研究方向:数字信号处理。