700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Arduino蓝牙模块实验(HC-42)

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

时间:2020-05-23 22:49:36

相关推荐

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接3void setup(){Serial.begin(9600);//设置arduino的串口波特率与蓝牙模块的默认值相同为9600BT.begin(9600); //设置虚拟输入输出串口波特率与蓝牙模块的默认值相同为9600Serial.println("HELLO") //如果连接成功,在电脑串口显示HELLO,在蓝牙串口显示helloBT.println("hello");}

2、接线

3、上传代码,启动Arduino

4、手机连接蓝牙模块

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

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

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

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

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

代码:

void loop(){//arduino有数据输入,就显示在电脑和手机上if(Serial.available()){ //判断串口缓冲区是否有数值char ch = Serial.read(); //将Arduino串口输入的字符赋给chSerial.println(ch);//在串口监视器打印出输入的字符chBT.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接3void setup(){Serial.begin(9600);//设置arduino的串口波特率与蓝牙模块的默认值相同为9600BT.begin(9600); //设置虚拟输入输出串口波特率与蓝牙模块的默认值相同为9600Serial.println("HELLO"); //如果连接成功,在电脑串口显示HELLO,在蓝牙串口显示helloBT.println("hello");pinMode(8, OUTPUT); //设置数字引脚8为LED灯的输出正极}void loop(){//arduino有数据输入,就显示在电脑和手机上if(Serial.available()){ //判断串口缓冲区是否有数值char ch = Serial.read(); //将Arduino串口输入的字符赋给chSerial.println(ch);//在串口监视器打印出输入的字符chBT.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串口输入的字符赋给chSerial.println(ch);//在串口监视器打印出输入的字符chBT.print(ch);//蓝牙模块的串口(在手机屏幕上显示)打印出电脑输入的字符ch}//同理,蓝牙模块有数据输入,就显示在电脑上if(BT.available()){char ch1 = BT.read(); //读取蓝牙模块获得的数据Serial.println(ch1);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。