1

BT Shield に AT コマンドを送信する方法について質問します。私はすでにiteadstudioのガイドですべての方法を試しました...

ハードウェア: Arduino UNO R3 BT シールド (マスタースレーブ) itadstudio

手順: そのコードをプログラムしました:

#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 -> マニュアルには次のように書かれています。 HC-05 モジュールを制御または構成するための PC 上のシリアル ソフトウェア。

PS .: D0 を TX として、D1 を RX として既に試しました。

手順:

→モードセットスイッチをCMDに設定。

-> Arduino に BT Shield を接続

-> ArduinoをPCに接続

-> 正しいシリアルポートを選択

->プログラムをArduino UNOにフラッシュ/アップロードしました(コードによる)。(File->Examples->SoftwareSerial->SoftwareSerialExample でデフォルトのサンプルも試しました)。

-> 最後にモニターシリアルを開きます

何が起こるのですか:

-> Monitor serial を開いてコマンドを次のように送信すると: AT\n\r または単に AT 何も起こりません...

-> 私が征服した最大のものは、SoftwareSerialExample.ino コードでした... 「テスト OK」と表示されました (はい、文字列を変更したところです)。

→ATコマンドが動かないので送れません。

PS .: アプリケーションからコマンドを "A" または "b" として送信すると BT が機能しないため、AT を送信しようとしているだけなので、プログラムはこのシールドで機能しません (質問する前に) 、はい、私はすでにこのコードを別の arduino (UNO) と別のシールドで試しました)。あなたが私を助けてくれることを願っています。

4

1 に答える 1