avrdude: stk500v2_ReceiveMessage(): timeout error for bluetooth arduino

bluetooth rx-pin

Я пытаюсь подключить модуль Bluetooth к своему arduino UNO, чтобы по беспроводной сети запрограммировать робота. Единственная проблема, с которой я сталкиваюсь, заключается в том, что модуль Bluetooth, похоже, не принимает arduino.

Вот как модуль Bluetooth подключен к моему arduino:

Модуль Bluetooth подключается к моему компьютеру через ключ Bluetooth. Я знаю, что модуль Bluetooth работает на порту COM7. Затем светодиод на модуле Bluetooth быстро мигает. После этого я установил порт на правильный порт, который использует модуль Bluetooth:

Одна вещь, которая показалась мне странной, заключалась в том, что название платы arduino не появляется так же, как когда я использую USB для загрузки программы.

Когда я открываю последовательный монитор, светодиод на модуле Bluetooth начинает мигать медленнее, возможно, указывая, что он подключен. Затем я пытаюсь отправить команду AT через последовательный монитор на arduino, введя AT на последовательный вход в верхней части последовательного монитора и нажав enter, и ничего не происходит. Затем я попытался отправить 3 разных фрагмента кода отдельно на arduino по одному за раз:

Первый пример кода:

void setup() {

 Serial.begin(9600);

while (!Serial) {
   ; // дождитесь подключения последовательного порта. Требуется только для собственного USB-порта
 }

 Serial.println("ASCII Table ~ Character Map");
}

int thisByte = 33;

void loop() {

 Serial.write(thisByte);

 Serial.print(", dec: ");
 Serial.print(thisByte);

 Serial.print(", hex: ");
 Serial.print(thisByte, HEX);

 Serial.print(", oct: ");
 Serial.print(thisByte, OCT);

 Serial.print(", bin: ");
 Serial.println(thisByte, BIN);

 if (thisByte == 126) {   
   while (true) {
     continue;
   }
 }
 thisByte++;

}

Второй пример кода:

#include <SoftwareSerial.h>
SoftwareSerial BTSerial (2,3);
void setup() {
  Serial.begin(9600);
  Serial.println("Enter AT Commands");
  BTSerial.begin(9600);
}

void loop() {
  if(BTSerial.available()){
    Serial.write(BTSerial.read());
  }
  if(Serial.available()){
    BTSerial.write(Serial.read());
  }
}

Третий пример кода:

char inputByte;
void setup() {
 Serial.begin(9600);
 pinMode(13,OUTPUT);

}

void loop() {
while(Serial.available()>0){
  inputByte= Serial.read();
  Serial.println(inputByte);
  if (inputByte=='Z'){
  digitalWrite(13,HIGH);
  }
  else if (inputByte=='z'){
  digitalWrite(13,LOW);
  } 
  }
}

(Следующая ситуация возникает для всех 3 образцов кода, которые я скопировал из Интернета). Когда я устанавливаю порт на COM7, а затем нажимаю загрузить на плату, IDE говорит "Загрузка", и светодиод начинает мигать медленнее, как я уже упоминал ранее с последовательным монитором. Через некоторое время, в конце концов, появились следующие сообщения об ошибках:

avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer

Я поискал ответы в Интернете. Интернет предложил использовать большую скорость передачи данных, поэтому я переключил ее с 9600 на 57600, а также одновременно переключился с новой строки на NL и CR. По-прежнему ничего не происходило, и я получил следующее сообщение об ошибке. Одно последнее предложение, которое я увидел в Интернете, состояло в том, чтобы разместить резисторный делитель/делитель напряжения на выводе RX (я этого не делал, так как не вижу, как это может что-то изменить, хотя я могу ошибаться, и это может иметь большое значение).

, 👍0

Обсуждение

У вас нет способа перезагрузить Arduino в загрузчик. Вы не можете просто включить интерфейс Bluetooth и надеяться, что он сработает. Вам нужен какой-то способ инициирования сброса, как это делает интерфейс USB через сигнал DTR., @Majenko

Кроме того, вам необходимо вручную настроить скорость передачи данных HC05 в бодах в соответствии со скоростью загрузки загрузчика (IIRC 115200 бод), что вы можете сделать только через его контакты последовательного интерфейса., @Majenko

@Majenko Единственная проблема в том, что у меня нет такого опыта..., @DigitalRookie4

Тогда вам нужно читать, читать, читать. Прочитайте, как работает HC-05. Если есть что-то, чего вы не понимаете, тогда прочитайте об этом аспекте. Продолжайте читать, пока не поймете все это., @Majenko

@Majenko Есть ли способ, которым я мог бы использовать вывод сброса на arduino для решения проблемы?, @DigitalRookie4

Если вы можете придумать какой-нибудь способ удаленного переключения через соединение Bluetooth, да. Или нажмите кнопку сброса в нужный момент, но я думаю, что это как бы сводит на нет весь смысл bluetooth..., @Majenko

`Одна вещь, которая показалась мне странной, заключалась в том, что название платы arduino не всплывает"... с чего бы это? ... название происходит от USB-драйвера, @jsotola

@jsotola Честно говоря, я так и думал., @DigitalRookie4

Я не уверен, насколько вам удобно с пайкой, но посмотрите это видео, где кто-то показал, как сбросить Arduino с модуля Bluetooth: https://youtu.be/6GD3aNFrJ9I?t=401, @Fahad


1 ответ


1

Диапазон Bluetooth невелик, поэтому робот не может находиться далеко от компьютера для загрузки.


Чтобы решить проблему сброса для Bluetooth, вы можете добавить кнопку сброса на роботе и использовать ее, пока avrdude пытается загрузить скетч. Скорость передачи данных на HC-05 должна быть установлена на 115200 бод.


В качестве альтернативы у вас может быть USB - разъем на роботе. Вы можете использовать короткий удлинитель USB в качестве внутреннего кабеля от USB-разъема Arduino к внешней оболочке робота.

,