查看: 33859
回复: 42
参赛作品《驾驶水平分析小秘书》已完成
前进的步伐
1
主题
20
回复
发表于2017-06-19 14:33:07 | 显示全部楼层
1# 电梯直达

【报名阶段需要填写的内容】

 参赛作品的名字(必填项):

驾驶小秘书

简要陈述您的idea和作品(必填项):


本作品本着提高生活中汽车乘坐过程的舒适性和安全性,规范车主的驾驶习惯,为公交车公司和出租车公司挑选出优秀司机为目标。其主要场景有两种,一种可以绑在司机的手上,也能绑在司机的方向盘上,其主要有以下几个功能:

1.驾驶运动分析:当MCU主控接收加速度计和陀螺仪的数据经过滤波处理分析后,将结果通过蓝牙传回手机APPAPP通过实时姿态解算算法得到汽车的运动状态。

2.驾驶技术测评:当汽车发动后,MCU主控接收加速度计和陀螺仪的数据经过滤波处理分析后,将驾驶员的急转弯、急刹车、急踩油门的不文明驾驶习惯进行测评打分。

3.驾驶状态分析:当MCU主控接收到加速度计的数据后经过数据处理后,主控芯片将得到的数据经过蓝牙网络模块传到手机中,通过APP的运动识别算法的得出汽车的驾驶状态。

4.车内温湿度气压情况:当MCU主控接收到气压传感器传回来的温度、气压、湿度数据后,通过蓝牙通讯传回手机APP,手机APP显示数据,并语音播报,并参考人体适宜的温、湿度状况,语音提示司机控制空调开关,节省燃油消耗。

5.充电提醒:当MCU主控通过AD实时检测电压数据,并将传回到手机APP中,当电量低于10%,语音模块人性化提醒用户充电。

    6、语音提示功能:当司机发生急刹车、或急转弯等不文明的行为时,进行人性化语音提示司机驾驶中存在的问题。

    7、驾驶建议功能:当司机进行驾驶测试后,针对驾驶中存在的不文明驾驶问题提出合理的改进意见,帮助驾驶员驾驶水平的提高。

6. 拟用到的立创商城在售物料(必填项):

主控:STM32芯片

PCB打板、电阻电容若干、语音芯片、放大器、GPRS模块

7. 拟用到的非立创商城物料或其它补充(必填项):

数字扬声器、SensorTile开发板、

【作品正式发表(报名成功后进入设计阶段)需要填写的内容】


一、作品简介

例如,可以包括但不局限于以下内容:

1.作品的整机外观图片或焊接组装好的PCBA图片;

2.作品的研究背景、目的和功能、市场应用前景;

3.作品在创新性、趣味性、实用性甚至公益性方面,有哪些亮点可体现?


1.1作品效果图

作品实物效果图


  

图1、实物微距

手机上位机界面

 

  

主界面

   

车厢温、湿度界面

  

驾驶评分界面

    

驾驶建议界面  

 


驾驶监测页面


  

   

1.2背景         

随着社会经济的发展,汽车已经成为生活必不可少的一部分。但随之而来的驾车安全以及舒适度受到了更多人的关注。特别是最近新起的网约车服务,驾驶者的驾驶水平难以获取,乘客想享受舒适的驾驶只能拼运气,同时日常生活中行车的不文明驾驶问题也需要我们提高警惕。

本作品正是应对这样的问题而诞生的,它能够实时的检测驾驶过程中的加速度速数据和陀螺仪数据,以及在驾驶过程中不文明的操作,例如:猛踩油门,急刹车、急打方向盘等问题。并把收集到的数据上传到手机上位机中,通过手机APP端的汽车姿态解算算法和运动识别算法分析,将司机的驾驶水平分析出,为客户约车时提供有效的参照,来选择自己满意的司机。也能为家庭日常驾驶时提供一个良好的驾驶提醒。此外,通过这个驾驶技术的评测,还能够推动司机来规范自己的驾驶习惯。

1.3 市场需求与现状

进年来,汽车驾驶辅助设备价格一直居高不下,价格已经成为阻碍这个行业的瓶颈,打造一个能够检测司机驾驶习惯的设备行业上的盲点,一个基于车联网的穿戴性便携的驾驶辅助设备等功能的综合体才是合车主口味的,因此一个集成的,智能性的,有特色的产品才是未来的主流,对此我们将对市场将进行以下两方面分析:

    市场需求

  

  


1、行车记录仪市场消费者价格需求分布图



 

               2016年驾驶辅助类设备价格段关注度走势

随着汽车数量的不断增长,可以看到,20161-6月,500元以下行车记录仪,各种指标呈下降趋势,而500-1000元档位的产品,关注比例略有升高。这说明,消费者已经开始想更高级的产品投入了目光。而更加高端的产品,则变化趋势不明显。

分析原因不难看出,500元以内的产品仍然是消费者青睐的主流。一个是大家接受度的问题,觉得一个额外的小装置花上上千元没必要,另外作为后装设备,记录仪的电线裸露在外,用吸盘或者粘扣固定在挡风玻璃上,看上去确实不是什么高档物件,谁都不愿意为这种品质多花钱,所以三五百元属于可以接受的范围。

物联网与智能硬件已经深入了各行各业,但对于不文明驾驶这个特殊的环境却没有过多的关注。设计一款驾驶安全测评的助手能够给用户带来便捷且同时具有检测功能是目前市场上的空白,一款价格低廉的汽车驾驶评价助手符合市场需求。

市场现状

近年来,驾驶记录类设备市场获得快速发展,有数据显示,2015年行车记录仪整体出货量约1000万套,产品销量增势明显。

 随着汽车保有量的提升,也带动了驾驶记录类设备市场发展。2016年我国机动保有量达到2.9亿辆,其中汽车1.94亿辆。报告分析认为,随着汽车数量的不断增长,未来行车记录仪市场将会进一步扩大。预测2017年,我国行车记录仪市场规模将达150亿元,到2019年,市场规模将破250亿元。

但随着互联网的发展、技术的提升,行车记录仪产品发生了一些变化,大品牌厂商遭受到了新品牌的冲击。如今依靠单纯摄录功能的行车记录仪已无法满足消费者,一些新奇特的产品顺应了消费者口味,例如智能化驾驶提醒功能、语音提示功能等。

接下来,行车辅助类行业可能掀起一轮洗牌,各家产品定位逐渐清晰,品牌意识开始增强,价格区间更加细化。驾驶辅助类的设备丰富度及可选性上,更能满足消费者的需求。

针对以上几点,开发一款能够结合车联网的行为驾驶监控的智能设备,定能占据市场份额。

    1.4 设计目的

       本作品面向于家庭日常驾驶,出租车公司,代驾公司的实际使用,以此规范车主的驾驶习惯,为驾驶公司检测驾驶者的驾驶水平, 保障行车安全为目标,主要有以下几个设计目的:

规范驾驶习惯。

检测驾驶者驾驶水平

提高驾驶水平

   家庭安全保障

提高乘车舒适性

   节省燃油消耗


1.5 系统简介

首先作品是由32bit低功耗CortexM4F MCU3D加速度计和3D陀螺仪、高精度电子罗盘、 3D磁力计、MEMS气压传感器、蓝牙低功耗网络处理器和手机APP端等几部分组成,其主要场景有两种,一种可以绑在司机的手上,也能绑在司机的方向盘上,本系统有以下五层技术架构组成:

感知层:LSM6DSM – iNEMO惯性模组: 3D加速度计和3D陀螺仪组成,用于获取驾驶中的姿态信息,并进行姿态解析。

LSM303AGR – 由高精度电子罗盘,超低功耗3D加速度计和3D磁力计组成,用于获取汽车驾驶的加速度信息,便于判断驾驶行为的猛烈程度。

LPS22HB – MEMS由气压传感器组成,用于获取车厢内的温度和湿度及气压数据。

传输层:BlueNRG-MS – 蓝牙低功耗网络处理器,用于硬件端与手机APP进行数据传输。

控制层:STM32L476 – 32bit低功耗CortexM4F MCU,对于系统的传感器数据进行获取、处理和传输。

软件及开发环境: 本系统由keil5.0进行硬件端开发,用android stdio进行手机上位机端开发。

云应用:

App 能够将驾驶员的行为数据通过蓝牙传到手机APP中,经手机APP的算法处理得出驾驶员的驾驶状态数据,并进行驾驶水平测试。

1.6 系统功能

不文明驾驶检测

车厢温湿度气压监测

汽车运动状态监测

低电量充电提醒

  智能语音提示

  汽车安全防盗功能

1.7作品优势

         安全性

通过规范驾驶员的驾驶习惯保障乘客的安全,帮助司机纠正不文明驾驶陋习,保障乘客的驾驶安全,汽车防盗,保障驾驶者汽车财产安全。

便携性

作品总体就只有80克,重量十分轻便,大小合适,装在方向盘上,或者佩戴在手腕上,节省驾驶空间。

   

舒适性

通过规范驾驶过程中的陋习,司机减少驾驶过程不必要的急打方向和紧急刹车等不良驾驶习惯,改善乘客的驾驶体验,提高驾驶过程中的舒适性。

         人性化

       对驾驶过程中的驾驶不文明行为进行语音提醒,减少分散驾驶注意力,提高驾驶的安全。

         超低功耗

        本作品对实际使用过程中,功耗极低,极大保障汽车财产安全和驾驶安全。

1.8 作品创新点

测试司机驾驶习惯,为出租车公司挑选优秀驾驶员

提高司机驾驶水平,做中国好司机

规范平时驾驶习惯,增加乘车舒适度

多平台的结合


二、系统构架图

用流程图或思维导图等形式,描述您的作品的组成构架,即方案图。

  


2、硬件框架图

三、硬件部分的描述

1.附上原理图&PCB实物图的图片或者源文件(官方建议大家尽量用源文件上传),如果是图片,请确保图片是清晰可辨的;

2.用文字把该作品的实现原理、系统的工作过程大致讲解一下。

3.1系统原理图

  

STM32L476主控芯片

  

LSM6DSM原理图

 

LPS22HB原理图

 

BlueNRG-MS低功耗蓝牙原理图

3.4.1系统总体实现原理

本作品是由32bit低功耗CortexM4F MCU3D加速度计和3D陀螺仪、高精度电子罗盘、 3D磁力计、MEMS气压传感器、蓝牙低功耗、网络处理器、手机APP端等几部分组成。

当驾驶员打开设备,手机APP连接硬件端后,主控芯片通过spi接口读出陀螺仪的数据,经过主控芯片的处理,将得到的数据发送到蓝牙中,经蓝牙透传数据后,APP接收到穿戴端的传感器数据,手机端APP通过运动识别算法分析,得到驾驶者状态,当汽车发动时,手机APP监控驾驶行为,当发生不文明驾驶时,APP进行根据规则扣分,当驾驶员停止时,手机APP运动识别后计分自动停止。

司机经过多次驾驶数据分析后,得到驾驶水平数据,而且使用次数越多准确度越高,APP对驾驶的不文明陋习提出合理的改进建议,帮助驾驶者提高水平。

3.4软件实现流程

3.4.1  软件核心算法

作品的核心算法运用有限状态机设计模式。

首先可以将作品的运行过程划分为六个状态分别为:

S0:检测汽车的运动状态

S1:等待汽车的启动

S2:检测司机的驾驶行为

S3:执行相应的操作(进行扣分、提醒操作)

S4:等待汽车制动

S5:执行设备待机

根据跳转条件的输入,在不同的状态下会执行不同的操作。

3.4.2 功能性算法实现流程

运动姿态识别算法

姿态解算核心在于旋转,旋转有4种表示方式:矩阵表示、欧拉角表示、轴角表示和四元数表示,但是姿态解算需要频繁的组合旋转和用旋转变换向量,所以采用四元数保存组合姿态、辅以矩阵来变换向量的方案:

1、          硬件端得出xyz的陀螺仪数据

2、          xyz数据转化为单位四元数

3、          单位化的四元数可以转化为一个旋转

4、          两个四元数相乘表示旋转的组合

5、          将四元数组合转化为矩阵表示,再将四元数表示转化为欧拉角表示,进行显示。

 

       三维空间中的欧拉角旋转要转三次:

 

XYZ转欧拉角


上面得到了一个表示旋转的方向余弦矩阵。

想用欧拉角解算姿态,其实我们套用欧拉角微分方程就行了:

 

欧拉微分公式


 

 姿态解算框架

1、用一个计时器定时触发测量;

2、所有测量过程都靠中断推进;

3、在main函数里不断检查测量是否完成,完成就进行解算。

测量过程比较耗时间,而这样设计,测量和解算可以同时进行,不会浪费CPU时间在(等待)测量上。而通过计时器触发测量,最大限度保证积分间隔的准确。


 

姿态解算的硬件框架

近似数据匹配

将真实的驾驶急打方向盘、猛踩油门、急踩刹车等测量数据与当日常使用时的传感器测量的数据进行近似匹配时,当数据近似在一定范围时,认定发生对应的行为,且越靠近对应行为数据中的最大值时,越剧烈,app将进行多次扣分。

     蓝牙数据通信实现原理

本作品采用蓝牙数据为传输媒介,当手机移动端发送一个请求给硬件端时,数据通过蓝牙HCL协议传输。数据请求的格式为:统一资源标识符(URL+ MIME信息(包括请求修饰符)+ 加密文本信息,当硬件端接到请求后,给予相应的响应信息。其响应信息格式为:状态行 + 状态代码 + MIME信息(包括服务器信息) + 实体信息。

陀螺仪尖峰数据处理

峰值处理前

    

峰值处理后

  

  

四、材料清单(BOM列表)

列出您这个作品所用到的主要器件(关键器件即可),比如单片机&ARM芯片、专用集成芯片(ASIC)、传感器、功能模块等。

如果所列出的芯片是来自我们立创商城上的,最好能写出该器件的商品编号或附上对应购买链接。


本作品主要使用sensortile完成,主要部件为:


芯片

 个数

STM32F103RG芯片

1

LSM6DSM芯片

1

LSM303D芯片

1

BlueNRG-MS蓝牙网络处理器

1

3.7V锂电池

1


 











五、软件部分的描述(选填)

如果您的作品涉及到软件,请列出作品对应的软件工作流程图,及关键部分的例程、源码(如果您想开源的话请上传全部源码)

5.1 安卓上位机流程图

  

驾驶水平检测小秘书手机上位机流程图

本作品运用了讯飞的语音接口能够实现对驾驶的不文明行为进行语音提示开发集成阶段的服务量为500次/日,如要解除这个限制,需要提交应用上线审核,审核通过后将不再有次数的限制。


 

 

安卓程序清单

 

驱动清单

 

相关语音合成代码:


 private void setParam() {
//清空参数
mTts.setParameter(SpeechConstant.PARAMS,null);
mTts.setParameter(SpeechConstant.PARAMS,"rdn=2");
//根据合成引擎设置相应参数
if(mEngineType.equals(SpeechConstant.TYPE_CLOUD)) {
mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);
//设置在线合成发音人
mTts.setParameter(SpeechConstant.VOICE_NAME,"xiaoyan");
//设置合成语速
mTts.setParameter(SpeechConstant.SPEED,mSharedPreferences.getString("speed_preference","60"));
//设置合成音调
mTts.setParameter(SpeechConstant.PITCH,mSharedPreferences.getString("pitch_preference","50"));
//设置合成音量
mTts.setParameter(SpeechConstant.VOLUME,mSharedPreferences.getString("volume_preference","100"));
}else{
mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_LOCAL);
//设置本地合成发音人voicer为空,默认通过语记界面指定发音人。
mTts.setParameter(SpeechConstant.VOICE_NAME,"");
/**
*TODO本地合成不设置语速、音调、音量,默认使用语记设置 开发者如需自定义参数,请参考在线合成参数设置
*/
}
//设置播放器音频流类型
mTts.setParameter(SpeechConstant.STREAM_TYPE,mSharedPreferences.getString("stream_preference","3"));
//设置播放合成音频打断音乐播放,默认为true
mTts.setParameter(SpeechConstant.KEY_REQUEST_FOCUS,"true");
//设置音频保存路径,保存音频格式支持pcm、wav,设置路径为sd卡请注意WRITE_EXTERNAL_STORAGE权限
//注:AUDIO_FORMAT参数语记需要更新版本才能生效
mTts.setParameter(SpeechConstant.AUDIO_FORMAT,"wav");
mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, Environment.getExternalStorageDirectory() +"/msc/tts.wav");
}
/**
*合成回调监听。
*/
private SynthesizerListener mTtsListener=new SynthesizerListener() {
@Override
public void onSpeakBegin() {
// show Tip("开始播放");
}
@Override
public void onSpeakPaused() {
// showTip("暂停播放");
}
@Override
public void onSpeakResumed() {
// showTip("继续播放");
}
@Override
public void onBufferProgress(intpercent,intbeginPos,intendPos, String info) {
//合成进度
}
@Override public void onSpeakProgress(intpercent,intbeginPos,intendPos) {
//播放进度
// mPercentForPlaying = percent;
// showTip(String.format(getString(R.string.tts_toast_format),
// mPercentForBuffering, mPercentForPlaying));
}
@Override
public void onCompleted(SpeechError error) {
if(error ==null) {
// showTip("播放完成");
}else if(error !=null) {
// showTip(error.getPlainDescription(true));
}
}
@Override
public void onEvent(inteventType,intarg1,intarg2, Bundle obj) {
//以下代码用于获取与云端的会话id,当业务出错时将会话id提供给技术支持人员,可用于查询会话日志,定位出错原因
//若使用本地能力,会话id为null
// if (SpeechEvent.EVENT_SESSION_ID == eventType) {
// String sid = obj.getString(SpeechEvent.KEY_EVENT_SESSION_ID);
// Log.d(TAG, "session id =" + sid);
// }
}
};
/**
*销毁语音合成
*/
public static void onDestroy() {
if(mTts!=null) {
mTts.stopSpeaking();
mTts.destroy();
}
}
//text:要合成的文本
mTts.startSpeaking(text,mTtsListener);



 

5.2 嵌入式端代码:

下图为配置加速度计的相关参数的代码

  

  

LSM6DSM的初始化代码

  

实现姿态算法的注册

  

 

                                                                                                                                                   LPS22HB的初始化函数


 


BlueNRG-MS服务发送函数

六、作品演示

请上传您的作品的功能演示到腾讯视频,并编辑到本楼(或附上视频链接)。按要求上传视频可获得5分,具体详见活动规则。

作品演示:




七、总结

例如您在完成该作品过程中的一些体会、碰到的技术问题或调试经验、作品的未来规划,及对我们主办方的建议和意见等。

从大一开始学习51单片机到现在的STM32学习,我了解单片机的一系列操作后渐渐了解物联网开发,积累了初步的开发经验,当我大二开始实际进行物联网开发时,发现物联网实际的软件也要结合移动设备,所以买了一本郭霖大神的《我的第一行-Android》进行研究,慢慢也可以看懂一些安卓的语法了,最后根据官方APP为模板加上自己改进设计这款APP出来。

我们团队做出了第一版设备,从参加了2017年全国大学生物联网设计竞赛后,我们团队完善了增加使用数据波峰处理的方法,提高了不文明驾驶判断的准确度,并且改进了APP的一些功能,增加了语音合成、驾驶建议等功能,也基本达到了设计初期的目的。

刚开始开发设备时碰到了很多难题,后面看了网上很多大神写的sensorTIle的帖子,加上一些官方历程的代码,最后基本完成作品,最初也碰到了不准确的问题,后面加入了判断不文明驾驶的特征检测方法,实际驾驶中成功率能够达到70-80%,整体提高了准确度。

后期可以与汽车厂家合作直接嵌入到汽车方向盘,对驾校的汽车的进行专门定制,使学员能够自主进行驾驶学习,节省教练的指导时间。

    感谢立创给我们一个平台让我们物联网创客有这样一个机会能够比赛交流,希望立创电子制作节越办越好!

    请评委们和大家批评指正




Electronic
0
主题
1
回复
发表于2017-08-31 19:34:56   |  显示全部楼层
23#
楼主,创意很好,运动姿态识别我也在研究,学习下。

主题

回复
  • 温馨提示: 标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考: 社区发帖规则
  • 您当前输入了 0 个文字。还可以输入 8000 个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

禁言/删除

X
请选择禁言时长:
是否清除头像:
禁言/删除备注:
昵 称:
 
温馨提示:昵称只能设置一次,设置后无法修改。
只支持中文、英文和数字。

举报

X
请选择举报类型:
请输入详细内容:

顶部