Мусор последовательного монитора 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 Я постараюсь ответить в обоих местах, так как не уверен, что у всех есть учетная запись на форуме
@Luca Andrei, 👍4
Обсуждение4 ответа
Поменяйте местами провода 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
ЧЕРНЫЙ ЗАЗЕМЛЕНИЕ
Земля 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
Может кто-нибудь объяснить, почему я получаю вывод мусора в Serial Monitor, хотя скорость передачи данных в коде такая же, как и в окне Serial Monitor? Есть ли проблема с Arduino IDE?
Даже если скорость последовательного монитора и код совпадают, есть вероятность, что вы не настроили HC-06 для работы на той же скорости.
Есть много способов проверить и настроить его с помощью AT-Command. Вы легко найдете их, так как было написано много руководств, вот некоторые из примеров:
ссылка 1< бр>
ссылка 2
У меня была такая же проблема. Проблема была решена на другом форуме: 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
- Как остановить SoftwareSerial от получения данных и повторно включить его в какой-то другой момент?
- Отправка команд PUBX на плату GPS (Ublox NEO-6M) через SoftwareSerial
- Почему SoftwareSerial не работает как надо на Arduino Pro Mini 3v3?
- AT-команда не отвечает на последовательный монитор
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- Ардуино для чтения с преобразователя RS232 в последовательный модуль TTL
- Сторожевой таймер застрял в цикле перезапуска? (мигает зеленый светодиод)
- Не нашел датчик отпечатков пальцев :( Arduino Mega 2560 Adafruit Fingerprint Sensor
Возможно ли, что ваш HC-06 не настроен на работу со скоростью 9600 бод?, @dhimaspw
Собирался сказать то же самое, что и @dpw, велика вероятность, что HC-06 работает с другой скоростью передачи данных. Простой поиск в Google показывает, что 38400 — это обычная (или даже стандартная) скорость передачи данных для HC-05 и HC-06. Это определенно объяснило бы тарабарщину, которую вы получаете., @Len
Изменил это через TeraTerm. Я получил подтверждающее сообщение о том, что скорость передачи изменена. Тем не менее, никаких изменений., @Luca Andrei