arduino蓝牙无法连接

2020-06-13 14:12:55 sweettttttt 阅读数 714

Arduino蓝牙无线自动下载程序

背景
玩OTTO 机器人,蓝牙遥控车等,装上蓝牙模块就可以用手机遥控 ,每次下程序之前都得取下蓝牙模块才能下载,很不方便。蓝牙和有线串口不能同时使用,因此将蓝牙模块集成下载功能。

一 简介

Arduino蓝牙无线下载器,只需要将5个线连接到arduino上即可,无需任何复杂操作,无需手动复位,即可自动对程序进行下载,同时在非程序下载阶段,可以将作为普通的无线串口使用,从机蓝牙支持手机蓝牙连接通信。蓝牙无线下载器支持波特率为115200bps的arduino的板子,支持UNO, nano, mega2560 等板子程序的无线下载

二 组成

     蓝牙下载器分为USB蓝牙主机、蓝牙从机两部分,配对后一对一使用,同一区域多对同时使用互不影响。

1)USB蓝牙主机:电脑USB即插即用,支持热插拔 ,自动搜索已配对从机(主从机配对出厂)并连接。带蓝牙状态指示灯,连接完成指示灯常亮;未连接状态指示灯闪烁。

       

 

2)蓝牙从机,模块尺寸与HC-06蓝牙模块大小一致,带蓝牙状态指示灯,连接完成指示灯常亮;未连接状态指示灯闪烁,蓝牙模块串口电平转换芯片,串口输出电平与arduino匹配,不会出现蓝牙下载时arduino串口灯闪较暗的情况,蓝牙模块和板上usb转串口不能同时使用(蓝牙串口优先于有线串口-详细可参考后面演示视频0),如需要使用arduino有线串口(板上usb转串口)需要取下蓝牙模块。

三 使用

1)蓝牙从机模块脚位如下图,与 Arduino控制板 接线 对应关系如下图 :

2)电脑端:插上USB蓝牙主机,装上驱动(驱动安装方法及文件网盘资料提供),识别出串口号。

3)蓝牙主机、从机连接:主机蓝牙和从机蓝牙都通电,主机按照保存mac地址自动搜索从机蓝牙(从机蓝牙mac地址主机出厂已写入),未连接时主机蓝牙和从机蓝牙指示灯都闪烁状态,连接完成后都变为常亮,此时可以进行arduino程序下载,或串口通信。程序下载和串口通信的波特率都是115200,不可修改,程序需要蓝牙串口通信须将波特率设置为115200。

 蓝牙从机名称修改和配对密码修改

1) 蓝牙从机模块 ,默认名称为ArduinoBT , 默认密码为:1234,名称和密码都可以修改

2) 安装CH340串口驱动 ,将蓝牙从机模块和USB转串口模块(发货提供)按照下图线序对应关系连接起来,然后把USB串口模块插到电脑USB上

3) 使用串口调试助手发送指令修改 ,具体修改过程详见使用说明书。

 蓝牙从机 与手机蓝牙连接

蓝牙从机与USB主机蓝牙断开后才能被手机蓝牙搜索,把USB主机蓝牙从电脑USB端拔下,等待蓝牙从机指示灯闪烁,此时可以使用手机蓝牙搜索从机蓝牙,蓝牙名称默认为ArduinoBT,密码为1234

六 演示视频

0)arduino 蓝牙下载-蓝牙串口优先于有线串口演示:https://v.qq.com/x/page/o0980k6o62r.html

1)arduino UNO蓝牙下载串口打印演示视频连接(光敏传感器实验,串口打印光敏数值):https://v.qq.com/x/page/m0980kz0gct.html

2)arduino OTTO蓝牙下载及手机蓝牙遥控演示视频连接:https://v.qq.com/x/page/u098075dm1f.html

3)arduino MEGA2560蓝牙下载视频连接(MEGA2560-MKS 3D打印机主板-蓝牙下载程序):https://v.qq.com/x/page/w0980voay6k.html

