0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Arduino IDE的两个HC-05蓝牙模块连接设计方案

电子设计 来源:一板网 作者:风筝 2021-01-03 07:18 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

HC-05蓝牙模块是任何Arduino项目必不可少的蓝牙模块!很容易进行连接以及在Arduino IDE中编写代码。在大多数项目中,我们通常将HC05连接至Arduino,并使用它与其他智能设备(如手机)进行无线通信。这非常简单,我们已经用它建立了许多有趣的项目,例如蓝牙控制机器人、蓝牙语音控制、蓝牙家庭自动化等。但是,您是否需要将两个HC-05连接在一起?将HC05相互连接并非易事,其中涉及一些其他步骤。本文将指导您完成此过程。

o4YBAF_q84qAd7KEAAX0T3fux_w756.png

所需的组件

● 2个Arduino开发板

● 2个HC05蓝牙模块

● 面包板

● 跳线

● 2个1kΩ电阻

● 2个2.2kΩ电阻

电路原理

以下是基本电路图。将其中的两个电路连接起来,一个用于主机电路,一个用于从机电路。对于连接,我们在这里所做的就是将HC05连接到Arduino。 HC05的接收器(Rx)引脚在0V至3.3V范围内运行,而Arduino在0V至5V范围内运行。因此,我们将使用电阻器(R1和R2)创建一个分压器,以将Arduino的5V输出降低至3.3V,以免损坏HC05模块。

o4YBAF_q85-AUzlKAAF1HmQHbZs600.png

我为R1使用1kΩ,为R2使用2.2KΩ,但您可以使用任何电阻值,只要R2大约是R1的两倍(R2≈2R1)即可。如下所示为Arduino主机蓝牙电路和Arduino从机蓝牙电路。

pIYBAF_q87OAYOFoAAG6oPIbPfU914.png

pIYBAF_q88KAfwVuAAZpEbWjaJo841.png

HC05模块的初始配置

这是将两个HC05模块连接在一起所需的额外步骤。我们需要更改HC05蓝牙模块内部的某些设置,为此,我们必须进入HC05模块的AT命令模式,并通过Arduino IDE的串口监视器向其发送命令。为此,我们需要编写一个Arduino代码,以通过串口监视器将命令发送到HC05。

首先将SoftwareSerial库添加到此代码。

#include

定义发送(Tx)和接收(Rx)引脚号。我将引脚2用于Tx,将引脚3用于Rx。

#define tx 2

#define rx 3

给蓝牙连接起个名字(这里我使用configBt),然后告诉SoftwareSerial库哪个引脚是Tx,哪个引脚是Rx。语法为bluetoothName(Rx,Tx);

SoftwareSerial configBt(rx, tx); // RX, TX

为了配置蓝牙模块,Arduino需要以波特率38400向其发送命令。同样,我们将蓝牙连接的波特率也设置为38400。将发送(Tx)设置为输出引脚,将接收(Rx)设置为输入引脚

void setup()

{

Serial.begin(38400);

configBt.begin(38400);

pinMode(tx, OUTPUT);

pinMode(rx, INPUT);

}

在loop函数中,我们实现代码的主要部分。这里的想法是通过Arduino的Tx引脚将串口监视器中文本框中键入的内容发送到HC05。然后在串口监视器中显示HC05的输出。

void loop()

{

if(configBt.available()) // if the HC05 is sending something…

{

Serial.print(configBt.readString()); // print in serial monitor

}

if(Serial.available()) // if serial monitor is outputting something…

{

configBt.write(Serial.read()); // write to Arduino’s Tx pin

}

}

首先将此代码上传到连接到主机HC05模块的Arduino。上传代码后,拔出Arduino电源线。按住HC05上的按钮。现在,在仍按住HC05上的按钮的同时插入Arduino电源线。好了,现在您可以释放HC05上的按钮了。这就是您进入HC05的AT模式的方式。要检查您是否已正确完成此操作,请确保HC05上的红灯大约每秒闪烁一次(缓慢闪烁!)。通常,在将HC05连接到任何蓝牙设备之前,它的红灯会以非常高的频率闪烁(快速闪烁!)。

接下来,打开串口监视器。在串行监视器窗口的右下角,如果尚未设置,请确保将行结束符设置设置为“Both NL and CL”,并将波特率设置为38400。现在,在串口监视器输入中键入AT命令,如果一切顺利,您将从串行监视器窗口中显示的HC05中获得“OK”。恭喜你!您已成功登录HC05模块的AT命令模式。

