AVR + Bluetooth

Обсуждаем контроллеры компании Atmel.
Ответить
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

что за зверь BT182 ? я нашел упоминание только о BTM-182

обычные HC-0x надо ввести в командный режим, подав + на отдельный пин чтобы они отвечали на AT команды, но судя по скорости 19200 это какие то другие модули

для уже соединившихся блютусов описанное поведение нормально - они просто пересылают байтики друг другу
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Сообщение Мikа »

Вы правы, BTM-182. Как-то я хз как не заметил букву М О_о. Я посмотрел даташит на тему замыкания чего-нибудь для передачи АТ команд, но там никаких упоминаний нет. В названиях пинов тоже ничего такого не прослеживается. Я прикрепил даташит, список команд и примерную схему.
Вложения
WRL09977-SPP AT command set.pdf
(354.85 КБ) 342 скачивания
WRL09977-BTM-182_Breakout-v11.pdf
(17.6 КБ) 282 скачивания
WRL09977-BTM182.pdf
(254.22 КБ) 254 скачивания
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Реклама
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

ого, какие они "другие" :) на первый взгляд надо отправить что то типа +++ATB? (в ответ должен вернуть адрес) возможно с переводом строки после +++ и ATB?, а мб и нет - что то об этом ничего не написано, если без перевода строки - может быть критично время пауз между символами, хотя если он не соединен ни с чем - должен бы отвечать и без +++
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Сообщение Мikа »

А перевод строки каким образом делать? Не понимаю. И ещё, исходя из ваших скриншотов Термита, я вижи, что синим пишется то, что мы отправляем модулю, а зелёным то, что приходит от него. У меня схема синий-зелёный работает при условии, что стоит галочка Local echo, если её нет, то всё, что я пишу зелёного цвета. Также как и то, что приходит с планшета. Щас вот модуль на +++ATB? ничего не ответил. Как осциллограф будет, посмотрю еслить ли что-то на канале связи, когда он возвращает эхо. Хотябы станет понятно, кто это эхо возвращает.

UPD: тут загуглил, нашёл https://forum.sparkfun.com/viewtopic.php?f=14&t=22448 , оттуда увидел, что пишут про \r, \n и r\n\. Посмотрел настройки Термита, там поставил активным Apperend CR и устройство стало отзываться. А что это такое?
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

ну это оно и есть :) отдавая команду терминалу "послать строку" мы можем иметь в виду "отправить строго напечатанные символы", а можем "отправить напечатанные символы + перевод строки" и не все терминалы отправляют строку по команде, могут отправлять символы по мере набирания их в окошке, но не все устройства и ждут эти спецсимволы, могут воспринимать как завершение команды просто длинную паузу, вот, например, кусочек про HC-0x:

"- Версии HC-04 и HC-06 отвечают на 9600. При этом, разделителем служит таймаут. Да, да, вам нужно очень-очень быстро написать AT (при этом, без никаких /r/n) и через таймаут, модуль ответит OK.
- Версия HC-05 отвечает на скорости 38400, при этом нужно передавать AT\r\n. Но, кроме того, нужно подтянуть вывод “mode” к питанию – это переводит модуль в командный режим."

сама по себе эта последовательность часто используется, в обычном текстовом файле именно по \r\n разделяются строки между собой - это символы с кодами 10 и 13 (0xA 0xD), исторически так сложилось что их 2 - один говорит о "переводе курсора" на следующую строку, другой о "переводе курсора" в 1ю позицию строки

http://ru.wikipedia.org/wiki/%CF%E5%F0% ... 0%EE%EA%E8
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Сообщение Мikа »

Коты, привет. Я мучаю HC-05, а он не отзывается вообще ничем.
Вот в данный момент он включен так:

3.3V - К 3.3V
GND - GND
Между ними конденсатор 0.1 мкф
RESET к 3.3V через 10K

Ногу 34 (режим АТ команд) через 680R сажал на и 3.3V и на GND

Исходя из того, что писалось в теме выше, Должны начать мигать диоды.
Судя по схеме, ток для диода идёт из модуля на GND. Следовательно, ноги должны меня состояние 3.3 на GND. (А не Hi-Z и GND).

На деле на ногах диодов всегда 0. На ноге TX всегда значение, близкое к VCC.

Сам модуль при это скачкообразно потребляет ток до 41 мА.

У меня модули с какой-то хитрой прошивкой? Или снова что-то упускаю из вида?

P.S. Я описал колхозную много ножку, т.к. у меня есть собранная плата, где диоды на самом деле подключены, стоит MCP2200 и всё остальное. Часть платы, которая отвечает именно за USB-UART я проверил посредством общения с ATmega48. От Termita из PC до RX TX ATmega48 всё доходит нормально. Поэтому подумал, вдруг я что-то напутал в части платы, которая отвечает за HC-05. Следовательно взял чистенький HC-05, припаял к нему необходимый минимум проводуль и компонентов и решил посмотреть, что будет. А ничего не происходит.
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Реклама
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

