http://www.geek-workshop.com/thread-3035-1-1.html
网上有很多单片机接蓝牙模块连接手机和电脑的教程。这里我做个非主流一点点的= =,就是两块arduino之间的蓝牙通信。因为发现网上貌似没有太具体的教程(反正我做的时候没找到)。我就来发一贴交流下自己的经验。 arduino用的是2块mango板子。蓝牙模块用到是open jumper的。。= =我知道很贵,是白富美学姐给我的<img class="s" src="http://imgstore01.cdn.sogou.com/app/a/100520032/e144" smilieid="soso_e144" border="0" alt="" /> 。。 PS:这里提醒下新手= =虽然这个模块的插针插在arduino上的TX RD上刚刚好合适,不过千万不能用IO口一个一个给高一个给低模拟VCC和GND哦!!不然模块工作会很不正常。。。好吧只是提醒,我知道只有我这个傻 X 会烦这样的错误。 首先,我们先把一个蓝牙模块设置成主机,一个设置成从机。 首先是主机的设置。
-
/*用于蓝牙模块的主机的设置,配置方法很多,这里只使用从arduino对模块设置AT指令的方法(= =嗯我知道我非主流)。
-
-
即把程序导入arduino后将USB和电脑!断开!。
-
连接模块,再连接USB(确保电脑中未开启arduino IDE或相关串口软件!!),就可以完成AT设置。之后断开模块的电源(不断会导致程序写入arduino发生错误。),连接USB导入相关程序(测试程序在2楼)即可。
-
-
Ps:一定要断开保证有关串口的软件保持关闭才能完成设置,否则系统会把写入信息写到电脑上而不是蓝牙模块里。*/
-
-
-
#define AT
2
-
#define LED
13
-
void
setup
(
)
-
{
-
pinMode
(LED,
OUTPUT
);
-
pinMode
(AT,
OUTPUT
);
-
digitalWrite
(AT,
HIGH
);
//AT的电平给高,用于输入AT指令
-
Serial.
begin
(
9600
);
//这里应该和你的模块通信波特率一致
-
delay
(
100
);
-
Serial.
println
(
"AT"
);
-
delay
(
100
);
-
Serial.
println
(
"AT+NAME=ICAT-BT01"
);
//命名模块名
-
delay
(
100
);
-
Serial.
println
(
"AT+ROLE=1"
);
//设置主从模式:0从机,1主机
-
delay
(
100
);
-
Serial.
println
(
"AT+PSWD=0000"
);
//设置配对密码,如1234
-
delay
(
100
);
-
Serial.
println
(
"AT+UART=9600,0,0"
);
//设置波特率9600,停止位1,校验位无
-
delay
(
100
);
-
Serial.
println
(
"AT+RMAAD"
);
//清空配对列表
-
delay
(
100
);
-
Serial.
println
(
"AT+BIND=0012,08,060146"
);
//设定从机的地址,保持格式一致。
-
delay
(
100
);
-
Serial.
println
(
"AT+CMODE=0"
);
//开启自动连接
-
delay
(
100
);
-
}
-
void
loop
(
)
-
{
-
digitalWrite
(LED,
HIGH
);
/*只用于证明程序导入arduino成功,和设置蓝牙模块无关*/
-
delay
(
500
);
-
digitalWrite
(LED,
LOW
);
-
delay
(
500
);
-
}
从机的设置代码:
-
/*和主机设置差不多,不过不用给定从机的地址和开启自动连接。设置方法同主机,要保持电脑的串口软件关闭*/
-
#define AT
2
-
#define LED
13
-
void
setup
(
)
-
{
-
pinMode
(LED,
OUTPUT
);
-
pinMode
(AT,
OUTPUT
);
-
digitalWrite
(AT,
HIGH
);
//AT的电平给高,用于输入AT指令
-
Serial.
begin
(
9600
);
//这里应该和你的模块通信波特率一致
-
delay
(
100
);
-
Serial.
println
(
"AT"
);
-
delay
(
100
);
-
Serial.
println
(
"AT+NAME=ICAT-BT02"
);
//命名模块名
-
delay
(
100
);
-
Serial.
println
(
"AT+ROLE=0"
);
//设置主从模式:0从机,1主机
-
delay
(
100
);
-
Serial.
println
(
"AT+PSWD=0000"
);
//设置配对密码,如1234
-
delay
(
100
);
-
Serial.
println
(
"AT+UART=9600,0,0"
);
//设置波特率9600,停止位1,校验位无
-
delay
(
100
);
-
Serial.
println
(
"AT+RMAAD"
);
//清空配对列表
-
}
-
void
loop
(
)
-
{
-
digitalWrite
(LED,
HIGH
);
-
delay
(
500
);
-
digitalWrite
(LED,
LOW
);
-
delay
(
500
);
-
}
再次声明,对蓝牙模块的AT设置可以有很多种方法,这里只说明了用arduino设置的方法。注意USB和IDE的关闭。 再次PS:不关闭IDE和串口软件会导致设置无法输入模块里哦!(好吧= =其实我也不确定,只不过关掉了安心) 二楼上测试连接模块的程序= =求不插! |
|
|
|
|
| |
|
本帖最后由 弘毅 于 2012-12-29 22:44 编辑 实验过程:让主机每300ms通过通过串口向从机发送一个信号。从机接到信号后用13 口的led做出反应。程序导入同正常导入一样(导入前请断开模块的电源!!)。不过通信过程最好关闭串口软件,包括arduino IDE。 主机程序:
-
setup
(
)
-
{
-
Serial.
begin
(
9600
);
//设定波特率为9600
-
}
-
-
void
loop
(
)
-
{
-
delay
(
300
);
-
Serial.
print
(
'0'
);
//通过串口发送一个’0’字符
-
delay
(
300
);
-
Serial.
print
(
'1'
);
-
}
-
-
-
从机程序:
-
void
setup
(
)
-
{
-
pinMode
(
13,
OUTPUT
);
-
Serial.
begin
(
9600
);
-
}
-
-
void
loop
(
)
-
{
-
char cd=
Serial.
read
(
);
//从串口读取一个字符
-
if
(cd==
'1'
)
-
digitalWrite
(
13,
HIGH
);
-
if
(cd==
'0'
)
-
digitalWrite
(
13,
LOW
);
-
delay
(
100
);
-
}
上效果图,不过看不出效果= =
|
|