HC-05无底板蓝牙模块连接51单片机,配置,安卓连接传输数据测试程序

2023-05-16

买个蓝牙模块以为是HC-06,没有底板,测试半天反应,后面才发现是HC-05,HC-05和HC-06的测试方法稍有不同

一、HC-05蓝牙模块连线

先上一个自己的接线(有点丑,凑活着测试一下)


下面是接线原理图,HC-06,HC-05,HC-04的接线原理图后面的资料里面有


我当时不知道自己的蓝牙模块的型号,就先给蓝牙模块上点,然后一一将PIO0-PIO11引脚接到开发板的LED灯上,根据灯的闪亮情况就知道是HC-05还是HC-06了,两个的LED灯的接线引脚不同,HC-05是PIO8,而HC-06是PIO1

接线的时候,蓝牙模块TXD引脚接单片机的RXD,蓝牙模块TXD引脚接单片机的TXD,电源接3.3V(我直接接到开发板的3.3V电源),GND接地,LED接指示灯(也是直接接到开发板的LED),KEY可以悬空,但是配置的时候要先接高电平

二、配置蓝牙模块

开始不知道模块是主机还是从机,反正是手机搜索不到,配置蓝牙模块的时候要TTL-USB转接器,连接方式电源接电源,地接地,蓝牙模块TXD接转接器RXD,蓝牙模块RXD接转接器TXD,测试的时候把蓝牙模块的LED灯接上(我接到开发板的,记得上电),要用指示灯判断蓝牙模块的状态

接好蓝牙模块和TTL-USB转接器的连线后,就可以将转接器接到电脑,对于HC-05模块转接器接电脑之前要把KEY引脚接到一个高电平(我接到开发板的高电平的),然后再把转接器接到电脑,等待指示灯间隔大概一秒闪一下,就连接上了,连上之后将KEY悬空,如果不把KEY引脚接到高电平,直接接转接器,指示灯会闪的很快,这是没连上的

连接上之后就可以用软件测试了,用串口调试助手和SSCOM32都可以,建议用SSCOM32,因为HC-05发送时要换行,SSCOM32有自动换行,如果用串口调试助手的话,要自己加上一个换行,串口调试助手好像只能找到COM1-COM4,我接到COM5的就找不到端口了

选择对应的端口号,HC-05的波特率一定要设置成38400,自动换行,下面是我测试命令,更多的命令在后面的文件中有,那个AT+NAME?获得名字好像不能用,设置名字可以用



HC-05的常用命令

设置名字:AT+NAME=MYBT

获得波特率:AT+UART?

设置波特率:AT+UART=4800

获得密码:AT+PSWD?

设置密码:AT+PSWD=1234

获得主从模式:AT+ROLE?

设置主从模式:AT+ROLE=1或0(1是主模式,0是从模式),设置成从模式才能被手机搜索到

3、蓝牙模块连接手机进行数据传输

要将蓝牙模块设置从模式哦

首先要将蓝牙模块和单片机连接好,前面已经说过了

我们的测试思路是将蓝牙模块和手机模块连接,连接后蓝牙模块对于单片机来说就是串口通信了,所以使用串口通信就可以使用蓝牙模块了

测试程序是单片机收到什么数据就发送什么数据回去


下面是单片机的程序

注意要将波特率设置成蓝牙模块一样的波特率,前面蓝牙设置成的4800,所以串口的也要设置成4800(11.0592MHZ的晶振)

程序将接收到的数据返回去,下载程序的时候要和蓝牙模块断开,因为都要用RXD,TXD,下载完后再连接蓝牙模块

#include<reg51.h>
void UsartConfiguration();
void main(){
	UsartConfiguration();
	while(1);
}

