本帖最后由 candao2 于 2023-4-4 10:23 编辑
#申请原创# 一项目简介: 在国民mcu里计算出验证码,保证跟用户手机上收到的验证码一致,mcu里计算出的验证码是通过TOTP算法根据当前时间算出的验证码,用户手机收到的验证码也是服务器通过同样的算法算出来下发到用户手机上。 硬件设备: 国民N32G43XCL-STB串口连接 NB-IOT模块(波特率4800) 应用场景: NB-IOT智能锁的验证码开锁,或者其他需要验证码进行验证的场景 注意:因为此验证码的计算需要精确的网络时间,RTC时间精度不满足,所以必须应用在有上网模块的场景以获得精确的网络时间
二移植内容: 1用于获取精确网络时间的SNTP协议(创建udp socket,发送sntp请求,接收协议数据,解析获取当前网络时间) 2算出验证码的TOTP算法 3mcu和nb模组的串口数据收发解析过程(检测模组是否注网成功,基站信号) 4RTC把从网络获得的时间更新到本地RTC以及在每一条输出的日志时打上时间戳 5RTT日志显示运行过程和结果 6在windows电脑上移植同样的算出验证码的TOTP算法,用来跟mcu计算出来的作比对,实际项目中,windows电脑中算出的验证码会下发到手机上。
三移植步骤: 分4步进行,分别写了4个移植文档。 1移植过程与代码讲解1--RTC与RTT 2移植过程与代码讲解2--MCU与NB模组串口数据的收发与解析 3移植过程与代码讲解3--SNTP协议收发与解析 4移植过程与代码讲解4--验证码计算
四实验操作方法 1 如下图,使用国民开发板N32G43XCL-STB的LPUART ,PA3作为RX,PA4作为TX,串口连接nB模组。nb模组 5v到6v供电开机,开发板连接JLINK上电,电脑上打开J-LinkRTT Viewer ,可以看到在不停的输出日志,如果业务完成,会自动停止输出日志。
2 如下图,是sntp协议通信过程运行日志,在成功获取到sntp网络时间后,更新到本地rtc时间后。更新前的rtc时间是2023-01-12的4点,更新后的rtc时间是2023-02-27的9点。
3 在2成功之后,会根据当前网络时间自动计算一个验证码,也可以通过按下开发板上的按键KEY2(PA5 ),每按下一次都会计算一次,可以在各个时间查看计算出的验证码,用于跟windlows电脑上计算出的验证码比对。 下图为mcu计算出的验证码,注意,因为步长设置为1分钟,所以每一分钟内计算出的验证码相同
下图为电脑上计算的验证码,双击运行TOTP.exe,可以看到在同一分钟内计算出的验证码跟mcu一致
|