单片机之蓝牙通信

news2024/11/26 17:41:14

目录

蓝牙介绍

HC05蓝牙模块

HC05参数

HC05引脚

各个引脚功能

HC05模块的作用

工作模式

配置模式

引脚接线

用AT指令进行配置

常用的AT指令

正常模式

测试步骤

烧录的程序

前言:

keil文件

蓝牙介绍

  • 蓝牙:Bluetooth,其是低成本的、近距离的无线通信;一般距离在10m以内,其是位于固定和移动设备之间建立通信环境提供的一种无限技术连接。
  • 蓝牙技术在2.4GHz的波段运行,这个波段是一种无需申请许可证的,用于工业,科技医学等领域的无线电波段。

HC05蓝牙模块

前言:

  • 我们为了利用蓝牙实现无线通信,需要有一个具备蓝牙功能的模块。
  • HC05是一款高性能的主从一体蓝牙串口模块,可以同各种蓝牙功能的电脑、蓝牙主机、手机等智能中端进行配对,该模块支持非常宽的波特率(4800——1382400)并兼容5V或3.3V单片机系统,使用非常灵活方便

HC05参数

注意:HC05蓝牙模块出场默认烧录的就是9600的波特率,默认为从机模式。

HC05引脚

注意:从图中可以看出,蓝牙模块一共有6个引脚,经过测试单片机只需要使用图中记得这4个引脚即可。

各个引脚功能

注意:最后一个STA引脚配对状态输出我们一般不连,因为通过手机就可以看出配对成功与否了。

HC05模块的作用

  • HC05蓝牙模块相当于一个中转,手机发出的数据通过蓝牙模块接收到后又传到了51单片机的RXD串口;51单片机TXD串口发过来的数据通过蓝牙接收后又传给了手机。
  • 手机和蓝牙模块利用的是蓝牙和蓝牙的无线通信,蓝牙模块和51单片机利用的是串口通信;因此,蓝牙模块的发送引脚要接单片机的接收引脚,蓝牙模块的接收引脚要接单片机的发送引脚。

工作模式

配置模式

前言:

  • 配置模式用来设置主从机、波特率、密码、连接等一系列信息(使用AT指令)其中需要我们设置的是波特率,主从机以及密码。其具有断电保存的功能,所以我们一般只需要配置一次。
  • 进入配置模式需要使用USB转TTL模块
引脚接线
  • 蓝牙VCC:接电源(3.3V——5V)
  • 蓝牙GND:接地
  • 蓝牙TXD:接在usb转TTL模块的RXD
  • 蓝牙RXD:接在usb转TTL模块对应的TXD上
  • 蓝牙EN:接在3.3V电源

注意:进入配置模式后,灯每2秒闪烁一次。

用AT指令进行配置

前言:

  • 打开安可信串口调试助手,选好自己使用的串口、将波特率设置为配置模式固定的波特率38400,将发送信行选项勾选后就可以发送AT指令了。
  • 我们之后设置的波特率是正常模式的波特率,若我们再次进入配置模式,那么配置模式波特率还是38400
常用的AT指令
  • AT:检查串口是否正常工作
  • AT+ORGL:恢复出厂设置,若把模块设置乱了,使用此命令恢复默认值
  • AT+ROLE=设置内容:设置蓝牙模块为主机/推荐从机(0为从机,1为主机)
  • AT+CMODE=1:设置蓝牙模块可以与任意设备连接
  • AT+UART=波特率,0,0:设置正常连接模式蓝牙波特率,一般为9600
  • AT+NAME=蓝牙名称:设置蓝牙模块蓝牙名称,如HC-05
  • AT+PSWD=蓝牙密码:设置蓝牙的连接密码,如1234

注意:

  • 对于后面有=(也就是有配置选项的将=及后面的配置改为?就可以对该信息进行查询)
  • 模块配置具有断电保存的功能,所以我们一般只需要配置一次。
  • 使用该蓝牙模块时,推荐从上往下设置(将命令一步步执行)

正常模式

前言:当设置完配置模式一系列参数后,我们便可以进入正常模式,将蓝牙模块和另一个拥有蓝牙模块的设备进行通信,从而传递数据

测试步骤
  • 要想使用蓝牙模块,提前你必须把程序写进单片机后,拔掉串口跳线帽后再连接蓝牙模块,因为电脑与单片机和蓝牙连接的单品机串口是同一个串口,会出现冲突
  • 关于引脚接线和上面配置的引脚接线一样,只不过将usb转ttl模块换位51单片机,将蓝牙EN模块不接而已。
  • 烧录好的单片机连接HC05模块接好线并打开后会出现灯一直闪烁,就表示等待连接
  • 使用蓝牙配对前,先要将手机打开蓝牙,手机再打开SPP蓝牙串口软件进行搜索,找到设备后点击配对,然后输入自己设置的配对密码后和蓝牙模块配对成功
  • 配对成功后的蓝牙模块的红灯不再闪亮,并且可以通过手机向单片机发送数据进而控制单片机。

