Arduino Nano 蓝牙模块HC-05与手机通信实战指南

HC-05蓝牙模块调试及与手机通信 实现HC-05蓝牙模块的调试及与手机简单通信 阅读详情

1. 硬件准备与连接避坑指南

搞Arduino蓝牙通信,第一步就是硬件连接。别看只是几根线的事儿,这里面的坑我踩过不止一次。先说最基本的硬件清单:Arduino Nano开发板、HC-05蓝牙模块、杜邦线若干、还有你的智能手机。这些都是必备的,少一样都玩不转。

HC-05模块上有几个关键引脚需要特别注意:VCC接5V电源,GND接地,TXD和RXD负责数据收发。这里有个大坑——电平匹配问题。Arduino Nano是5V电平,而HC-05是3.3V设备。如果你直接把Nano的TXD接到HC-05的RXD,时间长了可能会烧模块。我当初就这么干过,损失了一个HC-05。

安全连接方案:最简单的办法是用两个电阻做分压电路。拿一个1kΩ和2kΩ的电阻串联,1kΩ接Nano的TXD,2kΩ接地,从中间抽头接到HC-05的RXD。这样5V信号就降到约3.3V了。如果嫌麻烦,也可以用现成的电平转换模块,某宝上几块钱一个。

接线时还有个细节:HC-05的STATE引脚可以告诉你连接状态。未连接时输出低电平,连接后变高电平。这个引脚可以接个LED指示灯,很实用。EN引脚用于切换工作模式和AT命令模式,一般通过按钮控制,调试时才会用到。

提示:给HC-05供电时最好单独供电,或者从Nano的5V引脚取电,不要用3.3V引脚,因为HC-05工作电流最大能达到30mA,Nano的3.3V引脚可能带不动。

2. 软件环境搭建与基础代码

硬件连好了,接下来是软件部分。你需要先安装Arduino IDE,这个没啥好说的,官网下载安装就行。重点在于代码编写和库的使用。

HC-05通常用SoftwareSerial库来模拟串口通信,这样既能避免占用硬件串口,又方便调试。我建议把蓝牙模块接到D10和D11引脚,因为这两个引脚中断功能比较完善,通信稳定。

先来看个最基础的示例代码:

#include <SoftwareSerial.h>

SoftwareSerial BTserial(10, 11); // RX, TX

void setup() {
  Serial.begin(9600);
  BTserial.begin(38400); // HC-05默认波特率
  
  Serial.println("蓝牙已就绪,等待连接...");
}

void loop() {
  // 从手机接收数据
  if (BTserial.available()) {
    char receivedChar = BTserial.read();
    Serial.print("收到: ");
    Serial.println(receivedChar);
    
    // 回声测试
    BTserial.print("Echo: ");
    BTserial.println(receivedChar);
  }
  
  // 从串口监视器发送数据
  if (Serial.available()) {
    char sendChar = Serial.read();
    BTserial.print("From PC: ");
    BTserial.println(sendChar);
  }
}

这段代码实现了最基本的回声功能:手机发什么,Arduino就回什么,同时在串口监视器显示。上传代码前,记得先把蓝牙模块的TX和RX线拔掉,否则可能会干扰程序上传。这是我踩过的另一个坑,上传失败了好几次才发现问题所在。

波特率设置:HC-05默认波特率通常是38400,但也可能是9600,具体看版本。如果不确定,可以先用AT命令查询(后面会讲怎么进入AT模式)。代码中的波特率一定要和模块设置一致,否则收到的全是乱码。

3. HC-05的AT命令配置详解

AT命令是配置HC-05的关键,但很多人卡在这一步。要进入AT模式,需要先在模块通电前按住按钮(或者将EN引脚拉高),然后上电。这时候模块指示灯会慢闪(约每秒一次),表示进入了AT模式。

进入AT模式后,需要用串口工具发送AT命令。我推荐用Arduino IDE自带的串口监视器,记得把行结束符改为"Both NL & CR",否则模块可能不响应。

