如何将AT命令发送到BT Shield iteadstudio(主/从) - Arduino?

时间:2014-08-23 21:24:00

标签: bluetooth arduino at-command arduino-ide arduino-uno

我在这里问一个关于如何向BT Shield发送AT命令的问题。 我已经尝试过使用iteadstudio的指南......

设备: Arduino UNO R3 BT Shield(主从)iteadstudio

Proccedure: 编程代码:

#include <SoftwareSerial.h>   //Inlcui a biblioteca SoftwareSerial.h

#define RxD         6 //Define RxD como 6
#define TxD         7 //Define TxD como 7

#define LED_AMARELO    2 //LED_AMARELO_BLINK como 2
#define LED_VERMELHO    3 //LED_VERMELHO_FADE como 3
#define RELE_LAMPADA         4 //RELE_LAMPADA como 4

SoftwareSerial blueToothSerial(RxD,TxD); //Instância a biblioteca SoftwareSerial.h

void setup()
{

  pinMode(LED_AMARELO, OUTPUT); //Configura o pino 2 como saída
  pinMode(LED_VERMELHO, OUTPUT); //Configura o pino 3 como saída
  pinMode(RELE_LAMPADA, OUTPUT); //Configura o pino 4 como saída
parear_dispositivo(); //Executa a função para parear o dispositivo
}

void loop()
{
  char letra; //Variável char para armazenar o caractere recebido
if(blueToothSerial.available()) //Se algo for recebido pela serial do módulo bluetooth
    {
      letra = blueToothSerial.read(); //Armazena o caractere recebido na variável letra
if(letra == 'A') digitalWrite(LED_AMARELO, HIGH); //Se o caractere recebido for a letra A, liga o LED Amarelo
      else if(letra == 'a') digitalWrite(LED_AMARELO, LOW); //Senão se o caractere recebido for a letra a, desliga o LED Amarelo
      else if(letra == 'B') digitalWrite(LED_VERMELHO, HIGH); //Senão se o caractere recebido for a letra B, liga o LED Vermelho
      else if(letra == 'b') digitalWrite(LED_VERMELHO, LOW); //Senão se o caractere recebido for a letra b, delisga o LED Vermelho
      else if(letra == 'C') digitalWrite(RELE_LAMPADA, HIGH); //Senão se o caractere recebido for a letra C, liga a Lâmpada
      else if(letra == 'c') digitalWrite(RELE_LAMPADA, LOW); //Senão se o caractere recebido for a letra c, desliga a Lâmpada
      else if(letra == 'H') digitalWrite(9, LOW);
      else if(letra == 'h') digitalWrite(9, HIGH);
  }
}

void parear_dispositivo()
{
  blueToothSerial.begin(9600); // Configura o baud rate do bluetooth como 38400
  blueToothSerial.print("\r\n+STWMOD=0\r\n"); // Configura o módulo bluetooth para trabalhar como slave
  blueToothSerial.print("\r\n+STNA=SeedBTShield\r\n"); // Configura o nome do disopsitivo bluetooth
  blueToothSerial.print("\r\n+STOAUT=1\r\n"); // Permite que outros dispositivos encontrem o módulo bluetooth
  blueToothSerial.print("\r\n+STAUTO=0\r\n"); // Desabilita a auto conexão
  delay(2000); // Aguarda 2 segundos
  blueToothSerial.print("\r\n+INQ=1\r\n"); // Habilita modo de paridade
  delay(2000); // Aguarda 2 segundos
  blueToothSerial.flush(); // Dá um flush na serial do módulo bluetooth
}

模式设置开关:CMD

UART多路复用器:D0为RX,D1为TX - &gt;在手册中说:“当使用如图4所示的连接时,HC-05与FT232RL芯片连接,FT232RL通过USB连接到PC。使用此配置,您可以使用PC上的串行软件来控制或配置HC-05模块“。

PS。:我已经尝试将D0作为TX,将D1作为RX。

Proccedure:

- &GT;将模式设置开关设置为CMD。

- &GT;在Arduino中插入BT Shield

- &GT;在PC上连接Arduino

- &GT;选择了正确的串口

- &GT;闪烁/上载到Arduino UNO程序(根据代码)。 (我还在File-&gt; Examples-&gt; SoftwareSerial-&gt; SoftwareSerialExample)尝试了dafault示例。

- &GT;最后打开Monitor Serial

会发生什么:

- &GT;当我打开Monitor序列并发送命令时:AT \ n \ r或者只是AT没有任何反应......

- &GT;我接受的最大化是使用SoftwareSerialExample.ino代码......它出现了 “测试OK”(是的,我刚刚修改了字符串)。

- &gt;所以,我无法发送任何AT命令,因为它不起作用。

PS。:我只是试图发送AT,因为当我从我的应用程序发送命令为“A”或“b”时BT不工作,所以该程序无法使用此屏蔽(之前你问我,是的,我已经用另一个arduino(也是UNO)和另一个盾牌尝试了这个代码。 我希望你能帮助我。

1 个答案:

答案 0 :(得分:1)

我找到了一种方法来做我需要的事情。 按照这个步骤,你可以做我想做的事情。 XD。

第1步

断开盾牌与arduino的连接并上传默认的闪烁草图。验证草图是否正在运行。    第2步

Image_PIN_MODE

在未连接的屏蔽上设置跳线,如图所示。将开关置于CMD

第3步

将屏蔽连接到arduino并将arduino连接到PC。在PC上配置com端口(使用windows下的设备管理器)以使用

Baud    38400
data bits   8
stop bits   1
parity  none
flow control    none

使用TeraTerm等终端程序连接到屏蔽。确保终端程序使用相同的端口设置。

在TeraTerm下,出现一个空窗口,当我点击返回时,我得到了错误:(0)。不用担心,只需键入AT并返回,你应该得到答案。您可能需要多次重新键入此命令。之后,可以发布任何记录的AT命令。我使用AT + NAME = ArduinoBT进行测试    请注意,UART端口速度仅影响电路板与arduino通信的端口速度!使用AT的命令设置的端口速度固定为38400。

我在Reference

找到了这个例子