蓝牙小车项目设计报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西安邮电大学
项目设计
题 目:基于手机遥控的 STM32ARM 小车
学 院:
计算机学院
专 业:
计算机科学与技术
班 级:
计科 1505
学 号:
04151154
学生姓名:
贺远
指导老师:
刘军
ห้องสมุดไป่ตู้
起止时间:2017 年 3 月 06 日至 2017 年 6 月 30 日
目录
第 1 章 项目概述 ............................................................................................................... 1 1.1 项目背景 .............................................................................................................. 1 1.2 任务要求 .............................................................................................................. 1
3.模块配对成功,此时指示灯双闪(一次闪 2 下,2 秒闪一次)。
5.3.3 蓝牙模块与 stm32UART 口对接连接方式
stm32 UART 口
VCC GND TXD GXD
VCC GND TXD GND
HC-05 蓝牙模块
5.3.4 程序设计
TXD
在 stm32 程序中,蓝牙模块程序包含G文XD件 uart.h 和 uart.c。 其中包含 uart_init();//UART 初始化函数,并定义全局变量 u16 bt, 在 main()函数 while()循环里,对接收到的蓝牙数据进行分析,并做 相应处理。
5.2 电机驱动模块详细设计 ..................................................................................... X 5.3 蓝牙模块详细设计 ............................................................................................. X 5.4 PWM 模块详细设计........................................................................................... X ....................................................................... X 结 论 .............................................................................................................................. X 附 录 .............................................................................................................................. X
第3章 方案论证与选择
3.1 手机 app 基于安卓手机编写,就目前所学知识有 java 和 c#语言可选, 因为目前网络和图书馆对于 java 编写 android app 的资料较多, 因此选 择用 java 语言编写手机 app。3.2 核心板选择 stm32f103ZET6 并在 keil5 环境下编写 stm32 板的程序。在 UART 口挂载蓝牙模块接收数据,用 PWM 方式控制电机各个动作。
5.4.2PWM 初始化
void pwm_init(u16 arr,u16 pcs) { GPIO_InitTypeDef GPIO_InitStructure; //声明一个结构体变量,用来初始 化 GPIO TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;// 声 明 一 个 结 构 体 变 量,用来初始化定时器
第 2 章 需求分析 ............................................................................................................... 2 第 3 章 方案论证与选择 ................................................................................................... 3 第 4 章 系统概要设计 ....................................................................................................... 4 第 5 章 系统详细设计 ....................................................................................................... 5
GPIO_SetBits(GPIOC,GPIO_Pin_2);
//
GPIO_ResetBits(GPIOC,GPIO_Pin_3); //
GPIO_SetBits(GPIOC,GPIO_Pin_4);
// }
停止:
void stop()//0000
{
GPIO_ResetBits(GPIOC,GPIO_Pin_1);
3.3 蓝牙模块
使用 hc-05 蓝牙模块接收 app 的蓝牙数据,挂载在 stm32 板 UART 口。
3.4 电机驱动模块
使用直流电机驱动模块 L298N 驱动电机,挂载在 stm32 板 GPIO 复用 PWM 口。
3.5 电源模块
使用可充电电池组为 stm32 板和直流电机驱动模块供电。
第 4 章 系统概要设计
stm32
UART PWM 直流电机驱动模块
HC-05 蓝牙模块
蓝 牙
手机 app
直流电机
驱动流程图
开始
N
Y
是否收到指令
Y
N
前进

后退
Y
N


左转
退
Y
N



右转
Y
N

Y 停止 N


第 5 章 系统详细设计

5.2 电机驱动模块详细设计
前进:
void go()//1010
{
GPIO_SetBits(GPIOC,GPIO_Pin_1);//
GPIO_ResetBits(GPIOC,GPIO_Pin_3);
GPIO_SetBits(GPIOC,GPIO_Pin_4);
}
5.3 蓝牙模块详细设计
5.3.1 引脚说明 -RXD:数据输入引脚。数据接受。 -TXD:数据发送引脚。数据发送。 -VCC:电源(3.3V~5V)。 -GND:地。
在 uart_init()函数中,对 GPIO 口复用为 uart 模式,因此主要有 GPIO 模式配置和初始化,设置 UART 口波特率为 9600,数据位长度为 8 位,1 位停止位,无奇偶效验。
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//(TX)串口输出 PA9 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//复用推挽输出 GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化串口输入 IO GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;//(RX) 串口输入 PA10 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; // 模 拟 输 入 GPIO_Init(GPIOA,&GPIO_InitStructure;//初始化 GPIO
USART_InitStructure.USART_BaudRate=9600; //波特率设置为 9600 USART_InitStructure.USART_WordLength=USART_WordLength_8b; //数据长 8 位 USART_InitStructure.USART_StopBits=USART_StopBits_1; //1 位停止位 USART_InitStructure.USART_Parity=USART_Parity_No; //无效验
5.3.2 模块指示灯说明
1.将模块上电同时(或者之前),将 KEY 接高电平,此时指示灯慢闪(1 秒亮一次),模块进入 AT 状态,此时波特率固定 38400。
2.将模块上电后,将 KEY 悬空或者接地,此时指示灯快闪(1 秒 2 次), 表示模块进入可配对状态。此时如果将 KEY 接高电平,模块也会进入 AT 状态。但是指示灯依然是快闪(1 秒 2 次)。
GPIO_ResetBits(GPIOC,GPIO_Pin_2);
//
GPIO_SetBits(GPIOC,GPIO_Pin_3);//
GPIO_ResetBits(GPIOC,GPIO_Pin_4); // }
后退:
void back()//0101
{
GPIO_ResetBits(GPIOC,GPIO_Pin_1); //
//
GPIO_ResetBits(GPIOC,GPIO_Pin_2);
GPIO_ResetBits(GPIOC,GPIO_Pin_3);
GPIO_ResetBits(GPIOC,GPIO_Pin_4); //
}
左转:
void left()//0010
{
GPIO_ResetBits(GPIOC,GPIO_Pin_1); /
第 1 章 项目概述
1.1 项目背景
智 能 小 车 是 集 成 了 多 种 高 新 技 术 , 它 不 仅 融 合 了 电 子 、 传感器、计算机硬 件、软件等许多学科的知识,而且还涉及到当今许多前沿领域的技术,它是一个国 家高科技技术水平的重要体现。通过建立起简易智能小车的设计,使我们在了解智 能化电器的工作原理的基础上,还能获得完成整体项目的能力,并掌握了 Stm32 开 发板的编程原理,为进入 ARM 领域提供基础。
GPIO_SetBits(GPIOC,GPIO_Pin_2);
GPIO_SetBits(GPIOC,GPIO_Pin_3);
GPIO_ResetBits(GPIOC,GPIO_Pin_4);
}
右转:
void right()//1000
{
GPIO_SetBits(GPIOC,GPIO_Pin_1);
GPIO_ResetBits(GPIOC,GPIO_Pin_2);
5.4 PWM 模块设计
5.4.1PWM 简介 脉冲宽度调制(PWM),是英文“ Pulse Width Modulation” 的缩写,
简称脉宽调制,是利用 微处理器的数字输出来对模拟电路进行 控制的一种 非常有效的技术。简单一点,就是对脉冲宽 度的控制。 STM32 的定时 器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。其中高 级定 时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。而通 用定时器也能同时产生多达 4 路的 PWM 输出,这样, STM32 最多可 以同时产生 30 路 PWM 输出!这里我们仅利用 TIM3 的 CH2,ch3 产 生两路 PWM 输出控制电机转速。
1.2 任务要求
(1)实现小车前进,后退,左转,右转功能 (2)实现手机蓝牙控制小车
第 2 章 需求分析
为实现“基于手机遥控的 STM32ARM 小车”,我们需要编写手机端 app 做小车控制器,以蓝牙为介质传输前进、后退、左转、右转等控制信息, 在 stm32 板接收到蓝牙传输的数据后进行简析并做出相应的动作。因此我 们还需要蓝牙模块,电机驱动模块和电机等。
相关文档
最新文档