常用AT命令清单:

  • AT:测试通信,正常应返回OK
  • AT+NAME?:查询模块名称
  • AT+NAME=MyBT:设置名称为MyBT
  • AT+PSWD?:查询配对密码
  • AT+PSWD="1234":设置密码为1234
  • AT+UART?:查询波特率
  • AT+UART=9600,0,0:设置波特率为9600

注意:发送AT命令时,波特率要设置为38400(大多数HC-05的AT模式波特率),如果没反应,可以试试9600或115200。

我建议先用AT+NAME修改模块名称,这样在手机蓝牙列表中更容易识别。密码也可以改,但一定要记住,否则以后连不上。波特率建议设为9600,这个速率最稳定,兼容性也好。

常见问题:有时候发送AT命令没反应,可能是接线问题。AT模式下,Arduino的TX要接HC-05的TX,RX接RX,与正常通信时相反。这个反接逻辑坑了不少人,包括当年的我。

4. 手机端APP选择与使用技巧

手机端需要个蓝牙串口APP,商店里一搜一大把。Android我用过十几款,实测下来"Serial Bluetooth Terminal"最好用,界面简洁功能全。iOS推荐"BlueSerial",虽然收费但值这个价。

安装好APP后,先到手机系统设置里配对蓝牙模块。打开蓝牙,搜索设备,应该能看到你的HC-05(或者你改的名字)。点击配对,输入密码(默认1234),配对成功后就能在APP里看到了。

APP使用技巧:

  • 连接前先进入APP设置,把发送新行(Newline)选项打开,这样每发送一条消息都会自动加换行符
  • 编码格式选UTF-8,中文不会乱码
  • 可以保存常用指令,比如开关命令,一键发送

如果连接不上,试试关闭手机蓝牙再重新打开,或者重启APP。有时候蓝牙协议栈会卡住,重启能解决90%的连接问题。

高级用法:很多APP支持按键自定义,你可以设置几个按钮,分别对应不同的控制指令。比如我做智能小车时,就设置了前进、后退、左转、右转四个按钮,每个发送不同的字符代码。

5. 双向通信实战与数据解析

基础的通信用回声测试没问题后,就该玩点真正的应用了。双向通信才是蓝牙模块的价值所在。

Arduino端代码升级:

#include <SoftwareSerial.h>

SoftwareSerial BTserial(10, 11);

String inputString = "";         // 存储接收到的字符串
boolean stringComplete = false;  // 字符串接收完成标志

void setup() {
  Serial.begin(9600);
  BTserial.begin(9600);
  
  inputString.reserve(200);  // 预留200字节内存
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  // 处理从手机收到的数据
  if (stringComplete) {
    Serial.print("收到指令: ");
    Serial.println(inputString);
    
    if (inputString == "LED_ON") {
      digitalWrite(LED_BUILTIN, HIGH);
      BTserial.println("LED已开启");
    } else if (inputString == "LED_OFF") {
      digitalWrite(LED_BUILTIN, LOW);
      BTserial.println("LED已关闭");
    } else {
      BTserial.print("未知指令: ");
      BTserial.println(inputString);
    }
    
    inputString = "";
    stringComplete = false;
  }
  
  // 读取传感器数据发送到手机
  static unsigned long lastSendTime = 0;
  if (millis() - lastSendTime > 2000) {  // 每2秒发送一次
    int sensorValue = analogRead(A0);
    BTserial.print("SENSOR:");
    BTserial.println(sensorValue);
    lastSendTime = millis();
  }
}

void serialEvent() {
  while (BTserial.available()) {
    char inChar = (char)BTserial.read();
    inputString += inChar;
    if (inChar == '\n') {
      stringComplete = true;
    }
  }
}

这段代码实现了指令解析和定时发送传感器数据。手机发送"LED_ON"和"LED_OFF"控制LED,Arduino每2秒发送一次模拟引脚A0的读数。

数据格式建议:简单的项目可以用字符串指令,复杂点的建议用JSON格式。比如:

{"cmd":"setLED","value":1}

解析起来更规范,扩展性也好。

6. 常见问题排查与解决方案

玩蓝牙通信难免遇到各种问题,我总结了几类常见故障和解决方法。

