news 2026/1/13 14:24:10

C51_HC-05蓝牙通信

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C51_HC-05蓝牙通信

文章目录

  • 一、蓝牙
    • 1、蓝牙的特点
    • 2、蓝牙特性
  • 二、HC-05
    • 1、简介
    • 2、主要参数
    • 3、引脚
    • 4、模块原理图
    • 5、工作模式
      • 1)、命令响应工作模式
      • 2)、自动连接工作模式
      • 3)、进入命令响应工作模式(AT指令模式)
      • 4)、工作流程
  • 三、AT命令
  • 四、实例操作
    • 1、配置蓝牙
      • 1)、串口连接
      • 2)、进入命令响应工作模式
      • 3)、AT指令
    • 2、51与手机通讯
      • 1)、原理图
      • 2)、程序代码
      • 3)、实例现象

一、蓝牙

蓝牙(Bluetooth)是一种用于无线通信的技术标准,允许设备在短距离内进行数据交换和通信。
它是由爱立信(Ericsson)公司在1994年推出的,以取代传统的有线连接方式,使设备之间能够实现低功耗、低成本的数据传输和通信。

1、蓝牙的特点

无线通信:蓝牙允许设备在近距离内(通常是10米左右,具体取决于设备版本)进行通信,无需使用电缆或其他物理连接。
低功耗:蓝牙技术被设计为低功耗的通信方式,这使得它在移动设备上广泛使用,如智能手机、平板电脑、蓝牙耳机等。
多设备连接:蓝牙允许一个主设备(如手机)同时连接多个从设备(如蓝牙耳机、蓝牙音箱等),实现更灵活的数据传输和通信。
通用性:蓝牙技术在许多设备和应用中得到广泛应用,例如无线耳机、键盘、鼠标、汽车蓝牙连接、智能家居设备等。
安全性:蓝牙技术在不断发展和改进中,以提高其安全性,以防止未经授权的访问和数据泄露。

2、蓝牙特性

工作频段
工作在全球通用的 2.4GHz ISM 免费频段(2.400-2.4835GHz),无需申请频段许可,但会与 Wi-Fi、zigbee 等技术存在频段重叠,可能产生干扰。
通信距离
根据功率等级分为 3 类,嵌入式常用 Class 2(对应 HC-05 模块):
Class 1:功率 100mW,通信距离约 100 米(工业级)
Class 2:功率 2.5mW,通信距离约 10 米(消费级,如 HC-05、手机蓝牙)
Class 3:功率 1mW,通信距离约 1 米(耳机等微型设备)
传输速率
蓝牙 2.0+EDR:最高 3Mbps(HC-05 基于此版本)
蓝牙 4.0(BLE 低功耗):最高 1Mbps,主打低功耗,适合物联网传感器
组网方式
采用 微微网(Piconet) 结构:1 个主设备最多连接 7 个从设备,主从设备间双向通信。

二、HC-05

1、简介

HC-05蓝牙模块是一种基于蓝牙协议的简单无线通信设备。
该模块基于BC417单芯片蓝牙IC,符合蓝牙v2.0标准,支持UART和USB接口。

2、主要参数

波特率 :4800、9600(默认)、19200、38400、57600、115200、230400、460800、921600、1382400
工作温度:-25℃~75℃
工作电压:DC3.3V~5.0V
工作电流:配对中:3040mA;配对完毕未通信:18mA;通信中:5~20mA

3、引脚

模块通过6个2.54mm间距的排针与外部连接。

4、模块原理图

5、工作模式

1)、命令响应工作模式

当模块处于命令响应工作模式时能执行AT命令,用户可以向模块发送各种AT指令,为模块设定控制参数或发布控制命令。

2)、自动连接工作模式

当模块处于自动连接工作模式时,将自动根据事先设定的方式连接的数据传输。
主(Master):查询周围蓝牙设备,并主动发起连接,从而建立主、从蓝牙设备音的透明数据传输通道。
从(Slave):被动连接。
回环(Loopback):被动连接,接收远程蓝牙主设备数据并将数据原样返回给远程主设备。

3)、进入命令响应工作模式(AT指令模式)

1 按下模块上的按键(PIO11置高)。
2 对HC-05重新上电,模块进入AT命令响应工作模式。
3 使用串口助手,配置成波特率38400,数据位8 位,停止位1 位,无校验位,无流控制。
4 串口助手发送字符串“AT\r\n”,正常情况下模块会给出“OK\r\n”,“\r\n”为回车换行,也叫做新行。

4)、工作流程

AT指令模式配置HC-05模块。
重新上电模块,进入自动连接工作模块,连接从模块(也可以使用AT指令,在AT指令模式下连接从模块)。
建立蓝牙连接,LED常量,直接使用串口完成通信。

三、AT命令

AT+NAME:查询修改蓝牙名称。
AT+NAME或AT+NAME?,返回蓝牙名称。
AT+NAME=XXX,修改蓝牙名称为XXX。
AT+ROLE:查询修改主从模式。
AT+ROLE或AT+ROLE?,返回当前主从模式,1表示主机,0表示从机。
AT+ROLE=X,修改主从模式,X为1或0,对应主机和从机。
AT+CMODE:查询修改连接模式。
AT+CMODE或AT+CMODE?,返回连接模式,1表示任意蓝牙地址连接模式,0表示指定蓝牙地址连接模式,需要地址绑定
AT+COMDE=X。
AT+PSWD:查询修改配对密码。
AT+PSWD或AT+PSWD?,返回密码,默认是1234。
AT+PSWD=XXXX,XXXX为新密码。
AT+ADDR:查询蓝牙模块地址。
返回蓝牙模块地址,如98d3:91:fd3d35。
AT+BIND:查询修改绑定连接地址。
AT+BIND或AT+BIND?,返回绑定连接地址。
AT+BIND=XX,XX,XX,修改绑定地址,在CMODE=0时可用,注意冒号改为逗号。
AT+UART:查询修改串口波特率。
AT+ORGL:复位蓝牙模块。
AT+RMAAD:清空配对列表。

