HC08蓝牙模块实现手机通信以及互相通信(附源码及解析)

这篇具有很好参考价值的文章主要介绍了HC08蓝牙模块实现手机通信以及互相通信(附源码及解析)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

本篇博客详细的介绍如何实现HC08主从机设置,命名,以及如何实现两个STM32通过HC08互相通信,并附带完整的操作步骤,以及源代码。

目录

一、HC08主从配置

1.1VOFA+的下载及基本用法

1.1.1VOFA+的下载        

1.1.2VOFA+的基本用法   

1.2配置HC08主从机及其他

二、两个STM32通过HC08互相通信

2.1硬件连接

2.2软件实现(附完整源码)

三.手机APP连接HC08

四.HC08的AT指令表


一、HC08主从配置

1.1VOFA+的下载及基本用法

1.1.1VOFA+的下载        

VOFA+是一款非常简单好用的串口上位机软件,既可以监视波形调试参数,又可以发送串口指令,满足电赛控制题调试的一切需求,是未来拿下国一同学们的必备工具,官网下载链接如下:

                                                      下载中心 | VOFA-Plus上位机

图1是VOFA+的界面,一般只需要修改端口号与波特率,按照STM32配置的串口波特率修改即可。

   

hc-08双蓝牙通信,电赛,stm32,嵌入式硬件,单片机
图1

1.1.2VOFA+的基本用法   

1.蓝色图标是启动按钮,成功连接后,接受发送来的串口数据,闪蓝色。

2.红色图标是协议与连接,在此界面设置串口参数配置,如图2。

hc-08双蓝牙通信,电赛,stm32,嵌入式硬件,单片机
图2

       

3.绿色图标界面设置串口指令,点击选择“命令”,如图3。

hc-08双蓝牙通信,电赛,stm32,嵌入式硬件,单片机
图3

4.成功生成“命令8”,选择编辑,可以修改名称和发送内容,编辑完成后,双击退出编辑,点击“命令8”控件,就可以发送“1234”了如图4(未退出编辑模式),之后就需要用这个功能给HC08发送信息。

hc-08双蓝牙通信,电赛,stm32,嵌入式硬件,单片机
图4

1.2配置HC08主从机及其他

基本步骤:

1.利用USB转串口模块,将HC08物理连接电脑,并打开VOFA+真正与HC08串口通讯,波特率设置为9600(出厂默认波特率是9600,连接上后可以自定义)。

2.按照AT指令表,编辑VOFA+的命令工具,向HC08发送对应的AT指令。

注意:设置一个为主机,一个为从机,上电即可自动连接。HC08 支持一对一连接,第一次连接后,主机会自动记忆配对对象。如需连接其他模块,必须先清除配对记忆。主从机可以互发消息。(配对中HC08板载灯闪烁,连接成功板载灯常亮

图5中,我的命令控件叫“设置主机”,发送的内容为“AT+ROLE=M”,查AT指令表(附文末)知该命令设置主机,设置从机则改M为S,“AT+ROLE=S”

hc-08双蓝牙通信,电赛,stm32,嵌入式硬件,单片机
图5

图6中,我的命令控件叫“设置波特率”,发送的内容为懒得打了,如图所示,查表知该命令为设置HC08波特率,再次强调一下HC08出厂设置的波特率是9600

hc-08双蓝牙通信,电赛,stm32,嵌入式硬件,单片机
图6

二、两个STM32通过HC08互相通信

2.1硬件连接

hc-08双蓝牙通信,电赛,stm32,嵌入式硬件,单片机

2.2软件实现(附完整源码)

实现思路:

1.实现两个STM32与HC08主从机串口通讯。
2.连从机的STM32与连主机的STM32互相发送信息,收到对应消息点亮的板载灯。

注意:两灯均被点亮说明,实现互相通讯,代码方面两个单片机的代码是一样的,接受中断函数,判断是否收到另一个单片机发送的字符‘a’,同时在main函数的while(1)里一直向另一个单片机发送字符‘a’,现象是先后上电后,两个32的板载灯几乎同时被点亮。

main文件

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "HC08.h"

int main(void)
{

	HC08_Init();//初始化HC08串口
	GPIO_InitTypeDef  GPIO_InitStructure;//初始化板载灯B5

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;				 
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 
	GPIO_Init(GPIOB, &GPIO_InitStructure);					 
	GPIO_ResetBits(GPIOB,GPIO_Pin_5);//熄灭B5					
	while (1)
	{
		HC08_SendByte('a');//发送‘a’
	}
}

HC08.h文件

#ifndef __HC08_H
#define __HC08_H

void HC08_Init(void);
void HC08_SendByte(uint8_t Byte);
//void HC08_SendString(char *String);

#endif

HC08.c文件

#include "stm32f10x.h"                  // Device header

void HC08_Init(void)//USART1 A9-TX A10-RX
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	
	USART_InitTypeDef USART_InitStructure;
	USART_InitStructure.USART_BaudRate = 9600;//波特率
	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
	USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
	USART_InitStructure.USART_Parity = USART_Parity_No;
	USART_InitStructure.USART_StopBits = USART_StopBits_1;
	USART_InitStructure.USART_WordLength = USART_WordLength_8b;
	USART_Init(USART1, &USART_InitStructure);
	
	USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	
	NVIC_InitTypeDef NVIC_InitStructure;
	NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
	NVIC_Init(&NVIC_InitStructure);
	
	USART_Cmd(USART1, ENABLE);
}

