Bluetooth выбор - RS232 или TTL...
- Войдите на сайт для отправки комментариев
Здравствуйте.
Решил заказать Bluetooth-модуль для Arduino. Нашел на ebay хороший вариант с шилдом, но смущает надпись TTL в названии. В мануале написано - "Мы предоставляем две версии шилда - TTL и RS-232. При попупке обратите внимание на это" (вольный перевод с инглиша). В нем же показана разница - 5В для rs и 3,3В для TTL. Это все отличия или есть что-то еще? Можно ли напрямую цеплять RX - TX с ардуины? В продаже есть только TTL-версия...
Хочется именно этот шилд, так как в нем можно легко (вроде бы) запускать AT режим - подал на пин mode HIGH (или кнопку на нем нажать) и все... А в статье на robocraft запугнули "выниманием микроконтроллера из ардуины" (там самодельный шилд, и этого пина есс-но нету)...
RS-232 это диапазон от -12 до +12 вольт, бывает от -5 до +5. Вообще принято считать что просто TTL - от 0 до 5 вольт именно этот диапазон и применяется в дуине, еще стал замечать, что на устройсвах пишут TTL33, TTL3V3, TTL3.3, действительно ли TTL это или нет сказать не могу, но точно это диапазон от 0 до 3.3 вольта, тот шилд на фото скорее всего имеет средства преобразования уровней с 5 на 3.3. Так что однозначно модуль должен быть TTL, но без шилда вам прийдется согласовывать уровни, иначе при прямом подключении к дуине вы можете сжечь модуль.
То есть данный лот мне можно спокойно брать и подключать к 5В? И управлять им через Serial команды? А сами ноги tx и rx можно напрямую подключать (через шилд есс-но)?
И зачем там 2 GND выхода?
Можно брать и подключать питание 5 вольт, так как там стоит стабилизатор на 3.3 вольта.
Нет нельзя.
Можно.
Спасибо за внятные ответы, очень помогли!
Пришел наконец данный шилд (и сама ардуина, уна и клон меги).
Никак не получается заставить его работать... Подключаю - TX к RX Arduino, RX к TX, VCC к 5В, GND к GND. Mode оставляю пустым (пробовал подключать и ставить в LOW, но безрезультатно). Включаю Arduino (со скетчем отсюда, но это неважно). Правый светодиод (красный) начинает моргать (что вроде значит режиможидания), но ни компьютером, не телефонами (Android, SE X10mp и SE Neo V) не обнаруживается... Даже не знаю на что подумать...
Может ли это быть из-за режима (master\slave), и если да, как его изменить (желательно без манипуляций с железом - краем уха слышал что надо мк с уны снимать... страшно).
(Даташит на шилд есть в описании лота по ссылке в верхнем посте, но там ничего полезного я не нашел...)
Заранее спасибо за ответ.
Для начала попробуйте достучаться к неме через Serial, а уж потом блюпупом.
Пробуйте залитьв дуину пустой скетч
Подцепите его TX к TX дуины, RX к RX. Питание и землю оставте как есть (только вначале залить пустой скетч, а потом так подключать).
Откройте в ArduinoIDE сериал монитор.
Выставти скорость 38400 (дефолтная, если не покатит будете переберать). Рядом со сокростью,выберете возврат каретки "Both NL & CR" (чуть левее скорости).
Наберите AT и нажмите кнопку "Send". Должны увидеть ответ "OK".
Если увидили - читаем User Manual, какие команды доступны, как им рулить ... и пытаемся применять.
Или, как вариант, подключить его например на пин 2 ,3
И залить скетч вида
Ну а дальше тот же самое как в прошлом посте. Толкьо в Serial монторе выставить 57600, а если потребуется "подбирать скорость", то уже не в сериал мониторе ее крутить, а в строке 8
Этот скетч все что приходит на UART (2,3) отправляет в обычный сериал, а что пришло от компа - модулю. Вообщем "програмный" вариант предыдущего поста. Возможно так даже удобней будет. Когда сами будете скетчи писать под модуль.
В Serial - общаетесь с компом, в mySerial - с модулем.
Можно даже, сразу, последней строчкой в setup() добавить
Тогда, если все нормально, первое что вы должны увидеть открыв сериал монитор - ответ модуля "OK".
Спасибо за быстрый ответ.
Молчит... Пробовал и первый и второй варианты... Неужели модуль не рабочий достался?
Заметил еще одну вещь - при первом включении модуля красный св.диод секунды 3 горел ровно, а потом стал мигать (с частотой где-то 1-3 мигания в сек). При последущих включениях такого не было - сразу начинал мигать...
На руках есть мега (клон), может с ней попробовать? (хотя, боюсь, не поможет...)
Попробуйте дуину от внешнего блока запитать, может питани от USB не хватает.
Поберебирайте скорости (не знаю запоминает он выставленную скосроить или нет).
А вообще, сильно похоже что TTL лем они обозвали версию на 3.3V . Страничка 3 даташита, Первая строчка таблицы. "TTL breakout board 3.3V power supply."
Так что питать его нужно, скорее всего, с 3.3V пина. Нужно ли соглаовывать 3.3V для TX(дуины)->RX модуля - не знаю. В даташите не нашел упоминаний что он толерантен к 5V на RX пине. "По уму" - нужно,
но, если верить статье:
Кстати, модуль питается от 3.3 В, но его линии I/O могут работать и с 5-вольтовой логикой, что позволяет подключать его UART к Arduino без заморочек.
А вот с питанием, видимо :(
В статье написанно "На плате установлен стабилизатор на 3.3 В, так что можно запитать модуль стандартным для Arduino напряжением 5 В", но речь-то идет про плату которую они смонстрячили (шилд), а не сам модуль.
Если посмотреть на плату, то там кроме собственно регулятора питания с 5v на 3.3V - ничего и нет. Только для этого она и понадобилась им (плюс удобство подключения).
Более того, свой регулятор они, почему-то не использовали
Итак, плата готова, приступим к работе с модулем. Ставим breakout в макетную плату и подключаем следующим образом:
3.3v — к 3.3 В от Arduino
GND — к GND Arduino
RX — к TX Arduino
TX — к RX Arduino
Вообщем не хочу вас огорчать, но..... :(
Я тоже так думал, но на шилде вроде заметен преобразователь... Плюс я сначала попробовал запитать все это дело от 3,3В ардуинки, и в кач-ве результата получил молчание светодиодов. плюс в лоте написано что это адаптер для ардуино и воткнуто в сенсор шилд (насколько я помню, там преобразователей не стоит...)
Насколько я понял, это сами блюпуп-модули (зеленая маленькая платка сверху) бывают TTL и RS232, а адаптер как раз и призван это устанить и привести к ардуино-совметимому.
Попробую с внешним блоком, но, думаю, дело не в этом - степпер-мотор он удерживал спокойно, а у BT потребление копеечное - макс. 40мА по даташиту.
Хотя, простите, кажись зря я вас пугаю (ну ничего, лучше перебдеть чем недобдеть). Я смотрел сразу в даташит модуля. А на картинке-то шилд. Который действительно, вроде, имеет свой регулятор на 3.3V.
Так что "перебирать скосроит, проверять контакты", Mode куда-нибудь притянуть, не оставлять "болтатся" (попробовать и туда и сюда).
КОгда пробовали програмный вариаент RX,TX не перепутали?
TX шилда на 2 пин дуины, и RX на 3-тий.
Ну с горя можно попробовать поменять RX,TX местами, как бы вы не подключали до этого. Вдруг они подписали RX,TX на модуле имеея ввиду "пины к которым нужно подключить". На знаю насколько такая "перепутка" безопаста, но я регулярно путаю и, пока, ничего не случалось :) Типа "подключил, если не работает попробовал наоборот". Но это "на свой страх и риск".
TX шилда на 2 пин дуины, и RX на 3-тий.
Перепутал :). Залез в исходники SoftwareSerial, нашел в конструкторе receivePin и transmitPin и подключил RX ко второму... Сейчас попробую...
Скорости перебирать пробовал, контакты надо прозвонить...
Перепутал :). Залез в исходники SoftwareSerial, нашел в конструкторе receivePin и transmitPin
Ну дык правильно же нашли :)
Первым в конструкторе идет RX, вторым TX
RX- принимать (дуины), значит подключать к нему нужно TX-модуля (отправка).
и подключил RX ко второму... Сейчас попробую...
Ну значить вариант "наоборот" (если китайцы криво подписали) вы уже проверили. :)
Нет, все равно ноль реакции...На плате моргнул RX и молчок.
Притянул Mode к HIGH - тоже самое...
Неожиданно пришла от модуля следующая белиберда - "_ý_ý_ý". Это мусор или ответ модуля? Причем это случилось до отправки команды AT...
Неммого смущает то, что св.диод L на 13ноге постоянно горит, но это, если я правильно понял, из-за того что он не инициализирован кк OUTPUT...
Неожиданно пришла от модуля следующая белиберда - "_ý_ý_ý". Это мусор или ответ модуля? Причем это случилось до отправки команды AT...
Может быть мусор (помехи когда пальцами провода трогали), а может ответ но где-то, таки, не совпадают скорости. В сериал мониторе 57600 поставили?
Сделайте, конце Setup() строчку
Убидетесь что саму дуину вы слышете нормально.
Можно даже, сразу, последней строчкой в setup() добавить
Тогда, если все нормально, первое что вы должны увидеть открыв сериал монитор - ответ модуля "OK".
И, кстати, вы этого явно не сделали. Потому что я ошибся нужно mySerial.println("AT");
Если бы вы ее добавили, то вы счас жаловались что он ответил не "OK", а "AT". А раз "молчит", значит либо вы не добавили эту строку в Setup либо не слышите саму дуину.
А без mySerial.println("AT"); он и будет молчать. Чего ему что-то говорить если его ничего не спросили? (если вы руками AT не посылали).
Да, ставлю. Добавил строчку - четкий ответ Ready без кракозябр...
Посылаю руками, через сериал монитор. Сейчас попробую добавить...
Ура, запустилось! Только совсем не так, как Вы написали...
Дело было в следующем: на шилде, помимо пина Mode, есть кнопочка. В даташите написано, что чтобы вогнать модуть в AT режим, нужно подтянуть Mode к HIGH либо нажать кнопку. Я и нажимал, но после включения. А тут черт меня дернул нажать и держать ее ДО подачи питания. И, вуаля - св.диод стал гораздо медленее моргать, и ответ на команду AT есть. Но так же видно и неотвеченный AT, который я по Вашему совету воткнул в setup. Сейчас отконфигурирую и попробую обнаружить, минут через 5 отпишусь.
Все заработало! Спасибо Вам огромное за советы.
Ура, запустилось! Только совсем не так, как Вы написали...
А вам важно что-бы именно "как я написал"?
А тут черт меня дернул нажать и держать ее ДО подачи питания.
Злобно. В даташите про это ничего нет. Да и ценноcсть пина MODE - резко снижает. Ну а как если нужно "на ходу" что-то подстроить поменять? Перегружать модуль что-бы войти в командыный режим? Непонятно. Сомнительно.
ПО идее этот пин тоже цепляется к какому-нибудь цифровому выходу и дается на него digitalWrite(MODE,HIGH) когда нужно порулить модулем, и LOW - для передачи данных.
Может, все-таки, "просто совпало", где-то контакт гулял? (или кнопку сильней нажали).
>Но так же видно и неотвеченный AT
Какой именно который mySerial.println("AT") или Serial.println("AT") ? Второй и не должен быть отвечен. Я же сказал что ошибся, это мы не модулю, а компу послали "AT". Модулю посылать mySerial нужно.
А может просто он еще не успел, к тому времени проинициализироватся. Тогда можно delay(3000), например добавить. Типа "подождать", а уж потом слать "AT".
Нет, совсем не важно ). Без ваших советов все равно не получилось бы ничего...
AT-шник первый, mySerial.
По идее, да, я во всех вариантах подтягивал к HIGH, в том тоже.
Даташит на модуль или на шилд? Я про шилдовый, который можно найти в описании лота по ссылке в веррхем посте.
Что-то опять не получается... В AT режим входит - а ответа нет... Попробую с пустыи скечтчем.
Попробую с пустыи скечтчем.
Да нет. С пустым уже нет смысла пробовать.
Если Software заработал, то чего уж. Значит RX,TX соеденены правильно. Да и, все-равно, "использовать модуль" с пустым скетчем не получится. Все равно с Software прийдется работать.
>AT-шник первый, mySerial.
Попроубуйте задержки перед ним сделать.
А если руками шлете - проверте что NL & CR выставили.
Ну и, еще раз, проводки проверте. Может в гнездах не плотно сидят, или зачистили плохо/окислились. Поэтому и "то играет, то не играет".
А еще померяйте можете напряжение на 5v пине. Или, все-таки, попробуйте внешний блок питания. Понятно что должно хватать и USB питалава, но.... были прецеденты.
Вообще не понимаю... Прошил все заново, соединил все как было - заработало, хотя я его тогда вообще не прошивал, просто питание дернул.
Кстати, сейчас стабильно соединяется по блюпупу, загорется веселый зеленый светодиод :). Но в AT вроде только по USB можно.
В принципе, проблема решена - я его отконфигурировал, и он теперь стабильно работает.