四、实例操作

1、配置蓝牙

1)、串口连接

2)、进入命令响应工作模式

第一种:
模块上电,未配对情况下就是AT模式,波特率为模块本身的波特率,默认:9600,发送一次AT指令时需要置高一次PIO11;
第二种:
PIO11 置高电平后,再给模块上电,此时模块进入AT 模式,波特率固定为:38400,可以直接发送AT指令。

3)、AT指令


注意点:
AT+NAME?:获得设备名称,这个AT指令有很大可能性是没有返回的。
AT+UART?:获得串口参数,串口的参数一共有三个,波特率、停止位、检验位。其取值如下:

其默认值为:9600,0,0。

2、51与手机通讯

手机蓝牙(SPP蓝牙调试APP)点亮LED灯,1~8点亮LED,9全灭。

1)、原理图


2)、程序代码

#include<REGX52.H>#include<stdlib.h>sbit LED1=P2^0;sbit LED2=P2^1;sbit LED3=P2^2;sbit LED4=P2^3;sbit LED5=P2^4;sbit LED6=P2^5;sbit LED7=P2^6;sbit LED8=P2^7;unsignedchardat;voidUART_init()//设置串行通信 本晶振为11.0592MHZ{TMOD=0x20;TH1=0xfd;TL1=0xfd;//波特率9600SM0=0;SM1=1;// 串口工作方式1 10位异步REN=1;//串口允许接收TR1=1;EA=1;ES=1;//串口中断}voidUART_SendByte(unsignedcharByte)//字节的发送{SBUF=Byte;while(TI==0);//当数据发送完成时,TI会变为一TI=0;}voidmain(){UART_init();LED1=1,LED2=1,LED3=1,LED4=1,LED5=1,LED6=1,LED7=1,LED8=1;while(1){switch(dat){case1:{LED1=0;break;}case2:{LED2=0;break;}case3:{LED3=0;break;}case4:{LED4=0;break;}case5:{LED5=0;break;}case6:{LED6=0;break;}case7:{LED7=0;break;}case8:{LED8=0;break;}case9:{LED1=1,LED2=1,LED3=1,LED4=1,LED5=1,LED6=1,LED7=1,LED8=1;break;}}}}voidUART_INTERRUPT()interrupt4{if(RI==1)//RI=1时表示接收到了数据{dat=SBUF;//创建变量dat接收缓存区的数据,实现接收。RI=0;UART_SendByte(SBUF);//或SBUF = dat; 将数据放于缓冲位实现发送。}}

3)、实例现象

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/24 1:59:00

前端工程师必看:AI+前端+A/B测试 实战指南(小白友好版)

前端工程师必看&#xff1a;AI前端A/B测试 实战指南&#xff08;小白友好版&#xff09; 是不是总觉得“AI”“A/B测试”这些技术离自己很远&#xff1f;其实现在前端已经能直接对接AI能力、落地A/B测试了&#xff01;这篇文章会从**“是什么→前端要做什么→怎么实现”** 一步…

作者头像 李华
网站建设 2025/12/28 5:28:54

2、初探Puppet清单编写

初探Puppet清单编写 1. Puppet简介与重要性 在过去几年里,配置管理在IT领域变得越来越重要。特别是对于服务器操作而言,如果没有强大的管理基础设施,几乎无法进行。在众多可用的配置管理工具中,Puppet已成为最受欢迎和广泛使用的解决方案之一。它最初由Luke Kanies编写,…

作者头像 李华
网站建设 2025/12/25 4:40:55

7、Puppet资源类型与模块:深入剖析与实践应用

Puppet资源类型与模块:深入剖析与实践应用 1. Puppet资源管理基础 在Puppet的资源管理体系中,资源类型和提供者是核心概念。资源类型定义了Puppet在DSL(领域特定语言)中暴露的接口,同时负责输入值的验证、转换等工作。而提供者则封装了实际操作系统及其工具链的知识,实…

作者头像 李华
网站建设 2025/12/24 18:00:59

8、利用类和自定义类型模块化清单

利用类和自定义类型模块化清单 编写综合类 许多类的编写目的是让 Puppet 在代理平台上执行重大任务。以 Apache 类为例,我们可以构思一个能被任何机器的清单包含的类,并确保满足以下条件: - 安装防火墙软件并配置默认规则集。 - 安装恶意软件检测软件。 - 定时任务按设定…

作者头像 李华
网站建设 2026/1/6 5:00:26

linux查看内存

以下几种办法&#xff1a; dfdf -h (显示GB)gpustat

作者头像 李华
网站建设 2026/1/1 12:46:47

2026年,想成为高级网安人,你必须掌握这10项技能!

随着网络犯罪分子不断升级他们的攻击手段&#xff0c;企业和个人面临着前所未有的风险。在这种危机中&#xff0c;网络安全专业人员的作用变得越来越重要。 据教育部《网络安全人才实战能力白皮书》数据显示&#xff0c;国内已有34个高校设立网络空间安全一级学科。直到2027年…

作者头像 李华