李柯
(沈阳航空航天大学,辽宁沈阳,110136)
智能蓝牙小车基于模块化设计思想,由车体模块、电源模块、主控模块、电机驱动模块、电机模块、蓝牙模块、蜂鸣器模块等构成小车硬件系统。其核心是Arduino UNO开发板,所有的传感器都将与主板相连接。小车结构设计如图1所示。
图1 系统总体结构框图
智能蓝牙小车以Arduino UNO开发板为核心,根据蓝牙模块接收到的数据信号,判别执行的命令,其原理图如图2所示。
图2 蓝牙小车原理图
使用者通过SPP蓝牙串口手机软件发送指令,蓝牙模块接收后将数据传送给Arduino UNO开发板,开发板进行判断分析,并进一步为执行模块发送电压与PWM信号,执行相应命令。例如,给蜂鸣器发送电压信号则会实现鸣笛功能;给电机驱动模块发送PWM信号则会实现运动功能。
该小车采用 Arduino UNO单片机作为主控芯片,用于对蓝牙模块接收的信息的采集和处理,输出电压与PWM信号实现小车的运动功能与鸣笛功能。
该小车采用L298N电机驱动模块,可外接5V或12V电源进行供电。如图3所示,该模块具有4个逻辑输入,分别接入单片机上的4路PWM信号引脚,有4个输出端口,接到电机的正负极,驱动两组电机的运转。
图3 L298N电机驱动模块
每组电机的转速受到输入驱动模块的两个PWM信号的影响:电机输出转速大小取决于二者之差的绝对值大小;输出转速方向取决于二者之差的正负。以单个电机为例,根据单片机输出的 PWM 波和相应控制信号,电机驱动模块 L298N功能逻辑如表1所示。
表1 驱动模块功能逻辑表
该小车采用HC-06蓝牙模块,其工作原理图如图4所示。
图4 蓝牙模块工作原理图
使用者需要先将手机端与蓝牙模板进行配对,配对成功后即可通过该蓝牙模块实现手机端与单片机的信息交互,使单片机对数据进行逻辑判断并执行手机端发送的指令[4]。
蜂鸣器是一种电子发声元器件,可以发出“beep beep”的声音。蜂鸣器分为有源蜂鸣器和无源蜂鸣器两种,该小车采用无源蜂鸣器,需要用2K-5K的波形脉冲信号去驱动。使用方法比较简单,只需要将两个电源引脚接GND和+5V,另一个引脚接单片机PWM信号引脚即可。在程序中用tone(beep,K)即可驱动,其中beep为设置引脚,K为数值,经过测试当K取350时最接近鸣笛声。
Arduino IDE是Arduino开发板的编程软件,其内包含了广泛的函数库,因此对于复杂的部件(显示器、传感器),变成就会十分容易。在该程序设计中应用到了如下函数:
Serial.available() //用于读取串口缓冲区中当前剩余的字符个数。
Serial.read() //用于读取串口的缓冲区中一个Byte的数据。
analogWrite(IN1,0) //用于将模拟值输出到引脚,驱动电机。
tone(beep,350) //驱动蜂鸣器
notone(beep) //蜂鸣器停止工作
首先判断是否有数据发送至缓冲区,如果有则读取1字节数据,随后进行逻辑判断并执行相应指令,其流程图如图5所示。
图5 程序流程图
核心程序如下:
采用SPP手机软件进行蓝牙通信,设置后的操作界面如图6所示。图中12个格子为操作区,打开下方编辑模式可以对每个格子进行设置,包括触发方式(按下、松开)、传送数据等。
图6 手机SPP软件操作界面
例如:对于小车的运动指令(前进、后退等),需要设置为按下触发,在按下功能块后持续发送数据;对于小车参数修改指令(1、2、3挡位控制),需要设置为松开触发,在松开功能块后发送一次数据;而对于小车的鸣笛指令,则需同时设置按下触发和松开触发。
手机控制智能蓝牙小车的方式如下:首先点击右上角连接,与蓝牙模块进行连接,需要注意的是,此时需将电机驱动模块断电,否则可能会出现连接失败情况;连接成功后即可通过手机发送相关指令控制小车运动。
搭建好的蓝牙小车如图7所示。
图7 蓝牙小车实物
实验过程大致分三部分:
首先将Arduino开发板通过USB与PC端连接,并将编写的程序录入开发板;再通过手机APP,将手机与蓝牙模块无线连接,此时发现蓝牙模块闪烁,手机与蓝牙模块成功连接。
打开Arduino IDE的串口监视器,按下手机APP的功能块,查看传送的数据是否与程序设定数据一致,不一致则需对程序进行更改,并重新上传程序。
断开Arduino与PC端的连接,打开蓝牙小车电源,依次点击手机APP的功能块,测试各项指令的实际效果。
通过实验调试,对蓝牙小车调挡功能、鸣笛功能以及运动功能进行了测试,发现都能够较好实现。
本文基于Arduino平台设计了一种智能蓝牙小车,并通过实验调试实现了所有的预期功能。该蓝牙小车具有以下优势:能够通过手机端对小车进行控制;能实现多种命令,包括小车的多种转弯方式、多种运动速度以及鸣笛等;系统成本较低,携带便利。