烧录的程序

前言:

  • 需求:利用蓝牙调试助手发送数据的方式,手机控制P2各个LED灯的亮灭,同时在调试器中展示向单片机发送的数据。
  • 显示接收和发送两个部分,接收采用接收中断的行式来接收数据,当接收到数据以后我们将接收到的数据发回到上位机。
  • P2接口控制LED灯,而LED等采用共阳极连接,你需要引脚给他低电平他才亮。

keil文件

#include <regx52.h>
unsigned char dat=0,flag=0;
void initscon(){
	SCON=0x50; //8位异步通信方式,允许接收数据
	TMOD=0x20; //配置波特率发生器T1,工作方式为2
	TH1=0xFD; //重置TL1
	TL1=0xFD; //设置初值
	ES=1;	//开启串口中断
	EA=1;	//开启总中断
	TR1=1;	//打开波特率发生器T1
}
void main(){
	initscon();
	while(1){
	if(flag){
		SBUF=dat; //向串口助手发送数据
		flag=0;
	}
	}
}
void scon_isr() interrupt 4
{
	if(TI){
		TI=0; //数据发送完清TI
	}
	if(RI){
		RI=0;
		dat=SBUF;	//接收串口助手发送的值
		switch(dat){
			case 1:P2_0=~P2_0;break;
			case 2:P2_1=~P2_1;break;
			case 3:P2_2=~P2_2;break;
			case 4:P2_3=~P2_3;break;
			case 5:P2_4=~P2_4;break;
			case 6:P2_5=~P2_5;break;
			case 7:P2_6=~P2_6;break;
			case 8:P2_7=~P2_7;break;
			default:P2=0xff;
		}
		flag=1;
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1590898.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Day:007(1) | Python爬虫:高效数据抓取的编程技术(scrapy框架使用)

Scrapy的介绍 Scrapy 是一个用于抓取网站和提取结构化数据的应用程序框架&#xff0c;可用于各种有用的应用程序&#xff0c;如数据挖掘、信息处理或历史存档。 尽管 Scrapy 最初是为网络抓取而设计的&#xff0c;但它也可用于使用API提取数据或用作通用网络爬虫。 Scrapy的优势…

20240409在全志H3平台的Nano Pi NEO CORE开发板上运行Ubuntu Core16.04时跑通4G模块EC200A-CN【PPP模式】

20240409在全志H3平台的Nano Pi NEO CORE开发板上运行Ubuntu Core16.04时跑通4G模块EC200A-CN【PPP模式】 2024/4/9 14:25 【不建议使用ppp模式&#xff0c;功耗大&#xff0c;貌似更过分的&#xff01;网速还低&#xff01;】 【唯一的优点&#xff1a;ppp模式下是通过脚本配置…

【深度学习实战(3)】打印自己模型的推理帧率

一、FPS(每秒传输帧数-Frames Per Second) FPS就是目标网络每秒可以处理&#xff08;检测&#xff09;多少帧(多少张图片),FPS简单来理解就是图像的刷新频率&#xff0c;也就是每秒多少帧,假设目标检测网络处理1帧要0.02s&#xff0c;此时FPS就是1/0.0250 其中Processing tim…

【示例】MySQL-MySQL中常见的锁

前言 本文主要讲述MySQL中常见的锁。 总结 | 各类别锁的名字 锁级别锁名字解释全局锁read lock全局锁只有可读锁表级锁 - 表锁read lock 表共享读锁write lock 表独占写锁表级锁 - 元数据锁&#xff08;meta data lock&#xff0c;MDL&#xff09;SHARED_READ_ONLYSHARED_NO…

突破像素限制,尽显照片细腻之美——Topaz Gigapixel AI for Mac/Win

在这个数字化的时代&#xff0c;我们都热爱用照片记录生活中的美好瞬间。然而&#xff0c;有时候我们会发现&#xff0c;由于各种原因&#xff0c;照片的像素可能无法满足我们的需求。这时候&#xff0c;Topaz Gigapixel AI for Mac/Win 这款强大的照片放大工具应运而生。 Top…

09-ARM开发板的HelloWorld

在ARM开发板上运行x86_64平台程序 前面在Ubuntu系统编译生成了X86_64平台的HelloWorld程序&#xff0c;通过NFS服务器&#xff0c;尝试在开发板上直接运行。 如图所示&#xff0c;程序无法正常运行&#xff0c;终端提示ARM开发板在执行x86架构&#xff08;Intel或AMD&#xff…

童年女神大盘点:谁是第一个让你心动的动漫女神?

每当提起我们的童年记忆&#xff0c;总有一抹亮丽的色彩来自于那些国产动漫中的女性角色&#xff0c;她们以其独特的魅力、鲜明的性格和卓越的才智&#xff0c;深深地烙印在了我们的心底&#xff0c;成为了一代人的集体回忆。今天&#xff0c;让我们一同回首&#xff0c;盘点那…

centos 7 sshd服务无法自动随机启动

centos 7 sshd 服务无法伴随主机启动而启动&#xff0c;而使用systemctl start sshd可以启动&#xff0c;很奇怪。 后来使用Kimi查询&#xff0c;有提示“检查系统启动服务的顺序和状态” systemctl list-dependencies <service>确保所有依赖服务都已正常启动。 查看本…

Flutter第九弹 构建列表元素间距

目标&#xff1a; 1&#xff09;Flutter Widget组件之间间距怎么表示&#xff1f; 2&#xff09;列表怎么定义子项之间间距&#xff1f; 一、间距的表示组件 列表组件的间距一般采用固定间距&#xff0c;间距占据可见的空间。 已经使用的表示间距的组件 Spacer&#xff1a…

2024年妈妈杯数学建模C题思路分析-物流网络分拣中心货量预测及人员排班

# 1 赛题 C 题 物流网络分拣中心货量预测及人员排班 电商物流网络在订单履约中由多个环节组成&#xff0c;图 ’ 是一个简化的物流 网络示意图。其中&#xff0c;分拣中心作为网络的中间环节&#xff0c;需要将包裹按照不同 流向进行分拣并发往下一个场地&#xff0c;最终使包裹…

vue,table页签里的一列,点击时,会弹出时间线提示,高度自适应

需求&#xff1a;点击商品来源这一列 弹出一个时间线&#xff0c;查看商品的来源记录 <el-popover></el-popover> 弹出框组件 <el-timeline-item></el-timeline-item>时间线组件slot-scopescope slot是插槽&#xff0c;slot-scope“scope“语义更加明…

数学建模-最优包衣厚度终点判别法-三(Bayes判别分析法和梯度下降算法)

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是viperrrrrrr~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#xff…

Python(10):常见的4种设计模式(单例/工厂/策略/观察者)

文章目录 一、单例模式二、工厂模式三、策略模式四、观察者模式 程序中设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案&#xff0c;这些解决方案是众多软件按开发人员经过相当长的一段时间的实验和错误总结出来的。使用设计模式是为了重用代码、让代码更容易…

对于所有对象都通用的方法⭐良好习惯总结

对于所有对象都通用的方法⭐良好习惯总结 Object是每个类的父类&#xff0c;它提供一些非final方法&#xff1a;equals、hashCode、clone、toString、finalize... 这些方法在设计上是可以被子类重写的&#xff0c;但是重写前需要遵守相关的规定&#xff0c;否则在使用时就可能…

MYBATIS获取参数值

MYBATIS最核心的莫过于动态的获取各种的参数值, 为了将来更好的使用MYBATIS进行开发, 我们必须先打好 "获取参数值" 这一基础 一. MYBATIS获取参数值的两种情况: 1.${} 实质:字符串的拼接 注解:${}使用的字符串拼接的方式拼接SQL语句, 所以, 如果其中出现了字符串…

23. 【Android教程】轮播滚动视图:ViewFlipper

轮播视图 ViewFlipper 是 Android 从第一个版本就开始提供的 UI 控件&#xff0c;它能够承载多个 View&#xff0c;但一个时机只会有一个 View 展示在屏幕上。通过 ViewFlipper 我们可以实现很多常见的带有展示类型的功能&#xff0c;类似 Gallery、轮播图、导航栏、广告banner…

基于Springboot+Vue的Java项目-旅游网站系统(附演示视频+源码+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &am…

C# WinForm —— 项目目录结构

1. WinForm 应用程序项目 Properties&#xff1a;属性文件夹存放了一个自动生成的类文件AssemblyInfo.cs&#xff0c;保存了一些应用程序集的一些信息引用存放了一些为应用程序提供所需的&#xff0c;某些功能的一些程序集&#xff08;dll文件&#xff09;等添加引用&#xff…

一些知识点小细节

当遇到的问题有关逆序输出&#xff0c;可以转换一下思想&#xff0c;就是使用for循环的时候&#xff0c;i的初始化是从数组或者是字符串的最后一个&#xff0c;然后注意设置循环结束的条件&#xff0c;最重要的是不要忘记i--;而不是I&#xff1b; 注意&#xff1a;当要逆序输出…

蚓链赋能企业拥有“数据能力”会带来哪些变革?

数字时代&#xff0c;对任何一家无论大小的企业&#xff0c;数据都是不可或缺的资源和工具。蚓链赋能企业拥有“数据能力”将会给企业带来哪些变革呢&#xff1f; 首先&#xff0c;将会提高企业的业务效率&#xff0c;通过数据分析和挖掘&#xff0c;企业可以更好地了解客户需…