基于arm平台的无线遥控小车设计报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
高级职业技能实训
课程设计报告
课题名称基于ARM平台的智能遥控小车
专 业电子信息工程技术
班 级电子B1512班
姓 名
同 组 人
指导教师
2017-11-02
1.设计题目、要求及分工
1.1 设计题目
本课程设计题目是基于ARM平台的智能遥控小车。在嵌入式高速发展,ARM独占一席的今天,熟练运用ARM对于电科大学生至为重要。
3
3.1
智能小车的硬件系统主要由电源模块、MCU、电阻式触摸屏模块、电机驱动、直流电机、2.4G无线通信模块、车架等组成。其硬件系统框图如下:
图3.1 硬件系统主机框图
图3.2 硬件系统从机框图
3.2
3.2
L298N是SGS公司的产品,比较常见的是15脚Multiwattt封装的L298N,内部包含4通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进电机。
图3.7电阻式显示屏实物图图3.8电阻式显示屏背部图
3
IL9341简介:26万色TFT液晶显示驱动器,支持320×240分辨率,172800字节显存(320*240*2),使用FSMC方式模拟8080接口,FSMC可用于STM32微处理器控制NORFLASH、PSRAM、和NANDFLASH存储芯片。在这里使用NORIPSRAM模式控制LCD,主要用到以下几种信号线。各信号线与信号方向和功能如下表3-1所示。
3.
市场上的主流显示屏主要有TFT、OLED、12864、诺基亚5510。12864、诺基亚5510显示分辨率不高,故不适合在本设计中使用。OLED虽然分辨率高、且又自带背光,具有极高的市场使用率。但是OLED不能触摸,不适合在人机交互界面中使用。所以本作品选择TFT液晶显示屏。市场上的TFT显示屏分为2种,一种是电阻式显示屏,还有一种是电容式显示屏。
方案二:采用STM32F103系列单片机作为主控芯片,NRF24L01模块作无线通信、以及专用的电机驱动芯片L298N来控制直流减速电机,L298N芯片是一个具有高电压大电流的全桥驱动芯片,通过单片机的IO口输出电平来改变芯片控制端的输入电平,即可以实现对电机进行正转、反转和停止操作。用该芯片作为电机驱动,驱动能力大、操作方便、稳定性好、性能优良。故决定采用该方案。
5.2.3
小车一共有四个电机,通过L298N驱动板驱动。起初调电机时有一个电机不转动,通过检测发现驱动电流不够大。最后外加移动电源解决了该问题。
在设计过程中遇到各种各样的小问题,总结一点就是需要硬件加软件结合调试,才能找出问题的根本。还有就是一定要有耐心,代码一行一行检查。其次就是要善于利用串口调试,跟踪传输的数据信息,准确定位问题在哪。最后,感谢两位老师的耐心指导,提供解决问题的思路。
1.2 设计要求
由无线通信NRF24L01发射装置、STM32F103微处理器和电阻式触摸屏构成的遥控装置向主体小车发送信息,控制小车的运行。由无线通信NRF24l01接收装置、STM32F103微处理器、L298N直流电机驱动、直流电机组合的智能小车接收遥控装置信息来达到主机遥控从机的目的。
1.3 分工
图3.9智能车外形图
4
本文研究智能小车的软件系统主要有:系统初始化;电阻式触摸屏的显示和触摸;2.4G无线数据的发送和接收;直流电机的驱动等。系统流程图如图4.1所示。
图4.1主机软件系统流程图
图4.2主机主界面图图4.3主机控制界面图
图4.4从机软件系统流程图
1、系统初始化包括:IO端口初始化、电阻式触摸屏初始化、2.4G模块初始化和系统滴答定时器初始化等。
ILI9341_DispString_EN ( 8 ,185,"left" );
ILI9341_DispStringLine_EN_CH(LINE(0)," 高级职业技能实训");
ILI9341_DispStringLine_EN_CH(LINE(1),"题目:基于ARM平台智能遥控小车");
ILI9341_DispStringLine_EN_CH(LINE(2)," 班级:B1512班");
特点:低电压,高效率,低成本,双向高速数据传输,特小体积(不需要外接天线),具有快速跳频,前向纠错,校验等功能,其工作在全球免费开放的ISM频段,无需许可证。
图3.62.4G模块实物图
3.2.3
STM32F103系列处理器是32位ARM微控制器,此系列控制芯片是意法半导体公司生产,是 Cortex-M3内核,该系列控制芯片按片内F1ash容量大小可分为三大类:小容量、中容量、大容量。ARM32位的 Cortex-M3最高72MHz工作频率支持串行单线调试(SWD)和JTAG接口调试模式,3个 USART接口,Vbat为RTC和后备寄存器供电,2个SPI接口。其价格低,功能强大。
为了方便编写代码,及界面符合用户自己的习惯,可以进入配置界面。下载程序时也需要在这里设置DEBUG。如图5.2是编译环境的设置界面。
图5.2Keil5的配置界面
Keil5的调试界面也十分良好,点击debug按钮便会进入debug调试模式,点击run便可以运行程序的主函数,随即可以设置断点或点击单步运行去调试程序。如图3-4为Kei15的调试窗口:
在本次设计中,张荣俊同学主要负责软件的设计与分析,赖庆鹏同学和汤青红同学负责硬件电路的设计以及课程报告的撰写,最后由我们三个人共同交流分析,对整个系统以及设计报告进行了优化和改良。
2.
方案一:采用STC89C52单片机作为主控芯片,ESPP8266WIFI模块作无线通信、以及采用继电器对电动机进行控制,通过切换电动机的开关来调整小车的速度。该方案的优点是电路相对比较简单,但是它的缺点也比较多,如:ESP8266WiFi模块通信协议较为复杂,而继电器的响应时间偏慢,寿命较短,容易损坏,可靠性也不是很高。故决定放弃此方案。
5、电机驱动:MCU对无线模块接收的数据进行解析,接收信息无误后使能L298N直流电机驱动模块驱动直流电机。本设计研究的智能车的软件系统所使用的编程语言是C语言。
5
5
本作品的编译环境为Keil,当前最高版本是Keil5,此软件编译环境界面十分良好。可以用户自行设置。图5.1是Keil的主界面
图5.1Keil5的主界面
break;
}
case ERROR:
{
ILI9341_DispStringLine_EN_CH(LINE(19),"NRF与MCU连接失败!!");
break;
}
}
if(XPT2046_TouchDetect() == TOUCH_PRESSED)//检测是否有触摸操作
{
BEEP_ON();
XPT2046_Get_TouchedPoint(&zuobiao,strXPT2046_TouchPara);//获取触摸坐标
附录1
程序1:主机主界面程序
uint8_t display_home(void)
{
display_picture(0,0,240,320,gImage_1);//显示九江学院校徽图片
LCD_SetFont(&Font8x16);//设置显示字体
LCD_SetColors(BLUE,WHITE);//设置显示字体颜色
LCD_SetColors(BLUE,WHITE);
ILI9341_DispStringLine_EN_CH(LINE(3)," 2.4G遥控小车控制面板");
LCD_SetFont(&Font16x24);
LCD_SetColors(GREEN,WHITE);
ILI9341_DrawRectangle (80,80,80,80,1);
图5.3keil5的调试窗口
5
5.2.1
屏幕板载XPT2046芯片起初读取坐标信息有错,通过Keil软件DEBUG发现是在使用软件模拟SPI时序时延时时间没处理好。
5.2.2
在调试2.4G无线通信模块时,模块发送数据异常,通过Keil软件DEBUG读取模块状态寄存器的值得出原因是主机未接收到从机的应答信号导致数据发送异常。
参考文献
[1]刘火良.STM32库开发实战指南[M].北京:机械工业出版社,2013:320-422
[2]蒙博宇.STM32自学笔记[M].北京:北京航空航天大学出版社,2012:230-240
[3]韩旭,王娣. C语言从入门到精通[M].北京:清华大学出版社,2010:244-260
[4]胡仁喜.Altium Designer 16从入门到精通[M].北京:机械工业出版社,2016:118-168
LCD_SetColors(BLACK,RED);
ILI9341_DispStringLine_EN_CH(LINE(17)," 请点击此处进入控制界面 ");
LCD_SetColors(BLACK,GREEN);
while(1)
{
switch(status)
{
case SUCCESS:
{
ILI9341_DispStringLine_EN_CH(LINE(19),"NRF与MCU连接成功!!");
L298N可接受标准TTL逻辑电平信号VSS,VSS可接4.5~7V电压。4脚VS接电源电压,VS电压范围为+2.5~46V。输出电流可达2.5A,可驱动电感性负载。1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。L298N可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电机。
}
}
}
程序2:主机控制界面程序
uint8_t display_control(void)
{
LCD_SetColors(WHITE,WHITE);
ILI9341_DrawRectangle (0,0,240,320,1);
ILI9341_Clear(0,0,LCD_X_LENGTH,LCD_Y_LENGTH);//清屏,显示全黑
表3-1 FSMC引脚说明
FSMC信号名
信号方向
功能
CLK
输出
时钟(同步突发模式使用)
A[25:0]
输出
地址总线
D[15:0]
输入/输出
双向数据总线
NE[x]
输出
片选,x=1...4
NOE
输出
输出使能
NWE
输出
写使能
NWAIT
输入
NOR内存要求FSMC等待的信号
3.
本章首先介绍了智能小车硬件系统框架,然后对硬件系统框架中各个模块在系统设计中担当的具体角色与其性能进行了分析与介绍。在此基础上对智能小车的硬件进行了组装,智能车整体外形如下图。
2、触摸屏检测:触摸屏检测的过程主要是MCU端口通过SPI读取液晶屏板载XPT2046芯片坐标信息,另经过触摸屏校准算法,执行相应的功能。
3、发送数据:触摸屏获取的坐标信息后,使能2.4G无线模块,再通过模块发送对应的信息。
4、接收数据:接收数据功能在从机小车上,从机启动后,2.4G无线模块进入数据接收模式,等待接收主机发送的数据。
图3.3L298N驱动模块原理图
图3.4L298N驱动模块实物正面图图3.5L298N驱动模块实物背面图
3.2.2
本设计无线通信用到了NRF24L01模块,2.4G通信是无线通信技术的一种,因为其工作在2.400GHz~2.4835GHz频段之间,所以被称为2.4G无线通信技术。是市面上主要无线技术(包括 Bluetooth、27M、2.4G)之一。多应用于无线键盘鼠标,四轴飞行器。
ILI9341_DispStringLine_EN_CH(LINE(3),"姓名:张荣俊、赖庆鹏、汤青红");
ILI9341_DispStringLine_EN_CH(LINE(4),"学号: 17号、 22号、 26号");
LCD_SetColors(RED,WHITE);
ILI9341_DrawRectangle (0,270,240,20,1);
SysTick_Delay_ms(100);
if(zuobiao.x >= 0 && zuobiao.x <= 240 && zuobiao.y >= 270 && zuobiao.y <= 286)
{
flag_function =1;
return flag_function;
}
}ห้องสมุดไป่ตู้
else
{
BEEP_OFF();
LCD_SetColors(WHITE,GREEN);
ILI9341_DispString_EN (105 ,110, "go" );
LCD_SetColors(BLUE,WHITE);
ILI9341_DrawRectangle (0,160,80,80,1);
LCD_SetColors(WHITE,BLUE);
课程设计报告
课题名称基于ARM平台的智能遥控小车
专 业电子信息工程技术
班 级电子B1512班
姓 名
同 组 人
指导教师
2017-11-02
1.设计题目、要求及分工
1.1 设计题目
本课程设计题目是基于ARM平台的智能遥控小车。在嵌入式高速发展,ARM独占一席的今天,熟练运用ARM对于电科大学生至为重要。
3
3.1
智能小车的硬件系统主要由电源模块、MCU、电阻式触摸屏模块、电机驱动、直流电机、2.4G无线通信模块、车架等组成。其硬件系统框图如下:
图3.1 硬件系统主机框图
图3.2 硬件系统从机框图
3.2
3.2
L298N是SGS公司的产品,比较常见的是15脚Multiwattt封装的L298N,内部包含4通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进电机。
图3.7电阻式显示屏实物图图3.8电阻式显示屏背部图
3
IL9341简介:26万色TFT液晶显示驱动器,支持320×240分辨率,172800字节显存(320*240*2),使用FSMC方式模拟8080接口,FSMC可用于STM32微处理器控制NORFLASH、PSRAM、和NANDFLASH存储芯片。在这里使用NORIPSRAM模式控制LCD,主要用到以下几种信号线。各信号线与信号方向和功能如下表3-1所示。
3.
市场上的主流显示屏主要有TFT、OLED、12864、诺基亚5510。12864、诺基亚5510显示分辨率不高,故不适合在本设计中使用。OLED虽然分辨率高、且又自带背光,具有极高的市场使用率。但是OLED不能触摸,不适合在人机交互界面中使用。所以本作品选择TFT液晶显示屏。市场上的TFT显示屏分为2种,一种是电阻式显示屏,还有一种是电容式显示屏。
方案二:采用STM32F103系列单片机作为主控芯片,NRF24L01模块作无线通信、以及专用的电机驱动芯片L298N来控制直流减速电机,L298N芯片是一个具有高电压大电流的全桥驱动芯片,通过单片机的IO口输出电平来改变芯片控制端的输入电平,即可以实现对电机进行正转、反转和停止操作。用该芯片作为电机驱动,驱动能力大、操作方便、稳定性好、性能优良。故决定采用该方案。
5.2.3
小车一共有四个电机,通过L298N驱动板驱动。起初调电机时有一个电机不转动,通过检测发现驱动电流不够大。最后外加移动电源解决了该问题。
在设计过程中遇到各种各样的小问题,总结一点就是需要硬件加软件结合调试,才能找出问题的根本。还有就是一定要有耐心,代码一行一行检查。其次就是要善于利用串口调试,跟踪传输的数据信息,准确定位问题在哪。最后,感谢两位老师的耐心指导,提供解决问题的思路。
1.2 设计要求
由无线通信NRF24L01发射装置、STM32F103微处理器和电阻式触摸屏构成的遥控装置向主体小车发送信息,控制小车的运行。由无线通信NRF24l01接收装置、STM32F103微处理器、L298N直流电机驱动、直流电机组合的智能小车接收遥控装置信息来达到主机遥控从机的目的。
1.3 分工
图3.9智能车外形图
4
本文研究智能小车的软件系统主要有:系统初始化;电阻式触摸屏的显示和触摸;2.4G无线数据的发送和接收;直流电机的驱动等。系统流程图如图4.1所示。
图4.1主机软件系统流程图
图4.2主机主界面图图4.3主机控制界面图
图4.4从机软件系统流程图
1、系统初始化包括:IO端口初始化、电阻式触摸屏初始化、2.4G模块初始化和系统滴答定时器初始化等。
ILI9341_DispString_EN ( 8 ,185,"left" );
ILI9341_DispStringLine_EN_CH(LINE(0)," 高级职业技能实训");
ILI9341_DispStringLine_EN_CH(LINE(1),"题目:基于ARM平台智能遥控小车");
ILI9341_DispStringLine_EN_CH(LINE(2)," 班级:B1512班");
特点:低电压,高效率,低成本,双向高速数据传输,特小体积(不需要外接天线),具有快速跳频,前向纠错,校验等功能,其工作在全球免费开放的ISM频段,无需许可证。
图3.62.4G模块实物图
3.2.3
STM32F103系列处理器是32位ARM微控制器,此系列控制芯片是意法半导体公司生产,是 Cortex-M3内核,该系列控制芯片按片内F1ash容量大小可分为三大类:小容量、中容量、大容量。ARM32位的 Cortex-M3最高72MHz工作频率支持串行单线调试(SWD)和JTAG接口调试模式,3个 USART接口,Vbat为RTC和后备寄存器供电,2个SPI接口。其价格低,功能强大。
为了方便编写代码,及界面符合用户自己的习惯,可以进入配置界面。下载程序时也需要在这里设置DEBUG。如图5.2是编译环境的设置界面。
图5.2Keil5的配置界面
Keil5的调试界面也十分良好,点击debug按钮便会进入debug调试模式,点击run便可以运行程序的主函数,随即可以设置断点或点击单步运行去调试程序。如图3-4为Kei15的调试窗口:
在本次设计中,张荣俊同学主要负责软件的设计与分析,赖庆鹏同学和汤青红同学负责硬件电路的设计以及课程报告的撰写,最后由我们三个人共同交流分析,对整个系统以及设计报告进行了优化和改良。
2.
方案一:采用STC89C52单片机作为主控芯片,ESPP8266WIFI模块作无线通信、以及采用继电器对电动机进行控制,通过切换电动机的开关来调整小车的速度。该方案的优点是电路相对比较简单,但是它的缺点也比较多,如:ESP8266WiFi模块通信协议较为复杂,而继电器的响应时间偏慢,寿命较短,容易损坏,可靠性也不是很高。故决定放弃此方案。
5、电机驱动:MCU对无线模块接收的数据进行解析,接收信息无误后使能L298N直流电机驱动模块驱动直流电机。本设计研究的智能车的软件系统所使用的编程语言是C语言。
5
5
本作品的编译环境为Keil,当前最高版本是Keil5,此软件编译环境界面十分良好。可以用户自行设置。图5.1是Keil的主界面
图5.1Keil5的主界面
break;
}
case ERROR:
{
ILI9341_DispStringLine_EN_CH(LINE(19),"NRF与MCU连接失败!!");
break;
}
}
if(XPT2046_TouchDetect() == TOUCH_PRESSED)//检测是否有触摸操作
{
BEEP_ON();
XPT2046_Get_TouchedPoint(&zuobiao,strXPT2046_TouchPara);//获取触摸坐标
附录1
程序1:主机主界面程序
uint8_t display_home(void)
{
display_picture(0,0,240,320,gImage_1);//显示九江学院校徽图片
LCD_SetFont(&Font8x16);//设置显示字体
LCD_SetColors(BLUE,WHITE);//设置显示字体颜色
LCD_SetColors(BLUE,WHITE);
ILI9341_DispStringLine_EN_CH(LINE(3)," 2.4G遥控小车控制面板");
LCD_SetFont(&Font16x24);
LCD_SetColors(GREEN,WHITE);
ILI9341_DrawRectangle (80,80,80,80,1);
图5.3keil5的调试窗口
5
5.2.1
屏幕板载XPT2046芯片起初读取坐标信息有错,通过Keil软件DEBUG发现是在使用软件模拟SPI时序时延时时间没处理好。
5.2.2
在调试2.4G无线通信模块时,模块发送数据异常,通过Keil软件DEBUG读取模块状态寄存器的值得出原因是主机未接收到从机的应答信号导致数据发送异常。
参考文献
[1]刘火良.STM32库开发实战指南[M].北京:机械工业出版社,2013:320-422
[2]蒙博宇.STM32自学笔记[M].北京:北京航空航天大学出版社,2012:230-240
[3]韩旭,王娣. C语言从入门到精通[M].北京:清华大学出版社,2010:244-260
[4]胡仁喜.Altium Designer 16从入门到精通[M].北京:机械工业出版社,2016:118-168
LCD_SetColors(BLACK,RED);
ILI9341_DispStringLine_EN_CH(LINE(17)," 请点击此处进入控制界面 ");
LCD_SetColors(BLACK,GREEN);
while(1)
{
switch(status)
{
case SUCCESS:
{
ILI9341_DispStringLine_EN_CH(LINE(19),"NRF与MCU连接成功!!");
L298N可接受标准TTL逻辑电平信号VSS,VSS可接4.5~7V电压。4脚VS接电源电压,VS电压范围为+2.5~46V。输出电流可达2.5A,可驱动电感性负载。1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。L298N可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电机。
}
}
}
程序2:主机控制界面程序
uint8_t display_control(void)
{
LCD_SetColors(WHITE,WHITE);
ILI9341_DrawRectangle (0,0,240,320,1);
ILI9341_Clear(0,0,LCD_X_LENGTH,LCD_Y_LENGTH);//清屏,显示全黑
表3-1 FSMC引脚说明
FSMC信号名
信号方向
功能
CLK
输出
时钟(同步突发模式使用)
A[25:0]
输出
地址总线
D[15:0]
输入/输出
双向数据总线
NE[x]
输出
片选,x=1...4
NOE
输出
输出使能
NWE
输出
写使能
NWAIT
输入
NOR内存要求FSMC等待的信号
3.
本章首先介绍了智能小车硬件系统框架,然后对硬件系统框架中各个模块在系统设计中担当的具体角色与其性能进行了分析与介绍。在此基础上对智能小车的硬件进行了组装,智能车整体外形如下图。
2、触摸屏检测:触摸屏检测的过程主要是MCU端口通过SPI读取液晶屏板载XPT2046芯片坐标信息,另经过触摸屏校准算法,执行相应的功能。
3、发送数据:触摸屏获取的坐标信息后,使能2.4G无线模块,再通过模块发送对应的信息。
4、接收数据:接收数据功能在从机小车上,从机启动后,2.4G无线模块进入数据接收模式,等待接收主机发送的数据。
图3.3L298N驱动模块原理图
图3.4L298N驱动模块实物正面图图3.5L298N驱动模块实物背面图
3.2.2
本设计无线通信用到了NRF24L01模块,2.4G通信是无线通信技术的一种,因为其工作在2.400GHz~2.4835GHz频段之间,所以被称为2.4G无线通信技术。是市面上主要无线技术(包括 Bluetooth、27M、2.4G)之一。多应用于无线键盘鼠标,四轴飞行器。
ILI9341_DispStringLine_EN_CH(LINE(3),"姓名:张荣俊、赖庆鹏、汤青红");
ILI9341_DispStringLine_EN_CH(LINE(4),"学号: 17号、 22号、 26号");
LCD_SetColors(RED,WHITE);
ILI9341_DrawRectangle (0,270,240,20,1);
SysTick_Delay_ms(100);
if(zuobiao.x >= 0 && zuobiao.x <= 240 && zuobiao.y >= 270 && zuobiao.y <= 286)
{
flag_function =1;
return flag_function;
}
}ห้องสมุดไป่ตู้
else
{
BEEP_OFF();
LCD_SetColors(WHITE,GREEN);
ILI9341_DispString_EN (105 ,110, "go" );
LCD_SetColors(BLUE,WHITE);
ILI9341_DrawRectangle (0,160,80,80,1);
LCD_SetColors(WHITE,BLUE);