设计与开发

单片机与蓝牙模块通信 基于蓝牙的手机与单片机通信讲解,附代码

小编 2024-11-24 设计与开发 23 0

基于蓝牙的手机与单片机通信讲解,附代码

应粉丝要求,今天就把基于蓝牙的手机与单片机通信的代码送给大家,喜欢就关注我吧,让我们一块讨论技术问题!

在进行单片机开发以及参加比赛时,由于蓝牙模块控制方便,手机附带蓝牙功能(作为主机),信号稳定,低功耗等天然条件,这也决定了蓝牙模块必火。

今天我们使用的蓝牙模块为HC06一共有四个引脚分别为VCC,GND,RXD,TXD 对应连接到单片机上的VCC,GND,TXD,RXD 一定要注意RXD与TXD在连接中是交叉相连的,否则不能正常使用。

HC06正面图

51单片机引脚图

连接好之后就是写程序了(文章后面会出程序),写好之后生成HEX文件烧录到板子中,这时我们从机部分就完成了,主机也就是手机需要下载一个蓝牙串口通信助手,没有的伙伴可以去网上下载一个,百度上都能找的到,下载好之后打开蓝牙串口通信助手然后与蓝牙模块HC06连接,第一次连接的时候可能会输入密码,一般默认为1234,连接成功之后,一般有实时发送模式和键盘发送模式,具体使用方法大家可以下载下来试用一下。

蓝牙串口调试助手

键盘模式

实时发送模式

程序

#include<reg52.h>

sbit LED=P1^1;

unsigned char rx;

int flag;

void init(void)

{

TMOD|=0x20;

SCON=0x50;

PCON&=0x7f;

TH1=TL1=0xfd;

TR1=1;

ES=1;

EA=1;

}

void serial(void)interrupt 4 using 1

{

RI=0;

rx=SBUF;

switch(rx)

{

case 'a':flag=0;

break;

case'b':flag=1;

break;

default:

break;

}

}

main()

{

init();

while(1)

{

if(flag==0)

LED=0;

if(flag==1)

LED=1;

}

}

在上述程序中a和b即为单片机所接受到的数据,如果接收到信号a那么就打开LED灯,接收到信号b就关闭LED,你也可以多加点比如c,d等等这是完全可以的,那么手机呢就需要发送a或b在实时模式直接输入发送即可,在键盘模式需要设置一下,设置的时候需要点手机菜单键,然后在出现界面设置即可,这里没有图片就不给大家展示了,主机从机都设置完以后就可以正常使用了,接下来的工作就是任由你开发了,祝你取得好的成绩。

PS:上述程序只适用于51系列单片机,晶振为11.0592MHZ。

单片机与安卓手机通过蓝牙串口模块利用JSON数据格式通信实例

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation),JSON 是轻量级的文本数据交换格式,JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。JSON 具有自我描述性,更易理解。

JSON的结构:(1) Name/Value Pairs(无序的):类似所熟知的Keyed list、 Hash table、Disctionary和Associative array。在Android平台中同时存在另外一个类 "Bundle",某种程度上具有相似的行为。(2) Array(有序的):一组有序的数据列表。

开发工具

本文简要介绍单片机与安卓手机通过蓝牙串口模块利用JSON数据格式通信,单片机采用51系列单片机用C51语言编写,通过sprintf构造JSON格式文件通过蓝牙串口模块发送到安卓手机,简要代码如下:

sprintf(msg,"{\"RR\":\"%02x\"}\0",(unsigned int )RRtemp);

Serial_print(msg);

这里涉及到Serial_print()函数如下:

void Serial_print(char *msg)

{

while (*msg != '\0') {

S2BUF = *msg;

while ((S2CON & S2TI) == 0);

S2CON &= ~S2TI;

msg++;

}

}

可以利用安卓自带的org.json.JSONArray、JSONObject对JSON数据进行解析,org.json中的JSONObject和JSONArray解析如下:

1、JSONObject是JSON对象的键值对,例如:{“name”:”bobo”, “age”:”10”}。 2、JSONArrays是JSON的数组,例如[“aa”, “bb”. {“name”:”bobo”, “age”:10}]。

在安卓手机编写相关的代码,利用安卓蓝牙API编写代码,新建一个接受线程去接收蓝牙收到的数据,把接收到的数据用JSON数据的API进行解析,简要代码如下:

try {

JSONObject obj = new JSONObject(recStr);

info = Integer.parseInt(obj.getString("RR"), 16);

} catch (JSONException e) {

e.printStackTrace();

}

这样就可以在安卓手机APP上获取索要的数据,接下来就可以进行相关的数据处理。

相关问答

请问 蓝牙模块与单片机 是如何 通信 使用的?

蓝牙模块与单片机之间的通信通常通过串行通信来实现。下面是一般的蓝牙模块与单片机通信的步骤:1.硬件连接:将蓝牙模块与单片机进行正确的硬件连接。通常,...

HC-06 蓝牙模块 如何与5v的51 单片机通信 - CquUPouLS99 的回...

应该是51单片机的串口连接蓝牙模块的串口,通过单片机控制蓝牙的工作状态,实现通信。蓝牙模块是3.3V的话是不能直接接5V电压的可以加一个1117-3.3将...

如何从51 单片机 蓝牙模块 发送AT指令? - 豆斯儿 的回答 - 懂得

蓝牙有RXD与TXD引脚,用串口通信,代码可以参考网上的一些资料使用AT指令的时候,先使蓝牙模块进入AT模式,然后你就当蓝牙就是命令的接收端,单片机...

如何从51 单片机 蓝牙模块 发送AT指令? - 懂得

51单片机和蓝牙连接是通过串口实现的,所以通过单片机想蓝牙模块发送AT指令,也必须通过串口来发送,安装蓝牙模块的协议来发送控制命令就可以了。接收...

用HC-05 蓝牙模块 连接 单片机 ,实现从 单片机 给HC05发送数据,再用手机接收数据,这时HC05应设为什么模式?

1.先看看你hc05是主机还是从机,要是主机就不用玩了,如果是从机可以继续2.如果成功连接的话你的蓝牙设备上的灯是常亮的,代表着无线连接是正确的3.单片机...

单片机 怎么跟电脑实现无线传输数据-ZOL问答

这与电脑和单片机有线通信是同一个原理,只是增加了无线调制发送和接收。传输协议和波特率没有改变。市面应该有这类发射和接收模块。如果买不到,也可以自己做...

请问 单片机 用的 蓝牙模块 和无线模块的区别是什么?

它们两个都是属于2.4GISM无线频段,传输距离也差不多,大概10m,HC-05嵌入式蓝牙串口通讯模块比nRF24L01无线模块多了蓝牙通讯协议硬件,如果你想传输大量数据或则...

单片机 蓝牙模块 发AT指令没反应是怎么回事?

51单片机和蓝牙连接是通过串口实现的,所以通过单片机想蓝牙模块发送AT指令,也必须通过串口来发送,安装蓝牙模块的协议来发送控制命令就可以了。接收也是如此。...

如何用 蓝牙 控制led灯?_住范儿家装官网

首先,如果实现智能控制必须是有发射端和接收端,手机不用说已经有蓝牙功能了,问题是你的LED灯有没有蓝牙模块,如果有的话,就可以实现。估计我的回到...

单片机与 电脑相连需要怎么连接?

单片机外围电路可以做成多种通讯方式,包括串口通讯,RS485通讯,RS232通讯,CAN通讯,还有无线方式:蓝牙,WiFi等。一般需要一个通讯工具,如USB转串口工具,U...单...

猜你喜欢