void UsartConfiguration(){
	SCON=0x50;		//设置为工作方式1			
	TMOD=0x20;		//设置计数器工作方式2
	PCON=0x80;		//波特率加倍
	TH1=0xF4;		//计数器初值设置,波特率是4800
	TL1=0xF4;
	ES=1;			//开中断
	EA=1;						
	TR1=1;			//开计数器
}
void Usart() interrupt 4{
	unsigned char receiveData;
	
	receiveData=SBUF; 	//接收数据
	RI = 0;           
	SBUF=receiveData; 	//将接收到的数据返回
	while(!TI);		  
	TI=0;			  
}

单片机的程序写好了,然后就是安卓端的程序了,安卓端为了最大的简化代码,我们最简单的写程序,实现和单片机的数据传输,只要可以和单片机通信,其他的程序在此基础上进行进一步扩充就比较容易了

1.蓝牙模块和单片机连接好之后,指示灯会快速闪烁,打开手机蓝牙,如果蓝牙模块连接正确,配置正确,就可以搜索到,然后配对,如果不知道蓝牙模块的密码或者名字,可以自己用AT命令配置成自己知道的再去配对,配置方法前面已经说过了

2.安卓端的程序

为了最大化的简化代码,实现通信,安卓程序我们写的比较简单,写之前先参考下:http://www.cnblogs.com/cxcco/archive/2012/01/15/2322783.html 关于安卓蓝牙开发

连接之前一定要先配对,蓝牙要打开,程序发送26个英文字母,手机收到26个英文字母,程序流程大概就是  

获得适配器->从适配其中取得已经配对的设备->找到要配对的设备->和该设备建立连接->获得输出和输入流->进行数据传输

下面是主要程序:


public class MainActivity extends Activity {
	
	private BluetoothAdapter mBtAdapter;
	private TextView inforTV;
	private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
	
	
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        
        inforTV = (TextView) findViewById(R.id.show_infor);
        
        //取得蓝牙适配器
        mBtAdapter = BluetoothAdapter.getDefaultAdapter();
        if(mBtAdapter != null){
        	if(!mBtAdapter.isEnabled()){
        		Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        		startActivity(intent);
        	}        	
        }
        //myHandler = new MyHandler(MainActivity.this.getMainLooper());
        //获得已经配对的设备
        Set<BluetoothDevice> pairedDevices = mBtAdapter.getBondedDevices();
        
        BluetoothSocket socket = null;
        InputStream inStream = null;
        OutputStream outStream = null;
		
        if(pairedDevices.size() > 0){
        	for(BluetoothDevice device : pairedDevices){
        		inforTV.append(device.getName()+"\n"+device.getAddress()+"\n\n");
        		//从已经配对的设备中找到要连接的设备,在测试时将MYBT改成自己的蓝牙模块的名字
        		if("MYBT".equals(device.getName())){
        			try {
        				//和已经配对的要连接的设备建立连接
						socket = device.createRfcommSocketToServiceRecord(MY_UUID);
						socket.connect();
        			} catch (IOException e) {
						inforTV.append("创建或连接异常!\n");
						if(socket != null){
							try {
								socket.close();
							} catch (IOException e1) {
								inforTV.append("关闭异常!\n");
							}
						}
					}
        			inforTV.append("创建成功!\n");
        			try {
        				//获取输出和输入流
						outStream = socket.getOutputStream();
						inStream = socket.getInputStream();
					} catch (IOException e) {
						inforTV.append("获取流异常!\n");
					}
        			inforTV.append("获取成功!\n");
        			try {
        				//输出一个字母时,接收一个字母
        				for(int i=0; i<26; i++){
        					outStream.write('A'+i);
        					inforTV.append(""+(char)(inStream.read()));
        				}
					} catch (IOException e) {
						inforTV.append("传输失败!\n");
					}
        		}
        	}
        }
        else{
        	inforTV.append("未发现设备!\n");
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
}




修改程序时,要将MYBT该成自己的蓝牙模块的名字,运行程序后等待连接一会,如果连接成功了,蓝牙模块的指示灯会快速闪两下后停一会儿,然后快速闪两下,程序在后面的资料里后。

以上就是全部的HC-05的蓝牙模块的连接,配置,和安卓的通信,希望可以和大家继续探讨。

资料链接:

串口调试助手,SSCOM32软件


蓝牙模块简单的安卓通信程序


HC-05,HC-06蓝牙模块资料


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HC-05无底板蓝牙模块连接51单片机,配置,安卓连接传输数据测试程序 的相关文章