连接问题:

  • 手机搜不到模块:检查HC-05指示灯是否快闪(每秒2次),如果不是,可能是供电不足或模块故障
  • 配对失败:确认密码是否正确,试试默认1234或0000
  • 连接经常断开:可能是距离太远或有干扰,蓝牙Class2理论距离10米,实际隔墙就减半

数据问题:

  • 收到乱码:检查波特率是否一致,Arduino、HC-05、手机APP三处的波特率要相同
  • 数据丢失:尝试降低波特率或缩短发送间隔,蓝牙串口有流量限制
  • 中文乱码:确保手机APP和Arduino代码都使用UTF-8编码

稳定性问题:

  • 偶尔死机:给Arduino和HC-05的电源引脚加滤波电容,我用100μF电解电容并联0.1μF瓷片电容,效果很好
  • 距离短:避免模块靠近金属物体或电源线,这些都会屏蔽信号

提示:如果问题实在解决不了,尝试用AT命令恢复出厂设置:AT+ORGL。这会重置所有参数,包括波特率、名称、密码等。

7. 项目拓展与实用案例

基础通信搞定后,可以做一些实际项目了。我最开始用蓝牙做无线传感器网络,后来玩智能家居控制,到现在做了不少有意思的东西。

智能家居控制器:用手机控制家里的灯、风扇等电器。需要加继电器模块,代码里根据收到的指令控制相应继电器开关。我做的时候加了定时功能,可以用手机设定开关时间。

环境监测站:接上温湿度传感器(DHT11/DHT22),实时把数据发送到手机。还可以加空气质量传感器、光照传感器等。数据多了可以用手机APP做图表显示,直观多了。

蓝牙遥控车:这是最经典的项目了。用手机控制小车前进后退,需要电机驱动模块(L298N或TB6612)。进阶版可以加超声波避障、摄像头图传等功能。

无线编程:没想到吧?HC-05还可以用来给Arduino无线下载程序。需要先用有线方式烧录个引导程序,之后就能通过蓝牙上传代码了。适合设备安装好后不方便接线的情况。

每个项目都要注意电源问题。电机之类的大功率设备最好单独供电,不要从Arduino上取电,否则电压波动可能导致模块重启或通信中断。

我做这些项目最大的体会是:开始简单,慢慢深入。先从控制一个LED开始,逐步增加功能,遇到问题解决问题,积累经验最重要。蓝牙通信是个很实用的技能,玩熟了还能用在其他无线项目中。

学习 stm32 无线蓝牙模块HC05配置与应用(手机蓝牙连接发送参数) 学习 stm32 无线蓝牙模块HC05配置与应用(手机蓝牙连接发送参数) 阅读详情

相关推荐

从零打造手机蓝牙遥控机器人:Arduino、HC-05与L293D实战指南

嵌入式开发与物联网应用的核心在于实现物理设备的智能控制与无线通信。其基本原理是通过微控制器处理指令,驱动执行机构,并结合无线模块完成数据交互。在技术层面,电机驱动与蓝牙通信是实现动态控制的关键,这直接关系到设备的响应精度与稳定性。以Arduino平台为例,结合HC-05蓝牙模块和L293D电机驱动芯片,可以构建一个完整的无线运动控制系统。这种方案在机器人、智能小车及自动化教学项目中具有广泛的应用价值。本文聚焦于如何利用这些核心组件,系统性地完成一个手机遥控机器人的硬件设计、PCB制作、软件编程与调试优化,其

weixin_33747129的博客 882

蓝牙串口通信手机APP(适用于HC05,HC06等蓝牙模块)

蓝牙串口通信手机APP(适用于HC05,HC06等蓝牙模块),亲测有效,打开自动连接,无需配置蓝牙。

HC-05蓝牙模块AT指令模式详解与Arduino软件切换实战

