二、FBT06蓝牙无线模块(增选模块)

https://blog.csdn.net/JH39456194/article/details/94431610(电脑端)

环境:

         1、任意单片机开发板即可(当时用的芯片STC90C516RD+),约定为下位机

          2、无线蓝牙串口透传模块 HC-06从机

          3、windows xp操作系统

          4、Android智能手机(蓝牙串口通信助手软件),约定为上位机

原理图:

                                                             

 

连接线:

51与HC-06蓝牙连线:

RXD (P3^0) ------ TXD

TXD(P3^1)------ RXD

上位机软件可以用蓝牙串口通信助手软件

程序:

#include <reg52.h>

#include <intrins.h>

unsigned char tmp;

unsigned int c=0;

sbit led1=P2^0;            //指示灯0

sbit led2=P2^1;            //指示灯1

sbit led3=P2^4;            //指示灯3

void init();   //串口初始化

void send(unsigned char a);     //单字节发送函数

void ctrl(); //接收处理函数

void main()

{

     init();

       while(1)

          {        

             if(RI==1)                     //是否有数据到来

             {

                RI = 0;

                tmp = SBUF;                   //暂存接收到的数据

                 ctrl();

          }     

      }

}

 void init()        //串口初始化

 {

    ES=0;                                      //关中断

    SCON = 0x50;          // REN=1允许串行接受状态,串口工作模式1,

                          //10位UART(1位起始位,8位数据位,1位停止位,无奇偶校验),波特率可变

     TMOD = 0x20;        //定时器1工作于方式2,8位自动重载模式,用于产生波特率

     TH1=TL1=0xFD;       //波特率9600 (本次测试采用晶振为11.0592)

   

     PCON &= 0x7f;       //波特率不倍增

     TR1 = 1;           //定时器1开始工作,产生波特率

      TI=0;            //接收标志位置0

      RI=0;                    

                    //EA=0;

      ES=1;

      led1=0;          //初始化设置3个指示灯全亮

     led2=0;

 

     led3=0;

 

 }

void send(unsigned char a)      //单字节数据发送

 

{     //注意:若单片机TXD(P3.1)无上拉能力,必须在P3.1端接上拉电阻1k。本次测试需要接上拉电阻

 

         TI=0;        

 

         SBUF=a;

 

         while(TI==0);

 

         TI=0;

         if(c%2)              //发送指示灯标志,每接收一次,此灯亮灭交替

          led3=1;

         else

          led3=0;

         c++;

}

void ctrl()      //接收处理函数     虽然定义 了三个灯,但本人挺懒,测试只用到了一个灯,不过你可以试试别的灯。

 

{

          switch(tmp)

            {

               case '0':

               led1=0;                //收到字符1,指示灯0灭

               send(tmp);

                   break;                                           

            case '1':                  //收到字符1,指示灯0亮

                led1=1;

                  send(tmp);

                   break;

   }

}

第二种方法:Arduino使用HC05蓝牙模块与手机连接

步骤:

  • 进入 AT 模式进行蓝牙基本参数设置
  • Arduino 蓝牙控制 LED 电路设计以及代码编写
  • 利用 Andorid 蓝牙串口调试软件测试功能

进入 At 模式进行蓝牙基本参数设置

想要使用 Arduino 的蓝牙模块,首先要对蓝牙模块进行基本参数设置。基本参设置主要包含:蓝牙名称、模式以及匹配密码等。设置蓝牙模块可以使用 USB-TTL 连接电脑使用串口调试软件进入 AT 模式进行设置,也可以使用 Arduino 连接蓝牙模块进行设置,本文主要介绍后一种方法。

 

Arduino HC05 AT模式接线

进入 AT 模式设置蓝牙的接线如下:

Arduino 5V - VCC

Arduino GND - GND

Arduino Pin10 - TXD

Arduino Pin11 - RXD

Arduino 进入 AT 模式代码

使用 Arduino 设置蓝牙模块 AT 模式编写程序,我们可以通过 Arduino IDE 提供的串口监视器来设置蓝牙模块。详细的 Arduino 代码如下:

 

#include <SoftwareSerial.h>

 

// Pin10为RX,接HC05的TXD

// Pin11为TX,接HC05的RXD

SoftwareSerial BT(10, 11);

char val;

 

void setup() {

  Serial.begin(9600);

  Serial.println("BT is ready!");

  // HC-05默认,960000

  BT.begin(9600);

}

 

void loop() {

  if (Serial.available()) {

    val = Serial.read();

    BT.print(val);

  }

 

  if (BT.available()) {

    val = BT.read();

    Serial.print(val);

  }

}

Arduino IDE 串口监视器进行调试

首先,将 Arduino 断电,然后按着蓝牙模块上的黑色按钮,再让 Arduino 通电,如果蓝牙模块指示灯按2秒的频率闪烁,表明蓝牙模块已经正确进入 AT 模式。
打开 Arduino IDE 的串口监视器,选择正确的端口,将输出格式设置为 Both: NL & CR ,波特率设置为 9600 ,可以看到串口监视器中显示 BT is ready! 的信息。然后,输入 AT ,如果一切正常,串口显示器会显示 OK
我们即可对蓝牙模块进行设置,常用 AT 命令如下:

AT+ORGL    # 恢复出厂模式
AT+NAME=<Name>    # 设置蓝牙名称
AT+ROLE=0    # 设置蓝牙为从模式
AT+CMODE=1    # 设置蓝牙为任意设备连接模式
AT+PSWD=<Pwd>    # 设置蓝牙匹配密码

正常情况下,命令发送后,会返回 OK ,如果没有返回任何信息,请检查接线是否正确,蓝牙模块是否已经进入 AT 模式,如果上述两点都没有问题,可能是蓝牙模块的问题,可以找蓝牙模块供应商咨询。
设置完毕后,断开电源,再次通电,这是,蓝牙模块指示灯会快速闪烁,这表明蓝牙已经进入正常工作模式。


利用 Andorid 手机连接 Arduino 并控制 LED灯开关

我们完成了对蓝牙模块的设置后,我们将做一个可以通过手机蓝牙连接,控制 Arduino 开关 LED 灯的小实验。

Arduino 电路设计

这里的电路设计比较简单,主要是两部分:

  • Arduino 与 HC05 模块连接
  • Arduino 与 LED 连接

Arduino 上的 TXD 应与 HC05 模块上的 RXD 端连接,Arduino 上的 RXD 应与 HC05 模块上的 TXD 连接。LED 是直接连接在 Arduino Pin13。

                                     

程序:

void setup()

{

  // 设置波特率为 9600

  Serial.begin(9600);

  pinMode(13, OUTPUT);

}

 

 

void loop()

{

  while(Serial.available())

  {

    char c=Serial.read();

      if(c=='1')

      {

        Serial.println("BT is ready!");

        // 返回到手机调试程序上

        Serial.write("Serial--13--high");

        digitalWrite(13, HIGH);

      }

     if(c=='2')

     {

       Serial.write("Serial--13--low");

       digitalWrite(13, LOW);

     }

  }

}

Android 手机端调试

在 Android 端上进行调试,需要下载蓝牙串口 APP。下载安装完成 APP 后,我们先打开手机的蓝牙设置,搜索并匹配好我们的蓝牙模块。然后打开 蓝牙串口调试APP ,让 APP 连接上蓝牙模块,然后我们可以在 APP 中输入 1,接下来可以看到 LED 等亮了,并且能在 APP 中看到 Serial--13--high 的返回(有些 APP 返回值可能不是返回在同一行)。我们再在 APP 中输入 2,可以看到 LED 熄灭, APP 中返回 Serial--13--low

 

源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值