Здравствуйте!
Сразу хочу сказать что в теме Ардуино я зеленый новичок, хотя навыки программирования и работы с электроникой имеются. Приобрел все это чудо незадолго до НГ
Попытался подключить модуль HC-05 к Ардуино УНО используя библиотеку Softwareserial
Вроде все пошло хорошо, модуль HC-05 в списке блютус устройств появился. Начал тестирование при помощи терминала Serial Bluetooch Terminal и получил полную ахинею. Такое чувство что кодировки не совпадают. В терминале 1 - в мониторе порта отображается ⸮. Отправляю 1 с монитора порта - в терминале отображается —
Пробовал подать плюс на KEY и отправить АТ команды - все отработало правильно.
Подскажите, плиз, в какую сторону думать. Кодировку в терминале пробовал всякую, начиная с UTF-8. Версия IDE - 1.8.19 Схема подключения:
HC-05–>UNO (+5V → +5V; GND → GND; RX->D3 (через делитель); TX->D2->) Код
#include <SoftwareSerial.h>
int gRxPin = 2;
int gTxPin = 3;
SoftwareSerial BTSerial(gRxPin, gTxPin);
void setup()
{
pinMode(gRxPin, INPUT);
pinMode(gTxPin, OUTPUT);
BTSerial.begin(9600); //Set the baud rate to your Bluetooth module.
Serial.begin(9600); //Set the baud rate to your Bluetooth module.
Serial.println("<<< Start! >>>");
}
void loop()
{
if (BTSerial.available())
Serial.write(BTSerial.read());
if (Serial.available())
BTSerial.write(Serial.read());
}
#include <SoftwareSerial.h>
int gRxPin = 2;
int gTxPin = 3;
SoftwareSerial BTSerial(gRxPin, gTxPin);
char btCommand = 'S';
void setup()
{
pinMode(gRxPin, INPUT);
pinMode(gTxPin, OUTPUT);
BTSerial.begin(9600); //Set the baud rate to your Bluetooth module.
Serial.begin(9600); //Set the baud rate to your Bluetooth module.
Serial.println("<<< Start! >>>");
}
void loop()
{
if (BTSerial.available()>0)
{
btCommand = BTSerial.read();
Serial.print("char:");Serial.println(btCommand) ;
Serial.print("hex:") ;Serial.println(btCommand,HEX) ;
}
}
Отправляю с терминала на смартфоне последовательно A, 1, 2
Получаю такой результат:
08:45:51.748 → char:⸮
08:45:51.748 → hex:FFFFFFC6
08:46:18.963 → char:⸮
08:46:18.963 → hex:FFFFFFC7
08:46:46.714 → char:⸮
08:46:46.714 → hex:FFFFFFC7
Совершенно не понимаю что происходит (((
Первая ссылка в гугле говорит, что может отличаться и настраивается через АТ:
AT+UART=,, — установить модуль для последовательного порта.
Параметры:
— скорость обмена (9600,19200,38400,57600,115200);
— стоп-бит:
0 — нет;
1 — есть;
— бит паритета:
0 — нет;
1 — есть.
Ответ модуля: OK (или FAIL).
Но проще для начала просто попробовать поменять скорость в скетче, выбрав одну из этих:
Всем большое спасибо за ответы!!!
Получилось обменяться данными со смартфоном. Подошла скорость 38400.
Вот код
#include "SoftwareSerial.h"
SoftwareSerial BTSerial(2, 3);
void setup() {
pinMode(2, INPUT);
pinMode(3, OUTPUT);
Serial.begin(9600);
BTSerial.begin(38400);
Serial.println("start");
}
void loop() {
if (BTSerial.available()) {
char c = BTSerial.read();
Serial.print(c);
}
if (Serial.available()) {
char c = Serial.read();
BTSerial.write(c);
}
}
Правда не удалось почему то зайти в АТ команды чтобы посмотреть как я там в самом начале настроил. И подавал постоянную 1 на КЕУ и кратковременно - не воспринимает команды с монитора. Хотя светодиод моргает как положено. Ну да бог с ним. Главное работает. Сейчас буду машинку собирать )) А там другой модуль куплю и более внимательно разберусь
Еще раз большое спасибо, Уважаемые!!
PS И убрал делитель. Будем надеяться что не сгорит от 5 вольт )) Такой совет попадался в одной из статей