1、基于蓝牙技术的智能小车设计 田小建 江苏省南通中等专业学校 摘 要: 智能作为现代的新发明是以后的发展方向, 它可以按照预先设定的模式在一个环境里自动地运作, 不需要人为的管理, 可应用于科学勘探等的用途。智能小车的发展主要是在自动化控制领域, 全国职业院校技能大赛电子整机装调项目近年来的赛题越来越侧重于实际应用。为了培养学生动手及编程能力, 同时提高学生的兴趣, 我校电子技能训练队提出了“基于蓝牙技术的智能小车的设计”项目。关键词: STM32 系统; 蓝牙; Android 系统; 壁障; 收稿日期:2017-01-10Received: 2017-01-10基于 Android 开源手机
2、平台, 借助于蓝牙技术, 设计一种无线遥控小车的解决方案。智能小车主要以 STM32F103RC 处理器为核心, 通过手机蓝牙, 遥控实现小车前后、左右移动以及小车超声波测距和通过红外线光电传感器实现小车的避障功能等。设计从最小系统到 Android 手机蓝牙遥控、超声波测距和红外避障, 都按科学严谨态度完成。通过调试检测各模块, 得到正确的信号输出, 实现其功能。结合程序, 通过微处理器的控制, 将各模块有效整合, 达到所预期目标, 最终完成设计与制作, 使小车在一定的环境中运转。结合 STM32 的 Cortex-M3 内核处理器、蓝牙通信模块、电机驱动模块、壁障电路等硬件模块组成的蓝牙遥
3、控小车。实现小车的前进、后退、前左转弯、前右转弯、后左转弯、后右转弯等实时控制功能。为遥控玩具小车的设计提出了一种新的思路。1 功能与结构智能小车分为两大部分:Android 平台上位机和微处理器下位机。智能小车下位机主要含有如下电路功能模块:STM32F103RC 作为微处理器的最小系统、L298N作为直流电机驱动、HC-SR04 超声波测距模块电路、主从收发一体蓝牙模块 HC-05、红外壁障模块、红外对管测速、LCD1602 液晶显示等器件构成。1.1 上位机上位机通过图形界面, 触控屏幕不同的按键, 上位机将根据按键内容, 开启手机蓝牙进程, 通过蓝牙以不同的指令格式传输至下位机。上位机
4、触屏按键值主要有以下几部分内容:加速、减速、前行、左转、右转、后退、后转和停止指令按键。上位机的结构框图如图 1 所示。图 1 上位机系统结构框图 下载原图上位机采用预设定的通信格式, 以 HC-05 主从蓝牙模块为媒介, 发送指定指令, 控制智能小车运行状态。上位机主要依托 Android 手机进行软件编程, 以手机触屏按键为例, Android 操作系统通过响应不同事件发生, 及时发出相应指令代码, 做到上位机与下位机无缝连接。1.2 下位机智能小车整体供电电源采用锂电池供电, 其输出电压高、电池容量大等优点很适合为智能小车稳定持久的电源。下位机通过接收手机遥控指令, 能够远程控制智能小车
5、运行。智能小车在运行中, 实时通过前方超声波测距电路测量前方障碍物距离以及智能小车后方红外壁障电路, 能够有效地防止运行中碰撞其他物体。当小车处于停止运行状态时, 系统将采集供电电池电压, 并显示前方障碍物距离。其结构框图如图 2 所示。图 2 下位机系统结构框图 下载原图2 硬件基于蓝牙技术的智能小车其硬件电路组成电路基本选用市场上可以购买的成熟模块电路, 仅将其中几处核心模块做适当介绍供各位读者参考。2.1 核心控制电路智能小车核心控制器需要有很强的控制能力, 普通的的 8 位单片机机不能满足其所达到的控制要求。为了实现这一控制目的, 采用了由意法半导体公司生产的 STM32F103RCT
6、6 控制器, 该控制器是以 ARM-Cortex-M3 为内核的 32 位 SOC 系统, 拥有 72-MHz 工作频率, 可以胜任智能小车所要求的高速信息处理能力。2.2 电源智能小车因其需要供电稳点及电机驱动电流大等原因, 所以采用锂电池组供电。电池组采用聚合物锂离子电芯组合, 聚合物电芯具有内阻小、容量大、循环次数多、寿命长、无记忆效应防爆等优点;电池组带智能控制保护电路, 能防止过充、过放和过流。除微控制器为 3.3V 供电外, 超声波模块和红外壁障功能电路为 5V 直流供电电源。因此智能小车稳压电路分为两大模块:5V 稳压电路和 3.3V 稳压电路。综合考虑以上因素稳压单元选择了稳压
7、精度高、压降小的 AMS1117 正向低压降稳压器, 其具有 1%的稳压精度。5V 直流电主要为超声波和红外壁障使用。锂电池电源通过 C1 和 C2 电容滤波, 经 AMS1117-5.0 芯片将电池电源稳压至 5.0V。电路如图 3 所示。图 3 5V 稳压电路 下载原图直流电源经过 5V 稳压之后, 通过 C5 电容滤波, 经 AMS1117-3.3 芯片将 5V 直流电源稳压至 3.3V。电路如图 4 所示。图 4 3.3V 稳压电路 下载原图为了确保 AMS1117 的稳定性, 输出需要连接一个小容量的钽电容。3 软件3.1 上位机程序流程图手机控制端主要任务是提供指令发送服务, 用户
8、通过触碰不同的屏幕按键, 上位机将给智能小车下达不同的运行指令。上位机界面含有如下几个触屏键:加速、减速、左转、右转、前行、后退、后转和退出触碰键。上位机程序流程图如图 5 所示。图 5 上位机流程图 下载原图上位机初始化主要包含系统蓝牙权限获取、触屏按键错误处理方式。每一个触屏按键都对应地产生一个事件, 事件将会被系统及时获取并加以处理, 即蓝牙指令发送、蓝牙设备选择或者退出应用程序。3.2 下位机程序流程图智能小车通过 HC-05 蓝牙模块接收到上位机的指令, 把指令转化为实际运行动作, 最终实现小车的无线遥控功能。下位机程序主要设计方法为:初始化各个功能模块、等待指令到达、响应任务指令。
9、下位机软件流程图如图 6 所示, 图 6 下位机程序流程图 下载原图在程序初始化进程主要有如下功能配置:(1) 系统时钟配置, 时钟倍频至 72MHz。(2) 配置 I/O 输入输出方向及 I/O 时钟频率。(3) 串口初始化及 12 位 AD 功能配置。(4) 定时器/PWM 方式配置。(5) 外部中断函数工作方式配置。(6) 液晶屏初始化设置。经过上述初始化进程之后, 智能小车将进入停机等待任务状态。智能也可通过控制器面板上功能按键进行点动控制小车运行。3.3 开发环境APP Inventor 是一款云端 Android 程序开发工具, 用户只需注册一个谷歌帐号, 便可通过网页放置界面控件
10、及设置控件属性。把编辑完成的界面及控件打包下载至 PC 机进行在线编程, 云端自动获取用户编辑信息。用户完成模块拼接之后, 通过云端打包成 APK 格式应用程序, 简单完成了软件编程。APP Inventor 主要是让使用者可以跳过那些没有看懂的程序代码, 直接利用APP Inventor 中的模板来“拼”软件, 同时也让大家可以直接在 Android 手机上面测试, 同时手机的所有大小功能, 从 GPS、通话到加速感应器等, 几乎都可以加入到自行拼凑的软件当中。如图 7 所示。图 7 App Inventor 部件放置界面 下载原图3.4 APP Inventor 编程积木APP Inven
11、tor 可将多个指令集合在一起, 之后可透过呼叫该程序来使用这些指令。当建立一个程序之后, APP Inventor 会自动产生一个呼叫 (call) 指令。当建立一个新的程序指令时, APP Inventor 会自动取名, 也可以自动取所需要的名称。在一个程序中的程序名称必须是唯一的, APP Inventor 不允许在同一个程序中有两个名称相同的程序。APP Inventor 会自动调整对应的呼叫指令名称。如图 8 所示, 分别由文本模块编辑指令、算式运算指令、逻辑控制指令和过程函数调用指令模块等组成。图 8 App Inventor 指令模块 下载原图3.5 APP Inventor 程
12、序积木通过谷歌云端网页放置控件及设置控件属性后, 用户便可打包控件信息下载至PC 进行在线编程。PC 机以 Java 虚拟机为依托, 进行 Android 应用程序开发。用户在虚拟机内根据设计要求放置指令方块, 并实时根据设计要求连接Android 手机在线, 进行硬件调试。依据上述原理, 本设计部分功能积木模块如图 9 所示。图 9 App Inventor 程序积木 下载原图3.6 下位机软件3.6.1 PWM 调速配置STM32 微处理器的定时器除了 TIM6 和 TIM7 外, 其他的定时器都可以用来产生PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的
13、PWM 输出。而通用定时器也能同时产生多达 4 路的 PWM 输出, 这样, STM32 最多可以同时产生 30 路 PWM 输出。将介绍由 TIM3 的通道 1 产生一路的 PWM 方波。由于 TIM3 计数器的时钟频率为 72MHz, 要想得到各通道 PWM 输出频率为 20KHz, PWM 配置步骤如下:(1) TIM3CLK=72 MHz, Prescaler=0 (不分频) , TIM3counter clock=72 MHz。(2) PWM 输出频率=TIM3 counter clock/ (ARR+1) , PWM 设置为 100Hz。如果不对 TIM3CLK 预分频, 那么不可
14、能得到 100Hz 低频。设置分频比=1000, 那么TIM3counter clock=72KHz;然后再对 TIM3 自动装载值, 装载值从 0 开始计数, PWM 输出频率见如下公式:根据公式和预先设定的寄存器值, 便可得到 100Hz 的 PWM 输出方波。设计程序代码如下:3.6.2 壁障设置智能小车含有两个壁障功能, 前置超声波测距和后置红外壁障电路。(1) 超声波测距超声波测距采用 STM32 系统滴答时钟每 10ms 中断触发超声波发送方波, 并采用外部中断双边沿触发方式捕获回馈信号。当超声波有信号返回时, 通过回馈信号引脚输入电平, 系统捕获中断;输入信号转变为低电平时, 系
15、统再次捕获电平变化, 两次电平变化的时间差即为超声波回馈时间。壁障范围可根据软件设定, 却当智能小车处于后退状态时, 前方壁障功能将失效。软件代码如下:(2) 红外壁障后置红外壁障使用 STM32 外部中断获取信号变化, 当后退距离超过预定范围时, 系统将有回退状态自动切换至停止状态, 超限距离可通过调节红外壁障模块的电位器加以改变。4 装接调试智能小车其硬件电路基于其体积、重量、以及下位机的工作稳定性考虑, 设计时采用贴片元件, 贴片元件有许多好处, 如:贴片元件比直插元件容易焊接和拆卸;提高了电路的稳定性和可靠性;提高了制作的成功率;减少了杂散电场和杂散磁场, 这对于基于蓝牙技术的智能小车
16、这个高速数字电路尤为重要。结合电路装接, 认为首先要做好焊接准备:焊接设备准备 (恒温烙铁、热风焊台) 、焊料准备 (焊锡丝、松香、焊锡膏) 、辅助工具准备 (放大镜、镊子、吸锡器等) 。焊接贴片元件总体而言是固定焊接清理这样一个过程。其中元件固定是焊接前提, 一定要确保每个管脚和其所对应的焊盘对准精确。焊接多管脚芯片时, 如出现焊锡短路, 可以用吸锡带进行吸焊或利用焊锡熔化后流动的因素将多余的焊锡去除。小车搭建完成之后, 首先使用数字用万用表和检测电源之间是否短路, 根据硬件电路原理图检测 PCB 板线路的正确性, 并核对元器件的型号、规格和安装是否符合设计要求。在实际调试电路过程中, 随时注意电源余地直接不可短路, 以免造成其他器件的损坏。参考文献1陈启军, 余有灵, 等.嵌入式系统及其应用.上海:同济大学出版社, 2011. 2康光华, 陈大钦.电子技术基础 (模拟部分第四版) .高等教育出版社, 1999. 3李朝青.单片机通讯技术与工程实践.北京:航空航天大学出版, 2007. 4朱刚, 谈振辉, 周贤伟.蓝牙技术原理与协议.北京:北京交通大学出版社, 2002.