找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2893|回复: 0
打印 上一主题 下一主题
收起左侧

基于stm32的蓝牙串口收发系统源程序 OneNet开发板

[复制链接]
跳转到指定楼层
楼主
本实验利用信驰达的蓝牙模块进行串口的收发任务,stm32f103用的是串口1,手机APP用的是LighntBlue,蓝牙名字为Vence,stm32开发板为中国移动的OneNet开发板
①连线
蓝牙模块                stm32f103
VCC                      VCC
GND                      GND
EN                       PC10
RX                       TX1
TX                       RX1
BRTS                     GND
P04                      PC7
P05                      PC8

②蓝牙模块的工作模式
启动蓝牙模块需要将EN置0,BRTS置0,接上电源,就开始广播模式
当连接成功时,P04为高电平,P05为低电平
利用stm32启动的方式为,接上电源,按下Key1键盘,此时蓝灯,红灯,黄灯亮起;
红灯亮,绿灯灭,还没有连接成功,如果红灯灭,绿灯亮就代表已经连接成功

③stm32发送固定数据到手机APP
{0x67,0x6c,0x75,0x05,0x20}
通过按下stm32的按键1,也就是PC13口,会发送数据到手机,此时黄灯如果是灭的状态,就改为亮,如果是亮的状态就改为灭


④手机APP发送数据到stm32
如果手机发送的一个字节为0x01,通过代码判断是0x01的话,黄灯的状态就会取反

原理图:



启动状态指示灯:接通电源,按下key1,红、黄、蓝色同亮



LightBlue搜索到Vence蓝牙名字:Vence




点击连接,连接成功后,指示灯变为蓝、黄、绿



app的0xFFE4端口开启接收数据,按下Key1,发送指令的数据{0x67,0x6c,0x75,0x05,0x20}到app,此时黄灯状态取反,APP收到数据




在APP的0XFFE9端口输入0x01,stm32判断后,黄灯的状态取反



stm32主函数代码:
  1. //本设计利用信驰达进行蓝牙通信,stm32的PC10控制蓝牙模块的使能,蓝牙模块的工作电压范围在1.8-3.3V,具有低功耗

  2. #include "stm32f10x.h"
  3. #include "usart1.h"
  4. #include "bluetooth.h"
  5. #include "key.h"
  6. #include "led.h"

  7. u8 GLU[5] = {0x67,0x6c,0x75,0x05,0x20};
  8. int main(void)
  9. {
  10.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);                         //中断控制器分组设置
  11.         Key_Init();                                                                                                            //初始化按键
  12.         EXTI_Configuration();
  13.         Usart1_Init(115200);                                                                   //设置串口1的波特率为115200bit
  14.         LedInit();                                                                                                    //初始化led
  15.         Delay_Init();                                                                                                 //初始化延迟函数
  16.         BlueTooth_Init();                                                                                //初始化蓝牙模块
  17.         USART_Cmd(USART1, DISABLE);                                                                                                        //除能串口
  18.         while(1)
  19.         {
  20.                 USART_ClearFlag( USART1, USART_FLAG_TC );
  21.                 if(send_flag == 1)
  22.                 {
  23.                         USART_Cmd(USART1, ENABLE);                                                                                                                //除能串口
  24.                         GPIO_ResetBits(GPIOC,EN);                                           //使能蓝牙模块
  25.                         DelayMs(20);                                                                      //启动蓝牙模块延迟20ms
  26.                         while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_7) != Bit_SET || GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_8) != Bit_RESET);
  27.                         Usart_SendString(USART1, GLU);
  28.                         //GPIO_SetBits(GPIOC,EN);                                        //发送完数据除能蓝牙模块        
  29.                         DelayMs(20);                                                                    //启动蓝牙模块延迟20ms
  30.                         send_flag = 0;
  31.                         //USART_Cmd(USART1, DISABLE);                                                                                  //除能串口
  32.                 }
  33.         }
  34. }
复制代码

全部资料51hei下载地址:
资料(蓝牙模块说明书,OneNet开发板原理图,源码).7z (2.35 MB, 下载次数: 34)


评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表