蓝牙智能小车_智能小车蓝牙控制app - CSDN
精华内容
参与话题
  • Arduino智能小车——蓝牙小车

    万次阅读 多人点赞 2020-05-19 10:53:50
    Arduino智能小车——蓝牙小车  上一章我们完成了小车的运动控制,虽然小车已经可以运动,但是不能远程遥控,不够高大上。在这一篇,我们将尝试用手机蓝牙遥控小车。蓝牙模块  蓝牙( Bluetooth® ):是一种无线...

    Arduino智能小车——蓝牙小车

      上一章我们完成了小车的运动控制,虽然小车已经可以运动,但是不能远程遥控,不够高大上。在这一篇,我们将尝试用手机蓝牙遥控小车。

    蓝牙模块

      蓝牙( Bluetooth® ):是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换(使用2.4—2.485GHz的ISM波段的UHF无线电波)。

      我们在此使用的蓝牙模块(HC-05)已经在内部实现了蓝牙协议,不用我们再去自己开发调试协议。这类模块一般都是借助于串口协议通信,因此我们只需借助串口将我们需要发送的数据发送给蓝牙模块,蓝牙模块会自动将数据通过蓝牙协议发送给配对好的蓝牙设备。

    SouthEast

    串口通信

      由于要借助串口实现蓝牙通信功能,所以我们在此要先了解下Arduino的串口通信。

      Arduino UNO开发板上的串口为0->RX,1->TX,在开发板内部也已经配置好了串口的功能,我们只需调用函数借口即可。以下列出串口通信里面常用的函数,并加以简单解释,详细用法可在用到时自行查询。

    开启串行通信接口并设置通信波特率

    Serial.begin(speed); 
    

    关闭串口通信

    Serial.end();    
    

    判断串口缓冲器是否有数据写入

    Serial.available();
    

    读取串口数据

    Serial.read();    
    

    返回下一字节(字符)输入数据,但不删除它

    Serial.peek();   
    

    清空串口缓存

    Serial.flush();    
    

    写入字符串数据到串口

    Serial.print();    
    

    写入字符串数据+换行到串口

    Serial.println(); 
    

    写入二进制数据到串口

    Serial.write();     
    

    read时触发的事件函数

    Serial.SerialEvent();
    

    读取固定长度的二进制流

    Serial.readBytes(buffer,length);
    

    打印接到数据十进制表示的ascii码

    Serial.println(incomingByte, DEC);
    

    蓝牙模块连接

    SouthEast

    TX: 接Arduino UNO开发板"RX"引脚
    RX: 接Arduino UNO开发板"TX"引脚
    GND: 接Arduino UNO开发板"GND"引脚
    VCC: 接Arduino UNO开发板"5V"或"3.3V"引脚

    SouthEast

    手机蓝牙助手

      想实现手机蓝牙遥控小车,手机APP是必不可少的,目前网上有很多蓝牙串口助手,省去了我们自己写APP的时间,当然如果朋友你有能力或者想自己DIY的话也可以尝试自己写APP,在这里我推荐大家用这款手机蓝牙助手(百度上搜手机蓝牙串口助手就可以搜到,挺好用的)

    SouthEast
      如果不想自己去找的话可以到我的百度网盘下载 [点击这里下载](http://pan.baidu.com/s/1pKClRTL)

      下载并安装后打开APP,在这里可能会提示你有新版本请求更新,建议点击以后再说(暂时不更新),以我的经验,一般点击立即更新都会更新失败。

    SouthEast
      进入主界面,左上角会提示"蓝牙未连接",这个时候我们可以先对蓝牙助手的界面进行自定义设置。点击右下角的三个点(在我这里是这样的,其他手机可能不同,如果没有这三个点可以试着点击手机的功能键),选择“更多”。
    SouthEast
      然后选择“地面站设置”进入自定义界面,往下拖动,找到“自定义按键[x]”,在此我们对按键[1][2][3][4][6]进行自定义设置。
    SouthEast
    **  点击自定义按键[1],将其“显示名称”属性改为“停止”,“点击发送”属性改为“00”,并点击“确定”保存**
    SouthEast
    同理更改其他按键:

    点击自定义按键[2],将其“显示名称”属性改为“前进”,“点击发送”属性改为“01”,并点击“确定”保存
    点击自定义按键[4],将其“显示名称”属性改为“左转”,“点击发送”属性改为“03”,并点击“确定”保存
    点击自定义按键[5],将其“显示名称”属性改为“后退”,“点击发送”属性改为“02”,并点击“确定”保存
    点击自定义按键[6],将其“显示名称”属性改为“右转”,“点击发送”属性改为“04”,并点击“确定”保存

      以上修改的属性值即为我们点击对应按键之后,蓝牙串口助手自动通过蓝牙发送的数据,与上一篇所定义的小车的几个状态一致,这样方便在Arduino在接收到蓝牙模块的数据后对小车的状态进行控制。

    #define STOP      0
    #define FORWARD   1
    #define BACKWARD  2
    #define TURNLEFT  3
    #define TURNRIGHT 4
    

    修改后属性如下图

    SouthEast

    下面就来看看我们修改的效果吧,点击“模式切换”

    SouthEast
    这时候你就可以看到我们自定义的按键咯,看看修改前后的对比吧。
    SouthEastSouthEast
      接下来我们将连接蓝牙,仍然点击右下角的三个点,然后点击“连接”
    SouthEast
      一般没有连接过蓝牙模块的时候“已配对的设备”下面没有可选择的设备名称,因此我们要点击“扫描新设备”来检测我们的蓝牙模块,扫描成功后蓝牙模块的名称将显示在“已配对的设备”一栏中
    SouthEast
      点击我们的蓝牙模块的名称,输入密码进行配对。配对成功后在蓝牙串口助手的左上角会显示“蓝牙已连接”字样,恭喜你,这时候你已经连接成功。
    SouthEast

    小科普:
      蓝牙模块上电(只简单连接"VCC"和"GND"引脚)之后,其他蓝牙设备即可与其连接,一般蓝牙模块默认初始连接密码为"0000"或"1234",如果连接不上蓝牙,请尽快与厂商或者店家联系。蓝牙模块上电后LED指示灯不断闪亮,当有设备连接预期连接之后会隔一段闪两下,蓝牙串口助手也会有相应已连接的提示。

    ##Arduino代码编写
    新建一个工程,将下面代码复制到工程内

    #define STOP      0
    #define FORWARD   1
    #define BACKWARD  2
    #define TURNLEFT  3
    #define TURNRIGHT 4
    
    int leftMotor1 = 4;
    int leftMotor2 = 5;
    int rightMotor1 = 6;
    int rightMotor2 = 7;
    
    void setup() {
      // put your setup code here, to run once:
      Serial.begin(9600);
      pinMode(leftMotor1, OUTPUT);
      pinMode(leftMotor2, OUTPUT);
      pinMode(rightMotor1, OUTPUT);
      pinMode(rightMotor2, OUTPUT);
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      //usart read
      if(Serial.available()>0)
      {
        char cmd = Serial.read();//读取蓝牙模块发送到串口的数据
      
        Serial.print(cmd);
        motorRun(cmd);
          
      }  
    }
    void motorRun(int cmd)
    {
      switch(cmd){
        case FORWARD:
          Serial.println("FORWARD"); //输出状态
          digitalWrite(leftMotor1, HIGH);
          digitalWrite(leftMotor2, LOW);
          digitalWrite(rightMotor1, HIGH);
          digitalWrite(rightMotor2, LOW);
          break;
         case BACKWARD:
          Serial.println("BACKWARD"); //输出状态
          digitalWrite(leftMotor1, LOW);
          digitalWrite(leftMotor2, HIGH);
          digitalWrite(rightMotor1, LOW);
          digitalWrite(rightMotor2, HIGH);
          break;
         case TURNLEFT:
          Serial.println("TURN  LEFT"); //输出状态
          digitalWrite(leftMotor1, HIGH);
          digitalWrite(leftMotor2, LOW);
          digitalWrite(rightMotor1, LOW);
          digitalWrite(rightMotor2, HIGH);
          break;
         case TURNRIGHT:
          Serial.println("TURN  RIGHT"); //输出状态
          digitalWrite(leftMotor1, LOW);
          digitalWrite(leftMotor2, HIGH);
          digitalWrite(rightMotor1, HIGH);
          digitalWrite(rightMotor2, LOW);
          break;
         default:
          Serial.println("STOP"); //输出状态
          digitalWrite(leftMotor1, LOW);
          digitalWrite(leftMotor2, LOW);
          digitalWrite(rightMotor1, LOW);
          digitalWrite(rightMotor2, LOW);
      }
    }
    

      朋友们大概也发现了,这个代码和上一篇的代码基本上相同,只不过增加了串口的内容。

    ##代码详解
      串口初始化函数,想要通过串口的库函数对串口进行操作,必须在void set_up()函数中对其进行初始化。

    Serial.begin(9600);
    

      在void loop()函数内,加入了检测串口接收内容的函数,并将接收到的命令输入到 void motorRun(int cmd)函数中控制小车运动。

    if(Serial.available()>0)
      {
        char cmd = Serial.read();
      
        Serial.print(cmd);
        motorRun(cmd);
      }  
    

    蓝牙小车测试

      下载程序之后,重新连接蓝牙模块,切换到我们自定义的按键界面,快试试蓝牙遥控小车吧。

    附件

    安卓手机蓝牙串口点击下载,也可以复制链接 https://download.csdn.net/download/qq_16775293/11165678 到浏览器下载。

    欢迎各位有兴趣的朋友加入Q群1:789127261点评、交流

    展开全文
  • 基于51单片机的蓝牙智能小车——《入门篇》

    万次阅读 多人点赞 2018-08-29 10:02:38
    在上一篇文章中我已经提到了制作智能小车所需要的材料,如果大家已经准备好材料,或是想进一步了解智能小车的制作原理,接下来呢,我会对多个模块进行介绍,由零散的模块一步一步将我们的小车制作出来。 我们可以按...

    我认为在制作小车前需要有心里准备,要充满自信、满怀激情,学会坚持,切忌三分钟热度,半途而废。

    在上一篇文章中我已经提到了制作智能小车所需要的材料,如果大家已经准备好材料,或是想进一步了解智能小车的制作原理,接下来呢,我会对多个模块进行介绍,由零散的模块一步一步将我们的小车制作出来。

    我们可以按着电路图先焊一个51单片机的最小系统出来,有一点需要注意的是需要引出更多的VCC,GND接口,以防接口不够。

     

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

        一个L298N电机驱动模块能驱动2个马达,小车是四驱驱动,我们可以把两个L298N模块并联,并用12V电压供电,如果你的小车不需要调速,就不用考虑PWM问题,也就无需把使能端ENA、ENB的跳线帽拔掉,直接将IN1、IN2、IN3、IN4与单片机的端口相连,把OUT1、OUT2、OUT3、OUT4与马达相连即可。

        如果你的小车需要调速,则需要把ENA、ENB跳线帽拔掉,把使能端ENA、ENB分别接入单片机的不同端口,然后调速主要是程序的问题,这里用到T0定时器来制造不同的调制信号,说白了就是一定时间内使能端高电平所占的比例,比例越高,速度越快。

    void timer0() interrupt 1
    {                                
       TH0=(65536-50)/256;
       TL0=(65536-50)%256;
       PWMcntA++;        
       PWMcntB++;        
       PWMcntC++;        
       PWMcntD++;        
       if (PWMcntA>=230)
       {  PWMcntA=1;}
       if (PWMcntA<=cntPWMA)
       {   PWMa=1; }
       else
        {  PWMa=0; }
        .
        .
        .
        PWMb、PWMc、PWMd依此类推
    } 

    (程序仅供参考)

     

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

    蓝牙模块的TXD,RXD要分别与单片机的RXD、TXD相连,这样串口通信才能收发正常,然后软件设置串口。利用switch 函数,对蓝牙接收的数据进行处理,执行相应的运动。

     

    void service()
    {
    switch (BlueToothData)
    {
    case 'g':go_forward();
                   delay(1);
                   break;
    case 'b':go_back(); 
                   delay(1);
                   break;
    case 's':stop ();
                   delay(1);
                   break;
    .
    .
    依此类推
    }
    } 

    (程序仅供参考)

    如果上面的都弄好后,距离小车能动就只差半步了,这时候我们还需要一部手机,如果你会写上位机,你不妨可以自己做个APP来控制小车,如果不会开发手机APP,那也可以使用别人写好的蓝牙串口助手APP,在这里,我推荐SPP蓝牙助手,它是目前我试过的最好用的一款安卓蓝牙串口助手APP,它可以编辑你想要的按键功能,方便我们的个性化开发。

    做到这一步,恭喜你的小车已经可以动了,我认为你已经是一名合格的司机了,怎么样?系不系有点小激动?

    那就开车吧!

    展开全文
  • 基于51单片机的蓝牙智能小车——《加强篇》

    千次阅读 多人点赞 2018-08-29 10:02:29
    在前面的两篇文章中,我已经介绍了51智能小车的一些最基本功能,大家如果学习前两篇文章,我相信大家能够掌握了智能小车基本原理,并且完全已经有能力将小车制作出来并且实现小车的基本操作功能。但是呢,如果小车...

    在前面的两篇文章中,我已经介绍了51智能小车的一些最基本功能,大家如果学习前两篇文章,我相信大家能够掌握了智能小车基本原理,并且完全已经有能力将小车制作出来并且实现小车的基本操作功能。但是呢,如果小车只能是人为遥控使它前后左右移动,那么小车可能会略微显得单调了些,为了让小车更加智能化、更加有趣,接下来,我加入红外避障红外寻迹超声波避障的功能。

    红外避障模块:

    void search()
    {
    unchar flag;
    if((search_left==0)&&(search_right==0))
    {flag='g';}
    if((search_left==0)&&(search_right==1))
    {flag='l';}
    .
    .
    switch(flag)
      {
    case 'g':go_forward();
                    break;
    case 'l':turn_left();
                   break;
    .
    .
      }
    }

    程序仅供参考

    红外寻迹模块:

    void infrared()
    {
    if(Lr1==0)
    turn_right();
    if(Lr2==0)
    turn_back_right();
    if(Rr1==0)
    turn_left();
    if(Rr2==0)
    turn_back_left();
    }  

    程序仅供参考

    超声波模块:

    如图所示,此模块共有4只引出脚,从左往右,第一脚为VCC,由于该模块工作电压为5V,第二只脚为Trig,输入触发信号,第三只脚为Echo,输出回响信号,第四只脚为接地。

     

     

    (1)给至少给Trig 10us的高电平信号;

    (2)模块自动发送8个40khz的方波,自动检测是否有信号返回

    (3)有信号返回,通过Echo输出一高电平,高电平持续的时间就是超声波从发射到放回的全部时间

    (4)测试距离=(高电平时间*声速(340m/s))/2

     

    超声波测距的关键一点就是对时间的精确测量,要想精确测量时间,我们就需要用到定时器,但是前面T0(用于PWM)、T1(用于串口通信),这里小编查阅了很多的资料,也突破了认识的局限,发现了T2定时器。

    但是T2与T0、T1的使用方式很不相同,小编实际实验,发现T2不能直接用于超声波的计时,最后我们把T2用作波特率发生器,T1用于计时,就需要对寄存器重新进行配置,这样就充分利用了3个定时/计数器,达到了预期效果

    超声波避障的完整程序:

    void distance ()
    {
    int t,i;
    delay_us ();
    Trig=1;
    Trig=0;
    TR1=1;
    while (!Echo);while(Echo);
    n=0;
    TR1=0;t=256*TH1+TL1+65535*n;
    if(s>0&&s<30) //如果距离30厘米,小车持续左转
    TH1=TL1=0;s=t*0.01845; //距离为厘米 {
    {turn_left();}
    for(t=0;t<70;t++)for(i=0;i<10;i++)}else{stop();}
    }

    程序仅供参考

    如果前面的功能你都已经实现了,小编认为你是一名优秀的司机了,也为你点个赞!

     

    带你们走到这里,我认为初级阶段的智能小车已经完成了,但小车的功能还远远不止这些,后期如果大家水平进一步提升,接触到了图像处理、音频处理、嵌入式、人工智能等,那么小车还能继续拓展出好多好多的功能,对小车的探究就像是一个无底洞,它等着我们去探索。

     

    前面的知识,大家如果有什么不懂的、有什么疑惑、有什么更好的想法,都可以给我留言喔,我看到了会尽快答复,能帮助到大家,是我的荣幸!

    展开全文
  • 智能小车蓝牙模块

    2020-02-23 21:44:58
    由于我们制作的是适用于盲人的智能小车(导盲小车),因此我的蓝牙模块应实现无线连接,发送数据和接受数据,通过蓝牙耳机接受由小车传来的提示。 蓝牙串口连接 1,将USB转TTL工具与hc05连接 vcc-5v GND-GND TXD-RXD...

    由于我们制作的是适用于盲人的智能小车(导盲小车),因此我的蓝牙模块应实现无线连接,发送数据和接受数据,通过蓝牙耳机接受由小车传来的提示。

    蓝牙串口连接

    1,将USB转TTL工具与hc05连接
    vcc-5v
    GND-GND
    TXD-RXD
    RXD-TCD
    在这里插入图片描述
    将usb插入电脑,打开串口调试软件,打开CMO口,将各参数调节,一边按着蓝牙模块的按键,一边发送AT指令。
    输入at,若输入ok则硬件和电路没有问题,可以开始实验。
    2.设置蓝牙
    at+orgl+回车-重置蓝牙
    at+namexxx+回车-名称的设置
    at+pswd=xxxx+回车-密码设置

    在这里插入图片描述
    在这里插入图片描述
    3.手机蓝牙与之连接(蓝牙耳机还没到)
    通过手机实现反馈。
    在这里插入图片描述
    实现在这里插入图片描述
    由此实现无线连接。但是还需要改进,对小车的信息反馈和对蓝牙耳机的传输的问题还没解决。再接再厉啦。

    展开全文
  • 蓝牙智能小车控制APP

    2020-07-27 23:33:55
    自己开发的简易蓝牙控制APP,主要用于建议设备通信,智能设备控制使用,代码简单,应用方便,同时使用app Inventor做开发工具,无需认为敲代码,做智能家居控制来说也比较方便快捷。
  • 智能小车蓝牙模块

    千次阅读 2020-10-05 16:13:13
    很长时间没有写博客了,因为搞完这个小车以后就在暑假研究无人机去了,所以上一次的蓝牙模块一直没有时间去写,没事现在补上 - HC-05(我用的是这个模块:因为价格中等,功能完善便宜的还有JDY-31)可以去我第一个博客找那...
  • 基于stm32蓝牙智能小车设计

    万次阅读 多人点赞 2019-01-02 16:46:31
    前言: 本文描述了一个由STM32微处理器、步进电机、蓝牙,L298N等...控制小车的转动模式通过蓝牙模块来实现,利用手机蓝牙助手和蓝牙模块相通,进而控制小车的各种运转模式。 代码、蓝牙Android apk地址:https://g...
  • 2、打开小车看到蓝牙模块指示灯在闪烁,打开手机搜索蓝牙,看到HC06,连接匹配,密码是1234,具体看提示操作;   若看到 YAHBOOM-L 之类名称的,不需要输入密码;只需打开手机APP,手机靠近小车蓝牙模块,APP就...
  • 硬件课设一直拖到还有几天要毕业了才分享一下,做...3.代码部分是用verilog完成的,项目报告,完成代码,以及小车跑动的视频都在以下链接里,可以下载使用。 https://download.csdn.net/download/sinat_30372583/10...
  • 安卓手机蓝牙控制智能小车 android程序设计

    万次阅读 热门讨论 2016-06-10 19:20:58
    项目名称: 安卓手机控制智能小车本文主要介绍手机端程序设计源码托管在地址:github.com/cyang812/Bluetooth_Car 开发平台 :win10; 开发软件:Android Studio 2.1 在开发的过程中,软件版本有过几次更新,本文...
  • STM32循迹+蓝牙小车

    千次阅读 多人点赞 2016-11-27 16:51:30
    stm32智能循迹小车+蓝牙控制+代码
  • 基于51单片机的蓝牙遥控小车程序【硬软件部分】

    万次阅读 多人点赞 2020-03-07 12:55:20
    ****这是我写的第一篇博客,如果有问题欢迎指正...小车模型一个(直流电机一对) 电池18650一对 HC-08蓝牙模块 蓝牙模块主要要掌握其基本参数以及工作原理即可,附下图。 L298模块 l298内部包含4...
  • 很多热衷于玩单片机小车、机器人的童靴,往往也向往着有天能自己编写一个Android手机的遥控程序,通过自己的手机遥控小车,单片机程序用C语言或者汇编什么的都可以容易完成,,无奈要写一个上位机的Android控制程序...
  • arduino的智能小车的功能3:蓝牙遥控

    千次阅读 2018-08-19 20:59:35
    arduino的智能小车的功能3:蓝牙遥控 arduino智能小车小车的蓝牙遥控 材料清单: HC-05的蓝牙模块; arduino的智能小车一台; 杜邦线若干: 首先我们需要在电脑上下载串口调试软件,并进行蓝牙的调试,确保...
  • 向前按钮、向后按钮、向左、向右、………,哦,不要这样吧,试一试手机的重力感应功能,通过手机体态传感器来控制小车显然比按按钮更酷一些。   简要流程图: 我的手机软件截图: 可能要
  • 其实前几周就已经将小车调好并且也发了视频,但是每天忙于复习,也没有时间来对小车的流程设计、硬件设计、程序编写进行一个总结,正好周五可以休息一下,就分三个模块对这个智能小车项目进行一个总结。 这个小项目...
  • 基于stm32的手机蓝牙智能小车的设计

    千次阅读 2014-05-08 12:37:33
    看看这一款手机蓝牙智能小车 还带摄像头 赠送彩屏 http://item.taobao.com/item.htm?id=38797182394
  • 智能小车资料源码大全

    万次阅读 多人点赞 2018-10-22 11:06:50
    今天给大家分享一下智能小车的资料,包括制作流程、原理图设计和源码等,不下于60辆智能小车的制作经验。其中历届智能小车的开发资料就有90个文件了。 分享的智能小车类型包括:Bluetooth控制两轮小车;智能小车...
  • 这个是蓝牙小车的下篇,上篇的地址为:http://blog.csdn.net/lpstudy/article/details/78992038。 源代码: https://github.com/lpstudy/bluetooth-car 此帖子为昨天发的帖子...
  • 假期和同伴做了一个android蓝牙控制小车的项目,他负责下位机代码实现,我负责上位机代码实现。但在蓝牙开发上的经验不算熟悉,在网上查找相关资料的时候也发现很多答案参差不齐,并且也不是用于蓝牙上位机连接的,...
1 2 3 4 5 ... 20
收藏数 859
精华内容 343
关键字:

蓝牙智能小车