• 2. 连接蓝牙与Arduino 3. 安装手机软件 4. 编写程序 本篇主要内容:通过手机蓝牙发送数据给Arduino,其实本篇并不设计到ROS的内容,Arduino读取传感器的值然后以ROS消息方式广播出去的教程将在下一节中进行介绍,...

    Table of Contents

    1. 介绍

    2. 连接蓝牙与Arduino

    3. 安装手机软件

    4. 编写程序


    本篇主要内容:通过手机蓝牙发送数据给Arduino,其实本篇并不设计到ROS的内容,Arduino读取传感器的值然后以ROS消息方式广播出去的教程将在下一节中进行介绍,可参考:ROS学习之Arduino篇——读取并发布各种传感器数据

    1. 介绍

    蓝牙HC-05: 蓝牙设备分为主从两种模式,作为主设备时,它查找和连接其它设备;作为从设备时只能被只它设备连接;通讯模式分透明传输和AT命令模式。HC05主要有两种方法进行AT设置,一种是用USB转TTL,另一种就是借助Arduino主板进行设置,本篇使用第二种方式。

    2. 连接蓝牙与Arduino

    蓝牙与Arduino的连接方式,注意,别  接  错  了...

     

     

    3. 安装手机软件

    手机上使用的软件我用的是这一款:感谢分享,在手机上安装以后打开蓝牙,连上HC-05,再打开手机软件,找到HC-05连上。

    选择第一个控制模式:

    界面如下,点击右上角的设置按钮,把前后左右四个按钮的值分别设置为:f,b,l,r

     

    4. 编写程序

    注意烧写时要把两个串口线拔掉,否则烧写不进去,为什么呢?因为烧写程序用的就是这两个串口,Arduino UNO板子只有这一组串口(TX,RX),连上蓝牙就没办法下载程序了。

    char serialData;  
    void setup() {  
      Serial.begin(9600);  
    }  
    
    void loop(){  
      if( Serial.available() > 0 ){   
          
        serialData =  Serial.read();
          
        if ('f' == serialData) {    
          Serial.print(serialData);   
          Serial.println(": forWard Command.");
        }   
        else if('b' == serialData) {  
          Serial.print(serialData);   
          Serial.println(": backWard Command.");
        }   
        else if( 'l' == serialData){  
          Serial.print(serialData);  
          Serial.println(": leftTurn Command.");
        }  
        else if('r' == serialData){  
          Serial.print(serialData);  
          Serial.println(": rightTurn Command.");
        }  
        else{  
          //do nothing.  
        }  
      }  
    }  
    展开全文
  • Arduino项目中我们常常使用蓝牙模块进行蓝牙通讯,蓝牙模块是一种集成了蓝牙功能的PCB板,可以实现短距离的无线数据传输。 特点: 1)Arduino蓝牙模块发送和接收数据是以ASCII码形式传输;如调用蓝牙模块发送...

    一.预备知识

    1.1 蓝牙通讯

    定义:蓝牙通讯是指依据蓝牙协议进行通讯。在Arduino项目中我们常常使用蓝牙模块进行蓝牙通讯,蓝牙模块是一种集成了蓝牙功能的PCB板,可以实现短距离的无线数据传输。

    特点:

    1)Arduino蓝牙模块发送和接收数据是以ASCII码形式传输;如调用蓝牙模块发送数字1,那么蓝牙模块会把1转换为其对应的ASCII码49,然后发送49

    2)每次只传输一个字节数据;比如使用蓝牙模块发送12,那么蓝牙模块会把12转换先分割为1和2,然后先后传输49和50,这一点导致了在极小的概率下你使用另一个蓝牙模块接收一个蓝牙模块发送的12时,会发现读取的是49,-1,-1,-1,-1,50,中间这些-1是没有数据时的默认读数

    1.2软件串口

    蓝牙通讯需要使用串口,但是UNO只要一个硬件串口,所以我们常常使用软件串口库SoftwareSerial.h,把普通数字口变成串口。需要注意的是Arduino UNO的所有数字口都可以设置为虚拟串口,但是mega2560数字口中只有10,11,12,13,14,15,50,51,52,53可以设置为虚拟串口。

     

    二.硬件

    HC-06主从一体机*2

    Arduino UNO*2

    RX接数字口3,TX接数字口2

    三.程序

    /*
     * 蓝牙主机程序,接收数据如果有数据就通过串口打印出来
     */
    
    #include <SoftwareSerial.h>
    
    SoftwareSerial blueTooth(2, 3);
    int data;
    void setup() {
        blueTooth.begin(9600);//设置软串口通讯波特率
        blueTooth.print("AT+BAUD4");//设置蓝牙通信波特率
        delay(100);
        blueTooth.print("AT+ROLE=M");//设置蓝牙为主机
        delay(100);
        blueTooth.print("AT+NAMEmaster");
        delay(100);
        blueTooth.print("AT+PIN1994");//设置密码为1994
        delay(100);
    }
    
    void loop() {
      data=blueTooth.read();
      if(data>0){
        Serial.println(data);
      }
    }
    /*
     * 蓝牙从机程序,每隔1秒调用蓝牙发送一次数字2
     */
    
    #include <SoftwareSerial.h>
    
    SoftwareSerial blueTooth(2, 3);
    int data;
    void setup() {
        blueTooth.begin(9600);//设置软串口通讯波特率
        blueTooth.print("AT+BAUD4");//设置蓝牙间通信波特率为9600,主从需一致
        delay(100);
        blueTooth.print("AT+ROLE=S");//设置蓝牙为从机
        delay(100);
        blueTooth.print("AT+NAMEslave");
        delay(100);
        blueTooth.print("AT+PIN1994");//设置密码为1994,密码必须要设置为和主机一样
        delay(100);
    }
    
    void loop() {
      blueTooth.print(2);
      delay(1000);
    }

    四.注意事项

    1)蓝牙主机和从机波特率,密码一定要一样

    2)上传程序后,断电,再接通重启设置的主从机才会生效,蓝牙模块上电后红灯闪烁,连接上其他蓝牙模块后红灯常亮,第一次连接花费的时间可能会较长

    3)上面程序仅仅针对的是HC-06主从一体蓝牙模块

    4)如果要把接收到的数据合成,数字类可以通过*10累加实现,字符串可以通过数组存储实现数据流合成与截取

    展开全文
  • 本人比较懒,纯文本 首先材料,L298N,步进电机,杜邦线,HC-05蓝牙模块arduino模块 ...然后就是arduino与蓝牙模块连接:5v---5v ,GND----GND,tx---rx,rx---tx 然后就是代码了: #define IN1 2 #defin...

    本人比较懒,纯文本

    首先材料,L298N,步进电机,杜邦线,HC-05蓝牙模块,arduino模块

    制作智能小车的连线部分网上都有,

    这里只说蓝牙部分,首先你要依照网上所说的把hc-05进入AT调成从模式,别的随意

    然后就是arduino与蓝牙模块的连接:5v---5v ,GND----GND,tx---rx,rx---tx

    然后就是代码了:

    #define IN1 2
    #define IN2 4
    #define IN3 5
    #define IN4 7
    #define ENA 3
    #define ENB 6
    #define TURNSPEED 100
    #define RUNSPEED 60
    void go_forward();
    void turn_left();
    void turn_right();
    void go_back();
    void setup() {
      pinMode(IN1, OUTPUT);
      pinMode(IN2, OUTPUT);
      pinMode(IN3, OUTPUT);
      pinMode(IN4, OUTPUT);
      pinMode(ENA, OUTPUT);
      pinMode(ENB, OUTPUT);
      Serial.begin(9600); 
      Serial.println("BT is ready!");
    }
      int val;
    void loop() {
      if (Serial.available()) {
      val = Serial.read();
      switch(val){
      case '0':
      stop_s();delay(100);break;
      case '1':
      go_forward(RUNSPEED,RUNSPEED);delay(100);break;
      case '2':
      turn_left(TURNSPEED,TURNSPEED);delay(100);break;
      case '3':
      go_back(RUNSPEED,RUNSPEED);delay(100);break;
      case '4':
      turn_right(TURNSPEED,TURNSPEED);delay(100);break;
      default:
      Serial.println("error");delay(100);break;
               }
        }
    }
    void stop_s(){
      digitalWrite(IN1,LOW);
      digitalWrite(IN2,LOW);
      digitalWrite(IN3,LOW);
      digitalWrite(IN4,LOW);    
      }
    void go_forward(int L,int R){
    digitalWrite(IN1,HIGH);
    digitalWrite(IN2,LOW);
    digitalWrite(IN3,HIGH);
    digitalWrite(IN4,LOW);
      analogWrite(ENA, L);//control speed
      analogWrite(ENB, R);//control speed
    }
    //the connection of my L298N is wrong
    //IN1,IN2 is right,IN3,IN4 is left;
    void turn_left(int L,int R){
    digitalWrite(IN3,LOW);
    digitalWrite(IN4,HIGH);
    digitalWrite(IN1,HIGH);
    digitalWrite(IN2,LOW);
      analogWrite(ENA, L);
      analogWrite(ENB, R);
    }
    void turn_right(int L,int R){
    digitalWrite(IN3,HIGH);
    digitalWrite(IN4,LOW);
    digitalWrite(IN1,LOW);
    digitalWrite(IN2,HIGH);
      analogWrite(ENA, L);
      analogWrite(ENB, R);
    }
    void go_back(int L,int R){
    digitalWrite(IN1,LOW);
    digitalWrite(IN2,HIGH);
    digitalWrite(IN3,LOW);
    digitalWrite(IN4,HIGH);
      analogWrite(ENA, L);
      analogWrite(ENB, R);
    }



    手机上下载蓝牙串口spp,键盘的界面进行设置信号输入到arduino的信号按钮,呵呵

    在我尝试的过程中发现使用使用if语句达不到效果必须要使用case语句。

    还有我的电机的连线是反的,IN1和IN2控制的是右边的电机。

    最后感谢贴吧和CSDN的大佬们,也希望这篇文章对小伙伴们也有所帮助。




     

     

     

    展开全文
  • arduino与蓝牙模块

    2019-01-18 18:04:17
    一、蓝牙模块与Arduino 主要分两步,第一步设置蓝牙模块(AT模式),如,设置成从动任何设备可连接,设置名称及密码等;第二步,编写相应的控制程序; HC05(ZS-040)蓝牙模块与手机连接参考链接参考1 蓝牙模块AT设置...

    一、蓝牙模块与Arduino
    主要分两步,第一步设置蓝牙模块(AT模式),如,设置成从动任何设备可连接,设置名称及密码等;第二步,编写相应的控制程序;
    HC05(ZS-040)蓝牙模块与手机连接参考链接参考1

    蓝牙模块AT设置相关参考3

    蓝牙模块与手机进行通信参考2

    以上几个参考链接,即可完成用手机蓝牙与arduino的通信,并控制对应舵机与led灯; (未在ubuntu上运行,待后续。。)

    展开全文
  • 通过本文,可以了解到以下内容: 进入 AT 模式进行蓝牙基本参数设置 Arduino 蓝牙控制 LED 电路设计以及代码编写 利用 Andorid 蓝牙串口调试软件测试功能 ...设置蓝牙模块可以使用 USB-TTL 连接电脑使用串口调试软

    通过本文,可以了解到以下内容:

    • 进入 AT 模式进行蓝牙基本参数设置
    • Arduino 蓝牙控制 LED 电路设计以及代码编写
    • 利用 Andorid 蓝牙串口调试软件测试功能

    进入 At 模式进行蓝牙基本参数设置

    想要使用 Arduino 的蓝牙模块,首先要对蓝牙模块进行基本参数设置。基本参数设置主要包含:蓝牙名称、模式以及匹配密码等。设置蓝牙模块可以使用 USB-TTL 连接电脑使用串口调试软件进入 AT 模式进行设置,也可以使用 Arduino 连接蓝牙模块进行设置,本文主要介绍后一种方法。

    注意事项

    在连接蓝牙的时候,要注意线的连接是否正确,检查清楚再进行通电,除此之外,还要主要不要让针脚短路,我在首次使用蓝牙模块的时候,因为没注意接线,导致一个蓝牙模块损坏了,只能发信息不能收信息,所以为了避免不必要的损失,这里要注意。

    Arduino HC05 AT模式接线

    进入 AT 模式设置蓝牙的接线如下:
    Arduino 5V - VCC
    Arduino GND - GND
    Arduino Pin10 - TXD
    Arduino Pin11 - RXD
    在通电前检查接线是否正确连接
    hc05_at_mode.jpg

    Arduino 进入 AT 模式代码

    接下来,我们需要为使用 Arduino 设置蓝牙模块 AT 模式编写程序,这个程序是让我们可以通过 Arduino IDE 提供的串口监视器来设置蓝牙模块。详细的 Arduino 代码如下:

    #include <SoftwareSerial.h> 
    
    // Pin10为RX,接HC05的TXD
    // Pin11为TX,接HC05的RXD
    SoftwareSerial BT(10, 11); 
    char val;
    
    void setup() {
      Serial.begin(38400); 
      Serial.println("BT is ready!");
      // HC-05默认,38400
      BT.begin(38400);
    }
    
    void loop() {
      if (Serial.available()) {
        val = Serial.read();
        BT.print(val);
      }
    
      if (BT.available()) {
        val = BT.read();
        Serial.print(val);
      }
    }

    利用 Arduino IDE 串口监视器进行调试

    首先,将 Arduino 断电,然后按着蓝牙模块上的黑色按钮,再让 Arduino 通电,如果蓝牙模块指示灯按2秒的频率闪烁,表明蓝牙模块已经正确进入 AT 模式。
    打开 Arduino IDE 的串口监视器,选择正确的端口,将输出格式设置为 Both: NL & CR ,波特率设置为 38400 ,可以看到串口监视器中显示 BT is ready! 的信息。
    然后,输入 AT ,如果一切正常,串口显示器会显示 OK
    接下来,我们即可对蓝牙模块进行设置,常用 AT 命令如下:

    AT+ORGL    # 恢复出厂模式
    AT+NAME=<Name>    # 设置蓝牙名称
    AT+ROLE=0    # 设置蓝牙为从模式
    AT+CMODE=1    # 设置蓝牙为任意设备连接模式
    AT+PSWD=<Pwd>    # 设置蓝牙匹配密码

    正常情况下,命令发送后,会返回 OK ,如果没有返回任何信息,请检查接线是否正确,蓝牙模块是否已经进入 AT 模式,如果上述两点都没有问题,可能是蓝牙模块的问题,可以找蓝牙模块供应商咨询。
    设置完毕后,断开电源,再次通电,这是,蓝牙模块指示灯会快速闪烁,这表明蓝牙已经进入正常工作模式。

    利用 Andorid 手机连接 Arduino 并控制 LED灯开关

    我们完成了对蓝牙模块的设置后,我们将做一个可以通过手机蓝牙连接,控制 Arduino 开关 LED 灯的小实验。

    Arduino 电路设计

    这里的电路设计比较简单,主要是两部分:
    - Arduino 与 HC05 模块连接
    - Arduino 与 LED 连接

    这里有两点需要注意,Arduino 上的 TXD 应与 HC05 模块上的 RXD 端连接,Arduino 上的 RXD 应与 HC05 模块上的 TXD 连接。
    在下面的图例中,我的 LED 是直接连接在 Arduino Pin13 上,而实际电路连接中,因根据连接的 Led 灯的设计考虑是否需要串联电阻。
    Hc05_Led.jpg

    Arduino 蓝牙控制 LED 灯 程序设计

    Arduino 程序代码如下:

    void setup()
    {
      // 设置波特率为 38400
      Serial.begin(38400);
      pinMode(13, OUTPUT);
    }
    
    
    void loop()
    {
      while(Serial.available())
      {
        char c=Serial.read();
          if(c=='1')
          {
            Serial.println("BT is ready!");
            // 返回到手机调试程序上
            Serial.write("Serial--13--high");
            digitalWrite(13, HIGH);
          }
         if(c=='2')
         {
           Serial.write("Serial--13--low");
           digitalWrite(13, LOW);
         }
      }
    }

    Android 手机端调试

    在 Android 端上进行调试,需要下载蓝牙串口调试 APP,可以根据喜好在各大应用商场搜索下载。
    下载安装完成 APP 后,我们先打开手机的蓝牙设置,搜索并匹配好我们的蓝牙模块。然后打开 蓝牙串口调试APP ,让 APP 连接上蓝牙模块,然后我们可以在 APP 中输入 1,接下来可以看到 LED 等亮了,并且能在 APP 中看到 Serial--13--high 的返回(有些 APP 返回值可能不是返回在同一行)。我们再在 APP 中输入 2,可以看到 LED 熄灭, APP 中返回 Serial--13--low

    小结

    在这篇文章中,我们了解了在 Arduino 中使用 HC05 蓝牙模块的两个主要步骤,首先是进入 AT模式 对蓝牙模块进行设置,这里要注意接线的正确性,设置完成后,就可以将蓝牙模块的 TXArduino RX 连接,RXArduino TX 连接,再通过 Arduino 程序中的 Serial 来实现数据的传输与读取。最后,在通过 Android 上的蓝牙串口调试APP,来测试我们的试验是否成功。

    参考资料

    蓝牙模块HC05
    Arduino Bluetooth Basic Tutorial


    本文为原创内容,由同一作者于早前发表于简书,Arduino使用HC05蓝牙模块与手机连接

    展开全文
  • UNO连接蓝牙模块与安卓手机通讯教程" TITLE="Arduino UNO连接蓝牙模块与安卓手机通讯教程" /> 最左边的是HC-06蓝牙模块,中间的一对金属圆柱是超声测距的传感器,最右是Arduino UNO开发板。然后操作者点按手机中...
  • 蓝牙模块arduino应用

    2020-05-12 23:31:09
    Arduino有专门的蓝牙版本,但是价格不菲,而且在国内暂时还无法买到。好在蓝牙技术本身在国内已经得到了比较的应用,虽然厂商不是太多,但经过一番周折还是找到了一个适合在Arduino上使用的蓝牙模块
  • 在我的上一篇文章中,我们已经学习了如何配置HC-05蓝牙模块,并且作为主设备和从设备,在两个独立的Arduino开发板板之间进行蓝牙通信。 在我们开始使用智能手机控制Arduino开发板的第一个示例...
  • 第一步:准备好做主机的蓝牙模块,用cp2102转串口模块连接蓝牙并进入AT设置模式(指示灯慢闪) 分别输入下面AT指令 (注意输入指令后加上回车后换行,发送后返回OK表示设置成功,如下指令是一条一条输入,切勿所有...
  • 在本篇文章中,我们将主要介绍如何使用HC05蓝牙模块Arduino开发板通过蓝牙进行通信和发送数据。在本文结束时,您将学习到: ● 有关蓝牙协议的基础信息 ● 如何使用蓝牙发送数据 ● 如何将AT-Command发送到HC05 ...
  • 在淘宝店中买的HC-05主从机一体蓝牙模块,该模块的正面和反面截图如下:  测试的时候只使用了RX、TX、GND、5V这四个引脚,测试的连接示意图如下,需要注意的是蓝牙模块的RX要接Arduino的TX,蓝牙模块的TX要接...
  • 通过本文,可以了解到以下内容: 进入 AT 模式进行蓝牙基本参数设置 Arduino 蓝牙控制 LED 电路设计以及代码编写 利用 Andorid 蓝牙串口调试软件测试功能 ...设置蓝牙模块可以使用 USB-TTL 连接电脑...
  • 对于有TTL转接板的人来说,调试蓝牙很简单,用电脑调试非常方便。 如果没有TTL转接板的话,怎么调试呢? 不急,就用Arduino自身调试就行。...OK,现在可以调试蓝牙模块了,效果如下:代码如下:#include
  • Arduino】开发入门【十】Arduino蓝牙模块与Android实现通信 【Arduino】开发入门【十】蓝牙模块  首先show一下新入手的蓝牙模块    【淘宝】【HC-06蓝牙模块】 【淘宝】【辉盛MG995 55G金属铜齿轮舵机】 ...
  • 本实验基于Arduino开发套件、蓝牙模块,运用App Inventor快速开发一个遥控APP,实现对Arduino驱动的发光二极管的开关控制。APP至少设计四个按钮,分别控制3种不同的发光二极管,一个控制跑马灯效果。 二、学习内容 1...
  • Arduino和HC-05蓝牙模块教程 概述 在本教程中,我举了两个示例,分别是使用智能手机控制Arduino和使用笔记本电脑或PC控制Arduino。 为了不使本教程过载,在我的下一个教程中,我们将学习如何配置HC-05蓝牙模块以及...
  • 实验器材:Arduino Pro Mini,JDY-08蓝牙4.0模块,USB-TTL串口由于Arduino下载程序的波特率为57600,所以蓝牙模块的波特率先要设置成57600。两个4.0蓝牙之间透传,要设置主从透传模式从机透传(APP)模式 AT+HOSTEN...
  • 1,提供了Arduino(Mega2560)Android基于蓝牙串口的通信源代码。 2,其中Arduino在收到蓝牙信息后复制应答发回给android端。 3、Android端利用接收缓冲分析,处理返回数据包随机分割的问题; 4、Android采用异步...
  • 1) 说明: 蓝牙模块用于和手机或其它带蓝牙的设备通讯。蓝牙设备分为主从两种模式,作为主设备时,它查找和连接其它设备;...注意: Arduino与电脑和蓝牙模块通讯都使用串口TX/RX,同时操作时产生冲突,
1 2 3 4 5 ... 20
收藏数 1,564
精华内容 625