Ага, странненько, должны мигать. Можно попробовать перепрошить если нормальный lpt порт есть, а то может они совсем того...
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Сообщение Мikа »

Вот LPT - это проблема :( Я тут посмотрел одну штуку, в которой стоит этот модуль. Там во время работы тоже никаких сигналов с ног диодов нет. Зато диод подключен на ногу запрет\разрешение TX - мигает :) Пока что вопрос с ними отложу на пару дней. Сначала доделаю до конца программу на обоих устройствах, пока что поэмитирую всё это с Termit'a, а вот как доделаю - будут танцы с бубном...
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

Можно через "ардуину" (условно, мега8 сойдет) прошить, но это долго и малость с бубном. Я выше кидал ссылку вроде на архив с ПО для таких модулей, dll'ку для дуины поищу, должна была остаться.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Сообщение Мikа »

Не тратье время - у меня нет Дурины и её ни разу в руках не держал. В моём арсенале AVR Dragon, копия MKII, для которой я не след неделе должен найти, наконец, драйвер :) Ещё могу достать ChipProg.
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

Ну условно дуина, евойная среда умеет шить атмеги напрямую без загрузчика, если avrdude такие программаторы поддерживает - можно настроить.

Или можно повторить такое на чем нибудь еще

Код: Выделить всё

/*
Attempt to talk to CSR Bluetooth chip SPI
 */
#include <inttypes.h>
#include <avr/interrupt.h>
#include <avr/io.h>

uint8_t pinChipSelect=_BV(2);
uint8_t pinMOSI=_BV(3);
uint8_t pinMISO=_BV(4);
uint8_t pinCLK=_BV(5);

uint8_t nOutMask=pinChipSelect|pinMOSI|pinCLK;
uint8_t nInMask=pinMISO;
uint8_t nOutput=pinChipSelect|pinMOSI|pinCLK;
uint8_t nDefault=pinChipSelect|pinCLK|pinMISO;

void setup()
{
  // start serial port at 9600 bps:
  Serial.begin(256000);
  DDRB=(DDRB&~(nInMask|nOutMask))|nOutput;
  PORTB=(PORTB&~(nInMask|nOutMask))|nDefault;
}

void loop()
{
  // if we get a valid byte, read analog ins:
  if (Serial.available() > 0) {
    uint8_t in=Serial.read();
    PORTB=(PORTB&~nOutMask)|(in&nOutMask);
    Serial.write(PINB&nInMask);
  }
}
тут исходники и готовая библиотечка для замены в bluelab41/tools/bin, "классическая" прошивка hc05 + батник для прошивки
в готовой dll блокируется изменение некоторых адресов (т.е. инфа туда из файла прошивки не попадает), не знаю с чем это связано, но конкретно в мои модули по этим адресам не шилось нормально - шьешь, а считывается как было (контроль осуществляет утилитка bluelab и там он вроде не отключается), но вроде hc06 в hc05 успешно прошились

в общем желательно собрать сначала dll без модификации, а если пойдут ошибки верификации - использовать мою или плясать с бубном в visual studio

https://cloud.mail.ru/public/2ecfd087ef ... rs_mod.zip
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Открыл глаза
Сообщения: 47
Зарегистрирован: Ср ноя 12, 2014 14:48:39

Сообщение krokodandi »

Вообще данный модуль у меня в разработке. Я как раз увлеченно его изучаю. Дык вот. Если пытаться с ним работать АТ командами, придется сломать голову. Ведь надо переключаться между адресами модулей и переключать режимы работы. Это все можно, да только камней там навал. И у протокола ВТ там куча веток... Для новичка не подъемно.
Я немножко погуглив на европейских форумах сразу отказался от данной мысли. Есть другие модули... радиомодуль NRF24L01, он может работать как мост между двумя мк и примеров предостаточно. А этот друг хорош как раз между мк и компом. Немцы возятся с такой связкой мастерски.
Вот пару ссылок, может поможе =)
http://robocraft.ru/blog/electronics/587.html
http://www.aisi555.com/2013/09/tutorial ... -easy.html
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 157
Зарегистрирован: Пн мар 14, 2016 15:38:50
Откуда: Питер

Сообщение kotarnold »

[uquote="Morroc",url="/forum/viewtopic.php?p=1963432#p1963432"]запускаем терминал, включаем скорость командного режима по умолчанию - 38400 (в нормальном режиме по умолчанию 9600)
смотрим адреса устройств, слева включаем мастер, справа слэйв (ROLE), режим коннекта к определенному адресу (CMODE=0) и BIND друг на друга по адресам:

Изображение[/uquote]

Вот этого, кажется, мне и не хватало. Я BIND только на мастере прописывал. Доберусь до дома - попробую.

Добавлено after 3 hours 16 minutes 30 seconds:
РАБОТАЕТ! Мужики, это невероятно!

Рад, как ребенок...)))

Вот, снял. Контроллер (правый), соединенный со Slave выставляет на своем РВ0 логическую единицу при температуре на датчике контроллера (левого) при Master около 27 градусов.
Ответить

Вернуться в «AVR»