最初想做红外遥控装置未完成,现着手小车制作及电路焊接
- 时间:
- 浏览:126
- 来源:中国微特电机网
在电子制作和调试里,蓝牙和单片机连接问题老烦人!当我们遇到单片机控制程序无法让蓝牙正常工作时,究竟是单片机这边有毛病智能小车电机驱动模块,还是蓝牙本身不行,宛如头上绕了一团乱麻般让人疑惑不解。今天,咱就唠唠怎么巧用工具把这难题给解决掉。
借助神器定位问题
在调试蓝牙和单片机连接时,判断问题出在哪相当要命。为了不瞎折腾,缩小错误范围,咱可以请出USB转TTL设备这个神奇小玩意。把它跟蓝牙模块直接相连,接着用电脑的串口调试助手来驱动,这样就能检测蓝牙模块好不好使。不过先用这办法,得先看看USB转TTL模块行不行。就像我之前测试,串口号死活不对,在我的电脑 -》管理 -》设备管理器里找串口条目,才发现串口号是12 ,结果串口调试助手里根本没这个选项,真心让人很无奈。
测试模块好坏的操作
sbit LED=P0^0;
while(1){
LED = !LED
Delay10ms(100);
}
为了保证测试有效,除了查看串口号,还要验证这USB转TTL模块是不是好的。我用到了stc - isp下载工具,把单片机型号、hex程序位置选好,一点下载。要是它识别出了单片机,就会提示给MCU重新上电。这时候把MCU电源开关关掉再打开,就会看到烧写程序的过程了,顺利烧写说明它工作正常。在实际中,有时候得多试几次,这个过程容不得半点马虎。
利用手机初步验证
把相关模块检查好,接下来就要做些初步验证工作。把AT引脚悬空,再用手机搜索附近的蓝牙设备,如果能搜到HC05蓝牙(它默认是从模块,容易被搜到),就是个好开头。想想看,以之前测试得出结论(手机端蓝牙串口助手 -> 手机蓝牙 -> 空气 -> HC05蓝牙模块 -> USB转ttl模块 -> 电脑的串口调试助手,反过来也行,线路连接时RX与TX得交叉连)为基础,就能说明蓝牙模块能跟手机端收发消息,心里对它状态也有个数了。
连接调试精准遥控
既然手机和蓝牙模块通信没问题,下一步是把蓝牙和单片机连接。把蓝牙模块与单片机的TX、RX接口连上,靠程序控制可以让蓝牙模块跟手机蓝牙交流。我试过编写好程序,实现用手机蓝牙遥控的功能。手机轻轻一点,电子设备就会按指令动作,虽然原理不复杂,但这种无线控制体验还蛮酷的。
//PCON:SMOD位默认为0,串行口波特率加倍位
PCON = 0x80; //SMOD=1;
TMOD=0x20; //8位自动加载计数器
//TH1=0xfd; TL1=0xfd; for 11.0592MHZ and SMOD=0,
TH1 = 0xf3;//2400bps
TL1 = 0xf3;
TR1=1; // T1
//SCON: 0x50=SM0=0, SM1=1,REN=1
REN=1;
SM0=0;
SM1=1; //串口
EA=1; //中断
ES=1;
串口中断函数
void serial() interrupt 4
{
char sbuf;
sbuf=SBUF;
switch (sbuf)
{
case 'f': direc=4; break;
case 'b': direc=5; break;
case 'l': direc=6; break;
case 'r': direc=7; break;
case 's': direc=-1; break;
default : LED = !LED; //LED为一个I/O引脚,控制发光二极管
}
RI=0;
}
引脚组合控制电机
连接和调试好了蓝牙模块及单片机,我们别忘了这俩结合还能控制电机。像另外两个输入引脚IN1,IN2,不同电平组合(00、10、01、11)让电机有不同的表现。00和11的时候电机停止 ,但这个停止是带电的,就像把电机锁定;10时正转,01时反转。有一次我在搭建小车模型过程中,调整这几个引脚组合让小车前进、后退,超有意思的。
void wheelForward(uchar which)
{
switch(which)
{
case 1:
{
wheel_1_1 = 0;
wheel_1_2 = 1;
break;
}
case 2:
{
wheel_2_1 = 0;
wheel_2_2 = 1;
break;
}
case 3:
{
wheel_3_1 = 0;
wheel_3_2 = 1;
break;
}
case 4:
{
wheel_4_1 = 0;
wheel_4_2 = 1;
break;
}
}
}
后续优化思路拓展
经过一系列操作,事情进入到后续还能再搞点优化。找蓝牙串口调试助手的源代码修改智能小车电机驱动模块,用户持续按住时持续发小车前进命令;因为有了手机蓝牙 ,不一定要用1602、12864这样的显示设备,让小车状态信息定时传给手机蓝牙模块就行,把电子设备各个应用环节简化。后续还能鼓捣点新花样不,非常让咱们期待。
小车前进,后退,停止,左转,右转
小车单个轮子的转动(用于测试)
小车当前状态的获取(用于后期给小车增加其他模块的时候,例如温度模块,就可以读取温度了)
小车命令帮助
你有没有遇到过蓝牙和单片机连接的难题,是怎么解决的?欢迎在评论区和大家分享,觉得文章有用就点赞、分享!
首先完成单个轮子的控制
再完成小车的控制
再加入串口接收中断,收到不同命令,设置方向变量
main程序读取方向变量控制不同的方向
猜你喜欢