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 位,只需更改一次,掉电保存。