基于stm32的蓝牙遥控智能小车_基于51用蓝牙控制小车(提高篇)

一,焊接51最小系统

1be1a691bd6896120c918c40e3dfeda3.png

一辆小车的基本功能就是让它能动起来,能通过手机蓝牙进行遥控,所以就需要用到L298N电机驱动模块和HC-06蓝牙模块。下面就简单介绍一下这两个模块。

17409ccc8bc492173982e948f392b136.png

三,制作电机驱动模块

电机驱动模块弄好后,离它能动就只有一步之遥了,我们需要用到HC-06蓝牙模块对小车进行控制

7a771379e0c1fbdcd3f3203531bc1563.png
四,源代码/**************************************************************************** 简单寻迹程序:接法  EN1 EN2 PWM输入端,本程序不输入PWM,直接使插上跳线帽,使能输出,这样就能全速运行 无线摇控模块与单片机连接 无线模块GND +5取自于单片机板的5V输出 P0_7 与无线模块D0相连 P0_6 与无线模块D1相连 P0_5 与无线模块D2相连 P0_4 与无线模块D3相连 P1_0 P1_1 接IN1 IN2 当 P1_0=1,P1_1=0; 时左上电机正转左上电机接驱动板子输出端(蓝色端子OUT1 OUT2) P1_0 P1_1 接IN1 IN2 当 P1_0=0,P1_1=1; 时左上电机反转 P1_0 P1_1 接IN1 IN2 当 P1_0=0,P1_1=0; 时左上电机停转 P1_2 P1_3 接IN3 IN4 当 P1_2=1,P1_3=0; 时左下电机正转左下电机接驱动板子输出端(蓝色端子OUT3 OUT4) P1_2 P1_3 接IN3 IN4 当 P1_2=0,P1_3=1; 时左下电机反转  P1_2 P1_3 接IN3 IN4 当 P1_2=0,P1_3=0; 时左下电机停转 P1_4 P1_5 接IN5 IN6 当 P1_4=1,P1_5=0; 时右上电机正转右上电机接驱动板子输出端(蓝色端子OUT5 OUT6) P1_4 P1_5 接IN5 IN6 当 P1_4=0,P1_5=1; 时右上电机反转 P1_4 P1_5 接IN5 IN6 当 P1_4=0,P1_5=0; 时右上电机停转 P1_6 P1_7 接IN7 IN8 当 P1_6=1,P1_7=0; 时右下电机正转右下电机接驱动板子输出端(蓝色端子OUT7 OUT8) P1_6 P1_7 接IN7 IN8 当 P1_6=0,P1_7=1; 时右下电机反转 P1_6 P1_7 接IN7 IN8 当 P1_6=0,P1_7=0; 时右下电机停转  P3_2接四路寻迹模块接口第一路输出信号即中控板上面标记为OUT1 P3_3接四路寻迹模块接口第二路输出信号即中控板上面标记为OUT2 P3_4接四路寻迹模块接口第三路输出信号即中控板上面标记为OUT3 P3_5接四路寻迹模块接口第四路输出信号即中控板上面标记为OUT4 四路寻迹传感器有信号(白线)为0 没有信号(黑线)为1 四路寻迹传感器电源+5V GND 取自于单片机板靠近液晶调节对比度的电源输出接口  关于单片机电源:本店驱动模块内带LDO稳压芯片,当电池输入6V时时候可以输出稳定的5V 分别在针脚标+5 与GND 。这个输出电源可以作为单片机系统的供电电源。****************************************************************************/#include #define Left_1_led P3_4 //P3_2接四路寻迹模块接口第一路输出信号即中控板上面标记为OUT1#define Left_2_led P3_5 //P3_3接四路寻迹模块接口第二路输出信号即中控板上面标记为OUT2 #define Right_1_led P3_6 //P3_4接四路寻迹模块接口第三路输出信号即中控板上面标记为OUT3#define Right_2_led P3_7 //P3_5接四路寻迹模块接口第四路输出信号即中控板上面标记为OUT4#define Left_moto_go {P1_0=1,P1_1=0,P1_2=1,P1_3=0;} //左边两个电机向前走#define Left_moto_back {P1_0=0,P1_1=1,P1_2=0,P1_3=1;} //左边两个电机向后转#define Left_moto_Stop {P1_0=0,P1_1=0,P1_2=0,P1_3=0;} //左边两个电机停转 #define Right_moto_go {P1_4=1,P1_5=0,P1_6=1,P1_7=0;}//右边两个电机向前走#define Right_moto_back {P1_4=0,P1_5=1,P1_6=0,P1_7=1;}//右边两个电机向前走#define Right_moto_Stop {P1_4=0,P1_5=0,P1_6=0,P1_7=0;}//右边两个电机停转 #define left 'C' #define right 'D'#define up 'A' #define down 'B'#define stop 'F'char code str[] = "收到指令,向前!";char code str1[] = "收到指令,向后!";char code str2[] = "收到指令,向左!";char code str3[] = "收到指令,向右!";char code str4[] = "收到指令,停止!";bit flag_REC=0; bit flag =0; unsigned char i=0;unsigned char dat=0; unsigned char buff[5]=0; //接收缓冲字节 /************************************************************************///延时函数 void delay(unsigned int k){  unsigned int x,y; for(x=0;x=2) {i=0;flag=0;flag_REC=1 ;} // 停止接收 } }}/*********************************************************************/ /*--主函数--*/void main(void){TMOD=0x20;  TH1=0xFd;  //11.0592M晶振,9600波特率 TL1=0xFd; SCON=0x50;  PCON=0x00;  TR1=1;ES=1;  EA=1;  while(1)/*无限循环*/{  if(flag_REC==1) // {flag_REC=0;if(buff[0]=='O'&&buff[1]=='N')//第一个字节为O,第二个字节为N,第三个字节为控制码switch(buff[2]) { case up : // 前进 send_str( ); run(); break; case down:// 后退 send_str1( ); backrun(); break; case left:// 左转 send_str2( ); leftrun(); break; case right:// 右转 send_str3( ); rightrun(); break; case stop:// 停止 send_str4( ); stoprun(); break; }   }}} 

手机操作

b859e80eb691370766c1f05d4679b20c.png

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
最近用51单片机写了一个最简单的蓝牙遥控智能小车,基本上榨干了51单片机的资源,用了定时器T1作为波特率发送器编写串口打印程序,接收串口蓝牙接收的信息产生中断,并且写了一个串口打印函数send()作为单片机操作响应返回给蓝牙发送端手机。定时器T0作为PWM发生使用,目的是作为舵机sg90控制信号,当时做一个蓝牙自怕用到,虽然小车没搭建舵机,但是可以方便扩展,也方便买家学习舵机PWM控制技术。 小车全身照如下: 全部零部件都是购买的配件:按照实物图购买响应的模块组装成小车,L298N,电源模块,电池夹和18650电池两个,电源变压器、51单片机最小系统板、HC05串口蓝牙模块、小车底座 单片机最小系统板彩图:某宝有卖很便宜 单片机最小系统板原理图: 小车是用安卓手机蓝牙调试助手用指令发送的形式来控制的,所以说是最简单的蓝牙遥控小车,呵呵。不过加上舵机和机械手和操控摇杆或者是手机控制app,就变得高端了,敬请期待。这个版本是免费的,但是功能还是很齐全和强大的,代码也写得通俗易懂,不拖泥带水。 下面是源码截图:(新鲜出炉) 手机app遥控效果如下:(买家注意了有车子返回响应的回复的) 感兴趣的买家可以找我私人定制功能之类的也是没有问题的。这款小车大概就这个情况了,敬请期待我好的作品。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值