Arduino и Bluetooth JDY-31
В наборе GyverKIT обеих комплектаций есть Bluetooth модуль JDY-31 (аналог популярного HC-06). Данный модуль обеспечивает беспроводную связь UART – COM порт, что позволяет использовать его для удобного обмена данными между Arduino и приложением на смартфоне или программой на компьютере. Основные характеристики:
- Рабочая частота: 2.4 GHz
- Интерфейс: UART
- Напряжение питания: 3.6.. 6V
- Ток потребления: 5 мА в режиме поиска, ~8 мА в режиме передачи
- Логический уровень: 3.3V, но вроде как не боится 5V
- Дальность связи: 30м
- Версия Bluetooth: 3.0 SPP
- Чувствительность антенны: -97dbm
- Скорость UART: 9600.. 128000
Официальную документацию на JDY-31 можно открыть по ссылке .
Индикация состояния подключения:
- Ожидание
- Светодиод мигает
- Пин STATE: LOW
- Светодиод горит постоянно
- Пин STATE: HIGH
Подключение
Модуль подключается к питанию и цифровым пинам МК:
- JDY-31 > Arduino
- GND > GND
- VCC > 5V
- RX > Serial TX
- TX > Serial RX
- Опционально можно подключить EN на любой цифровой пин для отслеживания состояния подключения.
На левой схеме я подключил JDY-31 к аппаратным выводам UART напрямую, на правой – через делитель напряжения, образованный тремя резисторами по 10 кОм (есть в наборе GyverKIT). Такой делитель 2:1 обеспечит около 3.1V на вход RX модуля. Правая схема предпочтительнее, но от прямого подключения модуль ещё ни у кого не выходил из строя, насколько я знаю.
- Модуль будет мешать загрузке прошивки (она загружается по RX TX), на момент загрузки нужно отключить провода от пинов RX и TX Arduino
- С модулем можно общаться при помощи штатного Serial, фактически он будет дублировать монитор COM порта
На следующих двух схемах я подключил модуль к любым двум цифровым пинам Arduino:
При таком подключении модуль ничему не мешает, но для работы с ним придётся использовать стандартную библиотеку программного Serial – SoftwareSerial.
Подключение к Bluetooth
Windows
Для работы на компьютере у вас должен быть Bluetooth адаптер. Заходим в панель управления, добавляем Bluetooth устройство, вводим пин 1234 для сопряжения:
После этого в Arduino IDE появится ещё один COM порт. Загрузим следующий пример, который просто выводит в порт строчку со счётчиком. Модуль подключен к аппаратному UART.
Откроем Bluetooth порт и увидим вывод:
Точно таким же образом можно подключиться к Arduino из своей программы, написанной например на Processing или Python. У меня есть уроки по этой теме:
Android
Для теста на Android я использую приложение Serial Bluetooth Terminal. Сопрягаемся с паролем 1234, заходим в программу, открываем настройки слева, Devices, выбираем JDY-31 и подключаемся (кнопка со штекером в левом правом углу экрана. Модуль подключен к аппаратному Serial, на Arduino прошит код, отправляющий принятые данные обратно в Serial (эхо):
Пишем в терминал – модуль нам отвечает. Своё приложение с Bluetooth можно сделать в MIT App Inventor, этим мы займёмся в будущих уроках.
SoftwareSerial
В качестве примера подключим модуль по второй схеме (на пины D2 и D3) и загрузим простую программу, которая будет пересылать данные с программного Serial (на пинах D2 и D3, Bluetooth) на аппаратный (который мы можем смотреть через монитор порта в Arduino IDE):
#include SoftwareSerial mySerial(3, 2); // RX, TX void setup() < Serial.begin(9600); mySerial.begin(9600); >void loop() < if (mySerial.available()) < Serial.write(mySerial.read()); >if (Serial.available()) < mySerial.write(Serial.read()); >>
Откроем терминал и монитор порта и можем общаться с компьютером, Arduino выступает в роли посредника и перекидывает данные с Bluetooth на USB и наоборот:
Точно так же можно использовать SoftwareSerial для программ и приложений, если аппаратный UART на Arduino нужен для других целей.
Настройка JDY-31, AT команды
Рассмотрим также настройку самого JDY-31, делается это при помощи AT-команд:
- Чтобы модуль отвечал на команды, он должен находиться в режиме ожидания подключения (светодиод мигает)
- Загружаем в Arduino пустую программу (Файл/Новый). Либо любую другую, в которой не задействован Serial. Либо подключаем пин RST к GND, чтобы микроконтроллер не запустился и нам не мешал
- Подключаем JDY-31 на RX TX Arduino (аппаратный Serial) наоборот: TX > TX, RX > RX
- Открываем монитор порта, ставим текущую скорость модуля (по умолчанию 9600 бод), конец строки NL & CR
Отправляем команду AT+VERSION . Если всё сделано правильно – модуль ответит +VERSION=JDY-31-V1.35,Bluetooth V3.0
Какие ещё есть команды? Полный список есть в документации, давайте разберём:
Домашнее задание
Arduino.ru
модуль как модуль. вроде бы должно быть всё просто. хотел подключить газовые мозги авто через этот модуль к смартфону и мониторить данные по газу. НО, что-то пошло не так. модуль отказывается отвечать на АТ команды. не с компа, не с телефона. соответственно не могу задать нужную скорость. Вроде всё правильно подключил. Rx-Tx и местами менял. и резисторы поставил для согласования уровней 5 в и 3.3 И с BlueTooth терминалом на смартфоне тоже печаль. модуль отвечает не как положено а как ему угодно.
но если закоротить Rx и Tx то всё слушается как положено
помогите пожалуйста разобраться.
почитай куда надо подключать EN и куда STATE, и для чего.
почитай куда надо подключать EN и куда STATE, и для чего.
эти пины не имеют отношения к работе в режиме AT-команд
у него по умолчанию скорость 9600. а какая у тебя в терминале — не ясно. Выстави 9600 и пробуй
у него по умолчанию скорость 9600. а какая у тебя в терминале — не ясно. Выстави 9600 и пробуй
как раз мне и нужна 9600 для работы с газовыми мозгами. но по какой то причине он отказывается считывать данные у гбо. хотя как раз там тоже 9600 скорость
если на компе ставлю 9600 идёт соединение и ничего не происходит.
но самое интересное, если в этом момент подключится по блютуз и слать команды со смартфона, эти команды я вижу на компьютере. то-есть идёт передача данных. но сам блок ничего не отвечает.
и только при скорости 9600. если выбрать другую скорость уже приходят иероглифы.
в общем я в тупике. он вроде и живой, но не работает как должен.
ты для начала мозги газовые отложи, подключи БТ к ардуине, а ардуину — к монитору порта на компе. И далее подключись смартфоном к модулю и попробуй попосылать разные команды туда сюда
находил похожие модели, на каких то надо подавать — на определённую ногу и слать команду, потом снимать —
на каких то надо +подавать на 34 ногу
но тут по даташиту ничего нет такого.
ардуино уже нет. к сожалению
я выше писал шлю туда сюда команды они приходят со смарфона на ком при скорости 9600
но это как текст проходит. модуль ничего не отвечает
кстати. смотрю на твои картинки — и что-то не пойму. ты АТ-команды черех Блютус подаешь. что ли?
На многих таких модулях АТ отрабатывается только со стороны пинов RX TX
потому что через комп всё висит в статусе соеденение. и ничего не даёт написать. но если со смартфона послать что то, на компе это вижу
в общем
нужна связь по Rx Tx
но её к сожалению нет. скорости все перепробовал
CP2102 тоже 100% рабочий. я через него к ГБО мозгам соединяюсь для изменения параметров.
либо есть какой то нюанс в этом JDY-31-SPP, либо он просто неисправенНу как бы логически напрашивается, что если управлять модулем по воздуху напрямую через AT, то это как то нифига не айс(безопасности никакой в общем то).
К тому же роутеру для первичной настройки кабелем приходится подключаться.
И неисправен тут не модуль, а чей то хотельник.Удалось заставить его отвечать на АТ? Такая же ситуация.
Нет. Купил нормальный модуль.
Хороший модуль, такой штукой по АТ управляется.
Такой же модуль, тоже не отвечает в терминале. Штука для управления такая же =). Надо ли в этом модуле какой-нибудь пин подтягивать к +3,3 ? На EN подавал +, никак не реагирует.
Ему до лампы 3 или 5 Вольт по питанию и по сигналам, но для успокоения можно евоный Rx через делитель подключить. Он воспринимает AT команды сразу без всяких кнопок и EN, если не сопряжён ни с кем 🙂
Надо взять модуль как на картинке, подключиться к Ардуино ИДЕ через ПК и в «монитор порте» записать нужные команды. они кстати свои у него.
Мне нужно скорость задать и сменить имя и пароль модуля. Я через терминал (putty) пробовал посылать АТ команды (скорость ставил 9600/38400/57600 ) модуль не отвечает на них. К модулю в это время никто не подключен. Или же в ide особый монитор порта и только с ним взлетит ? Под своими командами понимается что стандартные АТ (как у HC05/06) не проходят ?
Мне нужно скорость задать и сменить имя и пароль модуля. Я через терминал (putty) пробовал посылать АТ команды (скорость ставил 9600/38400/57600 ) модуль не отвечает на них. К модулю в это время никто не подключен. Или же в ide особый монитор порта и только с ним взлетит ? Под своими командами понимается что стандартные АТ (как у HC05/06) не проходят ?
Конечно у него написание команд другое.
Как «физически модуль соединён с терминалом»?
Физически — 25см свитого провода к адаптеру на CH340. Питание с отдельного линейного стабилизатора (на модуле написанно 3,6v-6v , фактически подаю 3.9). осцилом на обе линии вставал — импульсы идут в моменты передачи, да и переходник рабочий точно.
Что выяснил — поставил блютус терминал на телефон с него данные идут в окно терминала на ПК. Выяснил установленную скорость — 9600. Проверил что в ide что в putty все работает одинаково. Спасибо за доку — по ней получается как минимум команда AT+VERSION есть как и у других модулей, но я её шлю в ответ в терминале молчок. Может надо как у других модулей какую ногу подтягивать к + чтобы он начал отвечать ?
Модуль кстати на чипе BK3231
А с чем телефона модуль связан? Если в том числе и с блютуз модулем, то команды проходить не будут.
У модуля HC-05 есть кнопка и выводы никуда тянуть не надо, нажимаем кнопку и включаем питание — модуль входит в режим АТ (меняется частота миганий светодиода сигнального). У JDY-31 тоже есть сигналка — включите его одного и посмотрите как мигает, а потом свои терминалы на телефоне, если частота миганий сменилась, значит модуль связался с чем то, а этого быть не должно.
Подключал только проверить связь с адаптером, так конечно отключен. Индикатор мигает когда свободен и горит когда есть соединение по блютус. В момент соединения в терминал выдает +DISC:SUCCESS +CONNECTING
В команды пробовал добавлять /r/n вконце,ничего не дало.
Вопрос кстати — а если просто набирать символы в терминале на ПК — в терминале на телефоне через бт я же их не должен видеть ? Или должен ?
Вопрос кстати — а если просто набирать символы в терминале на ПК — в терминале на телефоне через бт я же их не должен видеть ? Или должен ?
Как я вас понял (совершенно может не правильно) вы соединили телефон с ПК через блютуз модуль и прекрасно обмениваетесь данными. Но вот АТ команды в модуль не попадут никогда при таком раскладе, мне кажется.
АТ команды я слал с терминала ПК по проводу, телефон в это время с модулем не сопряжен.
Но общими усилиями — победили. Связь есть. Действительно модуль когда не подключен готов к приему АТ команд, только вот почитав форумы наткнулся на упоминание что тайминги для команд у него оочень жесткие. В итоге у меня не с ide ни с putty(команду не набирал а отправлял копипастом) не пошло. Скачал terminal 1.9b — все работает, на команды отвечает. Вот такая петрушка, здорово что победили, но теперь возникают опасения как такой модуль с software serial будет работать с ардуиной. Кстати может полезно для итстории модуль себя так опознает +VERSION=JDY-31-V1.35,Bluetooth V3.0
Вывод EN никуда не подключал (попробовал и так и так) — но я так понимаю его в итоге к + подтягивать надо для работы ?
У меня он работает при подключение 3,4 выводов — два,три других гордо висят в воздухе. Я пробовал на 3 модулях от разных продавцов через «иде» с набором команд вручную — нигде осечек не было.
Про тайминги не читал, использую аппаратный serial, дистанционно заливаю скетчи в поделки с модулями — сбои бывают редко.
Блютуз модуль jdy 31
Категории
Новые товары
Список новинок
© 2015-2023 Интернет магазин «Электроник74» Не является публичной офертой.