  • 关于shiro的 subject.getPrincipal()方法

    1 说明 上一篇文章说明了 principal xff0c 而subject getPrincipal 是用来干嘛的 xff0c 他就是来获取你存储的principal xff0c 内部是怎么获取的那 xff0c 多个principal怎么
  • CentOS7 64位安装solr7.2.0

    声明 xff1a 本人为学习solr的新手 xff0c 如编写过程中有部队的地方还请各位大佬指正 本文为原创 xff0c 如要转载请注明出处 你能学到 xff1a 1 linux上solr的安装部署 xff0c 官方给出的运行方式 2 添加
  • 阿里巴巴20121009 研发/算法工程师 笔试试题【修正】

    第19题 a i 在排序后的位置是 i k i 43 k xff0c a i 43 2k 在排序后的位置是 i 43 k i 43 3k xff0c 必然有a i lt 61 a i 43 2k 所以数组a里实际上有2k个各自有序的 交错的
  • Jetpakc LiveData ViewMode详解

    前言 xff1a 本文不定时更新 xff0c 有问题欢迎在评论区提出 最近更新时间 xff1a 2022 06 21 介绍 在2017年 xff0c 那时 xff0c 观察者模式有效的简化了开发 xff0c 但是诸如RxJava一类的库有一
  • ARM64 Linux kernel + busybox rootFS via NFS over QEMU with GDB

    由于条件所限 xff0c 一般选择软件做前期模拟 xff0c 这里做一些ARM 64 Linux kernel模拟运行环境搭建工作的总结 xff0c 记录以便后用 本文只涉及kernel 43 busybox rootFS via NFS
  • 寒假学习心得--从0开始学破解

    寒假学习心得 从0开始学破解 写给和我一样将要接触或者才接触破解 的朋友们 前提 你必须得真正喜欢 她 一 工欲善其事 必先利其器 1 找一个中文版的OD PEID 记得就OD就有咱PYG版的某牛人强化版的等等等等 找一个合适的工具 干起事
  • 常用的“密码重置”代码

    61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • ORACLE多表查询优化

    转自某地 对作者很愧疚 不晓得地址了 ORACLE 多表查询优化 这里提供的是执行性能的优化 而不是后台数据库优化器资料 参考数据库开发性能方面的各种问题 收集了一些优化方案统计如下 当然 象索引等优化方案太过简单就不列入了 嘿嘿 执行路径
  • Word to PDF Converter v3.0 算法分析及注册机

    Word to PDF Converter v3 0算法分析及注册机 详细过程 1 xff0c 主程序在C Program Files doc2pdf DOC2PDF dll xff0c PEID查壳为ASProtect 1 23 RC1
  • Debian11连不上网络问题

    有时候可以连上 xff0c 有时候就连不上 连不上的时候 xff0c 使用ifconfig命令 xff0c 只能看到回环接口 xff0c 看不到分配的网络IP地址 最后终于解决了 xff0c 记录一下 xff0c 以防之后出现同样的问题 1
  • 安全策略调整步骤

    1 修改防火墙 xff0c 保留22 SSHD 8081 APACHE 80 关闭端口443 HTTPS 3306 MYSQL 8080 8088 53 123 2 针对PHP的BUG和安全漏洞 xff0c 只有升级版本一途 xff0c 经
  • 获取微信openid(或昵称头像)的授权登录及其代理

    lt php 本页用于微信授权登录及其代理 64 version V2 0 64 author ty1921 lt ty1921 64 gmail com gt 64 param backurl 传get参数backurl xff0c 则授
  • 常用的PHP文件头和HTML5文件头(含移动端)

