roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 05:11

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 33 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: (Arduino Nano + HC-05) SoftwareSerial скорость больше 9600
СообщениеДобавлено: 08 янв 2015, 22:13 
Не в сети

Зарегистрирован: 08 янв 2015, 21:23
Сообщения: 7
Откуда: Иркутск
прог. языки: Что под руку попадет
ФИО: Александр
Доброго времени!
Проблема такая, купил Arduino Nano - http://www.ebay.com/itm/181591402576?_trksid=p2059210.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT и Bluetooth HC-05 - http://www.ebay.com/itm/221483899074?_trksid=p2059210.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT
Начал эксперименты, о них можно не читать если не возникло вопросов типа, "а это делал?"
Долго мучился с входом в режим настройки (как видно из ссылки, модуль на плате без пина KEY), излазил интернеты и до меня таки дошло, что кнопочка возле ножки EN не с проста... в общем как она работает разобрался (если подать питание с зажатой кнопкой, модуль переходит в режим AT на скорости 38400, а если нажать на кнопку после подачи питания - в режим AT на скорости 9600 при условии что модуль не спарен с другим устройством).
Ну собственно подключил HC-05 к пинам D2(TX от HC-05) и D3(RX от HC-05) так как только они на ARDUINO NANO "can be configured to trigger an interrupt" (хотя учитывая что я чайник, я так и не понял, зачем нужны прерывания.. ну да ладно, разберемся) и приступил к настройке, залив простой скетч типа:
Код:
#include <SoftwareSerial.h>

SoftwareSerial BTSerial(2, 3); // RX | TX

void setup()
{
  //pinMode(9, OUTPUT);  // this pin will pull the HC-05 pin 34 (key pin) HIGH to switch module to AT mode.. На моем модуле нет KEY, зато есть лапка позволяющая выводить БТ из режима энергосбережения (или даже управлять этим режимом, я не разбирался), можно ее повесить на D9, но мне пока не нужно.
  //digitalWrite(9, HIGH);
  Serial.begin(38400);
  BTSerial.begin(38400);  // HC-05 default speed in AT command more
  Serial.println("Enter AT commands:");
}

void loop()
{
char i;
  // Keep reading from HC-05 and send to Arduino Serial Monitor
  if (BTSerial.available()){
    i = BTSerial.read();
    Serial.write(i);
  }

 
  // Keep reading from Arduino Serial Monitor and send to HC-05
  if (Serial.available()){
    BTSerial.write(Serial.read());
  }
}

