1 Star 3 Fork 3

Top嵌入式 / 计算机挑战赛

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

计算机挑战赛

介绍

计算机能力挑战赛源码

虽然这次比赛很狗,但也学到不少,让我知道再好的程序也需要包装

一、赛题

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就可以完成恢复。 VS1053模块

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语音识别模块: 在这里插入图片描述

MIT License Copyright (c) 2021 JeckXu Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

计算机能力挑战赛源码 展开 收起
C
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C
1
https://gitee.com/JeckXu666/computer-challenge.git
git@gitee.com:JeckXu666/computer-challenge.git
JeckXu666
computer-challenge
计算机挑战赛
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891