    lt php PHP Header Created by ty1921 64 gmail com Ver V1 Date 2017 8 18 1 session session start 2 display errors ini set
  • VB+PHP实现在线修改Windows服务器的配置文件

    本文仅供记录 存档备案用 用途 xff1a 某电话转接系统 xff0c 需要每天修改配置文件 并重启服务端程序 原理 xff1a WEB用于展示修改界面 xff0c 提交 保存配置文件的相关数据 VB端用于定时轮训WEB上保存的数据 xff
  • 按键精灵的5级开发认证,笔试题参考

    4题是抄的 xff0c 只是为了过级 最后得93分 xff0c 可能代码还是不够最优 xff0c 有看出的大大希望能不吝指点 1 写一个脚本 xff0c 要求启动时 xff0c 记录 xff08 录制 xff09 当前鼠标的移动轨迹 xff
  • Linux for Ubuntu用gdebi安装deb文件

    在bantu中安装deb文件有时很不方便 xff0c 通常默认用的安装器并效果并不理想 xff0c 有时用命令吧 xff0c 太多又繁琐 所以有个软件叫GDebi xff0c 可以更加有效的帮助安装deb 首先安装gdebi程序 xff0c
  • Xshell连接后又断开问题(Disconnected from remote host)

    Last login Fri Nov 1 12 36 08 2019 from 10 0 1 25 Connection closed by foreign host Disconnected from remote host 20 0 0
  • ubuntu-16.04.6安装教程

    下载Ubuntu16 04 xff08 1 xff09 下载地址 xff1a http releases ubuntu com 16 04 记得要下载iso文件如 ubuntu 16 04 desktop amd64 iso xff0c 3
  • Hive安装详细步骤

    一 下载hive 下载hive 地址 xff1a http mirror bit edu cn apache hive 二 安装mysql 执行以下几个命令安装8 0版本mysql 1 下载MySQLyum源 xff08 8 0版本的 xf
  • LL(1)文法的语法分析java实现

    java代码如下 xff1a package 文法分析器 import java io BufferedReader import java io FileInputStream import java io InputStreamRead

随机推荐

  • CSDN,我的良师益友

    鲁迅曾说过 xff1a 不是缺乏天才 xff0c 而是缺乏培养天才的土壤 对于中国的 IT 行业来说 xff0c 从来不缺乏技术英雄 xff0c 缺少的是铸就技术英雄的平台 而 CSDN 就给了我们这样一个平台和机会 xff0c 所以我们是
  • 构造中小型园区网实训案例

    构造中小型园区网实训案例 一 实验工具与实验拓扑规划1 实验工具2 实验拓扑 二 需求分析三 数据规划四 实施步骤步骤1 xff1a 配置所有终端步骤2 xff1a 配置所有接入层交换机步骤3 xff1a 配置网关路由器AR1 公网路由器A
  • 软件工程复习

    第一章 xff1a 课程概述 1 1 软件危机 1 1 1 计算机软件的四个发展阶段 程序设计阶段 程序系统阶段 软件工程阶段 面向对象阶段 1 1 2 什么是软件危机 xff08 考点 xff09 软件危机是指在计算机软件的开发和维护过程
  • ArrayDeque底层实现

    一 什么是ArrayDeque 1 Deque与Queue 了解这个之前 xff0c 我们要先知道什么是Deque xff0c 它和Queue有什么区别 xff1a 在java中 xff0c Queue被定义成单端队列使用 xff0c De
  • Hive知识点汇总

    HIVE 一 Hive的优化 数据倾斜 xff1a shuffle之后Key的分布不均导致分配到Reduce端的数据不均匀 xff0c 出现个别Reduce的数据过大 xff0c 执行时间过长而出现的现象 1 数据倾斜产生的原因 xff1a
  • CentOS7安装与克隆