void HC08_SendByte(uint8_t Byte)
{
	USART_SendData(USART1, Byte);
	while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
}

int HC08_data=0;
void USART1_IRQHandler(void)
{
	if(USART_GetITStatus(USART1,USART_IT_RXNE) != RESET)
	{
		HC08_data=USART_ReceiveData(USART1);
		if(HC08_data=='a')//如果STM32”A”发送的消息是‘a’,则板载灯被点亮
		{
		    GPIO_ResetBits(GPIOB,GPIO_Pin_5);
		}
	}
	USART_ClearITPendingBit(USART1,USART_IT_RXNE);
}

三.手机APP连接HC08

步骤:

1.与步骤二的代码相同,不用修改现象是一样的,连接好后,手机端给HC08发送字符‘a’,即可点亮stm32板载灯。

2.下载蓝牙助手APP(此处蓝牙串口调试APP都可以连接,不一定非要下载HC蓝牙助手),附应用信息。

hc-08双蓝牙通信,电赛,stm32,嵌入式硬件,单片机

3.连接搜索,用VOFA+命名的HC08,比如我叫LLBW,点击连接就行,之后发送字符‘a’,看是否点亮板载灯。(是否连接成功)

四.HC08的AT指令表

hc-08双蓝牙通信,电赛,stm32,嵌入式硬件,单片机文章来源地址https://www.toymoban.com/news/detail-838272.html