串口通信是嵌入式系统和物联网设备中实现数据交换的基础技术,其核心原理是通过发送和接收数据帧实现设备间对话。在无线通信领域,蓝牙模块作为串口的无线延伸,极大拓展了应用场景。HC-05作为经典蓝牙串口模块,其价值不仅在于数据透传,更在于可通过AT指令进行深度配置,从而适应不同的波特率、设备名称、配对密码等参数需求,这对于批量部署和复杂应用开发至关重要。本文聚焦于HC-05的AT指令模式,详细解析其工作原理,并通过Arduino实现软件控制模式切换,解决了传统硬件短接配置的麻烦,为蓝牙遥控、智能家居、数据采集等场

weixin_34174422的博客 424

蓝牙模块(HC-05)与手机连接,蓝牙与蓝牙互联,电脑通过蓝牙控制单片机

蓝牙模块的学习

zhao710577624的博客 2万+

别再乱接线了!Arduino Nano + HC-05蓝牙 + DHT11传感器,保姆级避坑指南(附完整代码)

本文提供Arduino Nano与HC-05蓝牙模块、DHT11传感器连接的保姆级避坑指南,详细解析硬件连接、软件配置及代码调试技巧,助你快速搭建物联网温湿度监测系统。涵盖常见错误排查、手机端数据接收方案及系统稳定性优化,附完整代码示例。

weixin_33725807的博客 611

告别电脑!用手机和HC-05蓝牙模块,5分钟搞定Arduino程序烧录

本文详细介绍了如何利用手机和HC-05蓝牙模块快速完成Arduino程序烧录的全流程指南。通过Bluino Loader应用和简单的硬件连接,用户可以在5分钟内实现移动端编程,特别适合户外项目调试、教育场景和低成本创客开发。方案具有极致轻量化和超高性价比的特点,大幅提升了Arduino开发的灵活性和便捷性。

weixin_30875157的博客 434

HC-05蓝牙模块设置从机与手机通信

1、蓝牙与USB转TTL模块连接方式 RXD-TX TXD-RX VCC-VCC(5V-5V) GND-GND EN引脚不用接 2、进入AT模式 首先让AT引脚置高,然后接上蓝牙模块(有按键则按住蓝牙上的按键,再接通电源,进入AT指令模式),这时候将转串口模块接入电脑,当蓝牙模块state灯变为慢闪,则表明已经进入AT模式。打开串口调试助手便可以开始设置AT模式。(具体AT指令参考HC05 AT指令集) **AT模式下通信波特率为:38400,1个停止位,无奇偶校验** PC端串口助

Stark_的博客 1万+

别再乱接线了!手把手教你用HC-05蓝牙模块正确连接Arduino Nano读取DHT-11数据(附完整代码)

本文详细介绍了如何正确连接HC-05蓝牙模块与Arduino Nano,并稳定读取DHT-11温湿度传感器的数据。通过硬件连接指南、软件配置解析和常见问题排查,帮助创客爱好者快速构建温湿度监测系统,并提供完整代码和优化建议。

weixin_30352191的博客 510

Android手机HC-05蓝牙连接Arduino nano获取DHT-11温湿度传感器数据

目标 Android手机HC-05蓝牙连接Arduino nano获取DHT-11温湿度传感器数据 我以为的串口输出等于蓝牙输出,其实并不是 起初我所理解的,应该是这样连接 HC-05 nano  TX----RX  RX----TX  5V----5V GND----GND HT-05蓝牙3.3V即可,5V蓝牙可以自适应不会烧掉 DHT-11 nano  Out----D2  5V----5V GND----GND DHT-11温湿度传感器5V没问题,3.3V也能用 我认为温湿度传感器输出到了串口

望天吼 1万+

基于Arduino与HC-05蓝牙主从模式的无线温湿度监测系统搭建

物联网(IoT)系统通过传感器、微控制器和无线通信技术,实现对物理世界的感知、连接与控制。其核心原理在于将采集的模拟或数字信号,经由嵌入式处理器处理,再通过无线协议传输至终端进行显示或分析。这种技术架构的价值在于解决了传统有线部署的局限,实现了灵活、低成本的远程数据监控。在智能家居、环境监测、农业大棚等场景中,此类点对点无线传感网络尤为实用。本文聚焦于利用Arduino Nano微控制器、DHT11温湿度传感器与HC-05蓝牙模块,构建一个典型的**蓝牙主从模式**通信网络。通过详细解析**AT指令**配置

