Обсуждаем контроллеры компании Atmel.
Ответить

Re: AVR + Bluetooth

Пн мар 31, 2014 12:35:25

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

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

для уже соединившихся блютусов описанное поведение нормально - они просто пересылают байтики друг другу

Re: AVR + Bluetooth

Пн мар 31, 2014 13:33:46

Вы правы, BTM-182. Как-то я хз как не заметил букву М О_о. Я посмотрел даташит на тему замыкания чего-нибудь для передачи АТ команд, но там никаких упоминаний нет. В названиях пинов тоже ничего такого не прослеживается. Я прикрепил даташит, список команд и примерную схему.
Вложения
WRL09977-SPP AT command set.pdf
(354.85 KiB) Скачиваний: 291
WRL09977-BTM-182_Breakout-v11.pdf
(17.6 KiB) Скачиваний: 263
WRL09977-BTM182.pdf
(254.22 KiB) Скачиваний: 224

Re: AVR + Bluetooth

Пн мар 31, 2014 13:45:39

ого, какие они "другие" :) на первый взгляд надо отправить что то типа +++ATB? (в ответ должен вернуть адрес) возможно с переводом строки после +++ и ATB?, а мб и нет - что то об этом ничего не написано, если без перевода строки - может быть критично время пауз между символами, хотя если он не соединен ни с чем - должен бы отвечать и без +++

Re: AVR + Bluetooth

Пн мар 31, 2014 14:49:54

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

UPD: тут загуглил, нашёл https://forum.sparkfun.com/viewtopic.php?f=14&t=22448 , оттуда увидел, что пишут про \r, \n и r\n\. Посмотрел настройки Термита, там поставил активным Apperend CR и устройство стало отзываться. А что это такое?

Re: AVR + Bluetooth

Пн мар 31, 2014 16:09:30

ну это оно и есть :) отдавая команду терминалу "послать строку" мы можем иметь в виду "отправить строго напечатанные символы", а можем "отправить напечатанные символы + перевод строки" и не все терминалы отправляют строку по команде, могут отправлять символы по мере набирания их в окошке, но не все устройства и ждут эти спецсимволы, могут воспринимать как завершение команды просто длинную паузу, вот, например, кусочек про 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%E5%E2%EE%E4_%F1%F2%F0%EE%EA%E8

Re: AVR + Bluetooth

Пт авг 15, 2014 13:21:57

Коты, привет. Я мучаю 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, припаял к нему необходимый минимум проводуль и компонентов и решил посмотреть, что будет. А ничего не происходит.

Re: AVR + Bluetooth

Пт авг 15, 2014 14:55:07

Ага, странненько, должны мигать. Можно попробовать перепрошить если нормальный lpt порт есть, а то может они совсем того...

Re: AVR + Bluetooth

Пт авг 15, 2014 15:14:33

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

Re: AVR + Bluetooth

Пт авг 15, 2014 16:26:45

Можно через "ардуину" (условно, мега8 сойдет) прошить, но это долго и малость с бубном. Я выше кидал ссылку вроде на архив с ПО для таких модулей, dll'ку для дуины поищу, должна была остаться.

Re: AVR + Bluetooth

Пт авг 15, 2014 16:44:20

Не тратье время - у меня нет Дурины и её ни разу в руках не держал. В моём арсенале AVR Dragon, копия MKII, для которой я не след неделе должен найти, наконец, драйвер :) Ещё могу достать ChipProg.

Re: AVR + Bluetooth

Пт авг 15, 2014 23:37:09

Ну условно дуина, евойная среда умеет шить атмеги напрямую без загрузчика, если 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/2ecfd087ef8e/CsrSpiDrivers_mod.zip

Re: AVR + Bluetooth

Ср ноя 12, 2014 19:42:49

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

Re: AVR + Bluetooth

Ср июн 27, 2018 18:53:11

запускаем терминал, включаем скорость командного режима по умолчанию - 38400 (в нормальном режиме по умолчанию 9600)
смотрим адреса устройств, слева включаем мастер, справа слэйв (ROLE), режим коннекта к определенному адресу (CMODE=0) и BIND друг на друга по адресам:

Изображение


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

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

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

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