HC-05无底板蓝牙模块连接51单片机,配置,安卓连接传输数据测试程序
来源:互联网 发布:搜索引擎优化的案例 编辑:程序博客网 时间:2024/05/02 16:35
买个蓝牙模块以为是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;//设置为工作方式1TMOD=0x20;//设置计数器工作方式2PCON=0x80;//波特率加倍TH1=0xF4;//计数器初值设置,波特率是4800TL1=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蓝牙模块资料
- HC-05无底板蓝牙模块连接51单片机,配置,安卓连接传输数据测试程序
- 蓝牙模块HC-05与51单片机的连接
- HC-05蓝牙模块连接STC89C52单片机控制LED灯
- 实现蓝牙HC-05、06与单片机的连接…
- 蓝牙连接MSP430F1232单片机之后,不传输数据
- 蓝牙模块HC-05的测试
- hc-05蓝牙模块与arduino连接实现手机控制蓝牙智能小车
- HC-05蓝牙模块配置方法
- 实现蓝牙HC-05、06与单片机的连接及与手机通信(转)
- Ubuntu12.04与蓝牙模块HC-06连接
- Android蓝牙连接,传输数据
- hc-05 模块教程2 (两个hc-05连接)
- ArduinoUNO连接蓝牙模块与安卓连接进行测距
- HC-05蓝牙配置
- android上位机连接hc-06蓝牙模块(以蓝牙智能小车为例)
- arduino uno 逐个命令配置HC-05蓝牙模块
- 蓝牙模块 HC-06 的配置
- 编写安卓app程序连接指定的蓝牙设备
- git cherry-pick与git cherry命令详解
- 自定义单选ListView
- 安卓开发通过ViewPage和RadioButton+SharedPreferences实现欢迎页
- SMM(Spring+SpringMVC+Mybatis)
- linux命令之diff
- HC-05无底板蓝牙模块连接51单片机,配置,安卓连接传输数据测试程序
- 【Java基础】HashMap工作原理
- 机器学习——支持向量机(SVM)
- 使用JS监听键盘两个组合键触发的事件
- Java对象的生命周期
- 第二天等待中
- java调用hessian配置
- 【Java基础】ArrayList工作原理
- 启动第一个 KVM 虚机