weixin_33674976的博客 418

Arduino+HC-05+App Inventor:手机蓝牙温湿度计搭建实战

蓝牙串口通信是物联网短距离数据传输的重要方式,它将物理世界的数据通过无线模块送达智能终端。在嵌入式开发中,传感器采集模拟或数字信号,经单片机处理后通过串口协议发送,再由蓝牙模块完成无线透传,手机端则负责解析与展示。理解串口波特率、数据帧格式和缓冲区处理是构建稳定链路的关键。这一技术在环境监测、智能家居、教学实验等场景中应用广泛,开发者可快速搭建低成本原型,实现远程数据可视化。本文基于Arduino开发板、DHT11传感器和HC-05模块,结合App Inventor图形化编程,详细演示如何构建一条完整的蓝牙

weixin_33946605的博客 449

Arduino Nano 蓝牙与智能手机数据通信测试

在项目中,你可能需要发送更复杂的数据,比如传感器数据、控制指令等。。T25.4H60,每条消息的字段保持固定的长度和顺序。

2272

Arduino蓝牙通信实战:基于HC-05模块的无线串口透传与项目应用

串口通信是嵌入式系统与外部设备交互的基础技术,通过定义数据格式与传输时序实现可靠的数据交换。其核心原理在于利用UART硬件或软件模拟,将并行数据转为串行比特流进行传输。在物联网与智能硬件领域,无线串口透传技术将传统有线串口通信升级为无线方式,极大提升了设备连接的灵活性与项目可移动性。HC-05蓝牙模块作为经典解决方案,通过模拟虚拟串口,实现了设备与手机、电脑等终端稳定、低成本的数据双向传输。该技术广泛应用于智能小车遥控、无线传感器数据采集、智能家居控制等场景。本文聚焦于Arduino平台,详细解析如何利用H

weixin_33946605的博客 421

Arduino Nano + 蓝牙模块实现手机控制家电核心要点

利用Arduino Nano与蓝牙模块结合,实现手机远程控制家电的核心方法。重点讲解Arduino Nano的引脚配置、蓝牙通信协议及手机端指令解析,帮助快速搭建智能控制原型系统。

weixin_35307279的博客 759

HC-05蓝牙模块主从模式实战:从智能小车遥控到无线传感器数据回传

本文详细介绍了HC-05蓝牙模块在主从模式下的实战应用,包括智能小车遥控和无线传感器数据回传。通过硬件选型、固件配置、代码解析和性能优化,帮助开发者快速掌握蓝牙模块的连接通信技术,提升项目开发效率。

weixin_30681121的博客 358

用App Inventor 2做个手机温湿度监测App:接收Arduino Nano+HC-05蓝牙+DHT-11的数据

本文详细介绍了如何使用App Inventor 2开发一个Android温湿度监测App,通过HC-05蓝牙模块接收Arduino Nano和DHT-11传感器采集的数据。文章涵盖从硬件配置、蓝牙通信到数据解析与可视化的完整开发流程,特别适合教育工作者和物联网初学者快速实现硬件与移动端的无缝对接。

weixin_30372371的博客 499

arduino 蓝牙示例_怎样使用Arduino设置蓝牙HC-05

步骤1:模块观察交换机顶端板上的微小开关,我们将使用它将电路板置于AT命令模式。 - 详情请见:http://exploreembedded.com/wiki/Setting_up_Bluetooth_HC-05_with_Arduino#sthash.IDzTy4yN.dpuf第2步:引脚功能:引脚说明Statel可以连接到Arduino输入,以便了解连接的状态。配对或断开连接。 Rx cRec...

weixin_36296827的博客 1394

51单片机与HC-05蓝牙通讯通过手机App控制灯亮灭

51单片机与HC-05蓝牙模块通过手机APP控制灯的亮灭

lj2407727730的博客 9291
上一篇: 从并行到串行:深入解析AD7606接口选择的权衡艺术
下一篇: 从编译器演进史看Keil5报错:ARM Compiler v5为何消失?
随身带U盘
博客等级 码龄4年 30粉丝 1526原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值