我在这里问一个关于如何向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)和另一个盾牌尝试了这个代码。 我希望你能帮助我。
答案 0 :(得分:1)
我找到了一种方法来做我需要的事情。 按照这个步骤,你可以做我想做的事情。 XD。
第1步
断开盾牌与arduino的连接并上传默认的闪烁草图。验证草图是否正在运行。 第2步
在未连接的屏蔽上设置跳线,如图所示。将开关置于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。
找到了这个例子