Управление трансивером по блютуз
На сегодняшний день протокол Bluetooth является самым распространенным инструментом передачи данных и аудио сигнала посредством радиоволн на небольшие расстояния. Телефоны, планшеты, ноутбуки, многие ТВ боксы, современные аудиосистемы и т.д. и т.п. имеют в своем составе модули блютуз, что позволяет одним устройствам быть передатчиками, другим принимать сигнал, а в конечном итоге избавиться от проводов и кабелей, соединяющих источник и приемник данных или звука.
Как быть в ситуации, когда есть блютуз наушники, но в телевизоре нет блютуз передатчика, а хочется его смотреть ночью и без проводов или есть телефон с кучей музыки, а магнитола в машине не имеет блютуз приемника?
Из ситуации можно выйти используя некий адаптер. Как раз такими адаптерами и служат блютуз ресиверы и трансмиттеры, т.е. приемники и передатчики. Нередко один гаджет выполняет сразу две эти функции.
О принципе использования лучше расскажет иллюстрация на примере одного из нижеописанных гаджетов.
В подборке десяток приемников и приемников-передатчиков с разным наполнением и функционалом, но все они поддерживают кодеки AptX.
Самый простой из предлагаемых гаджетов это Bluetooth приемник с интересным конструктивом. Построено устройство на базе чипа QCC3005, версия блютуз 5.0. Соединение с наушниками или динамиками (колонками), усилителем через Aux 3,5, емкость аккумулятора 110 мАч, кодеки SBC, AAC, AptX, AptX LL. Есть встроенный микрофон, т.е. может работать как Hands free.
Следующий блютуз приемник от уже достаточно известного производителя — это Baseus BA03. Построен уже на базе чипа QQC3008. Версия блютуз 5.0, аккумулятор 120 мАч, соединение по Aux, отличный набор кодеков SBC, AAC, AptX, AptX LL, AptX HD. Еще один плюс — наличие клипсы для крепления приемника на одежде. есть индикатор состояния аккумулятора. Ну, и внешний вид выше всяческих похвал.
Компактный блютуз приемник-передатчик HAGIBIS MG-X3 с клипсой для одежды, соединением по Aux, пятой версией блютуз. Чип здесь давно проверенный CSR8675 с набором кодеков SBC, AAC, AptX, AptX LL, AptX HD. Габариты цилиндрического корпуса всего 57*12 мм. Может передавать звук сразу на две пары наушников. Время работы в режиме передатчика 8 часов. в режиме приемника 4 часа.
Bluetooth-адаптер DISOUR — работает в режимах приема и передачи, имеет уже более привычный вид, оснащен чипсетом премиум-класса CSR8675. Звук может передавать на две пары наушников для двух человек. Набор кодеков, как у предыдущего — SBC, ACC, AptX, AptX LL, Aptx HD. Есть встроенный микрофон, и подключается по Aux.
Лично пользуюсь ресивером-трансмиттером известного производителя Ugreen CM108 или 40762Е. Эта модель на рынке уже давно и построена на чипе CSR8670, но чип по-прежнему актуальный и выдает отличное качество звука без задержек при просмотре видео. Версия блютуз 4.2. Обучен кодекам SBC, ACC, AptX, AptX LL и от одной зарядки способен работать более 10 часов. Одновременно может передавать звук на две пары наушников. Симпатичный дизайн и отличное качество.
Далее устройства с возможностью приема и передачи уже не только по Aux, но и по SPDIF для получения кристального качества звука!
Особо выделил бы приемник-передатчик Blitzwolf BW-BR3. Пользовался лично, качество отменное! Выполнен в форме шайбы с кнопками на верхней стороне. Здесь так же CSR8670. Как и предыдущий гаджет может работать во время зарядки. Кодеки понимает SBC, ACC, AptX, AptX LL, но главная особенность это наличие, кроме Aux, входа и выхода SPDIF. В моем профиле можно найти обзор на данную модель. Коннектится с двумя парами наушников. Есть регулировка громкости и переключение треков.
Следующий блютуз приемник-передатчик Nsendato еще более продвинутый. Построен он на чипе CSR8675 и работает по протоколу блютуз версии 5.0. Оснащен входом/выходом Aux и входом/выходом SPDIF, есть регулировка громкости и переключение треков. Помимо этого гаджет морганием светодиода подскажет с каким кодеком работает в данный момент: AptX HD — четыре вспышки за пять секунд, AptX LL — три вспышки, AptX — две, SBC — одна. Аккумулятор 600 мАч, 20 часов непрерывной работы.
Приемник-передатчик от компании VIKEFON оснащен аккумулятор меньшей емкости — 250 мАч, но так же построен на чипе Qualcomm CSR8675. Соединяться он может с источником звука или исполнительным устройством только по Aux, но у него есть свое преимущество — каждый режим и кодек он отображает отдельным светодиодов, т.е. всегда можно знать какой из кодеков задействован в данный момент. Кроме набора SBC, ACC, AptX, AptX LL, Aptx HD здесь имеется микрофон, регулировка громкости и переключение треков. Интересный гаджет.
Вышеприведенные гаджеты имеют стандартный радиус действия — 10 метров. Кому этого недостаточно, для тех есть устройства с радиусом действия 50 и 80 метров. Эти устройства снабжены внешними антеннами и напоминают роутеры.
Блютуз приемник-передатчик EKSA может передавать и принимать сигнал на расстоянии до 50 метров. Здесь уже полный набор входов и выходов. Здесь блютуз 5.0 и CSR 8675 c набором кодеков SBC, ACC, AptX, AptX LL, Aptx HD. Работают они как при передаче, так и при приеме сигнала. Нет микрофона, но есть светодиодная индикация кодека и регулировка громкости с переключением треков.
И последний в подборке гаджет - рекордсмен. Он может принимать и передавать сигнал на расстояние до 80 метров! Это гаджет от компании Nsendato. Здесь также блютуз 5.0, чип CSR8675 и кодеки SBC, ACC, AptX, AptX LL, Aptx HD. Есть индикация выбранного кодека и входа/выхода, переключение треков и регулировка громкости. Помимо этого есть возможность работы с двумя парами наушников и двумя источниками сигнала,, а так же есть функция NFC. Емкость аккумулятора 1000 мАч.
Основное требование – возможность работы телеграфом через удалённое управление. Также важно было использовать доступное программное обеспечение и желательно бесплатное.
Имеющееся оборудование состояло из следующих частей (серверная часть):
- Трансивер FT-817
- Кабель управления CT-62 (через COM порт)
- Персональный компьютер PIII 1.2 ГГц/512Мб/HDD40ГБ
- Подключение к интернету через ADSL (Стрим)
- Блок питания
- Источник бесперебойного питания
- Усилитель мощности
Оборудование для удалённого управления (клиентская часть):
- Любой ноутбук с доступом к интернету (с достаточной скоростью соединения).
- Для организации связи я использовал следующее программное обеспечение:
- Ham Radio Deluxe — для дистанционного управления трансивером
- Hamachi – программа для создания VPN сети (так как у меня нет реального IP-адреса)
- Skype — для передачи звука от трансивера
- CwType – для передачи телеграфом с клавиатуры.
Так как я столкнулся с проблемой невозможности средствами Ham Radio Deluxe осуществлять нормальную манипуляцию телеграфом (нужен дополнительный девайс, который надо заказывать), мне пришлось настроить удалённый доступ к рабочему столу базового компьютера — это стандартная функция Windows и передавать телеграфом через программу CwType.
Структурная схема дистанционного управления радиостанцией:
Порядок установки программного обеспечения:
- Ham Radio Deliuxe
- Hamachi
- Skype
- cwType
Далее начинаем с организации VPN сети – устанавливаем на оба компьютера программу Hamachi, регистрируем сетку и соединяемся (там просто разобраться). Эта программа должна запускаться при загрузке на REMOTE PC. Если все прошло успешно, то вы увидите свои компьютеры в одной единой сети. Время PING-а составляет от 25 до 35 мс. Сервис Hamachi работает достаточно стабильно и беспокойства не доставляет.
Теперь переходим к самому интересному. Устанавливаем Ham Radio Deluxe на управляющем компьютере (REMOTE PC) и на Ваш ноутбук. Настройки этих программ будут отличаться.
Запускаем HRD, закрываем окно подключения к трансиверу, если оно появится. В меню Tools программы выбираем Programms, в раскрывшемся меню Remote servers
1. Появляется окно управления службами – HRD Remote server и HRD serial port server. Для управления трансивером используется первая. Нажимаем кнопку Install, служба установится в системе. Хотя служба имеет настройки по умолчанию, ее можно настроить, для чего нажимаем кнопку Configure.
2. Откроется окно Блокнота с текстом конфигурационного файла. Тут можно настроить параметры сервера, в частности, имена и пароли пользователей. По умолчанию указаны следующие: USER1 = Simon,SnowTime,restart USER2 = Peter,Uberwald USER20 = Donald,California,no_macros no_tx Можно добавить USER3 = user,user между USER2 и USER20, user – имя, user – пароль.
3. Закрываем Блокнот с сохранением изменений. Запускаем службу кнопкой Start. Все, сервер готов к обслуживанию клиентов. Подключение к удаленной машине настраивается аналогично подключению к локальному трансиверу, только в поле COM Port выбирается Remote.
4. После нажатия кнопки Connect появляется окно с настройками удаленного подключения. В поле Addres увязываем полное доменное имя машины, NETBIOS-имя (для локальной сети) или IP-адрес, Port оставляем по умолчанию, Username и Password пишем, какие задали при настройке сервера. Нажимаем Connect.
7. После чего выбираем COM-порт, через который идёт управлении трансивером и нажимаем кнопку OК.
8. После этого должно появиться знакомое окно с частотой и всем остальным.
Если что-то пошло не так, то необходимо проверить соответствие всех данных на обоих концах – серверном и клиентском, проверить, пропускает ли брандмауэр данные на порт 7805 (особенно важно для серверной стороны, ибо для нее это порт входящих соединений), проверить и настроить трансляцию портов на маршрутизаторе /прокси-сервере, если таковой используется.
После успешной настройки программ необходимо проверить работу комплекса на приём.
Соединяем выход трансивера со входом звуковой карты. Сначала сняли звуковой сигнал с разъёма DATA (на задней панели трансивера) – всё работало, но оказалось, что на него не приходит сигнал самоконтроля в телеграфе. Поэтому решили подать сигнал просто с выхода для наушников (необходимо настроить уровень, чтобы не было перегрузки).
Для работы в SSB и FM останется только подать сигнал с выхода звуковой платы на вход трансивера (автор подавал на микрофонный вход с соответствующим делителем) и поиграться со звуковыми настройками.
Для работы в режиме CW на передачу можно спаять простенькую схемку на одном транзисторе (взять из описания к CwType):
и установить программу CwType на REMOTE PC. Далее необходимо настроить доступ к рабочему столу (это стандартная возможность Windows) или воспользоваться одной из программ удаленного управления.
В программе CwType нужно настроить COM порт и проверить работу на передачу.
В завершении убеждаемся, что на REMOTE PC при перезагрузке автоматически запускается SKYPE и HAMACHI. Оставляем этот компьютер без выключения на постоянной основе. Крайне желательно поставить UPS. В данном случае трудится старенький Pentium III 1.2 Ггц и за 3 месяца он ни разу не потребовал перезагрузки, кроме случая, когда было отключено питания, а UPS не использовался.
Процедура использования здесь следующая:
- Запуск на ноутбуке Skype и звонок на номер REMOTE PC.
- Запуск Hamachi.
- Запуск Ham Radio Deluxe на ноутбуке (обращаю внимание, что HRD на REMOTE PC запускать не следует!)
- В такой конфигурации можно работать SSB или FM. Для работы в CW на передачу запуск удалённого доступа к рабочему столу и уже через него запуск программы CwType на REMOTE PC.
- Всё, теперь можно передавать с клавиатуры в режиме CW или использовать макросы.
При работе имеется некоторая задержка прохождения звукового сигнала через SKYPE. Она оценена примерно в полсекунды. Как правило, это не вызывает особых проблем при реальной работе в эфире.
Очень часто в ваших проектах возникает необходимость в дистанционном управлении или передачи данных с ваших телефонных гаджетов.
Один из самых популярных и распространенных методов обмена данными посредством Bluetooth.
Сегодня мы разберем простые примеры как можно подключить Bluetooth модуль к Arduino и настроить дистанционное управление с телефона.
Нам понадобится:
Схема подключения Bluetooth к Arduino:
Подключать Bluetooth модуль к микроконтроллеру Arduino удобнее всего с помощью проводков ПАПА-МАМА.
Arduino | Bluetooth |
---|---|
Pin 1 (TX) | RXD |
Pin 0 (RX) | TXD |
GND | GND |
5V | VCC |
Будьте внимательны, подключать подключать нужно TX -> RXD ,RX -> TXD.
Теперь необходимо записать пробный код программы:
Во время загрузки скетча необходимо что бы Bluetooth модуль был отключен от микроконтроллера arduino. В противном случае скетч не запишется, потому что связь с Bluetooth модулем происходит по одному и томуже порту RX и TX, что и USB.
После того как скетч записан и Bluetooth модуль подключен к Arduino, можно перейти к следующему шагу.
Подключение Bluetooth к телефону
Желательно в качестве источника питания для arduino использовать не USB, а внешний Блок питания на 9 В.
- Включаем Bluetooth на телефоне и ищем новые устройства
- Находим в списке расстройств "HC-06" и подключаемся к нему.
- Телефон спросит пин-код. необходимо ввести "1234" или "0000"
- Ура. Устройство подключено.
Теперь нужно скачать bluetooth terminal на ваш телефон. Мы рассмотрим на примере платформы Android.
Вы можете установить разные bluetooth терминалы, как правило они отличаются только разными дизайнами, функционал от этого не меняется. Так же можно найти и терминал и для продуктов ios.
После того как мы установили терминал, запускаем его выбираем наш bluetooth модуль HC-06 и подключаемся к нему.
Пришло время попробовать проект в деле. Пишем в терминале цифру "0" и отправляем. Светодиод L который находится на плате arduino рядом с pin 13, должен погаснуть. Теперь отправим через терминал цифру "1" и светодиод L должен зажечься.
Демонстрация работы:
Необходимо:
— Блютуз модуль — HC-06 wireless Bluetooth (либо другой).
— Провода.
— Двухсторонний скотч.
— Софт — Bluetooth RC Controller.
В комплекте с роботом шел Блютуз модуль — HC-06.
Подойдут модули типа HC-04 или 05.
Подключение:
Все, что нужно подключить — это Блютуз модуль.
Подключение простое – смотрите таблицу ниже.
ПРИМЕЧАНИЕ: Заодно я указал подключения Моторов – я буду в каждом примере указывать необходимые подключения.
Обратите внимание, что поскольку разъем TXD Блютуз подключен к разъему RХ Arduino, то пока включении Блютуз Arduino никого будет слушать — только Блютуз.
ВНИМАНИЕ! На время когда вы хотите работать с Arduino по USB – Блютуз нужно выключать. Я для этого поставил выключатель на питание «+» Блютуз.
Прикрепляем Блютуз к роботу – можно использовать двухсторонний скотч и место в «корме» робота.
Программирование.
Сначала немного теории.
Мы уже научили работягу слушать ИК волны…
Блютуз – это то же волны – только радио.
А в остальном принцип тот же – управляющее устройство будет передавать коды по блютуз, которые РОБОТяга будет выполнять.
Только предварительно нам считывать коды с устройства не нужно – мы их сами зададим.
Кодами для команд будут буквы:
F – вперед;
B – назад;
R – вправо;
L – влево;
S – стоп.
Посылать их может любое устройство:
— которое может подключиться по Блютуз к РОБОТяге;
— имеющее программу, которая может посылать через Блютуз сигналы — терминал RS232.
Сначала устанавливаем соединение между блютузами РОБОТяги и «устройства» — через настройки Блютуз «устройства» — пароль по умолчанию для модуля робота — 1234.
Для Android устройств будем использовать Bluetooth RC Controller – готовую к использованию программу, позволяющую управлять не только направлением движения, но и скоростью и даже фарами!
Первое, что она попросит – включить Bluetooth.
Затем нужно подключиться к РОБОТяге – нажимаем на «шестереночку» — далее «Connect» выбрать его из перечня устройств нашего РОБОТягу и соединяемся…
Дальше жмем на кнопки и едем…
Все посылаемые данной программой коды-команды указаны в настройках Bluetooth RC Controller («шестереночка» — «Settings»).
ВНИМАНИЕ! Поступили замечания, что Bluetooth RC Controller у некоторых "работяг" реагирует с задержкой — около 10 секунд! Есть информация, что это лечится в настройках — пункте "Please select data stream frequency:" нужно выбрать режим "On change/touch".
Для того чтобы перевести в режим управления акселерометром «устройства» – через наклон, нужно нажать «шестереночку» и нажать закладку «Accelerometer».
Но предупреждаю! Данный режим работает с задержкой – управлять нужно осторожней. Пример на видео :)
СКЕТЧ:
[code]
//Управляем роботом с помощью BLUETOOTH.
//В качестве управляющего устройства используем ANDROID устройство с программой Bluetooth RC Controller.
// *********************** Установка выводов моторов ************************
int MotorLeftSpeed = 5; // Левый (А) мотор СКОРОСТЬ — ENA
int MotorLeftForward = 4; // Левый (А) мотор ВПЕРЕД — IN1
int MotorLeftBack = 2; // Левый (А) мотор НАЗАД — IN2
int MotorRightForward = 8; // Правый (В) мотор ВПЕРЕД — IN3
int MotorRightBack = 7; // Правый (В) мотор НАЗАД — IN4
int MotorRightSpeed = 6; // Правый (В) мотор СКОРОСТЬ — ENB
// ********************** Для управления по блютуз ****************************
char btCommand = 'S';// Задаем переменную BLUETOOTH команда — по умолчанию "S" — СТОП
//****************** Настраиваем параметры выводов ARDUINO ******************
pinMode (MotorLeftForward, OUTPUT);
pinMode (MotorLeftBack, OUTPUT);
pinMode (MotorLeftSpeed, OUTPUT);
- Рабочая частота: 2.4 GHz
- Интерфейс: UART
- Напряжение питания: 3.6.. 6V
- Ток потребления: 5 мА в режиме поиска,
Официальную документацию на JDY-31 можно открыть по ссылке .
Индикация состояния подключения:
- Ожидание
- Светодиод мигает
- Пин STATE: LOW
- Светодиод горит постоянно
- Пин STATE: HIGH
Подключение
Модуль подключается к питанию и цифровым пинам МК:
- JDY-31 > Arduino
- GND > GND
- VCC > 5V
- RX > Serial TX
- TX > Serial RX
- Опционально можно подключить EN на любой цифровой пин для отслеживания состояния подключения.
При таком подключении:
- Модуль будет мешать загрузке прошивки (она загружается по RX TX), на момент загрузки нужно отключить провода от пинов RX и TX Arduino
- С модулем можно общаться при помощи штатного Serial, фактически он будет дублировать монитор COM порта
На следующих двух схемах я подключил модуль к любым двум цифровым пинам Arduino:
Подключение к 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 (эхо):
SoftwareSerial
В качестве примера подключим модуль по второй схеме (на пины D2 и D3) и загрузим простую программу, которая будет пересылать данные с программного Serial (на пинах D2 и D3, Bluetooth) на аппаратный (который мы можем смотреть через монитор порта в Arduino IDE):
Откроем терминал и монитор порта и можем общаться с компьютером, 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
Какие ещё есть команды? Полный список есть в документации, давайте разберём:
Читайте также: