计算机能力挑战赛总结

  • 一、赛题
    • 1. 设计目标
    • 2. 基本要求
    • 3. 扩展要求
    • 4. 发挥要求
  • 二、分析
    • 1. 基本要求-车载娱乐播放
    • 2. 基本要求-车载仪表显示
    • 3. 扩展要求-音频录制
    • 4. 扩展要求-歌曲列表
    • 5. 扩展要求-汽车黑匣子
    • 6. 发挥要求-移动互联功能
    • 7. 发挥要求-智能语音控制
  • 三、制作
  • 四、结果
  • 五、源码

一、赛题

1. 设计目标

设计制作一款可以人机交互、具备移动互联功能的智能车载终端系统。

2. 基本要求

  1. 车载娱乐播放
    (1)读取储存在SD卡中的音乐文件,并通过扬声器播放出来。
    (2)以TFT彩屏作为显示终端,显示当前的音乐文件信息,歌曲名、进度条、音量、码率等。
    (3)实现歌曲播放控制,具有"上一首"、“下一首”、"暂停"等基本操作功能。
  2. 车载仪表显示
    (4)以TFT彩屏作为显示终端,显示照明灯的状态(开/关)、继电器的状态(开/闭);显示水温(单位摄氏度)、油位(无单位,数值一般为占满量程的比例)、车速(单位千米/小时)信息。
    (5)水温来自于温度传感器、油位来自于滑动变阻器、车速来自于旋转的步进电机测速;水温数据、油位数据、车速数据每隔2秒动态刷新;采用合理方式调整水温、油位信号变化,以产生可见动态变化效果。
    (6)设计按键模拟油门给出"加速"、“减速”、"停车"等输入指令,控制步进电机做相应动作,并将车速及运行状态"加速/减速/停车"显示于TFT屏。

3. 扩展要求

(1)可以实现音频文件的录制功能,不通过第三方的导入功能,直接录制并存储音频。
(2)实现歌曲播放控制的更多操作,例如生成播放列表、设置循环模式(单曲、顺序、随机)等。
(3)模拟实现汽车"黑匣子"功能:当某一按键按下时,系统记录当前时刻的仪表信息(如水温、油位、车速及运转状态、照明灯与继电器状态等),并存储于EEPROM硬件中;关机后重新开机能够复现前次的各类信息。

4. 发挥要求

  1. 移动互联功能
    (1)通过以太网或WIFI网络方式,与移动互联模块(手机或平板)之间进行车内仪表数据的上传。
    (2)编制安卓或苹果APP,实现与车内仪表类似的界面显示。
  2. 智能语音控制
    (3)通过语音识别实现对硬件设备的控制,例如说出"打开照明灯"、"关闭继电器"等,可直接转换为对应的输出设备动作。

二、分析

在拿到题目的时候,首先浏览了一遍题目,第一感觉:

这什么鬼、题目量也太大了吧,裸机手撸死翘翘好吧,所以果断选择uCos来作为调度系统,进行多任务管理。虽然任务量很大,但对处理器的要求并不是很高,只是逻辑布置很麻烦,所以我计划使用STM32F103ZET6来做这个。
然后开始逐步分解题目内容,从基本要求开始做,一点一点增加任务,完成项目,下面开始讲解基本任务:

1. 基本要求-车载娱乐播放

第一点要求读取SD卡音乐文件,并且播放,这里的技术要点主要是建立一个FAFT文件系统,挂载SD卡,读取我们指定的音乐目录下的音乐文件,然后通过解码播放,这里选择VS1053模块来做解码,接一个扬声器播放。
TFT显示信息直接使用LCD就行,使用极其方便,初始化一下,直接调用API就行,这里我一开始想使用EMWIN来做界面,但考虑到直接使用这些不是熟练,故放弃使用EMWIN做界面。关于显示歌曲的信息,因为直接使用的VS1053,可以直接通过寄存器发送读取对应信息的指令,之后读取对应返回值进行处理就行,这部分代码在正点原子战舰的例程里面有给出,代码封装的风格很好,读一遍基本可以理解,然后就能调用。关于音乐切换其实就是在mp3初始化时,把所有音乐的文件路径存储到一个字符串链表里面,播放不同音乐就是根据链表重新选择一下文件路径,然后再进入死循环播放就行了,音乐暂停,在UCOS里面直接使用挂起任务就可以完成,需要继续播放则使用任务恢复API就可以完成恢复。

2. 基本要求-车载仪表显示

仪表显示因为没有使用emwin界面工具,用单纯的纯手画图方式设计一个好看界面太占据内存,并且效率不高,实现意义不大,故直接使用最传统的方式----显示文字法,节省内存,提高效率(就是丑了点~)
温度采集使用DS18B20来采集温度信息,单总线结合GPIO模拟协议进行写入和读取,电机速率采集则使用红外对管测速,通过外部中断配合定时测量一段时间内转动码盘上经过的孔的数量,从而计算出速率,加速减速通过改变步进电机脉冲之间的时间。
DS18B20:

测速模块:

3. 扩展要求-音频录制

音频的录制和mp3播放使用的同一个模块,故在使用音频播放时需要创重新初始化vs1053同时需要重新配置mp3播放的功能,录音的使用和mp3其实差不了多少,正点原子关于这个模块有较详细的叙述,后面我也简单的写一下。

4. 扩展要求-歌曲列表

歌曲列表的显示其实就是轮询SD卡音乐文件夹下各个音乐的信息,然后将音乐名称打印出来,每次切换音乐都重新打印,可以刷新列表,关于切换音乐,顺序播放切换音乐就是对链表切花时位移一个,单曲位移为0,使播放原地踏步,随机播放呢,我使用的UCOS内部产生32位随机数的API然后除以最大音乐数目取余数,相当于在所有音乐之中随机播放音乐。

5. 扩展要求-汽车黑匣子

黑匣子这个难度不是很大,IIC连接EEPROM存储信息就行了,但是跑着uCos上可能会出一些问题,尤其在使用正点原子的ucos延时时会出现这个问题,正点原子ucos代码us级延时误差挺大,我文中会给出解决方法。
EEPROM模块:

6. 发挥要求-移动互联功能

移动互联网功能就是一个上云功能,at指令配好,了解一下MQTT协议就能完成,然后就可以传输数据上云了(公网云),我们这使用的是阿里云平台,因为他有个快速制作app界面的功能,所以使用起来很方便,也能做出题目要求的界面效果,所以使用阿里云。
ESP8266模块:

7. 发挥要求-智能语音控制

语音识别直接配置完整的模块,写入识别信息,模块自带匹配功能,识别之后执行对应的指令,配置过程很简单,直接使用源码没有问题!
LD3320语音识别模块:

三、制作

分析完理论知识和需要的模块的之后,开始正式进入code环节,下面继续按照上面的步骤进行调试代码。
1. 实现原理:
项目首先构建硬件连接关系图,连接硬件,通过MDK对STM32F103ZET6进行软件编程,使用uCos实时系统,调度STM32F103ZET6内部串口、定时器、中断、硬件SPI、IIC等资源,配置外部模块,使STM32F103ZET6可以对外围模块进行控制及数据采集,进一步进行处理与逻辑控制,使stm32可以达到用户所需要的目的。
2. 硬件框图:
STM32F103ZET6与外围电路的连接框图如下,通过IO口连接步进电机、矩阵键盘、灯、继电器,通过SPI连接语音识别模块ASR、1053_MP3模块,通过串口连接ESP32WIFI模块,通过FSMC输出信息给TFT液晶屏,通过ADC模块转化电位器位值,通过外部中断检测红外对管电平,通过SDIO协议读取SD卡数据信息,通过单总线协议读取DS18B20的温度信息;

3. 软件流程:
项目使用STM32基于UCOS实现所有功能,在代码编写上,共计建立了9个任务进行调度,调度流程如下,调度过程中,CPU使用率基本上稳定在50%以下,同时任务运行稳定,长时间运行不崩溃,切任务实时性高,处理事件反应快,达到较好的用户交互效果。

四、结果

作品展示
1.1 项目连接的整体视角:

1.2 TFT初始化后的UI界面:

1.3 手机端APP界面:

1.4 矩阵键盘按键功能图:

2. 功能实现
2.1 基本要求的实现
读取了SD卡的音乐文件并播放,《音乐播放器》板块显示了歌曲名、进度条、音量、码率等,并可通过按键1、2、3实现切歌、暂停。
在采集信息板块,LIGHT为照明灯状态,RELAY为继电器状态,Temp为水温,OIL_H为油位,SPEED为车速信息,并每隔2s刷新。通过按键9、10、11实现步进电机相应动作,并将车速显示在挡位上,运行状态显示在电机状态上。
2.2 扩展要求的实现
录音状态显示在《WAV录音机》板块,通过按键16实现音频录制功能,录制完成后按下按键14存储音频。歌曲的更多操作显示在《音乐播放器》板块,按键7切换播放模式,将模式显示在播放后,按键4和按键8实现音量增减并显示音量VOL。汽车黑匣子显示在复现信息板块,由按键5和按键6实现,按键6写入当前状态数据,按键5读取之前状态。
2.3 发挥要求的实现
数据通过WIFI模块上传至云平台后,云服务器显示已连接,上图为手机接收到的仪表数据,显示在APP上。按下按键3后暂停MP3并使用语音识别,在说出“关闭照明灯”及“打开继电器”均能实现相应数据更新动作。

五、源码

github:链接
gitee:链接

基于STM32+UCOS的智能车载终端系统总结相关推荐

  1. (一)互联智能车载终端系统,介绍,构思,搭建

    最近打某高校挑战杯 后面所有用到的都会分文章讲解 做嵌入式组的题目,需要做一个互联智能车载终端系统带有: 1.通过触摸屏查看油位,水温,车速以及控制车速 2.通过触摸屏播放从sd卡当中的音乐,可以有多 ...

  2. 【解决方案】车载监控/公交监控/倒车监控/货车校车客车基于4G传输的智能车载监控系统

    一.背景分析 根据国务院相关规定,自2011年起,新出厂的"两客一危"车辆,在车辆出厂前应安装符合相关标准的卫星定位装置,并接入全国重点营运车辆联网联控系统,保证车辆监控数据准确. ...

  3. 智能车载终端解决方案,聪明的车驶入智慧公交时代

    公共交通是城市建设中的重要一环,十四五规划中明确提出打造城市数字交通.智能交通.绿色交通的主题.在大数据.5G.车联网等技术的加持下,各地加快城市公交基础设施建设和改造,城市公共交通智能化程度不断提升 ...

  4. stm32/esp32/cam智能安防系统远程视频监控物联网远程传输视频图像GSM短信报警

    系统实现了智能安防报警系统设计,人体感应报警,烟雾报警,GSM短信报警,同时支持远程视频监控功能,安卓端app端远程查看视频流.实物展示视频 ​​​​​​基于stm32单片机ESP32智能安防系统远程 ...

  5. 基于STM32物联网WiFi智能家居控制系统设计(原理图+源代码+系统资料)

    基于STM32物联网WiFi智能家居控制系统设计(原理图+源代码+系统资料) 原理图:Altium Designer 程序编译器:keil 5 编程语言:C语言 设计编号:C0053 主要功能: 1. ...

  6. 基于STM32的物联网智能家居系统 可以实现温度湿度的实时监控

    基于STM32的物联网智能家居系统,可以实现如下功能: 1.可以实现温度湿度的实时监控: 2.可以实现烟雾浓度的实时监控: 3.可以通过按键设置温度.湿度.烟雾浓度的阈值: 4.当温度高于阈值时风扇打 ...

  7. 基于STM32单片机的智能家居测量系统设计

    当今的家庭生活面临着各种环境和健康问题,周围的生活参数存在潜在的隐患,包括室温.气体中有害物质的浓度等.在新时代,人们越来越关注健康及其相关因素.随着微电子技术的应用,电器的普及,以及单片机和传感器性 ...

  8. 【基于stm32 FreeRtos的智能台灯控制】

    基于stm32 FreeRtos的智能台灯控制 之前做了一个裸机版本的智能台灯,最近刚好复习一下FreeRto的一些基础知识,朋友发给了我一个功能需求刚好用来实践一下,需要的朋友可以自行下载. 完整工 ...

  9. 基于 STM32 的语音识别智能家居控制系统的设计(LD3320语音识别芯片+ESP8266 WIFI模块+DHT11温湿度采集+MQ系列 烟雾及可燃气体+蜂鸣器+步进电机模拟窗帘+OLED液晶显示+

    ## **基于 STM32 的语音识别智能家居控制系统的设计(LD3320语音识别芯片+ESP8266 WIFI模块(阿里云 或ONENET或局域网)+DHT11温湿度采集+MQ系列 烟雾及可燃气体+ ...

最新文章

  1. quagga 简介 开源路由软件
  2. KVM-QEMU基本工作原理分析(二)
  3. html5 可以用adb 调试,ADB常用命令及作用
  4. 课时 21:Kubernetes 存储架构及插件使用(阚俊宝)
  5. python语言单行注释符_云计算开发学习笔记:Python3注释
  6. Bootstrap 轮番插件
  7. 在 Windows Server 2008 R2 下用 Visual Studio 2010 编译 Chrome 与 WebKit Chromium Port
  8. django数据库增删改查操作
  9. 学习ARM64页表转换流程
  10. paip.c++ 指针跟引用的区别.
  11. DICOM worklist工作原理?
  12. python数据分析实验报告_数据聚合
  13. rax Picture组件
  14. excel电子表格插件_从电子表格到漏洞管理
  15. xgboost 怎么读_你真的会读书了吗?五本书让你会读书,读好书,好读书!
  16. SOLIDWORKS中钣金展开标注是英文怎么办?
  17. 5款高逼格实用手机APP推荐,千万不能错过!
  18. 使用 fitter 拟合数据分布
  19. Linear Regression Logistic Regression
  20. 浙江python改革_重大改革:Python 语言将被加入高考科目!

热门文章

  1. python艺术画_Python也能绘制艺术画?这里有一个完整教程
  2. 显卡驱动版本 与 cuda版本
  3. 思维模型 第一性原理
  4. 【转】似大地水准面精化
  5. 比Siri更厉害的个人助理Viv 能否一统江湖?
  6. 大数据测试数据生成工具v1.0 --百万级别一键导出TXT,JSON,MYSQL 。---HIVE专属工具
  7. 【本地ASP网站】Microsoft OLE DB Provider for ODBC Drivers
  8. Excel如何制作人形条形图
  9. 7-2 航空公司VIP客户查询 (20分)
  10. 代码实现stable-diffusion模型,你也用AI生成获得一等奖的艺术图