到了这里,关于HC08蓝牙模块实现手机通信以及互相通信(附源码及解析)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32F1 + 蓝牙HC08 与 手机APP通信

    1.1  开发软硬环境 芯片型号:STM32F103RCT6 开发软件:Keil5  (v5.31+AC5,最常用) 代码用库:标准固件库 蓝牙模块:HC-08 (HC家的,小贵 ,配套图解、串口助手、APP、小程序,完美) USB转TTL模块: CH9340C  (Type-C接口,win10可免驱动,比CH340和CP2102爽) 1.2  代码下载链接 百度网

    2024年02月04日
    浏览(55)
  • STC89C52单片机利用DHT11温湿度模块以及HC-08蓝牙模块实现测量温湿度

    下面将介绍如何利用STC89C52单片机和DHT11温湿度模块以及HC-08蓝牙模块实现测量温湿度。以及各模块的使用方法。 利用DHT11温湿度模块测量温湿度,利用HC-08蓝牙模块将数据传到手机上。 1.1DHT11温湿度模块外观 1.2DHT11温湿度模块使用方法简介 1.2.1DHT11温湿度模块工作的过程 用户

    2024年02月02日
    浏览(66)
  • HC-05蓝牙模块调试及与手机通信

    实现HC-05蓝牙模块的调试及与手机简单通信 目录 1.HC-05蓝牙模块介绍 2.HC-05蓝牙模块调试所需实物 3.蓝牙与USB TO TTL模块接线方式 4.进入AT模式调试参数 5.主从模式简介 6.返回正常工作模式,用手机软件连接测试 HC-05蓝牙模块是一种常用的蓝牙串口传输模块,具有简单易用和广泛

    2024年02月08日
    浏览(57)
  • HC-05(ZS-040)蓝牙模块使用详情(蓝牙模块配置、手机蓝牙控制单片机、蓝牙与蓝牙之间的通信)含51、32程序

    HC-05是一款主从一体化的蓝牙模块,因此其使用起来比较方便,只需要进行简单的配置即可。 本文就 手把手的介绍小白入手模块后如何使用 。 对于模块使用:1、蓝牙配置→2、手机与蓝牙的传输→3、手机通过蓝牙模块控制单片机→4、一对蓝牙之间主—从传输数据,这是一个

    2023年04月09日
    浏览(172)
  • HC-05蓝牙模块--------手机与STM32通信(代码编写)(上位机配置)保姆级教程

    ⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的大三学生。 ⏩因为之前无论是电赛还是做项目,都用到了蓝牙模块,如:手机和stm32的通信,电赛中的双车通信,还是遥感小车的stm32与stm32的无线通信等等 ⏩本篇文章对HC-05蓝牙模块与手机的通信做一个详

    2024年02月03日
    浏览(75)
  • C51单片机利用HC-05蓝牙模块实现手机点灯

    蓝牙通信,实现手机端远程(15米)控制单片机,这听起来对于初学者的我来说,是那么不可思议,经过不断地实验,阅读其他大佬的文章,终于实现了。 在有基础的通信原理知识的前提下,知,HC-05蓝牙模块与51的通信其实很简单,就是蓝牙模块的RXD(接收端)接单片机的TXD(发送

    2024年02月16日
    浏览(69)
  • Android Studio制作手机App:通过手机蓝牙(Bluetooth)与STM32上的低功耗蓝牙(HC-42)连接通信,实现手机端对单片机的控制。

    背景: 本文的内容是针对单片机蓝牙模块(HC-42)开发的手机App。在这之前,我想先声明一点,手机与手机间的蓝牙连接方式”与“手机与HC间的蓝牙连接方式”是不一样的。原因就是手机搭配的是“经典蓝牙”模块,HC等蓝牙属于“低功耗蓝牙”模块。(二者的区别想了解的

    2024年02月04日
    浏览(54)
  • Android手机无法连接HC-05蓝牙模块

           这学期选的毕业设计中需要用到蓝牙模块与Android手机通信,于是我就在淘宝购买了一款HC-05的蓝牙模块,到货之后首先使用蓝牙模块连接USB-TTL模块,然后再插入到电脑的USB插孔上进行调试,一开始进入AT模式(我购买的这一款进入AT模式时那个按键需要多按一会儿,

    2023年04月24日
    浏览(83)
  • HC05蓝牙模块与手机APP连接

    说明 :我们可以通过TTL转USB模块使电脑和HC05相连 ,通过电脑蓝牙串口进行调试 我们上电时应该按住复位键再上电,这样才能进入AT模式(下图软件设置也能进入AT模式),否则是配对模式。 另外我们电脑串口波特率应该设置为38400 (AT模式都为38400) 注 :物理状态:AT模式下

    2024年02月06日
    浏览(78)
  • Arduino蓝牙模块与手机通信---实现蓝牙控制LED

    当使用 Arduino 进行蓝牙通信时,我们可以轻松地实现与其他蓝牙设备之间的数据交换。蓝牙通信在各种物联网和远程控制应用中非常有用,因为它提供了无线连接和简便的数据传输。在本篇博客中,我们将介绍如何在 Arduino 上设置蓝牙通信,并进行基本的数据传输。 1. 介绍

    2024年02月08日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包