Естественно сперва на портах была установлена скорость 9600 (которая идет по умолчанию в настройках HC-05) и проверил "переписку" смартфона с компьютером через терминальные программы - все отлично работало. После чего я и привел скетч в данный вид (заменил скорость на 38400).
Переключил БТ в режим команд, путем зажатия кнопки на модуле во время подачи питания (т.е. режим 38400)... и обломился :(
Ни на какие команды он не реагирует.
Долго промучившись (так как я еще не знал всего что знаю сейчас, и про режим на скорости 9600 не знал), я перевел модуль во второй режим команд, на скорости 9600, естественно предварительно поправив скетч.
И вот свершилось, до команд я добрался, начал эксперименты, запорол модуль (ну как запорол, думал придется заказывать и ждать USB-TTL, так как умудрился выставить режим AT+UART=57600,0,1... с которым как оказалось не так то просто работать через Arduino-IDE...
Но нет! Мой вопрос не в этом, с этим я справился. Как не относится к этому посту, но если возникнет желание узнать, опишу.
Так вот, справившись с этой проблемой, я перевел таки HC-05 в режим AT+UART=57600,0,0 и решил наконец то по переписываться между компом и смартфоном...
И облом... вместо того что отсылаю приходят всякие ЕЄ©§©MJLJ#бП§†…Е или вообще ни чего...
Естественно начал тесты с изменением скорости на 38400 и 19200... И опытным путем установил, что модуль полностью исправно работает только на скорости 9600 и частично (отправляет на BT устройство все символы латиницы кроме o и w но ни чего не принимает обратно) на скорости 38400 (по мне так это бред, но я же чайник, может чего не понимаю?)
Ну и в общем долго мучился, в итоге переключил модуль опять в режим "AT+UART=38400,0,0", перекинул модуль на аппаратный serial и залил скетч:
Код:
#include <SoftwareSerial.h>

SoftwareSerial BTSerial(2, 3); // RX | TX

void setup()
{
  //pinMode(9, OUTPUT);  // this pin will pull the HC-05 pin 34 (key pin) HIGH to switch module to AT mode
  //digitalWrite(9, HIGH);
  pinMode(9, OUTPUT);
  digitalWrite(9, HIGH);
  Serial.begin(38400);
  Serial.println("Enter AT commands:");
}

void loop()
{

  Serial.write("1\r\n");
  delay (500);
  Serial.write("2\r\n");
  delay (500);
  Serial.write("ooopppwwwwttt\r\n");
  delay (500);
  Serial.write("Test\r\n");
  delay (2000);
  Serial.flush();

}


И о чудо! Символы o и w успешно передаются... А вот обратную связь проверить не получается, т.к. работает это только при отключенном USB проводе и соответственно монитором порта или другой терминальной программой уже не посмотришь, что там приходит со смартфона (именно по этому и скетч использовал второй, а не первый)....


И собственно вот он сам вопрос:
-Есть ли какое-то объяснение, что HC-05 подключенный к Arduino Nano, не работает на скоростях выше 9600 через SoftwarSerial?
И если ни каких видимых причин нет, то в какую сторону копать, чтобы на простейшем скетче, приведенном ниже и скорости 57600 нормально слалось как из Serial в SoftwareSerial так и обратно?
Код:
#include <SoftwareSerial.h>

SoftwareSerial BTSerial(2, 3); // RX | TX

void setup()
{
  Serial.begin(57600);
  BTSerial.begin(57600);  // HC-05 default speed in AT command more
  Serial.println("Enter AT commands:");
}

void loop()
{
char i;
  // Keep reading from HC-05 and send to Arduino Serial Monitor
  if (BTSerial.available()){
    i = BTSerial.read();
    Serial.write(i);
  }

 
  // Keep reading from Arduino Serial Monitor and send to HC-05
  if (Serial.available()){
    BTSerial.write(Serial.read());
  }
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: (Arduino Nano + HC-05) SoftwareSerial скорость больше 96
СообщениеДобавлено: 09 янв 2015, 10:02 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
конечно есть объяснение. тупенькому процессору ардуины не хватает производительности для работы software serial на нормальной скорости. копать надо в направлении ухода от software serial.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: (Arduino Nano + HC-05) SoftwareSerial скорость больше 96
СообщениеДобавлено: 09 янв 2015, 10:09 
Не в сети

Зарегистрирован: 08 май 2014, 18:32
Сообщения: 609
elmot, это ведь мега328 в ардуине. Откуда там второй уарт? При том что единственный занят под бутлодырь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: (Arduino Nano + HC-05) SoftwareSerial скорость больше 96
СообщениеДобавлено: 09 янв 2015, 11:11 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: (Arduino Nano + HC-05) SoftwareSerial скорость больше 96
СообщениеДобавлено: 09 янв 2015, 12:50 
Не в сети

Зарегистрирован: 08 янв 2015, 21:23
Сообщения: 7
Откуда: Иркутск
прог. языки: Что под руку попадет
ФИО: Александр
Спасибо за ответ!
Значит технически все нормально, т.е. оно так и должно НЕ работать :)
Это и огорчает и радует. Просто я думал что проблема в качестве изготовления девайсов (БТ или Ардуины или обеих плат).
Стало быть все с этим нормально, можно дальше продолжать эксперименты :)

Добавлено спустя 6 минут 35 секунд:
Re: (Arduino Nano + HC-05) SoftwareSerial скорость больше 9600
Еще один вопрос, а есть ли проц пожирнее среди ардуин? Просто Nano работает на частоте 16MHz, и вроде как более "скоростных" ардуин нет?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: (Arduino Nano + HC-05) SoftwareSerial скорость больше 96
СообщениеДобавлено: 09 янв 2015, 13:28 
Не в сети

Зарегистрирован: 08 май 2014, 18:32
Сообщения: 609
ардуйня сама по себе, by design, тормозит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: (Arduino Nano + HC-05) SoftwareSerial скорость больше 96
СообщениеДобавлено: 09 янв 2015, 14:22 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
dobrMAN писал(а):
Спасибо за ответ!
Значит технически все нормально, т.е. оно так и должно НЕ работать :)
Это и огорчает и радует. Просто я думал что проблема в качестве изготовления девайсов (БТ или Ардуины или обеих плат).
Стало быть все с этим нормально, можно дальше продолжать эксперименты :)

Добавлено спустя 6 минут 35 секунд:
Re: (Arduino Nano + HC-05) SoftwareSerial скорость больше 9600
Еще один вопрос, а есть ли проц пожирнее среди ардуин? Просто Nano работает на частоте 16MHz, и вроде как более "скоростных" ардуин нет?

Надо взять камень с бОльшим количеством hardware serial и не лохматить бабушку.

