分三部分详细介绍下小蛮定位器:设计思路、需求部分、脚本代码解析
第一部分:设计思路
1,小蛮gps定位器是基于RDA8851平台的小型GPS定位器,单片机看门狗,APP对接时间线APP
2,小蛮gps定位器产品定义的核心是:简单,易用,稳定,应用场景是家长买给孩子用,当孩子不在自己身边上,只要孩子带着小蛮gps定位器,就可以随时随地了解ta的情况;
3,基于应用场景的需要,以APP功能为出发点来看,小蛮gps定位器需要完成几大功能:监听(有语音和数据两种方式供用户选择)、定位(实时定位命令)、事记(或者叫做时间轴,运动状态下固定以30分钟为间隔上报的轨迹点、实时定位点的记录、监听录音的记录、打电话的时间及相应时长、心跳,以及相应每次上报服务器时对应的电池电压);
4,终端本身的交互接口有:按键、三色灯、SIM卡插槽、充电接口、挂绳;其中,按键的作用有三个:长按开机+按键时LED按定义亮起以对应相应状态+实时上报当前位置(按多少次上报多少次);
注意:按键只能开机,不能关机;小蛮gps定位器不支持主动关机,除非电池用尽;
第二部分:需求介绍
一,名词定义
1,静止状态:运动状态下,连续5个60秒内均无振动产生,进入静止状态;
2,运动状态:静止状态下,连续3个10秒内均有振动产生,进入运动状态;
3,振动状态:连续2个10秒内均有振动产生,即为1个有效的振动状态;
4,低电压状态:无论何种状态下,电池电压电压低于3.5V时;
5,充电状态:充电器插入,电池电压未充满时;
6,充电完成状态:充电器插入,电池电压充满时;
7,充电器插入状态:无论电池电压是否充满,充电器插入时;
8,GPS实时定位:使用GPS进行定实时位的动作(包含时间、电池电压等当前实时信息);
9,GPS历史定位:设备尝试GPS实时定位1分钟后如仍不能定位成功,该设备则使用最近一次GPS定位成功的位置信息作为该次上报的位置信息(时间、电池电压仍使用当前的实时信息),这个过程称之为GPS历史定位;
二,智能定位模式
1,运动状态下位置信息默认上报间隔30分钟,不可由App更改上报时间间隔;
2,运动状态下优先GPS实时定位,1分钟内GPS定位不成功则改为GPS历史定位;
3,静止状态下心跳间隔默认30分钟,不可由App更改上报时间间隔;
4,充电器插入状态下不影响运动状态和静止状态的判断,以及相应状态下的参数设置;
5,任何状态下,开机默认GPS实时定位,GPS定位成功后蓝灯长亮5秒,设备异常重启GPS定位成功后蓝灯不亮;
三,低电压关机
1,任意模式下,当电池电压低于3.5V时,设备自动关机,关机时红灯快闪,关机后所有灯熄灭。关机前将关机信息上报服务器。
2,充电器插入后即刻退出关机模式,根据实际情况进入静止状态或者运动状态;
3,关机动作执行时三颗LED要依次亮起,关机动作执行完毕时自然熄灭;
四,报警内容
1,低电报警,设备上报信息给后台,App和后台推送信息给用户,一直开通,APP无对应开通和关闭的选项;
五,异常处理
1,报文上报不成功 任意定位模式下,报文发送不成功时,设备自动延长1分钟报文发送时间; 若终端12小时内报文发送均不成功,则终端自动重新启动;
2,设备重启开机后不执行正常开机时的LED亮灭(电池电压、充电、SIM卡工作、后台连接、GPS定位等状态显示)操作提示,三颗灯全部关闭;
六,通用定义
1,指示灯定义
慢闪定义:亮一秒钟,灭一秒钟;
快闪定义:亮100毫秒,灭200毫秒;
插入充电器充电中:红灯常亮;
插入充电器充满:绿灯长亮;
充电器不在位:红灯(或者绿灯)灭。
低电压提示方法: 如果充电器不在位,并且电压低于3.6V,红灯慢闪;
开机后设备与后台没有建立连接:绿灯慢闪,如果60秒没有变化,就自动灭掉;
开机后设备与后台连接成功:绿灯长亮,如果连续60秒没有变化,就自动灭掉,如果常亮60秒期间有按键操作,则关闭LED;
开机后GPS没有定位成功:蓝灯慢闪,当打开GPS时间超过120秒钟后仍没有定位成功,就自动灭掉;
GPS定位成功:蓝灯长亮,如果120秒钟没有变化,就自动灭掉;
2,开机键:
关机状态下:长按开机键3秒开机;
开机状态下:
短按开机键:
绿灯快闪2秒然后常亮,表示GSM连接正常,再按灯灭(不管短按长按),不按键则30秒后自动熄灭。
绿灯一直快闪,表示GSM未正常连接,再按灯灭(不管短按长按),不按键则30秒后自动熄灭。
长按开机键:
蓝灯先快闪然后常亮,表示GPS定位正常,再按灯灭(不管短按长按),不按键则30秒后自动熄灭。
说明:
蓝灯快闪时间不超过30秒;
假设在10秒内定位成功,则蓝灯一直常亮20秒后自动关闭,除非在这20秒内有按键使其关闭;
如果终端定位时剩余时间少于3秒,则常亮3秒,比如是在29秒定位成功的,也常亮3秒
蓝灯一直快闪,表示GPS未正常定位,再按灯灭(不管短按长按),不按键则30秒后自动熄灭。
无论长按还是短按开机键,都不可以关机,设备仅可通过App指令实现远程重启;
无论长按还是短按,每次按键都主动上报一次定位位置,60秒内只上报1次;
七,事记显示
1.终端的每一个操作(开机、关机、充电、按键等)都要在App“事记”里显示,App相当于终端的屏幕,是终端各种状态按照时间轴进行的记录;
2.短信上报
终端SIM卡收到短信后,软件需要将对应的短信(含发送号码、接收时间等信息)上传给服务器,服务器再推给App,App在时间轴内显示全部内容;
3.电话上报
终端SIM卡收到未接电话或者正常通话后,软件需要将对应的电话(含拨打号码、拨打时间时长等信息)上传给服务器,服务器再推给App,App在时间轴内显示全部内容;
第三部分:脚本介绍,已对每个脚本做了详细注解。
1.先对所有脚本做一个简要介绍
ccair.lua:电话应用模块
chg.lua:电源管理模块
config.lua:参数配置模块
factory.lua:工程测试模式
gpsapp.lua:gps应用模块
gpsmng.lua:gps应用管理模块
keypad.lua:按键模块
light.lua:设备上的三色灯的管理模块
linkair.lua:连接空中接口模块
linkapp.lua:连接层应用接口管理模块
logger.lua:暂未用
main.lua:主程序
manage.lua:杂项管理模块
mqtt.lua:MQTT协议模块
mqttdup.lua:MQTT dup模块
nvm.lua:参数存取管理模块
pins.lua:引脚配置模块
protoair.lua:协议接口
rcd.lua:拾音接口
shk.lua:震动模块
shkmng.lua:震动管理模块
sleep.lua:gps休眠管理模块
smsapp.lua:短信模块
test.lua:暂未用
wdt.lua:看门狗模块
2.脚本的运行基于一种消息模式,对不同的消息ID注册相应的处理函数,如下:
3.部分脚本添加的注解截图
QQ截图20170217171524.png(67.22 KB, 下载次数: 0)
QQ截图20170217171636.png(32.3 KB, 下载次数: 0)
QQ截图20170217171729.png(70.82 KB, 下载次数: 0)
QQ截图20170217171825.png(65.1 KB, 下载次数: 0)
QQ截图20170217172716.png(52.82 KB, 下载次数: 0)
QQ截图20170217172737.png(49.09 KB, 下载次数: 0)
QQ截图20170217172751.png(44.79 KB, 下载次数: 0)
QQ截图20170217172807.png(77.51 KB, 下载次数: 0)