4)arduino nano蓝牙下载演示视频连接:https://v.qq.com/x/page/j0980ag5t6h.html

5)arduino 蓝牙无线下载器两对同时使用演示视频连接:https://v.qq.com/x/page/f09805q0fyl.html

6)arduino 蓝牙无线下载器米思齐软件下载使用演示视频连接:https://v.qq.com/x/page/y0980guisaf.html

7)arduino 蓝牙无线下载器Mind+软件下载使用演示视频连接:https://v.qq.com/x/page/b09804dkurx.html

七 购买链接 

https://item.taobao.com/item.htm?spm=a230r.1.14.29.5bf81af3FsvKxT&id=619722338321&ns=1&abbucket=6#detail

https://item.taobao.com/item.htm?spm=a230r.1.14.29.5bf81af3FsvKxT&id=619722338321&ns=1&abbucket=6#detail 

八 版权声明:本文为CSDN博主sweettttttt的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sweettttttt/article/details/106731499

2017-11-27 16:56:19 g1fdgfgdf2_ 阅读数 4156
简单说 一个蓝牙设置为主机,一个蓝牙设置为从机,设置对应密码波特率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                 清空配对列表

第三步:分别给主模块和从模块选择进入工作模式,并重新上电。两个模块会自动连接然后配对,这样后,状态灯会出现慢闪烁指示。
2017-09-18 10:32:16 weixin_37272286 阅读数 52782

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

  • 进入 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蓝牙模块与手机连接

2019-03-15 13:22:01 WALRE_HUNTER_RICO 阅读数 2006

一.预备知识

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累加实现,字符串可以通过数组存储实现数据流合成与截取

2019-08-04 15:02:50 qq_33902044 阅读数 362

树莓派和arduino蓝牙通信

树莓派上使用pybluez蓝牙模块

树莓派上使用蓝牙通信模块来进行通信

  1. pybluez的安装
    使用pip工具安装,python2 使用 sudo pip install pybluez 进行安装,python版本使用 sudo pip3 install pybluez 安装
    安装pybluez然后进入python import bluetooth 测试是否装好
    在这里插入图片描述
    没有报错说明安装成功
    2.pybluez 使用简要说明
    简单的的客户端代码
import bluetooth
 
bd_addr = "01:23:45:67:89:AB" #arduino连接的蓝牙模块的地址
 
port = 1
 
sock=bluetooth.BluetoothSocket( bluetooth.RFCOMM )
sock.connect((bd_addr, port)) #创建连接
 
sock.send("1") #发送数据
sock.close()  #关闭连接

 

arduino 上蓝牙模块使用

  1. Arduino HC05 接线
    VCC:接Arduino的5V。
    GND:接Arduino的GND。
    TXD:发送端,一般表示为自己的发送端,接Arduino的RX。
    RXD:接收端,一般表示为自己的接收端,接Arduino的TX。
    注意检查下引脚不要接错了,以防烧坏原件。
  2. 接好后打开arduino编辑器
    新建blue_tooth
    将代码粘贴进编辑器
void setup()
{
 Serial.begin(9600);
}
 
void loop()
{
  while(Serial.available())
   {
     char c=Serial.read();
     Serial.println("get message is :");
     Serial.println(c);
      if(c=='1')
        {
          Serial.println("hello arduino");
        }
   }
}

在这里插入图片描述
然后先将蓝牙模块的TXD RXD拔掉,编译上传程序。
显示上传成功后即可
3. 打开串口调试工具

在这里插入图片描述
树莓派上面运行 代码

import bluetooth
 
bd_addr = "01:23:45:67:89:AB" #arduino连接的蓝牙模块的地址
 
port = 1
 
sock=bluetooth.BluetoothSocket( bluetooth.RFCOMM )
sock.connect((bd_addr, port)) #创建连接
 
sock.send("1") #发送数据
sock.close()  #关闭连接

 

查看arduino串口调试工具
在这里插入图片描述
ok ,显示接收到字符“1”
现在树莓派就可以和arduino说话了。