一、工具
(1)arduino 开发板一块
(2)HC05或HC06蓝牙模块一个
(3)杜邦线若干根
(4)USB通讯线一根
(5)ANDROID手机一个
(6)面包板一个
二、 通信原理图
三、蓝牙模块引脚说明
四、电路接线图
五、操作步骤
1 将arduino控制板连接USB上电。
2 上传代码(代码见文末)
一定要注意上传代码时保证arduino控制板上数字输入输出端0和1接口不接任何外接设备,否则无法上传,即先将程序上传至arduino控制板再将HC-06连接在控制板的串口引脚上。
3 按上图接线,正确检查无误后连接USB上电会看到蓝牙模块有红色指示灯闪烁。这时,打开智能手机,以ANDROID手机为例。打开蓝牙开关并搜索找到相应的模块后如果是HC-06那么点击后连接配对,一般会要输入配对密码,一般为1234 或0000,输入后配对成功。
4 在手机端的蓝牙应用中与蓝牙模块连接,连接成功后红色指示灯常亮。此时便可以操作了。
注:蓝牙应用可在网上下载
六 代码
1 蓝牙模块控制led的亮灭
char val;
int ledpin=11;
void setup()
{
Serial.begin(9600);
pinMode(ledpin,OUTPUT);
}
void loop()
{
val=Serial.read();
if(val=='0')
{
digitalWrite(ledpin,HIGH);
Serial.println("LED ON!");
}else if(val=='1'){
digitalWrite(ledpin,LOW);
Serial.println("LED OFF!");
}
}
2 蓝牙模块控制led的亮度(程序可能有问题)
int brightness; //LED亮度变量
int serialData; //串口数据变量
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
pinMode(11, OUTPUT);
}
void loop(){
if( Serial.available()>0 ){ //如果串口缓存有数据
serialData = Serial.parseInt(); //将串口缓存数值存储到serialData变量
Serial.print("serialData = "); Serial.println(serialData);
if (serialData >=0 && serialData <= 255) {
if (serialData >= brightness){ //逐渐调节LED亮度
for (brightness; brightness <= serialData; brightness++){
analogWrite(11, brightness);
Serial.print("brightness = "); Serial.println(brightness);
delay(5);
}
} else if (serialData < brightness){
for (brightness; brightness >= serialData; brightness--){
analogWrite(11, brightness);
Serial.print("brightness = "); Serial.println(brightness);
delay(5);
}
}
注:此代码以11号引脚为输出
七、补充(通过蓝牙模块实现arduino与手机的通信,数据传输)
1 线路连接图
TX接端口2,RX接端口3,电源接5v
2 连接成功后,在手机端输入数据即可在arduino IDE上接收到,或者在arduino IDE上输入数据即可在手机端接受到。
3 代码
#include <SoftwareSerial.h>
SoftwareSerial BTserial(2, 3); // 建立SoftwareSerial对象,RX引脚2, TX引脚3
void setup() {
Serial.begin(9600);
BTserial.begin(9600); // HC-06 默认波特率 9600
Serial.print("HC-06 DEMO/TEST ");
BTserial.print("AT"); //可在此处输入设置HC-06蓝牙模块的AT指令。
//此AT指令须在HC-06未连接蓝牙状态输入。
pinMode(11, OUTPUT);
}
void loop(){
// 通过串口监视器显示HC-06发送的数据
if( BTserial.available()>0 ){ //如果软件串口有HC-06发来的数据
char BTserialData = BTserial.read(); //将软件串口中的数据赋值给变量BTserialData
Serial.print( BTserialData ); //通过硬件串口监视器显示HC-06发来的数据
if (BTserialData == '1') { //判断HC-06发来的数据是否是字符1
digitalWrite(11, HIGH); //如果是字符1,则点亮LED
} else if (BTserialData == '0') { //如果不是字符0
digitalWrite(11, LOW); //则熄灭LED
}
}
// 将用户通过串口监视器输入的数据发送给HC-06
if (Serial.available()>0) { //如果硬件串口缓存中有等待传输的数据
char serialData = Serial.read(); //将硬件串口中的数据赋值给变量serialData
BTserial.print( serialData ); //将硬件串口中的数据发送给HC-06
}
}
4 AT指令
网友评论