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

    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.  
        }  
      }  
    }  
    展开全文
  • 首先show一下新入手的蓝牙模块          蓝牙参数特点 1.蓝牙核心模块使用HC-06从模块,引出接口包括VCC,GND,TXD,RXD,预留LED状态输出脚,单片机可通过该脚状态判断蓝牙是否已经连接...

     首先show一下新入手的蓝牙模块 

     

     

     

     

    蓝牙参数特点

    1.蓝牙核心模块使用HC-06从模块,引出接口包括VCC,GND,TXD,RXD,预留LED状态输出脚,单片机可通过该脚状态判断蓝牙是否已经连接

    2.led指示蓝牙连接状态,闪烁表示没有蓝牙连接,常亮表示蓝牙已连接并打开了端口

    3.输入电压3.6~6V,未配对时电流约30mA,配对后约10mA,输入电压禁止超过7V!

    4.可以直接连接各种单片机(51,AVR,PIC,ARM,MSP430等),5V单片机也可直接连接

    5.未建立蓝牙连接时支持通过AT指令设置波特率、名称、配对密码,设置的参数掉电保存。蓝牙连接以后自动切换到透传模式

    6.体积 3.57cm*1.52cm

    7.该蓝牙为从机,从机能与各种带蓝牙功能的电脑、蓝牙主机、大部分带蓝牙的手机、Android、PDA、PSP等智能终端配对,从机之间不能配对。

    Arduino 与蓝牙模块连接方法

    VCC:接Arduino的5V。
    GND:接Arduino的GND。

    TXD:发送端,一般表示为自己的发送端,接Arduino的RX。
    RXD:接收端,一般表示为自己的接收端,接Arduino的TX。
    正常通信时候本身的TXD永远接设备的RXD!正常通信时RXD接其他设备的TXD,

    自收自发:顾名思义,就是自己接收自己发送的数据,即自身的TXD直接连接到RXD,用来测试本身的发送和接收是否正常,是最快最简单的测试方法,当出现问题时首先做该测试确定是否产品故障。也称回环测试。

    线接好后,把Arduino上电后,蓝牙的指示灯是闪烁的,表明没有设备连接上。

    如图所示,LED常亮,已经和Android手机连接

      

    Arduino 调试源代码

    复制代码
    void setup()
    {
     Serial.begin(9600);
    }
     
    void loop()
    {
      while(Serial.available())
       {
         char c=Serial.read();
          if(c=='A')
            {
              Serial.println("Hello I am amarino");
            }
       }
    }
    复制代码

    将代码复制粘贴到IDE,烧录程序到Arduino

    Arduino 蓝牙与Android 通信的实现

      首先下载Android的蓝牙管理软件 Amarino 

      下载地址 http://download.csdn.net/detail/hunhun1122/9846856

     

     

      安装上Amarino 后,启动Android的蓝牙,打开Amarino客户端

      

      在右下角Add BT Device中就能找到蓝牙的名字,

      

      在点击connect后,会弹出输入PIN的弹框,蓝牙默认PIN为1234,这里就没有截图说明了

       如图为连接成功后的界面

      

      点击Monitoring 可以看到蓝牙的连接信息如图

      

      

      连接成功之后,就是要看数据发送时候正常。这里直接点击send就可以实现发送

      

      参考Arduino代码,当Arduino接收都A符号时,就会在COM输出对应内容,则表明蓝牙通信正常 如图

      

      

      以上就是Arduino蓝牙模块与Android实现通信,希望对大家有所帮助

     

    展开全文
  • Arduino连接TGAM(蓝牙脑波模块) 因为从淘宝上购买以后,很多网店都没有与Arduino连接的代码,经历千辛万苦终于找到了官网的一段与Arduino通讯的代码。下面把资料以及连接附在这里,供大家学习。 百度网盘链接:...

    Arduino连接TGAM(蓝牙脑波模块)

    因为从淘宝上购买以后,很多网店都没有与Arduino连接的代码,经历千辛万苦终于找到了官网的一段与Arduino通讯的代码。下面把资料以及连接附在这里,供大家学习。
    这里附上官网链接:http://developer.neurosky.com/docs/doku.php?id=mindwave_mobile_and_arduino

    百度网盘链接:https://pan.baidu.com/s/18fkeSE6d1n24q9dkD6HQAQ
    提取码:ijdo
    在这里插入图片描述

    Arduino代码说明

    TGAM套件自带一个蓝牙,我们需要在Arduino板上再接一个蓝牙。两个蓝牙之间相互通讯。即设置两个蓝牙,一个为主机,一个为从机。

    这里需要注意:主机和从机之间可以互发数据。最主要的区别在于,蓝牙主机是主动搜索,而蓝牙从机只能被动连接。

    在这里插入图片描述

    连接图

    在这里插入图片描述
    在这里插入图片描述
    Arudino代码

    ////////////////////////////////////////////////////////////////////////
    // Arduino Bluetooth Interface with Mindwave
    // 
    // This is example code provided by NeuroSky, Inc. and is provided
    // license free.
    ////////////////////////////////////////////////////////////////////////
    
    #define LED 13
    #define BAUDRATE 57600
    #define DEBUGOUTPUT 0
    // checksum variables
    byte generatedChecksum = 0;
    byte checksum = 0; 
    int payloadLength = 0;
    byte payloadData[64] = {0};
    byte poorQuality = 0;
    byte attention = 0;
    byte meditation = 0;
    int raw=0;
    // system variables
    long lastReceivedPacket = 0;
    boolean bigPacket = false;
    
    //////////////////////////
    // Microprocessor Setup //
    //////////////////////////
    void setup() {
      pinMode(LED, OUTPUT);
      Serial.begin(BAUDRATE);           // USB
    
    }
    
    ////////////////////////////////
    // Read data from Serial UART //
    ////////////////////////////////
    byte ReadOneByte() {
      int ByteRead;
      while(!Serial.available());
        digitalWrite(13,HIGH);
      ByteRead = Serial.read();
      return ByteRead;
    }
    
    /////////////
    //MAIN LOOP//
    /////////////
    void loop() {
    
    
      // Look for sync bytes
      if(ReadOneByte() == 170) {
        if(ReadOneByte() == 170) {
    
          payloadLength = ReadOneByte();
          if(payloadLength > 169)                      //Payload length can not be greater than 169
              return;
    
          generatedChecksum = 0;        
          for(int i = 0; i < payloadLength; i++) {  
            payloadData[i] = ReadOneByte();            //Read payload into memory
            generatedChecksum += payloadData[i];
          }   
    
          checksum = ReadOneByte();                      //Read checksum byte from stream      
          generatedChecksum = 255 - generatedChecksum;   //Take one's compliment of generated checksum
    
            if(checksum == generatedChecksum) {    
    
            poorQuality = 200;
            attention = 0;
            meditation = 0;
    
            for(int i = 0; i < payloadLength; i++) {    // Parse the payload
              switch (payloadData[i]) {
              case 2:
                i++;            
                poorQuality = payloadData[i];
                bigPacket = true;            
                break;
              case 4:
                i++;
                attention = payloadData[i];                        
                break;
              case 5:
                i++;
                meditation = payloadData[i];
                break;
              case 0x80:
                i = i + 3;
               raw=payloadData[i-1]*256+payloadData[i];
               if(raw>=32768)
               raw=raw-65536;
                break;
              case 0x83:
                i = i + 25;      
                break;
              default:
                break;
              } // switch
            } // for loop
    
    #if !DEBUGOUTPUT
    
            // *** Add your code here ***
    
            if(bigPacket) {
              if(poorQuality == 0)
                digitalWrite(LED, HIGH);
              else
                digitalWrite(LED, LOW);
              Serial.print("PoorQuality: ");
              Serial.print(poorQuality, DEC);
              Serial.print(" Attention: ");
              Serial.print(attention, DEC);
              Serial.print(" raw ");
              Serial.print(raw);
              Serial.print(" Time since last packet: ");
              Serial.print(millis() - lastReceivedPacket, DEC);
              lastReceivedPacket = millis();
              Serial.print(" Att: ");
              int att=Serial.print(attention,DEC);
              Serial.print("\n");
    
              switch(attention / 10) {
              case 0:
          digitalWrite(LED, HIGH);        
                break;
              case 1:
            digitalWrite(LED, HIGH);
                break;
              case 2:
               digitalWrite(LED, HIGH);
                break;
              case 3:              
                digitalWrite(LED, HIGH);       
                break;
              case 4:
             digitalWrite(LED, HIGH);           
                break;
              case 5:
         digitalWrite(LED, HIGH);           
                break;
              case 6:              
            digitalWrite(LED, HIGH);       
                break;
              case 7:
            digitalWrite(LED, HIGH);        
                break;    
              case 8:
         digitalWrite(LED, HIGH);
                break;
              case 9:
                digitalWrite(LED, HIGH);
                break;
              case 10:
                
                digitalWrite(LED, HIGH);
                break;           
              }  
              Serial.flush();                   
            }
    #endif        
            bigPacket = false;        
          }
          else {
            
               }  
               Serial.flush();
        } 
      } 
    }
    
    
    

    这里从Arduino串口读取到专注度。从而可以还控制LED灯的开关,还有小车的运动。

    关于蓝牙主从机的连接我会稍后发。

    展开全文
  • 第一步:准备好做主机的蓝牙模块,用cp2102转串口模块连接蓝牙并进入AT设置模式(指示灯慢闪) 分别输入下面AT指令 (注意输入指令后加上回车后换行,发送后返回OK表示设置成功,如下指令是一条一条输入,切勿所有...
    简单说 一个蓝牙设置为主机,一个蓝牙设置为从机,设置对应密码波特率AT指令后,自动连接配对。


    第一步:准备好做主机的蓝牙模块,用cp2102转串口模块连接蓝牙并进入AT设置模式(指示灯慢闪)
    分别输入下面AT指令 (注意输入指令后加上回车后换行,发送后返回OK表示设置成功,如下指令是一条一条输入,切勿所有一起输入再点发送。设置完成后可以通过AT指令类似AT+NAME?这样的指令查询刚刚设置是否成功,具体参考HC05AT指令集


      AT+NAME=Bluetooth-Master  蓝牙主机名称为Bluetooth-Master 
      AT+ROLE=1                蓝牙模式为主模式
      AT+CMODE=1              蓝牙连接模式为任意地址连接模式
      AT+PSWD=1234             蓝牙配对密码为1234
      AT+UART=9600,0,0       蓝牙通信串口波特率为9600,停止位1位,无校验位
      AT+RMAAD                 清空配对列表


    第二步:准备好做从机的蓝牙模块用cp2102转串口模块连接蓝牙并进入AT设置模式(指示灯慢闪)
    分别输入下面AT指令 (注意输入指令后加上回车后换行,发送后返回OK表示设置成功
    (如果设置没有效果可以先恢复出厂设置AT+ORGL)


      AT+NAME=Bluetooth-Slave  蓝牙名称为Bluetooth-Slave
      AT+ROLE=0                蓝牙模式为从模式
      AT+CMODE=1              蓝牙连接模式为任意地址连接模式
      AT+PSWD=1234             蓝牙配对密码为1234
      AT+UART=9600,0,0       蓝牙通信串口波特率为9600,停止位1位,无校验位
      AT+RMAAD                 清空配对列表

    第三步:分别给主模块和从模块选择进入工作模式,并重新上电。两个模块会自动连接然后配对,这样后,状态灯会出现慢闪烁指示。
    展开全文
  • 对于有TTL转接板的人来说,调试蓝牙很简单,用电脑调试非常方便。 如果没有TTL转接板的话,怎么调试呢? 不急,就用Arduino自身调试就行。...OK,现在可以调试蓝牙模块了,效果如下:代码如下:#include

    对于有TTL转接板的人来说,调试蓝牙很简单,用电脑调试非常方便。
    如果没有TTL转接板的话,怎么调试呢?
    不急,就用Arduino自身调试就行。

    原理就是:用软串口连接蓝牙,与硬串口通讯。
    需要做的工作:
    1、将蓝牙TX、RX连接到两个数字IO口上(而不是RX、TX口),用于软串口通讯。
    2、建立软串口,将软硬串口的数据互发。

    OK,现在可以调试蓝牙模块了,效果如下:

    这里写图片描述

    代码如下:

    #include <SoftwareSerial.h>
    SoftwareSerial s(8,9);//建立软串口(8号口模拟RX,9号口模拟TX)
    //接线为蓝牙TX接ArduinoRX(D8),蓝牙RX接ArduinoTX(D9)。
    void setup() {
    Serial.begin(9600);//启用硬串口
    s.begin(9600);//启用软串口
    }
    
    void loop() {
    //如果软串口有数据,就发送到硬串口
    while (s.available()>0)
    {
      Serial.print(char(s.read()));
      delay(2);
      }
    //如果硬串口有数据,就发送到软串口
    while (Serial.available()>0)
    {
      s.print(char(Serial.read()));
      delay(2);
      }
    //延时一下,进入下一循环
    delay(100);
    }
    展开全文
  • arduino蓝牙模块

    2019-01-18 18:04:17
    一、蓝牙模块Arduino 主要分两步,第一步设置蓝牙模块(AT模式),如,设置成从动任何设备可连接,设置名称及密码等;第二步,编写相应的控制程序; HC05(ZS-040)蓝牙模块与手机连接参考链接参考1 蓝牙模块AT设置...
  • 首先材料,L298N,步进电机,杜邦线,HC-05蓝牙模块arduino模块 制作智能小车的连线部分网上都有, 这里只说蓝牙部分,首先你要依照网上所说的把hc-05进入AT调成从模式,别的随意 然后就是arduino蓝牙模块的...
  • 在淘宝店中买的HC-05主从机一体蓝牙模块,该模块的正面和反面截图如下:  测试的时候只使用了RX、TX、GND、5V这四个引脚,测试的连接示意图如下,需要注意的是蓝牙模块的RX要接Arduino的TX,蓝牙模块的TX要...
  • 蓝牙模块arduino应用

    2020-05-12 23:31:09
    Arduino有专门的蓝牙版本,但是价格不菲,而且在国内暂时还无法买到。好在蓝牙技术本身在国内已经得到了比较的应用,虽然厂商不是太多,但经过一番周折还是找到了一个适合在Arduino上使用的蓝牙模块
  • Arduino项目中我们常常使用蓝牙模块进行蓝牙通讯,蓝牙模块是一种集成了蓝牙功能的PCB板,可以实现短距离的无线数据传输。 特点: 1)Arduino蓝牙模块发送和接收数据是以ASCII码形式传输;如调用蓝牙模块发送...
  • 在本篇文章中,我们将主要介绍如何使用HC05蓝牙模块Arduino开发板通过蓝牙进行通信和发送数据。在本文结束时,您将学习到: ● 有关蓝牙协议的基础信息 ● 如何使用蓝牙发送数据 ● 如何将AT-Command发送到HC05 ...
  • Arduino的TXHC05蓝牙模块的RXD Arduino的RXHC05蓝牙模块的TXD HC05蓝牙模块接3.3V,舵机5V,9号端口。 经测试:舵机未损坏,HC05蓝牙模块暂未测试是否损坏。 各位大神看看APP程序和Arduino程序有问题吗? ...
  • 在我的上一篇文章中,我们已经学习了如何配置HC-05蓝牙模块,并且作为主设备和从设备,在两个独立的Arduino开发板板之间进行蓝牙通信。 在我们开始使用智能手机控制Arduino开发板的第一个示例...
  • 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...
  • 进入 At 模式进行蓝牙基本参数设置想要使用 Arduino蓝牙模块,首先要对蓝牙模块进行基本参数设置。基本参数设置主要包含:蓝牙名称、模式以及匹配密码等。设置蓝牙模块可以使用 USB-TTL 连接电脑使用串口调试软
  • 1) 说明: 蓝牙模块用于和手机或其它带蓝牙的设备通讯。蓝牙设备分为主从两种模式,作为主设备时,它查找和连接其它设备;...注意: Arduino与电脑和蓝牙模块通讯都使用串口TX/RX,同时操作时产生冲突,
  • 本实验基于Arduino开发套件、蓝牙模块,运用App Inventor快速开发一个遥控APP,实现对Arduino驱动的发光二极管的开关控制。APP至少设计四个按钮,分别控制3种不同的发光二极管,一个控制跑马灯效果。 二、学习内容 1...
  • 通过手机进行通信是可以实现很多遥控功能,虽然距离是比较短,...这次使用的是蓝牙HC-06从模块,就是从机模块,这都因为买之前没有问清楚什么叫从什么叫住。 所以在这解释一下,如有错误请指正。谢谢 HC-05是主...
  • UNO连接蓝牙模块与安卓手机通讯教程" TITLE="Arduino UNO连接蓝牙模块与安卓手机通讯教程" /> 最左边的是HC-06蓝牙模块,中间的一对金属圆柱是超声测距的传感器,最右是Arduino UNO开发板。然后操作者点按手机中...
1 2 3 4 5 ... 20
收藏数 1,946
精华内容 778