Конфликт servo и bluetooth

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

Конфликт servo и bluetooth

Сообщение Vladimat » 09 ноя 2014, 13:54

Привет,
я делаю начальные шаги в освоении Ардуино. Столкнулся с первыми трудностями. Пытаюсь управлять серво через bluetooth с Андроида.
Пока управляю машинкой с COM-порта, работает безупречно. Как переключаюсь на BT - начинается дрожь вблизи положения 0. Как отходит от 0 градусов на 5 - дрожь почти пропадает, но иногда всё-таки подёргивается.
Изыскания в интернете по фразам типа "BT servo jitter arduino" выдают огромное количество материала в котором разобраться новичку сложно. Я так понимаю, есть какой-то изъян в библиотеке Servo.h - конфликт по прерываниям с последовательным портом. Но все многочисленные статьи очень расходятся, я что-то запутался в них.
В то же время, проблема, вроде-бы, должна быть очень распространённой, наверняка управлять сервой по BT пробовал каждый второй (если не первый). Буду благодарен за подсказки.

З.Ы. На всякий случай мой код:
Код: Выделить всё
#include <Servo.h>

Servo myservo;  // create servo object to control a servo
                // a maximum of eight servo objects can be created

int pos = 0;    // variable to store the servo position
int motor = 0;

void setup()
{   
  Serial.begin(9600);  // initialize serial: 
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
 
  Serial.print("Arduino control Servo Motor Connected OK");
  Serial.print('\n');
}

void loop()

  // if there's any serial available, read it:
  while (Serial.available() > 0) {
     
    // look for the next valid integer in the incoming serial stream:
    motor = Serial.parseInt();
     // do it again:
    pos = Serial.parseInt();
     // look for the newline. That's the end of your  sentence:
//    if (Serial.read() <> 0) {
           
       myservo.write(pos);              // tell servo to go to position in variable 'pos'
//       delay(15);                       // waits 15ms for the servo to reach the position
     
      Serial.print(pos, DEC);
//      Serial.print("\n");
       
//    }
  }
}
Vladimat
 
Сообщения: 434
Зарегистрирован: 04 ноя 2014, 01:57

Re: Конфликт servo и bluetooth

Сообщение elmot » 09 ноя 2014, 14:34

я бы сначала убедился, что с питанием все ок. бт жрет энергию из стаба дуни, а usb-uart этого не делает. Если по питанию все в край, то тут и будет проблема
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Конфликт servo и bluetooth

Сообщение Vladimat » 10 ноя 2014, 03:00

elmot писал(а):я бы сначала убедился, что с питанием все ок. бт жрет энергию из стаба дуни, а usb-uart этого не делает. Если по питанию все в край, то тут и будет проблема

1. Неужели синий зуб "объедает" серву? :) Вот в жизни бы не подумал! Спасибо, проверю.
2. Покуда возник побочный вопрос - как подключаю по синему зубу, пропадает связь по COM-порту, который шёл по USB от компа к ардуине... А как отлаживать и видеть что приходит через синий зуб? Так я в монитор порта смотрел
3. И уж извините за третий вопрос. Посоветуйте решение для перехода на RF канал. Хочу не менее километра. Всюду попадается APC220 - годное решение?
Vladimat
 
Сообщения: 434
Зарегистрирован: 04 ноя 2014, 01:57

Re: Конфликт servo и bluetooth

Сообщение Myp » 10 ноя 2014, 10:53

для отлалдки использовать ком порт который по USB, для блютуса использовать софтварный уарт.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Конфликт servo и bluetooth

Сообщение elmot » 10 ноя 2014, 10:58

Vladimat писал(а):
elmot писал(а):я бы сначала убедился, что с питанием все ок. бт жрет энергию из стаба дуни, а usb-uart этого не делает. Если по питанию все в край, то тут и будет проблема

1. Неужели синий зуб "объедает" серву? :) Вот в жизни бы не подумал! Спасибо, проверю.

Звучит диковато, но из объяснений это самое разумное. 9600 - это не та скорость, на которой обмен по uart должен мешать серве.
2. Покуда возник побочный вопрос - как подключаю по синему зубу, пропадает связь по COM-порту, который шёл по USB от компа к ардуине... А как отлаживать и видеть что приходит через синий зуб? Так я в монитор порта смотрел
3. И уж извините за третий вопрос. Посоветуйте решение для перехода на RF канал. Хочу не менее километра. Всюду попадается APC220 - годное решение?

Увы, не подскажу. Не спец ни в дуинаХ. ни в радиоканалах.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Конфликт servo и bluetooth

Сообщение shev » 13 ноя 2014, 11:40

Ваша серва может дергаться по многим причинам.
Много раз управлял сервами по блютузу (и не одной), все прекрасно работает.
Есть конфликт библиотек Servo и SoftwareSerial - это да, проверено, тут сервы действительно дергаются.
Что бы разобраться в ситуации ответте на вопрос - у вас данные о положении сервы в блютус идут постоянным потоком? Или вы ручками в мониторе порта вбили их один раз, отправили, серва сработала и потом, когда вроде бы новых данных нет, она начинает дергаться?
shev
 
Сообщения: 18
Зарегистрирован: 20 июн 2013, 18:19
Откуда: Уфа
ФИО: Евгений Шемануев

Re: Конфликт servo и bluetooth

Сообщение Vladimat » 14 ноя 2014, 23:54

shev писал(а):Ваша серва может дергаться по многим причинам.
Много раз управлял сервами по блютузу (и не одной), все прекрасно работает.
Есть конфликт библиотек Servo и SoftwareSerial - это да, проверено, тут сервы действительно дергаются.
Что бы разобраться в ситуации ответте на вопрос - у вас данные о положении сервы в блютус идут постоянным потоком? Или вы ручками в мониторе порта вбили их один раз, отправили, серва сработала и потом, когда вроде бы новых данных нет, она начинает дергаться?

1.Данные идут при нажатии на кнопу. Нет нажатия - нет данных. Если сказал придти к нулю - приходит и бьётся в конвульсиях. Если сказал отойти - отходит и успокаивается.
2. Библиотеку SoftwareSerial в первых экзерсисах не использовал - подключал к Rx/Tx - билась. Попробовал подключиь к цифровым портам через SoftwareSerial - ничего не изменилось.
Vladimat
 
Сообщения: 434
Зарегистрирован: 04 ноя 2014, 01:57

Re: Конфликт servo и bluetooth

Сообщение Myp » 15 ноя 2014, 00:55

какая серва то?
выглядит как будто серва плохая, пробуй с другой
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Конфликт servo и bluetooth

Сообщение Vladimat » 15 ноя 2014, 01:48

Myp писал(а):какая серва то?
выглядит как будто серва плохая, пробуй с другой

Обыкновенная SG90. Другой пока нету, жду посылку :-) Я так и думаю, что больная, смущает лишь, что без голубого зуба напрямую она управляется из программы и проблем нету.
Vladimat
 
Сообщения: 434
Зарегистрирован: 04 ноя 2014, 01:57


Вернуться в Arduino и другие Xduino

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12