Вот за это я и не люблю ардуины.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: (Arduino Nano + HC-05) SoftwareSerial скорость больше 96
СообщениеДобавлено: 09 янв 2015, 14:31 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
че-то дуркуете, rs232 занят иде дуины только в первую сек. после сброса, дальше отдается пользователю. Вот в этой теме есть принципиальная схема дуиносовместимой платы, где используется rs232 и для иде и для чего угодно :)
http://roboforum.ru/forum10/topic14711.html


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: (Arduino Nano + HC-05) SoftwareSerial скорость больше 96
СообщениеДобавлено: 09 янв 2015, 14:33 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: (Arduino Nano + HC-05) SoftwareSerial скорость больше 96
СообщениеДобавлено: 09 янв 2015, 16:08 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
пины уарта выведены на колодку. чтот я не могу понять, с чего это блюпуп и ftdi могут мешать друг другу. ну максимум, если для этих нано чтот в среде переделали, ну допустим консольку, тогда максимум в этой консольке данные будут появляться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: (Arduino Nano + HC-05) SoftwareSerial скорость больше 96
СообщениеДобавлено: 09 янв 2015, 17:41 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: (Arduino Nano + HC-05) SoftwareSerial скорость больше 96
СообщениеДобавлено: 09 янв 2015, 17:42 
Не в сети

Зарегистрирован: 08 янв 2015, 21:23
Сообщения: 7
Откуда: Иркутск
прог. языки: Что под руку попадет
ФИО: Александр
Цитата:
пины уарта выведены на колодку. чтот я не могу понять, с чего это блюпуп и ftdi могут мешать друг другу. ну максимум, если для этих нано чтот в среде переделали, ну допустим консольку, тогда максимум в этой консольке данные будут появляться.

Или я не о том (простите чайника) или ни кто не говорил что HW Serial нет у NANO... Он есть, но если к нему подключить блютуз, то слать МЕЖДУ usb и BT данные не получится, ведь они на одном и том де Serial будут?
Цитата:
Я бы взял свою любимую стмку с тремя портами и прошивалкой и даже глаз бы не скосил на ардуины :-)

Уважаемый elmot так как мне абсолютно фиолетово что ковырять, то можно и мне взять STM, только о них я знаю еще меньше чем об Arduino (учитывая, что про ардуину я практически ни чего еще не знаю, можно прикинуть мой объем знаний об STM :) ). Что вы можете сказать вот о таком звере - http://www.ebay.com/itm/STM32F103C8T6-ARM-STM32-Minimum-System-Development-Board-Module-For-Arduino-DHUS-/321569700934?pt=LH_DefaultDomain_0&hash=item4adf0c3c46 ? Сколько у него HW Serial например?
Вообще брал ардуину, чтобы сделать эмулятор ELM327 (адаптера для диагностики автомобиля), т.к. у меня старенькая Subaru и с ELM327 она не дружит, а хочется пользоваться программой Torque...
В принципе для этого хватит моей Ардуинки, т.к. БТ можно подключить к HW Serial, а протокол SSM1 в субару, на сколько я знаю работает на не высоких скоростях, думаю его можно будет обрабатывать через SoftwareSerial... Впрочем до этого далеко мне еще...

А вот помигать лампочками, прикрутить кнопочки, пощелкать релюшками... было бы интересно разными МК :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: (Arduino Nano + HC-05) SoftwareSerial скорость больше 96
СообщениеДобавлено: 09 янв 2015, 18:13 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
ну вы определитесь, что нужно в определённый момент, блютуз или юсб. если прям одновременно и то и то, так берёте другую дуню, у которой больше аппаратных уартов. ну или для второго канала связи использовать проводной/беспроводной модуль, у которого интерфейс, допустим spi.
elmot, чтот не припомню проблем. сейчас возьму дуню и попробую ещё раз, может до меня таки дойдёт о чем речь.

Добавлено спустя 17 минут 1 секунду:
Re: (Arduino Nano + HC-05) SoftwareSerial скорость больше 9600
к уно на уарт подкинул ещё один юсб-уар. открыл по терминалу на каждый порт :) с дуни данные приходит на оба терминала. отправляет с терминалов в дуню без всяких проблем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: (Arduino Nano + HC-05) SoftwareSerial скорость больше 96
СообщениеДобавлено: 09 янв 2015, 18:18 
Не в сети

Зарегистрирован: 08 май 2014, 18:32
Сообщения: 609
Естественно. Они ведь просто разведены на оба набора пинов параллельно.
А ТСу ведь надо мост из одного уарта в другой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: (Arduino Nano + HC-05) SoftwareSerial скорость больше 96
СообщениеДобавлено: 09 янв 2015, 18:21 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
есть can с spi интерфейсом. да и пока я здесь не увидел ничего убедительного по воводу необходимости второго аппаратного уарта и битрейта выше 9600.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 33 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 4 часа


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

Сейчас этот форум просматривают: Bing [Bot] и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO