Мусор последовательного монитора Arduino Pro Mini

Это мой первый пост. Надеюсь, что пишу в правильном разделе форума. В противном случае, не мог бы администратор переместить эту тему в соответствующий раздел?

Плата: Arduino Pro Mini 3,3 В, 8 МГц

Ардуино IDE: 1.6.12 Arduino питается от платы FTDI и кабеля USB Mini-B от USB-порта компьютера в следующем порядке:

Ардуино FTDI

ЧЕРНЫЙ ЗАЗЕМЛЕНИЕ

Земля CTS

ВКК ВКК

RXi-передача

TXo RX

DTR DTR

Кроме того, я подключил Bluetooth-модуль HC-06 в следующем порядке:

Ардуино HC-06

Земля Земля

ВКК ВКК

D10 TXD

D11 RXD

Последовательный монитор открыт на COM4, новая строка, 9600 бод.

Код, который я пытаюсь запустить:

#include <SoftwareSerial.h>
SoftwareSerial BT(10, 11); 
void setup()  
{
  pinMode(13, OUTPUT);
  BT.begin(9600);
  // Отправляем тестовое сообщение на другое устройство
  BT.println("Hello from BTSerial");

  Serial.begin(9600);
  Serial.println("Hello from Serial");
}

char a; // сохраняет входящий символ с другого устройства
void loop() 
{

  if (BT.available())
  // если текст пришел с серийного номера BT...
  {
    a=(BT.read());
    if (a=='1')
    {
      digitalWrite(13, HIGH);
      BT.println("LED on");
    }
    if (a=='2')
    {
      digitalWrite(13, LOW);
      BT.println("LED off");
    }
    if (a=='?')
    {
      BT.println("Send '1' to turn LED on");
      BT.println("Send '2' to turn LED on");
    }
    Serial.println(a);
  }
}

Я пытаюсь связаться с HC-06 с телефона Android. Я пишу в этом разделе форума, потому что, когда я отправляю сообщение с телефона на Arduino, в Serial Monitor печатается следующее:

à„…€ƒ¦¤„„‡…§¤¦„‡Å„EóAãbBãbHãb

Когда я пытаюсь отправить сообщение с Arduino на телефон, телефон ничего не получает.

Может кто-нибудь объяснить, почему я получаю вывод мусора в Serial Monitor, хотя скорость передачи данных в коде такая же, как и в окне Serial Monitor? Есть ли проблема с Arduino IDE?

Обновление 12.11.2016

Вот что я получаю, когда открываю Serial Monitor в Arduino IDE с помощью этого кода: Новая строка, скорость передачи 9600

‚Ƈ¥Ç$¤†Fó

Если я изменю свойства последовательного монитора на новую строку, скорость передачи данных 19200, вот что я получу:

Hello from Serial

В приложении для телефона Android ничего не печатается.

Также обратите внимание, что этот вопрос также рассматривается на форуме Arduino по следующей ссылке: http://forum.arduino.cc/index.php?topic=434623.0 Я постараюсь ответить в обоих местах, так как не уверен, что у всех есть учетная запись на форуме

, 👍4

Обсуждение

Возможно ли, что ваш HC-06 не настроен на работу со скоростью 9600 бод?, @dhimaspw

Собирался сказать то же самое, что и @dpw, велика вероятность, что HC-06 работает с другой скоростью передачи данных. Простой поиск в Google показывает, что 38400 — это обычная (или даже стандартная) скорость передачи данных для HC-05 и HC-06. Это определенно объяснило бы тарабарщину, которую вы получаете., @Len

Изменил это через TeraTerm. Я получил подтверждающее сообщение о том, что скорость передачи изменена. Тем не менее, никаких изменений., @Luca Andrei


4 ответа


2

Поменяйте местами провода RX и TX HC06. Это потому, что это утверждение: SoftwareSerial BT(10, 11); на самом деле означает SoftwareSerial BT(RXpin, TXpin);. Учитывая это, 10 — это ваш Rx, а 11 — ваш Tx. В этом случае вам необходимо подключить контакт 10 (программный Rx) вашего Arduino к контакту Tx вашего HC06, а контакт 11 (программный Tx) к контакту Rx.

,

Я думаю, что неправильно набрал основной вопрос, потому что именно так они у меня связаны. Извините, что ввел вас в заблуждение., @Luca Andrei


2

ЧЕРНЫЙ ЗАЗЕМЛЕНИЕ

Земля CTS

На меня это смотрит назад. Соедините GND с GND и CTS с BLK.

Модуль Bluetooth работает с заданной скоростью передачи данных. Вы должны убедиться, что ваш Arduino обменивается данными с этой скоростью передачи данных — вы не можете выбрать какую-либо старую скорость передачи данных.

Скорость передачи данных можно изменить с помощью команды AT+UART=x (где x — одна цифра, обозначающая скорость передачи данных: 1=1200, 2=2400, 3=4800, 4=9600 (по умолчанию), 5=19200, 6=38400, 7=57600, 8=115200, 9=230400, A=460800, B=921600, C=1382400 ). Если HC-06 не использует скорость передачи данных по умолчанию 9600 (что весьма вероятно), вам придется угадать, какая скорость передачи данных является правильной. Проработайте возможные варианты, перечисленные там, в вашей функции BT.begin(...), чтобы увидеть, начинает ли один из них работать.

,

Он на самом деле прав. Это не назад., @Dat Ha


0

Может кто-нибудь объяснить, почему я получаю вывод мусора в Serial Monitor, хотя скорость передачи данных в коде такая же, как и в окне Serial Monitor? Есть ли проблема с Arduino IDE?

Даже если скорость последовательного монитора и код совпадают, есть вероятность, что вы не настроили HC-06 для работы на той же скорости. Есть много способов проверить и настроить его с помощью AT-Command. Вы легко найдете их, так как было написано много руководств, вот некоторые из примеров:
ссылка 1< бр> ссылка 2

,

3

У меня была такая же проблема. Проблема была решена на другом форуме: https://forum.arduino.cc/index.php?topic=434623.0 Копирую решение сюда:

It appears that in fact your board is not running at 8MHz, but instead 16MHz.
Please select the correct setting for your board:
Tools > Processor > ATmega328(5V, 16MHz)
Or if it has the ATmega168:
Tools > Processor > ATmega168(5V, 16MHz)
,

это мне очень помогло., @mr.M