承接上文,在完成小车的避障、1602显示距离、寻迹功能后,最后一步是对小车的蓝牙控制,用手机完成的小车的控制:前进、停车、倒车、左转、右转,想想还是很帅的。此文还跟之前的文章一样,只谈论代码。
不过笔者最近发现,只会写程序而不懂原理似乎真的不太好,比如,TMOD为什么是这样设置的,波特率是什么,他又是怎么工作的,51单片机的IO口额外的功能是什么样的,中断到底是怎么执行的,之前在学习的时候学的一知半解,不过学习终究是自己的事情。因此,在后续的文章中,将会对这些基本概念提出自己的理解,弄清楚这些最基本的概念,毕竟总不能糊弄着去写程序,闲扯结束,进入正题。
实现功能
- 蓝牙控制小车的前进、后退等功能。
- 由于本人学渣,不会写手机APP,用的手机软件是“蓝牙串口助手”,应用商店搜索就能下载。
HC-05
HC-05模块就是市场(淘宝)中一搜索就有的,也是最常见的那种。之前说的“蓝牙串口助手”也支持HC-05模块,虽然他说的是支持HC-06模块,不过也没关系。
在程序的调试过程中发现了一个问题,蓝牙模块能正常连接,但是却接收不到手机发送的信息。思来想去,改过了$n$次程序,却还是不对,索性搜索起了有关蓝牙模块的东西,最终发现了问题,重要的事情说三遍:
蓝牙模块的RXD接到单片机的TXD,蓝牙的TXD接到单片机的RXD,不然串口中断无法受到手机发来的信息 。
在上电的时候同时将按键按下,将进入ATAT模式,可以通过串口发送ATAT指令,进行相关操作;如果在上电时未按下按键,将进入自动模式,这时如果模块设置的是从机的话,就可以通过手机蓝牙进行连接,也可以通过手机蓝牙调试助手进行连接进行调试。
HC-05 嵌入式蓝牙串口通讯模块(以下简称模块)具有两种工作模式:命令响应工作模式和自动连接工作模式,在自动连接工作模式下模块又可分为主(Master)、从(Slave)和回环(Loopback)三种工作角色。当模块处于自动连接工作模式时,将自动根据事先设定的方式连接的数据传输(即手机端命令);当模块处于命令响应工作模式时能执行下述所有AT命令,用户可向模块发送各种 AT 指令,(AT真心不太懂)为模块设定控制参数或发布控制命令。
HC-05注明:
- RXD:接收数据引脚
- TXD:发送数据引脚
- LED指示灯,指示模块工作状态,模块上电后闪烁,不同的状态闪烁间隔不同。
蓝牙控制程序
1 |
|
等过几天,一定看懂中断、寄存器、波特率,完善以下代码的注释,起码自己写的代码自己要懂,啊啊啊啊,学艺不精不太好。先去忙考试去了,撤。后序更新会把所有程序整合到一起。哦,对了,还有PWM调速,看书,看书,看书……把东西都搞懂。