现在,在下表中输入以下命令以配置主HC05模块:

COMMAND RESPONSE 功能
AT OK 测试
AT + CMODE? OK 确定检查CMODE或连接模式-CMODE:0为从机,1为主机
AT + CMODE = 1 OK 在配置主机HC05时将CMODE设置为1
AT + ADDR? + ADDR:FCA8:9A:58D5 OK 返回HC05的地址

Arduino之间蓝牙通信测试

首先,为主机HCHC模块和从机HC05模块供电。接通电源并经过几秒钟后,查看HC05模块上的红灯。

红灯闪烁速度表示什么

闪烁频率很高(快速闪烁!)这意味着您的HC05模块未相互连接!

低频闪烁(缓慢闪烁!)不错!但是我们仍然需要再做一次检查,以确保此设置有效!

一旦您的红灯以低频闪烁(缓慢闪烁!),就可以确定两个HC05都已相互连接,但是我们尚未测试是否可以在主从之间来回发送数据。

将以下代码上传到Arduino,这是测试发射器(Tx)的代码,关于发射器和接收器的完整代码也可以在此页面的底部找到。

按照前面的代码,我们将SoftwareSerial库添加到此代码中,并定义发送(Tx)和接收(Rx)引脚号。然后,我们命名蓝牙连接并将Tx和Rx引脚号传递到库。

#include

#define tx 2

#define rx 3

SoftwareSerial bt(rx,tx); //RX, TX

在setup函数中,我们将再次设置Arduino串口监视器和蓝牙的波特率。与以前的代码相比,您在这里看到区别吗?我们使用的波特率为9600波特。与其他蓝牙设备通信时,这是HC05蓝牙模块的默认预设通信波特率。因此,请注意,38400用于通过AT命令配置HC05,而9600是HC05模块的默认波特率。最后,就像之前我们将Tx引脚配置为输出并将Rx引脚配置为输入一样。

void setup()

{

Serial.begin(9600);

bt.begin(9600);

pinMode(tx, OUTPUT);

pinMode(rx, INPUT);

}

在loop函数中,我们要做的就是通过HC05传输一个随机值“ 123”。

void loop()

{

bt.write(123);

}

将以下代码上传到另一个Arduino,这是测试接收(Rx)的代码:

与前面的代码完全相同,我们配置了SoftwareSerial库。

#include

#define tx 2

#define rx 3

SoftwareSerial bt(rx, tx); //RX, TX

setup函数功能中的代码与测试发射(Tx)的代码完全相同。

void setup()

{

Serial.begin(9600);

bt.begin(9600);

pinMode(tx, OUTPUT);

pinMode(rx, INPUT);

}

在loop函数中,我们只需要接收发送中的Arduino发送的内容即可。如果接收缓冲区已从HC05接收到某些数据,则显示串口监视器中接收到的内容。

void loop()

{

if(bt.available()>0)

{

Serial.println(bt.read());

}

}

将相应的代码上传到每个Arduino之后,将串口监视器打开到接收的Arduino。 确保在串口监视器中将波特率选择为9600,将行结尾符选择为Newline。 如果一切正常,您应该会看到123。

o4YBAF_q8-WAfUG-AABs1uNQlss771.png

注意:如果已将发送和接收Arduinos都连接到同一台笔记本电脑,请确保在“工具”>“端口”下选择正确的COM端口。 您应该连接到接收到的Arduino的COM端口。

