Проблема с получением данных HC-06
Я подключил 2 модуля BT HC-05 и HC-06. Когда я что-то пишу через Serial Monitor и пересылаю с HC-05 на HC-06, все работает хорошо. Но когда я отправляю непрерывные данные через цикл, HC-06 получает только определенное количество, а затем просто останавливается! Это из-за БТ модуля или еще что-то? Мой код для HC-05:
#include <SoftwareSerial.h>
SoftwareSerial BTserial(2, 3);
void setup()
{
Serial.begin(9600);
BTserial.begin(38400);
}
void loop()
{
BTserial.write('1');
}
Код для HC-06:
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(2, 3);
void setup()
{
Serial.begin(9600);
BTSerial.begin(9600);
}
void loop()
{
if (BTSerial.available())
Serial.write(BTSerial.read());
}
Хорошая скорость передачи данных. Спасибо!
1 ответ
Лучший ответ:
Я думаю, у вас две проблемы:
Сначала о показанном скетче: я не думаю, что скорость передачи данных хорошая. В вашем коде HC-05 (отправитель) вы используете
BTserial.write('1');
без какой-либо задержки или другого кода, поэтому это будет работать очень быстро, поэтомуSoftwareSerial
интерфейс почти полностью занят. Вы отправляете почти на максимальной скорости, которую вы можете получить с 38400 бод. На принимающей стороне вы используете скорость 9600 бод, что значительно медленнее, чем 38400 бод. Как HC-06 должен передавать все данные, которые он получает, на Arduino, когда вы используете только 9600 бод, а данные приходят со скоростью 38400 бод? Это не может работать. Вы должны настроить HC-05 и HC-06 на использование одной и той же скорости передачи данных, чтобы этого не произошло. Или - если вы действительно не хотите - вы можете ограничить общую скорость, с которой вы отправляете, просто отправляя меньше данных в единицу времени (отправляя данные медленнее, но с той же скоростью, что и раньше). Это предотвратит переполнение HC-06 данными. (Также может быть ограничение на скорость отправки данных через HC-05, но я не проверял это). В общем, делать общение полностью без тормоза скорости — не очень хорошая идея. Это может навлечь на вас неприятности, о которых вы обычно не хотите думать.Во-вторых: В своем комментарии вы написали, что пытались изменить скорость передачи данных, но получили искаженные данные. Поскольку вы не описали больше, мы не можем много сказать об этом. Но искаженные данные — это нормальный симптом неправильной скорости передачи данных. Таким образом, кажется, что вы не изменили скорость передачи данных успешно. Я бы посоветовал вам еще раз изучить это и попытаться успешно изменить скорость передачи данных. Это возможно, и в Интернете есть много руководств и кодов, которые показывают, как это делается. (Когда у вас снова возникнут проблемы с этим, вы можете задать вопрос по этой конкретной проблеме, включая всю соответствующую информацию)
Везде я изменил скорость передачи данных на 9600. Клянусь Богом, я пробовал это раньше, это не сработало :D Но теперь я попробовал это снова, также включил задержку (10), и все работает как шарм, большое спасибо!, @Ieva Kriščiūnaitė
- Проблемы с надежным подключением с использованием HC-05 в качестве ведущего устройства Bluetooth
- Bluetooth-модуль HC-05 неправильно считывает данные с моего телефона Android
- Мой модуль Bluetooth HC-05 не работает
- Проблемы с последовательной связью от Arduino к Bluetooth HC-05
- Соединение Bluetooth с HC-05 сопряжено, но не подключено (в Linux)
- Не удается вручную подключить ведущий HC-05 к подчиненному.
- Модуль HC-05 не получает команд и не спаривается
- Передача/прием данных Nodemcu(V3) + модуль Bluetooth HC-05
есть ли шанс, что вы отправляете больше, чем может выдержать принимающая сторона, учитывая 4-кратную разницу в скорости передачи?, @Chris Combs
Ну, во-первых, в HC05 скорость передачи была 9600, но данные все были повреждены. Я изменил скорость передачи данных в AT+UART на 38400 и так же оставил в настройках, и только после этого полученные данные стали корректными., @Ieva Kriščiūnaitė