Arduino Mega 2560 + BLE HM-10 - не могу выполнять команды AT
У меня есть Arduino Mega 2560 и модуль Bluetooth HM10.
Я подключил Bluetooth в соответствии со спецификациями производителя: VCC -> 5v GND -> GND
TXD и RXD Bluetooth, я попытался поместить их в контакты Arduino, в Serial1, в Serial2, в Serial3, с тем же результатом.
Код, который я использую для своих тестов, выглядит следующим образом:
#define BTserial Serial1
int LED_BOARD = 13;
int LED_RED = 2;
int LED_GREEN = 3;
void setup() {
BTserial.begin(9600);
Serial.begin(9600);
pinMode(LED_BOARD,OUTPUT);
pinMode(LED_RED,OUTPUT);
pinMode(LED_GREEN,OUTPUT);
}
void loop() {
if (Serial1.available()) {
dato = Serial1.readStringUntil('\n');
Serial.println("DATA RECEIVED: [" + String(dato) + "]");
if (dato.equals("1")) {
digitalWrite(LED_BOARD, HIGH);
}
if (dato.equals("0")) {
digitalWrite(LED_BOARD, LOW);
}
if (dato.equals("RED_ON")) {
digitalWrite(LED_RED, HIGH);
}
if (dato.equals("RED_OFF")) {
digitalWrite(LED_RED, LOW);
}
if (dato.equals("GREEN_ON")) {
digitalWrite(LED_GREEN, HIGH);
}
if (dato.equals("GREEN_OFF")) {
digitalWrite(LED_GREEN, LOW);
}
}
}
У меня есть телефон Android, и я использую приложение Arduino Bluetooth Controller (модуль HM-10).
- Я отправляю текст 1, и светодиод платы Arduino (вывод 13) загорается.
- Я посылаю текст 0, и светодиод платы Arduino (вывод 13) гаснет.
- Я посылаю RED_ON, и светодиод моей макетной платы, подключенный к контакту 2, включается
- Я посылаю RED_OFF, и светодиод моей макетной платы, подключенный к контакту 2, гаснет
- Я посылаю GREEN_ON, и светодиод моей макетной платы, подключенный к контакту 3, включается
- Я посылаю GREEN_OFF, и светодиод моей макетной платы, подключенный к контакту 3, гаснет
Так что Блютуз работает.
Моя проблема заключается в попытке увидеть список команд Bluetooth (AT+HELP command).
У меня есть метод, который отвечает за отправку AT+HELP в bluetooth, но у меня нет ответа.
Это метод, который я запускаю в основном:
String str_ii = "";
int ii_0 = 0;
void ble_help(){
Serial.println("ble_help");
BTserial.println("AT+HELP"); // список всех команд AT+
while (true){ // цикл для печати всех команд AT+
char in_char = BTserial.read();
if (int(in_char)==-1 or int(in_char)==42){
continue;
}
str_ii+=in_char;
if (in_char=='\n'){
if (str_ii==String('\r')+String('\n')){
if (ii_0 == 0){
ii_0 = 1;
continue;
}
break; // перерыв после более чем 1 возврата пустой каретки и перевода строки
}
Serial.print(str_ii);
str_ii = "";
}
}
}
При выполнении этого метода в приложении Arduino Bluetooth Controller (модуль HM-10) я вижу текст НА+HELP, но нет никакой реакции / ответа от bluetooh. Ни в приложении Arduino Bluetooth Controller (модуль HM-10), ни в Arduino serial monitor
Что я делаю не так?
Спасибо.
@Javier, 👍1
1 ответ
Перво наперво вы можете увидеть все AT команды доступные в техническом паспорте доступные в datasheet
Во-вторых, чтобы получить строки из Serial в BTserial, вы можете просто использовать c = Serial.readStringUntil('\n');
как здесь
#define BT_RX 0
#define BT_TX 1
#define BT_Serial Serial1
#define BT_Timeout 100
String c, c2;
void setup() {
BT_Serial.setTX(BT_TX);
BT_Serial.setRX(BT_RX);
BT_Serial.begin(9600);//baudrate
BT_Serial.setTimeout(BT_Timeout); //установить тайм-аут чтения/записи bluetooth
Serial.begin(9600);
Serial.setTimeout(100);
delay(100);
}
void loop()
{
if (Serial.available()) {
c = Serial.readStringUntil('\n');
Serial.println(c);
BT_Transmit_AT(c);
}
if (BT_Serial.available()) {
c2 = BT_Serial.readStringUntil('\n');
Serial.println(c2);
}
delay(20);
}
void BT_Transmit_AT(String data) { //send AT commands
unsigned long current_time = millis();
while (BT_Serial.available() > 0) {
if (millis() - current_time > 100){ //таймер, чтобы выйти, если ничего не получает
Serial.println("Timeout");
break;
}
}
BT_Serial.print(data);
}
И, наконец, вам нужно убедиться, что ваш HM-10 является подлинным/имеет установленную подлинную прошивку или это клон. Проверьте, реагирует ли он на "AT" с "OK" вообще. Если это так, то это подлинно, и вы можете продолжать. Если это не так, то вам нужно прошить на него подлинную прошивку, а затем обновить ее, если это так. Вот хороший учебник по прошивке подлинной прошивки на модуль.
После этого вы можете следовать приведенному здесь руководству по обновлению прошивки с более старой подлинной прошивки. Вы можете получить последнюю версию подлинной прошивки на веб-сайте производителя.
- Как разделить входящую строку?
- Как использовать SPI на Arduino?
- Как сбросить или отформатировать Arduino?
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Arduino Due vs Mega 2560
- Как получить уникальный идентификатор для всех плат Arduino?
- Почему я получаю avrdude: stk500v2_ReceiveMessage(): timeout error when uploading to Arduino Mega?
- Тайм-аут связи Arduino Mega с ошибкой программатора