嵌入式实验报告 多功能智能小车
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.2红外传感器ADC3
2.3 TIM计数PWM输出电机5
2.4 USART串口蓝牙通讯7
2.5 NVIC EXTI中断处理9
3程序流程图10
4关键代码注解11
4.1指令对照表11
4.2 Main函数11
4.3电机控制12
4.4串口中断服务子程序14
4.5巡线算法15
4.6避障算法16
4.7简易跟随函数17
1.3确定最终方案
经过理论、实验课的学习以及课后的小组讨论结合实际情况,我们组最终确定的智能小车所实现的功能如下:
①智能小车巡线前进
②智能小车避障转弯
③蓝牙通讯控制
④简易跟随运动物体
⑤给定距离行驶
⑥自由控制小车运动
⑦手பைடு நூலகம்设定速度
⑧速度反馈调节
选定的这些功能,有的复杂有的简单,有的还需要和其他功能联动,这样既能巩固我们在课上学习的编写程序的能力,加深理解单片机,又具有一定的难度,对组员来说也是一种挑战和提升。
1.1.3课后讨论
实验课程结束以后,为了实现大作业要求的巡线、避障以外的一些其他功能,我们也从多方面搜索查阅了相关的资料并对可实现的功能进行了小组讨论,提出的方案有:利用蓝牙实现与移动设备的通讯、增加声音模块让小车“说话”、像控制游戏里的角色一样自由控制小车行驶、上下坡自动调速、温度检测、定距离行驶以及简易跟随。
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//每个ADC独立工作
//ADC扫描所有规则转换通道ADC_SQRx和注入转换通道ADC_JSQR
ADC_InitStructure.ADC_ScanConvMode = ENABLE;
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//连续转换模式开启
1.2结合实际情况
巡线、避障功能可以很容易地做出场地进行调试;蓝牙和声音模块都属于自己增加的模块类的,蓝牙通讯易于控制,而声音模块虽然函数可能略为简单,但最多只能发出几种不同的声音,不可能做到像人一样说话,并且小车已自带有蜂鸣器;简易跟随、定距离行驶和自由控制都不需要增加其他东西,只要编写函数即可;温度检测只能检测环境温度,可以增加温度过高过低时的报警系统,但意义并不大,并且条件实现稍困难;上下坡自动调速经测试,发现小车在不同坡度(±30°左右之间)速度适中,爬坡能力也较好,故自动调速也略显多余,但可以增加手动调速功能即设定小车的行驶速度,以及速度反馈功能保证速度稳定。
1.1.2助教指导
在课上我们学习到理论方面的知识,而要让我们深入理解和掌握相关操作,还需要实验课上的动手实践,这就离不开助教的帮助。从一开始的安装软件、介绍单片机,到查阅参考手册逐步编写函数,再到最后的实现小车的各种功能,每一步助教都十分详细地讲解了从手册查阅到的相关寄存器的配置、打开时钟、相应功能函数的编写。小车最后能够流畅运行,很大程度上都归功于助教。并且,从助教教的课程中,我们也得到了我们的灵感:通用接口、中断、传感器、时钟等等,以及助教发给我们的代码、演示文档和多个小作业、大作业参考都给了我们很大的帮助。
ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 1, ADC_SampleTime_239Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 2, ADC_SampleTime_239Cycles5);
图 1 小车前后机械结构对比图
2.2
红外传感器和模数转换器ADC是实现小车巡线、避障等重要功能不可缺少的部分,其作用是红外传感器感应光线、距离的变化,经过模数转换器将采集到的信息转化为数字量,用于实现各项功能。其初始化函数如下:
void ADC_Configuration(void)
{
/* ADC1 configuration ------------------------------------------------------*/
/*关闭ADC外部触发,即禁止由外部触发模数转换*/
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//转换数据右对齐
ADC_InitStructure.ADC_NbrOfChannel = 4; //开启4个通道
ADC_Init(ADC1, &ADC_InitStructure); //调用固件库函数完成初始化
/* ADC1 regular channel configuration */ //采样周期为239.5个周期
2实现方案
2.1
为了更好地实现巡线、避障等功能,在编写相应的函数之前,我们首先对小车的机械结构做了一些调整。如图1所示,左侧为小车的原始结构,右侧为调整后的结构,可以看出,我们将四个红外传感器的间距加大,虽然最边上的传感器超出的小车的底板边缘,但我们也利用纸板和胶带以及更长的导线将传感器固定在了相应的位置。这样做的好处是,中间两个传感器是探测向下的距离的,加宽间距有利于巡线时更好地检测到两侧的空白;旁边两个传感器是用于避障的,往边缘移动使得宽度增加,更接近于小车的宽度,改善了因传感器检测宽度不足导致的车轮前进受阻。
4.8设定行驶距离18
4.9设定行驶速度18
5调试问题19
6现象及输出20
7实验课感想21
1选题思路
1.1创意来源
1.1.1课程学习
在嵌入式系统这门专业课以及单片机原理这门选修课上,我们学习到了很多有关嵌入式系统和单片机的工作原理和使用方法,了解了单片机大体能通过通用串行口实现的功能,包括串口通信、传感器检测、输出PWM波控制电机运转等功能。
组别
07
嵌入式系统实验报告
项目名称:多功能智能小车
学号
姓名
主要工作
蓝牙通信、个性化功能(40%)
避障、实验报告(30%)
巡线、视频(30%)
2016年6月6日
1选题思路1
1.1创意来源1
1.1.1课程学习1
1.1.2助教指导1
1.1.3课后讨论1
1.2结合实际情况1
1.3确定最终方案2
2实现方案3
2.1机械改造3
2.3 TIM计数PWM输出电机5
2.4 USART串口蓝牙通讯7
2.5 NVIC EXTI中断处理9
3程序流程图10
4关键代码注解11
4.1指令对照表11
4.2 Main函数11
4.3电机控制12
4.4串口中断服务子程序14
4.5巡线算法15
4.6避障算法16
4.7简易跟随函数17
1.3确定最终方案
经过理论、实验课的学习以及课后的小组讨论结合实际情况,我们组最终确定的智能小车所实现的功能如下:
①智能小车巡线前进
②智能小车避障转弯
③蓝牙通讯控制
④简易跟随运动物体
⑤给定距离行驶
⑥自由控制小车运动
⑦手பைடு நூலகம்设定速度
⑧速度反馈调节
选定的这些功能,有的复杂有的简单,有的还需要和其他功能联动,这样既能巩固我们在课上学习的编写程序的能力,加深理解单片机,又具有一定的难度,对组员来说也是一种挑战和提升。
1.1.3课后讨论
实验课程结束以后,为了实现大作业要求的巡线、避障以外的一些其他功能,我们也从多方面搜索查阅了相关的资料并对可实现的功能进行了小组讨论,提出的方案有:利用蓝牙实现与移动设备的通讯、增加声音模块让小车“说话”、像控制游戏里的角色一样自由控制小车行驶、上下坡自动调速、温度检测、定距离行驶以及简易跟随。
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//每个ADC独立工作
//ADC扫描所有规则转换通道ADC_SQRx和注入转换通道ADC_JSQR
ADC_InitStructure.ADC_ScanConvMode = ENABLE;
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//连续转换模式开启
1.2结合实际情况
巡线、避障功能可以很容易地做出场地进行调试;蓝牙和声音模块都属于自己增加的模块类的,蓝牙通讯易于控制,而声音模块虽然函数可能略为简单,但最多只能发出几种不同的声音,不可能做到像人一样说话,并且小车已自带有蜂鸣器;简易跟随、定距离行驶和自由控制都不需要增加其他东西,只要编写函数即可;温度检测只能检测环境温度,可以增加温度过高过低时的报警系统,但意义并不大,并且条件实现稍困难;上下坡自动调速经测试,发现小车在不同坡度(±30°左右之间)速度适中,爬坡能力也较好,故自动调速也略显多余,但可以增加手动调速功能即设定小车的行驶速度,以及速度反馈功能保证速度稳定。
1.1.2助教指导
在课上我们学习到理论方面的知识,而要让我们深入理解和掌握相关操作,还需要实验课上的动手实践,这就离不开助教的帮助。从一开始的安装软件、介绍单片机,到查阅参考手册逐步编写函数,再到最后的实现小车的各种功能,每一步助教都十分详细地讲解了从手册查阅到的相关寄存器的配置、打开时钟、相应功能函数的编写。小车最后能够流畅运行,很大程度上都归功于助教。并且,从助教教的课程中,我们也得到了我们的灵感:通用接口、中断、传感器、时钟等等,以及助教发给我们的代码、演示文档和多个小作业、大作业参考都给了我们很大的帮助。
ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 1, ADC_SampleTime_239Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 2, ADC_SampleTime_239Cycles5);
图 1 小车前后机械结构对比图
2.2
红外传感器和模数转换器ADC是实现小车巡线、避障等重要功能不可缺少的部分,其作用是红外传感器感应光线、距离的变化,经过模数转换器将采集到的信息转化为数字量,用于实现各项功能。其初始化函数如下:
void ADC_Configuration(void)
{
/* ADC1 configuration ------------------------------------------------------*/
/*关闭ADC外部触发,即禁止由外部触发模数转换*/
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//转换数据右对齐
ADC_InitStructure.ADC_NbrOfChannel = 4; //开启4个通道
ADC_Init(ADC1, &ADC_InitStructure); //调用固件库函数完成初始化
/* ADC1 regular channel configuration */ //采样周期为239.5个周期
2实现方案
2.1
为了更好地实现巡线、避障等功能,在编写相应的函数之前,我们首先对小车的机械结构做了一些调整。如图1所示,左侧为小车的原始结构,右侧为调整后的结构,可以看出,我们将四个红外传感器的间距加大,虽然最边上的传感器超出的小车的底板边缘,但我们也利用纸板和胶带以及更长的导线将传感器固定在了相应的位置。这样做的好处是,中间两个传感器是探测向下的距离的,加宽间距有利于巡线时更好地检测到两侧的空白;旁边两个传感器是用于避障的,往边缘移动使得宽度增加,更接近于小车的宽度,改善了因传感器检测宽度不足导致的车轮前进受阻。
4.8设定行驶距离18
4.9设定行驶速度18
5调试问题19
6现象及输出20
7实验课感想21
1选题思路
1.1创意来源
1.1.1课程学习
在嵌入式系统这门专业课以及单片机原理这门选修课上,我们学习到了很多有关嵌入式系统和单片机的工作原理和使用方法,了解了单片机大体能通过通用串行口实现的功能,包括串口通信、传感器检测、输出PWM波控制电机运转等功能。
组别
07
嵌入式系统实验报告
项目名称:多功能智能小车
学号
姓名
主要工作
蓝牙通信、个性化功能(40%)
避障、实验报告(30%)
巡线、视频(30%)
2016年6月6日
1选题思路1
1.1创意来源1
1.1.1课程学习1
1.1.2助教指导1
1.1.3课后讨论1
1.2结合实际情况1
1.3确定最终方案2
2实现方案3
2.1机械改造3