首页 > 代码库 > Arduino蓝牙模块实现通信

Arduino蓝牙模块实现通信

蓝牙参数特点

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,

接下来就是写程序了。为了测试通讯,PC通过无线连接向arduino发送一个字符‘t‘,arduino收到后闪一下灯,并向PC反馈一个字符串"echo"。程序如下:

const int ledpin = 13;

const int pinRx = 0;

const int pinTx = 1; 

void setup()

{

Serial.begin(9600);

pinMode(ledpin, OUTPUT);

}

void loop()

{

int val = Serial.read();

if (val == ‘t‘)

{

digitalWrite(ledPin, HIGH);   // set the LED on

delay(500);

digitalWrite(ledpin, LOW);

delay(500);

Serial.println("echo");

}

}

  相对上一个程序,这里面有些新的东西,就是串口对象Serial,这个对象对应于0,1接口的串口设备;当然,其他3个串口也有对应的串口对象,名字分别为Serial1, Serial2, Serial3。编程参考可以看这个链接:http://arduino.cc/en/Reference/Serial。这里使用的对象接口函数很简单,Serial.begin(波特率),用于初始化串口并指定通讯的波特率;Serial.read()是从串口的接收缓冲区中读出一个字符,如果没有,返回-1;Serial.println(字符串)用于输出一个带回车符的字符串。需要提一下的是,arduino的第一个串口和FTDI USB-to-TTL串口芯片相接,也就是说这个串口设备可以通过USB线连接PC。

  程序写完,就可以上传运行了。蓝牙模块背面有2个灯,分别是power和state,通电后power就亮了,state灯却一直闪烁,这是因为蓝牙还没有连接。PC端这时需打开蓝牙管理,然后搜寻新的设备,会找到一个叫linvor的蓝牙设备。打开,这个设备只有一个蓝牙串口。点右键连接,跳出配对密码输入框,输入密码"1234"即可。连接完成后,可以看到蓝牙模块上的state灯长亮了,这表明连接正常,就可以进行通讯了。

  既然是通讯,PC端也要有个基于串口的通讯程序。除了使用arduino开发环境自带的Serial Monitor,自己也可以找一个流行的。咱是懒人,就用开发环境自带的好了,反正应用很简单,这个程序也够用了。点击开发环境最右面Serial Monitor那个图标,就跳出下面这个界面。不过要注意,在TOOL菜单下的COM选择,应该是对应蓝牙串口所用的那个串口编号,而不是USB的,否则,呵呵,就不是蓝牙无线通讯而是USB串口通讯了。

  最后补充一下,蓝牙模块的信息是可以通过AT命令来进行改动的,缺省情况下,蓝牙设备名是"linvor", 通讯波特率为9600,配对密码为"1234"。具体说明如下:

  通过串口与电脑连接,再通过串口调试助手给模块发送命令可以配置模块的一些参数,

具体的配置方式如下:

1)、测试通讯:发送AT 命令,返回ok

2) 更改波特率

模块默认的波特率是9600

发送AT BAUD1 返回OK1200

发送AT BAUD2 返回OK2400

……

BAUD1------------1200

BAUD2------------2400

BAUD3------------4800

BAUD4------------9600

BAUD5------------19200

BAUD6------------38400

BAUD7------------57600

BAUD8------------115200

BAUD9------------230400

A--------------------460800

B--------------------921600

C--------------------1382400

不建议使用超过115200 的波特率,因为大多系统都没有提供高

于115200 的波特率,PC 机也是如此,波特率设置超过115200 以后,

电脑无法使用,要使用波特率高于115200 的系统才能重新发AT 命令

设置低的波特率,否则无法恢复低波特率了。

用AT 命令设置好波特率后,下次上电不需要再设置,掉电可以

保存波特率。

3)更改蓝牙名字

发送:AT NAMEname

返回:OKname

参数name:你所要设置的名字,也就是蓝牙被搜索到的名字,

20 个字符以内。

例:发送AT NAMEJYOO

返回返回JYOO

参数可以掉电保存,只需设置一次

4)更改蓝牙配对密码

发送:AT PINXXXX

返回:OKsetpin

参数XXXX:所需设置的密码4 位,只需更改一次,掉电保存。

Arduino蓝牙模块实现通信