如果一切顺利,请交换HC05模块,以确保双向通信可以完成!
编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 无线通信
    +关注

    关注

    58

    文章

    4860

    浏览量

    146471
  • 蓝牙模块
    +关注

    关注

    30

    文章

    627

    浏览量

    57557
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195974
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    高性能多协议蓝牙6.0无线模块

    PTR54L05S是一款基于NordicnRF54L05芯片打造的硬币大小、超低功耗的双核无线通信模块,专为物联网(IoT)和边缘计算应用设计。该模块集成了先进的无线协议支持与强大的处
    的头像 发表于 09-09 16:16 1923次阅读
    高性能多协议<b class='flag-5'>蓝牙</b>6.0无线<b class='flag-5'>模块</b>

    基本半导体连获两个行业奖项

    近日,基本半导体凭借在碳化硅模块领域的突出表现,连获“国产SiC模块TOP企业奖”和“年度优秀功率器件产品奖”两个行业奖项。
    的头像 发表于 09-05 16:31 890次阅读

    如何在 NuMaker-IoT-M467 板上使用 Arduino IDE 控制 Wi-Fi 模块

    在NuMaker开发板上,有一ESP-12F Wi-Fi模块;但是,Arduino IDE 中的 NuMaker UNO 包不提供该模块
    发表于 09-04 08:28

    如何用Arduino Nano/UNO R3开发板给另一Arduino IDE不能下载的Arduino Nano/UNO R3开发板重新烧录引导程序bootlaoder

    本文介绍了如何用能够Arduino IDE下载的Arduino Nano/UNO R3开发板给另一Arduino
    的头像 发表于 08-08 20:16 3064次阅读
    如何用<b class='flag-5'>Arduino</b> Nano/UNO R3开发板给另一<b class='flag-5'>个</b><b class='flag-5'>Arduino</b> <b class='flag-5'>IDE</b>不能下载的<b class='flag-5'>Arduino</b> Nano/UNO R3开发板重新烧录引导程序bootlaoder

    两个设备蓝牙音频改用一怎么实现

    两个设备蓝牙音频改用一怎么实现
    发表于 07-22 09:28

    请问一蓝牙芯片可以同时传输两个不同的数据吗?

    现在有两个不同的数据,想用一蓝牙芯片进行传输,可以做到吗?求解
    发表于 07-07 06:28

    PTR54L05蓝牙模块有哪些特性?

    PTR54L05是一款基于蓝牙5.1协议的低功耗(BLE)射频模块,采用Nordic nRF52系列芯片方案,支持主从一体模式。其核心参数包括: 通信距离 :理论最大100米(空旷环境
    发表于 06-25 09:54

    ESP32用作经典蓝牙串口透传模块与手机进行串口通信

    本文介绍了如何把ESP32用作一蓝牙串口透传设备使用,其功能和常用的HC-05/06串口蓝牙设备一样。并与手机蓝牙串口APP进行双向
    的头像 发表于 06-20 17:45 2106次阅读
    ESP32用作经典<b class='flag-5'>蓝牙</b>串口透传<b class='flag-5'>模块</b>与手机进行串口通信

    HC05蓝牙原理图加PCB

    HC05蓝牙原理图加PCB
    发表于 06-04 16:31 17次下载

    蓝牙低功耗模块的原理和应用介绍

    随着物联网技术的快速发展,蓝牙低功耗模块连接各种设备和传输数据方面发挥着重要作用。今天将为您介绍蓝牙低功耗模块的工作原理以及其广泛的应用领
    的头像 发表于 05-21 15:56 904次阅读

    开源项目!教你如何制作一开源教育机械臂

    22 x7 mm,用于增强运动精度。 集成模块: NRF24L01用于无线通信。 ESP8266-01用于WiFi和物联网应用。 HC-05用于蓝牙连接。 OLED显示屏128x
    发表于 03-10 11:22

    想要用一蓝牙模块与 DLP NIRscan Nano连接,怎么知道哪一UUID才是该设备蓝牙连接的UUID?

    DLP NIRscan Nano用户指南里边给了很多UUID,我现在想要用一蓝牙模块与 DLP NIRscan Nano连接,但是没弄明白哪一
    发表于 03-03 07:19

    蓝牙模块连接万物的隐形桥梁

    在物联网时代,蓝牙模块已成为连接智能设备的关键组件。这个微小的芯片,承载着数据传输、设备互联的重要使命,正在悄然改变着我们的生活。工作原理蓝牙模块
    的头像 发表于 02-19 16:40 1032次阅读
    <b class='flag-5'>蓝牙</b><b class='flag-5'>模块</b><b class='flag-5'>连接</b>万物的隐形桥梁

    CW32模块使用 HC05蓝牙模块

    HC-05 蓝牙串口通信模块,是基于 Bluetooth Specification V2.0 带 EDR 蓝牙协议的数传模块。无线工作频段
    的头像 发表于 01-23 12:57 956次阅读
    CW32<b class='flag-5'>模块</b>使用 <b class='flag-5'>HC05</b><b class='flag-5'>蓝牙</b><b class='flag-5'>模块</b>

    如何使用Arduino实现CAN总线通信呢

    的硬件模块实现CAN总线通信。 硬件需求 Arduino板 :任何支持Arduino IDE的板子都可以,例如Arduino Uno、Meg
    的头像 发表于 12-23 09:06 2818次阅读