Arduino连接蓝牙模块及L298n

注意事项

1、Arduino与电脑和蓝牙模块通讯都使用串口TX/RX,同时操作时产生冲突,程序写入Arduino时要断开与蓝牙相连的RX。
2、 执行时要注意,Serial.println()会将内容输出到蓝牙的另一端,而不是在电脑端显示信息。
3、蓝牙的默认密码是0000或1234。
4、如果外接驱动模块L298n时,需要将模块L298n和Arduino连接在同一电源上,保证信号输入电压一致。
5、对于不同版本的Arduino要注意pin是否支持数据类型,本次uno板pin3、5、6、9、10、11支持analog输出。
6、把05的蓝牙模块进入绝对AT状态(也就是34脚接高电平,模块上电,38400波特率),按着KEY不要放,上电,使用软件“获取模块信息”,可以读出所有信息。
7、本软件可以测试HC-03和HC-05,不可以测试HC-04 -06 -07,他们有另一个专用测试软。

需要的工具

蓝牙模块HC-05,Arduino uno,杜邦线

Arduino供电方法

方法一:使用USB端口为Arduino供电

android 蓝牙跳过用户输入密码交互直接认证pin码 蓝牙需要输入pin码_开发板


方法二:使用Vin引脚为Arduino供电

Vin引脚可用于为Arduino开发板供电使用。但使用Vin引脚为Arduino开发板供电时,直流电源电压必须为7V ~ 12V。使用低于7V的电源电压可能导致Arduino工作不稳定。使用高于12V电源电压存在着毁坏Arduino开发板的风险。

android 蓝牙跳过用户输入密码交互直接认证pin码 蓝牙需要输入pin码_数据_02


方法三:使用5V引脚为Arduino供电

android 蓝牙跳过用户输入密码交互直接认证pin码 蓝牙需要输入pin码_开发板_03


Arduino开发板电源引脚中的5V引脚不仅可以用于为外部电子元件提供+5V电源,也可以用于为Arduino开发板供电使用。方法四:使用电源接口为Arduino供电

android 蓝牙跳过用户输入密码交互直接认证pin码 蓝牙需要输入pin码_开发板_04


可以使用直流电源通过Arduino开发板电源接口为Arduino供电。通过此方法为Arduino开发板供电时,直流电源电压为9V ~ 12V。使用低于9V的电源电压可能导致Arduino工作不稳定。使用高于12V电源电压存在着毁坏Arduino开发板的风险。

以上信息来源:http://www.taichi-maker.com/homepage/arduino-projects-index/arduino-power-supply/#power4

蓝牙模块和Arduino接线

正常接线方式:

VCC:接Arduino的5V或者3.3V

GND:接Arduino的GND

TXD:发送端,接Arduino的RX

RXD:接收端,接Arduino的TX

android 蓝牙跳过用户输入密码交互直接认证pin码 蓝牙需要输入pin码_引脚_05


本次实验采用更改pin口的方式接线:

VCC:接Arduino的5V或者3.3V

GND:接Arduino的GND

TXD:发送端,接Arduino的pin8

RXD:接收端,接Arduino的pin9

修改方法:

#include <SoftwareSerial.h>          //库文件
SoftwareSerial BT(8, 9);
char X;

android 蓝牙跳过用户输入密码交互直接认证pin码 蓝牙需要输入pin码_开发板_06

Arduino程序

初始化波特率,默认38400。为了同步我修改成9600。

void setup() 
{
  Serial.begin(9600);              //串口监视器通信速率,38400
  Serial.println("蓝牙连接正常");     //串口监视器显示蓝牙正常状态

  BT.begin(9600);                  //蓝牙通信速率,默认一般为 38400
}

主循环里面进行信号检测

void loop()                         //大循环,执行。
{
  if (Serial.available())           //检测:【串口】如果数据写入,则执行。
  {
    X = Serial.read();              //把写入的数据给到自定义变量  X
    BT.print(X);                    //把数据给蓝牙
  }

  if (BT.available())               //检测:【蓝牙】如果数据写入,则执行。
  {
    X = BT.read();                  //把检测到的数据给到自定义变量 X
    Serial.print(X);                //把从蓝牙得到的数据显示到串口监视器
  }
}

添加各种东西以后的成品。

android 蓝牙跳过用户输入密码交互直接认证pin码 蓝牙需要输入pin码_数据_07


android 蓝牙跳过用户输入密码交互直接认证pin码 蓝牙需要输入pin码_arduino_08