    CentOS7安装与克隆 一 新建虚拟机及其配置二 配置虚拟网络编辑器三 安装CentOS 7四 一些工具的安装五 虚拟机克隆六 虚拟机克隆后的配置七 配置ssh免密登陆八 批处理脚本与集群分发脚本1 将家目录配置进环境变量2 批处理脚本3
  • NGINX ./configure详解

    在 34 configure 34 配置中 xff0c with 34 表示启用模块 xff0c 也就是说这些模块在编译时不会自动构建 without 34 表示禁用模块 xff0c 也就是说这些模块在编译时会自动构建 xff0c 若你想N
  • Linux下Nginx安装使用

    一 下载解压nginx span class token comment 进入要放安装包的目录 span span class token builtin class name cd span opt software span class
  • java Collections类 详解

    目录 一 前言 二 Collections类简介 三 Collections类常用方法演示 1 static void reverse List list 代码演示 2 static void shuffle List list 代码演示
  • Activity onNewIntent注意事项

    数据上报发现 xff0c onNewIntent 以后 xff0c onResume和onPause可能不会执行 xff0c 直接执行onStop
  • Python+OpenCV实用案例应用教程:人脸检测和识别

    计算机视觉使很多任务成为现实 xff0c 其中两项任务就是人脸检测 xff08 在图像中定位人脸 xff09 和人脸识别 xff08 将人脸识别为特定的人 xff09 OpenCV实现了一些人脸检测和识别的算法 从安全到娱乐 xff0c 这
  • 基数排序 详细讲解

    1 基数排序 桶排序 介绍 基数排序 xff08 radix sort xff09 属于 分配式排序 xff08 distribution sort xff09 xff0c 又称 桶子法 xff08 bucket sort xff09 或b
  • CentOS7安装docker后服务启动不了

    问题排查 运行yum install docker后 xff0c 安装完成docker 运行 docker info 命令测试docker是否正常 则提示以下错误 xff1a Cannot connect to the Docker dae
  • Linux命令+shell脚本大全:处理损坏的包依赖关系

    有时在安装多个软件包时 xff0c 某个包的软件依赖关系可能会被另一个包的安装覆盖掉 这叫作 损坏的包依赖关系 xff08 broken dependency xff09 如果系统出现了这个问题 xff0c 先试试下面的命令 xff1a y
  • 世界上最简单的无锁哈希表

    英文原文 xff1a preshing xff0c 感谢 64 浅水清流 的热心翻译 如果其他朋友也有不错的原创或译文 xff0c 可以尝试推荐给伯乐在线 以下是译文 无锁哈希表 xff08 Lock Free Hash Table xff
  • nginx ssl及http自动跳转到https配置

    1 Nginx路径配置 如下请求地址 http x x x x 8080 api base test 此时 zo java这个应用接收到的地址是 xff1a http x x x x 8080 api base test location
  • 视图绑定.

    在大多数情况下 xff0c 视图绑定会替代 findViewById 视图绑定功能可按模块启用 要在某个模块中启用视图绑定 xff0c 请将 viewBinding 元素添加到其 build gradle 文件中 xff0c 如下例所示 x
  • 优秀程序员的故事

    A君默默的工作了3年 xff0c 从项目初立 xff0c 到遍地开花 工作不忙 xff0c 工资没长 新领导来了 xff0c 下个版本重新开发 xff0c A君继续维护老版本 新招了一批人 xff0c 加班加点干了半年多 直到版本发布 xf
  • Synchronized锁

    1 Synchronized基本特性回顾 应用场景 xff1a 多线程环境下保证线程的安全性 使用方式 xff1a 1 xff09 Synchronized加在普通方法上 xff0c 使用的是this锁 xff0c 也就是当前对象 2 xf
  • HC-05无底板蓝牙模块连接51单片机,配置,安卓连接传输数据测试程序

    买个蓝牙模块以为是HC 06 xff0c 没有底板 xff0c 测试半天反应 xff0c 后面才发现是HC 05 xff0c HC 05和HC 06的测试方法稍有不同 一 HC 05蓝牙模块连线 先上一个自己的接线 xff08 有点丑 xf