本文主要面向刚开始接触嵌入式开发的小白,详细介绍如何搭建基于蓝牙的STM32无线控制硬件平台,蓝牙模块使用淘宝上的HC-05串口转蓝牙模块,开发板使用基于STM32F407的航发RH407。
实验器材:PC(有蓝牙的)、HC-05(串口转蓝牙模块)、开发板(有TTL串口就行)、XCOM2.0串口调试助手
步骤:
1:准备硬件模块及带针排线;
2:如下图所示连接HC-05与开发板;

连接时最少可连接GND、VCC、RXD、TXD四根线,两根用于传输数据,两根用于供电。STM32串口需为TTL串口,否则需要转换芯片才能连接RS232串口
3:编写串口控制代码;

void inituart()
{
GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;//使能时钟RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4, ENABLE);//引脚复用GPIO_PinAFConfig(GPIOA, GPIO_PinSource0, GPIO_AF_UART4);GPIO_PinAFConfig(GPIOA, GPIO_PinSource1, GPIO_AF_UART4);//串口设置GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;GPIO_Init(GPIOA, &GPIO_InitStructure);//串口配置USART_InitStructure.USART_BaudRate = 9600;USART_InitStructure.USART_WordLength = USART_WordLength_8b;USART_InitStructure.USART_StopBits = USART_StopBits_1;USART_InitStructure.USART_Parity = USART_Parity_No;USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;USART_Init(UART4, &USART_InitStructure);USART_Cmd(UART4, ENABLE);//优先级配置NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  NVIC_InitStructure.NVIC_IRQChannel = UART4_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);//开启中断USART_ITConfig(UART4, USART_IT_RXNE, ENABLE);USART_ITConfig(UART4, USART_IT_IDLE, ENABLE);}

4:编写串口中断函数;

void UART4_IRQHandler( void )
{uint8_t   Clear=Clear;uint8_t rxchar;if( USART_GetITStatus(UART4, USART_IT_RXNE) != RESET ){rxbuffer[rxnumber++]=UART4->DR;    rxchar=0x11+UART4->DR;  USART_SendData(UART4, rxchar+0x11);}else if( USART_GetITStatus(UART4, USART_IT_IDLE) != RESET){Clear=UART4->SR;Clear=UART4->DR;rxstate=1;}
}

其目的是将串口传输来的数据存入数据缓存区,并将数据+0X11后返回至PC;

5:打开PC上蓝牙设置,并给开发板供电同时,将蓝牙模块与电脑进行连接,初始密码1234,连接成功后打开XCOM2.0串口调试助手,设置波特率为9600,选择十六进制发送;
6:实验,使用XCOM2.0发送0X11后可观察到接受数据为0X22;
备注:蓝牙模块与STM32连接需可靠,否则可能导致数据传输不稳定;
此实验所使用开发板与市场上常见开发板功能基本一致,使用者需根据自身开发板对串口引脚定义进行修改

有需要开发所有相关代码的直接留言邮箱

基于HC-05蓝牙模块的STM32无线控制智能系统硬件开发相关推荐

  1. HC-05蓝牙模块与STM32控制led灯亮详解

    HC-05蓝牙模块与STM32控制led灯亮 一.HC-05蓝牙模块解析 1.简介 2.HC-05原理 3.HC-05实物图 二.使用AT指令进行配置 1.进入命令响应工作模式 2.配置串口 3.进行 ...

  2. C51编程23-应用篇(HC 06蓝牙模块)

    现在的手机,平板,笔记本电脑都会自带蓝牙.本文将会介绍51单片机使用HC 06 蓝牙模块实现手机与笔记本电脑的通讯.   HC 06 模块 购买HC 06模块后需要检测蓝牙模块是否是好的,使用串口线与 ...

  3. android spp 服务端,Android开发之蓝牙(一)——基于SPP协议蓝牙模块通信,androidspp...

    Android开发之蓝牙(一)--基于SPP协议蓝牙模块通信,androidspp 使用设备 基本概念 基本流程 本文意在介绍蓝牙开发的主要流程,学习使用蓝牙开发一个星期了,写写一个星期以来遇到的一些 ...

  4. 基于蓝牙模块HC05的手机控制灯开关的小项目

    (第一次发文章,如果有问题请轻喷,谢谢!) 本人使用的蓝牙模块是在优信电子购买的HC05蓝牙模块JDY-31,刚开始想要参照正点原子的HC05模块教程去编写,但感觉之前没怎么了解过他家的编写思维,代码 ...

  5. BT08-B(蓝牙模块)与MG90S(舵机)开发灯控系统(基于51单片机)

    项目效果:通过手机蓝牙向蓝牙模块发送指令,蓝牙模块接受指令并通过串口发送给单片机,单片机控制舵机旋转角度,实现开,关节能灯开关. 一.设备: 硬件:BT08-B蓝牙模块(较为便宜),MG90S舵机(较 ...

  6. 如何使用Arduino和HM-10蓝牙模块实现Android App控制LED

    蓝牙是最受欢迎且易于使用的无线技术之一.几年来,蓝牙标准进行了许多升级,以跟上当前正在发生的技术改变与未来技术的步伐,并满足用户的需求.从蓝牙1.0版本到蓝牙5.0版本,有很多变化,包括更高的数据速率 ...

  7. 如何使用蓝牙模块与电脑通信,实现自主开发

    项目中使用到了蓝牙模块,但是很多时候我们是从别人手里购买核心模块,然后进行二次开发使用,究竟如何使用核心模块,在所给资料甚少的情况下,还真的要费一番功夫去研究如何使用开发哦.这两天正好做完超声波后,要 ...

  8. (笔记自用)JDY-31蓝牙模块的使用

    1.基本参数: 2.需要实现的功能: 通过蓝牙模块实现stm32单片机控制的电子秤信息(包括接收物品的重量信息.物品单价和计算得出的物品总价,发送去皮.计算.删除等指令)与手机app的传输. 3.实现 ...

  9. 基于蓝牙模块ROK101 007/1的小区监控系统设计

    基于蓝牙模块ROK101 007/1的小区监控系统设计 引言 蓝牙是一种正在发展中的短距离无线时分多址通信技术(也叫个域网技术),这是一种直接面对个人和商务的无线应用连接技术,并以其低成本.低功耗.高 ...

最新文章

  1. SAP SD基础知识之物料确定(Material Determination)
  2. oracle job 事务提交,Oracle dbms_job.submit用法
  3. java颜色gui_Java gui颜色不加载
  4. 开源.NET企业级应用系统 OpenVista
  5. python数字字符串乘以2_Python基础(2)_数字和字符串类型
  6. STM32驱动LCD原理
  7. IAR软件中查看代码大小
  8. Akka源码分析-Actor创建
  9. 86版五笔-字根速记
  10. 黑马 Python 数据结构与算法第一章
  11. 【Vtt2Srt】VTT转SRT工具 Vtt2Srt
  12. TCP基于窗口的端到端的拥塞控制机制
  13. 索引服务器(全文索引)的使用
  14. 发现自己水平很欠缺!
  15. 关于使用jquery weui的picker部分遇到的问题及解决办法
  16. 【Spring Boot】使用mockMvc模拟请求以及遇到的问题
  17. 基于51单片机的超声波避障小车(HC-SR04,SG90舵机)
  18. C语言的库函数:strlen的用法
  19. 武汉新时标文化传媒有限公司“土味”正在崛起,短视频的春天来了
  20. 【无人机组装与调试】第四章 F450四轴装机实例-选择机型、需要的器材工具材料

热门文章

  1. java实现“进制转换-在线工具”
  2. Python聪明的尼姆游戏(人机对战)
  3. 【uniapp小程序】request发起请求
  4. kile中*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS SYMBOL: WEEK是什么意思。
  5. android 内存6g 8g 12g,手机多大内存够用,6g和8g要怎么选,有必要上12g运存吗
  6. 第九届蓝桥杯 省赛 C语言A组
  7. php查题,2020高校邦《PHP语言程序设计》答案在线查题
  8. xp系统outlook突然无法连接服务器,outlook邮箱打不开是什么原因
  9. C++笔记-学习算法与实现-计算几何-二维向量和线段运算
  10. STM32怎样实现延时?