Arduino蓝牙模块实验(HC-42)

一、目的:

用手机连接蓝牙模块,并传输数据给Arduino板,进而控制led灯的开关。

二、主要材料:

蓝牙模块(HC-42)、Arduino板、led灯、电脑、手机

蓝牙模块(HC-42)简介:

HC42 蓝牙串口通信模块是新一代的基于 Bluetooth Specification V5.0 BLE 蓝牙协议 的数传模块。无线工作频段为 2.4GHz ISM,调制方式是 GFSK。模块最大发射功率为 4dBm, 接收灵敏度-96dBm。

 参数:

该蓝牙的默认波特率为9600

 接口说明:

TXD:输出——接arduino的RX      RXD:输入——接arduino的TX     GND——接arduino的GND

VCC:正极——接arduino的3.3V    

STATE:是蓝牙连接状态指示,连接成功此引脚为高电平(蓝牙模块的LED常亮),没有连接则为低电平(蓝牙模块的LED灯闪烁)。有的底板标识为“LED”。

 KEY :为控制蓝牙模块工作状态的,接高电平进入AT状态,接受命令控制和各种设置,接低电平或者悬空则蓝牙进入自动工作状态。有的底板标注为“EN"。可不接,也可接arduino的GND

三、步骤

1、编写初步代码

#include <SoftwareSerial.h>
//实例化软串口,设置虚拟输入输出串口。
SoftwareSerial BT(2, 3); // 设置数字引脚2是arduino的RX端,3是TX端
                         //所以蓝牙的TX接2,RX接3
void setup()
{
  Serial.begin(9600);     //设置arduino的串口波特率与蓝牙模块的默认值相同为9600
  BT.begin(9600);         //设置虚拟输入输出串口波特率与蓝牙模块的默认值相同为9600
  Serial.println("HELLO") //如果连接成功,在电脑串口显示HELLO,在蓝牙串口显示hello
  BT.println("hello");
}

2、接线

蓝牙模块Arduino
VCC

3.3V

GND        GND
RXD3
TXD2

3、上传代码,启动Arduino

4、手机连接蓝牙模块

在手机的应用商店下载个蓝牙助手,连接上蓝牙模块

 

连接成功后,蓝牙模块的LED灯常亮

此时,电脑上打开串口监视器(注意调节相应的波特率),发现“HELLO”

 再看手机屏幕,此时出现“hello”,证明连接成功

 5、手机、Arduino双向传输数据

代码:

void loop()
{
  //arduino有数据输入,就显示在电脑和手机上
  if(Serial.available()){    //判断串口缓冲区是否有数值
    char ch = Serial.read(); //将Arduino串口输入的字符赋给ch
    Serial.println(ch);      //在串口监视器打印出输入的字符ch
    BT.println(ch);          //蓝牙模块的串口(在手机屏幕上显示)打印出电脑输入的字符ch
  }
  //同理,蓝牙模块有数据输入,就显示在电脑上
  if(BT.available()){
    char ch1 = BT.read();  //读取蓝牙模块获得的数据
    Serial.println(ch1);
  }
}

 测试:

电脑端输入‘LOL’,手机通过蓝牙接收数据,在屏幕上显示‘LOL’

 手机输入‘love’,arduino的串口监视器显示‘love’,而手机没有设置显示就不显示

 四、实验

        手机控制LED开关

1、代码


#include <SoftwareSerial.h>
//实例化软串口,设置虚拟输入输出串口。
SoftwareSerial BT(2, 3); // 设置数字引脚2是arduino的RX端,3是TX端
                         //所以蓝牙的TX接2,RX接3
void setup()
{
  Serial.begin(9600);     //设置arduino的串口波特率与蓝牙模块的默认值相同为9600
  BT.begin(9600);         //设置虚拟输入输出串口波特率与蓝牙模块的默认值相同为9600
  Serial.println("HELLO"); //如果连接成功,在电脑串口显示HELLO,在蓝牙串口显示hello
  BT.println("hello");
  pinMode(8, OUTPUT);       //设置数字引脚8为LED灯的输出正极
}

