Купил манипулятор на сервоприводах - от пульта он работал нормально, но потом подлючил bluetooth модуль и сервоприводы начали попарно дергаться:
управляю 1 дрегается 2;
управляю 2 дрегается 1;
управляю 3 дрегается 4;
управляю 4 дрегается 3;
Пытался решить проблему, как мог - решил закоментировать строчку
Serial.begin(9600) которая отвечает за вывод на экран сигналов при управлении со смартфона - нажимаешь на кнопки, а приходят буквы.
Все перестало работать - понял, что без нее ничего работать не будет, раскоментировал строку, прошил заново и ничего не рабртает - bluetooth - выдает знак вопроса - ? вместо букв.
Думал, что bluetooth модуль навернулся - купил новый - не помогло.
Испытал модули на другой arduino uno - не помогло.
Обнавил Arduino IDE 2.3.7 до 2.3.10 не помогло.
Удалил Arduino IDE 2.3.10 и установил заново, тоже самое сделал с драйвером CP210 - ничего не помогло, как не работало так и не работает.
Может у кого была такая проблема - может можете подсказать?!
Для начала могу подсказать вот это
Тут могу предположить, что скорости интерфейсов не совпадают. В скетче задана скорость 9600 - Serial.begin(9600), такая же скорость должна быть установлена в том мониторе порта, которым вы пользуетесь.
Это все, что можно сказать по вашей проблеме и ее описанию
Хорошо, а как это сделать то?!
Без понятия…
v258 мне кажется у вас талант помогать и троллить одновременно…
Вам кажется. А еще вам кажется, что я вижу вашу проблему так же, как и вы. Это не так. Я не вижу - ни чем вы пользуетесь, ни что вы делаете, ни что у вас там не получается. Для меня это все - тайна за семью печатями. Для остальных здесь - тоже.
вам кажется что у меня проблема)))
а что касается AEKravcov2001 так ему надо обязательно пройти курс что бы хотя бы понимать как менять скорость порта, и как вставлять код…
Бабос, мля, какого хрена ты лезешь во взрослые разговоры!!! ![]()
ну вы хоть ники сравните, а еще меня лентяем называли…
собираю доки к вашему личному делу, внес пометку что это вы главный лентяй, еще и других в этом обвиняете, все я убежал, не буду мешать)))
Ты лентяй и есть. А я есть старый подслеповатый человек. Грешно над этим смеяться…
у меня у самого зрение плывет, но все таки лентяй вы…
Беги уже, раз пообещал…
Так, что делать кеп - скорость передачи данных стояла 9600 в обоих строчках с самого начала, и все работало, а потом накрылось. ЧТО МНЕ С ЭТИМ ДЕЛАТЬ?!
А вы искали сами советы - поисковиком?
А то я взял Ваш текст и попросил гугл в режиме ИИ.
Главная причина, почему сейчас приходят знаки вопроса (?) — это рассинхронизация скорости передачи данных (Baud Rate) или конфликт портов.
Сам Bluetooth-модуль исправен, как и ваша Arduino. Проблема кроется в аппаратном конфликте или настройках прошивки. Давайте разберем обе проблемы по очереди.
Часть 1. Почему появились знаки вопроса ? (Текущая проблема)
Знак вопроса в Serial-мониторе означает, что плата получает байты, но не может их расшифровать. Это происходит в двух случаях:
- Несовпадение скорости (Baud Rate): В коде написано
Serial.begin(9600);, а сам Bluetooth-модуль (особенно если он новый) с завода настроен на другую скорость (например, 38400 или 115200). Из-за этого символы превращаются в мусор. - Конфликт пинов TX/RX: Если ваш Bluetooth-модуль подключен к пинам
0(RX) и1(TX) на Arduino Uno, то он делит этот канал с USB-кабелем.- Важно: Когда вы прошиваете плату, Bluetooth-модуль нужно обязательно физически отключать от пинов 0 и 1. Иначе прошивка либо не зальется, либо зальется с ошибкой, а в порт будет сыпаться мусор.
Как исправить:
- Шаг 1: Отключите провода RX и TX модуля Bluetooth от Arduino.
- Шаг 2: Прошейте плату вашим кодом еще раз (убедитесь, что в коде и в нижнем правом углу Serial-монитора выставлена одинаковая скорость, например,
9600). - Шаг 3: Подключите Bluetooth обратно. Если не помогло, попробуйте изменить в коде скорость на
Serial.begin(38400);илиSerial.begin(115200);(и в мониторе порта тоже), так как новые модули часто идут с такой скоростью по умолчанию.
Часть 2. Почему сервоприводы дергались попарно? (Исходная проблема)
Когда вы исправите чтение букв, вернется старая проблема с дерганьем. Вот почему она возникает:
- Проблема 1: Просадка по питанию (Самая частая причина). Сервоприводы при движении потребляют много тока (до 1–2 Ампер в пике). Bluetooth-модуль очень чувствителен к напряжению. Когда вы начинаете управлять сервой
1, она резко забирает ток, напряжение на плате падает, Bluetooth-модуль на долю секунды теряет связь, отправляет случайный мусорный сигнал в Arduino, и плата воспринимает его как команду для сервы2. - Проблема 2: Наводки и общая земля. Если питание сервоприводов и Bluetooth идет от одного источника без конденсаторов, мощные моторы создают электромагнитные шумы в проводах данных.
- Проблема 3: Ошибка в логике кода (Скетче). Если вы читаете символы через
Serial.read()без проверки окончания строки, буфер может сдвигаться. Например, вместо командыA(для первой сервы) из-за задержки Bluetooth считывается следующий байтB(для второй сервы).
Как это исправить в будущем:
- Разделите питание: Никогда не питайте сервоприводы напрямую от пина 5V платы Arduino. Для серв нужен отдельный источник питания (например, блок питания на 5V/3A или аккумулятор), но обязательно соедините минус (GND) внешнего питания с пином GND на Arduino.
- Используйте SoftwareSerial: Перенесите Bluetooth-модуль с пинов 0 и 1 на любые другие (например, 10 и 11), используя библиотеку
SoftwareSerial. Это освободит аппаратный USB-порт для отладки и уберет конфликты.
Давайте вернем систему к жизни. Вы можете прикрепить сюда ваш код (скетч)? Я посмотрю, как там настроен прием символов и к каким пинам подключен Bluetooth, чтобы дать точную схему исправления.
для начала внимательно перечитать все что вам писали ранее, и выполнить все в точности…
а когда уже начнете следовать инструкциям, можно потом подсказать что то такое - в конце loop() у вас стоит switch(val2), и из-за того, что там оказался мусор (-1), он случайно попадает в кейс для другой буквы. Отсюда и эффект: жмёте на 1 — дергается 2. при условии что помощь реально будет полезна…
Проще. Я своим сообщением разбанил его на гугле.