void loop()
{
  //arduino有数据输入,就显示在电脑和手机上
  if(Serial.available()){    //判断串口缓冲区是否有数值
    char ch = Serial.read(); //将Arduino串口输入的字符赋给ch
    Serial.println(ch);      //在串口监视器打印出输入的字符ch
    BT.println(ch);          //蓝牙模块的串口(在手机屏幕上显示)打印出电脑输入的字符ch
  }
  
  //同理,蓝牙模块有数据输入,就显示在电脑上
  if(BT.available()){
    char ch1 = BT.read();  //读取蓝牙模块获得的数据
    Serial.println(ch1);
    if(ch1 =='a'){
    digitalWrite(8, HIGH);
    }
    if(ch1 =='b'){
    digitalWrite(8, LOW);
    }
  }
}

 手机输入‘a’,led开,输入‘b’,led关。

总结:关键点:1、设置模拟软串口SoftwareSerial  name(Pin ,Pin),软串口RX、TX的引脚,

2、蓝牙与Arduino的波特率要设置一样。

3、获取电脑端或手机端的字符,Serial.read / BT.read

五、进入蓝牙模块的AT指令模式

AT指令模式:AT 指令用来设置模块的参数,模块在未连线状态下可以进行 AT 指令操作,连线后进入串口透传模式。

现在网上关于进入蓝牙AT指令的文章都是HC-04、HC-05、HC-06等,偏偏就没有HC42的,

虽然他们进入的方法都大抵差不多,但是还是有那么一点不同。

网上的方法:

连接蓝牙模块,烧录代码进arduino板,拔掉蓝牙模块电源线,一边按住蓝牙模块上的小按钮一边接通电源线就进入了蓝牙模块的AT模式。

打开串口监视器,输入AT就会自动回复OK

关键所在:

1、两个波特率要相等

2、接线时KEY接GND

3、代码要求:一定要有读取串口代码,并输出的过程

如:

if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());

 如:

//arduino有数据输入,就显示在电脑和手机上
  if(Serial.available()){    //判断串口缓冲区是否有数值
    char ch = Serial.read(); //将Arduino串口输入的字符赋给ch
    Serial.println(ch);      //在串口监视器打印出输入的字符ch
    BT.print(ch);          //蓝牙模块的串口(在手机屏幕上显示)打印出电脑输入的字符ch
  }
  
  //同理,蓝牙模块有数据输入,就显示在电脑上
  if(BT.available()){
    char ch1 = BT.read();  //读取蓝牙模块获得的数据
    Serial.println(ch1);

 

A:要控制led灯,你可以将led灯连接到arduino板上,并使用蓝牙模块hc-05来发送控制指令。以下是步骤: 1. 将蓝牙模块hc-05与arduino板连接。将hc-05的VCC接到arduino的5V口,GND接到arduino的GND口,TXD接到arduino的RX口,RXD接到arduino的TX口。 2. 将led灯连接到arduino的数字引脚上。例如,将led灯的正极连接到arduino的D7引脚,负极连接到arduino的GND口。 3. 安装蓝牙模块hc-05的串口库,可以在arduino官网或github上找到。将蓝牙模块hc-05与arduino板连接后,打开Arduino IDE软件,选择Tools->Port,选择当前使用的串口,然后打开Serial Monitor。设置Baud Rate为9600。 4. 在arduino IDE中编写代码。以下是一个示例: #include <SoftwareSerial.h> SoftwareSerial bluetooth(2, 3); //接收/发送蓝牙数据 int led = 7; //连接到led的数字引脚 void setup(){ pinMode(led, OUTPUT); //设置led的引脚为输出模式 bluetooth.begin(9600); //初始化蓝牙串口 } void loop(){ if(bluetooth.available() >= 1){ //如果接收到来自蓝牙的数据 int value = bluetooth.read(); //读取数据 if(value == '1'){ //如果接收到字符1 digitalWrite(led, HIGH); //点亮led灯 } else if(value == '0'){ //如果接收到字符0 digitalWrite(led, LOW); //关闭led灯 } } } 5. 将代码上传到arduino板上。点击Arduino IDE的“上传”按钮。 现在你可以使用安装了蓝牙模块hc-05的手机或电脑的蓝牙连接到arduino板,并发送字符1或0来控制led灯。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值