Перейти к содержимому

Rx tx как подключить

  • автор:

Как подключить Bluetooth наушники к TX-RX адаптеру?

Купил на алике RX-TX Bluetooth адаптер. Фиговина размером с флешку и разъемом 3,5 mini jack и USB Type A. Как выяснил, через USB адаптер получает только питание. Как Bluetooth адаптер компьютер его не видит. И потому непонятно, как подключить к нему Bluetooth наушники в TX режиме?

  • Вопрос задан более трёх лет назад
  • 1492 просмотра

Комментировать
Решения вопроса 0
Ответы на вопрос 1
Хочу вылезти из минуса по карме.

Какой именно адаптер?
Обычно в них есть кнопка и переключатель режима.
Нужно в наушниках включить режим спаривания, на адаптере выбрать переключателем режим TX и кнопкой на адаптере войти в режим спаривания.

Ответ написан более трёх лет назад
nihi1ist @nihi1ist Автор вопроса

lonelymyp какой то китайский ноунейм. Наушники Xiaomi Bluetooth Neckband Earphones. Наушники в режиме сопряжения автоматически подхватятся адаптером?

По инструкции со страницы продажи делал?
В каком месте возникает проблема?
Ваш ответ на вопрос

Войдите, чтобы написать ответ

bluetooth

  • Bluetooth

Как сделать автоподключение bluetooth устройств к Android TV?

  • 2 подписчика
  • 25 дек. 2023
  • 116 просмотров

UART — Универсальный Асинхронный Приёмопередатчик

Универсальный асинхронный приёмопередатчик (Univsersal Asynchronos Reciever-Transmitter) — это физическое устройство приёма и передачи данных по двум проводам. Оно позволяет двум устройствам обмениваться данными на различных скоростях. В спецификацию UART не входят аналоговые уровни на которых ведётся общение между устройствами, UART это протокол передачи единиц и нулей, электрическую спецификацию на себя берут другие стандарты, такие как TTL (transistor-transistor logic — транзисторно-транзисторная логика), RS-232, RS-422, RS-485 и другие (RS [англ.recommended standard] — рекомендованный стандарт). На данный момент в микроконтроллерах используется в основном TTL (или точнее CMOS) UART для соединения не более двух устройств. В наших примерах мы часто называем его последовательным портом.

Подключение:

У каждого устройства, поддерживающего UART обычно обозначены два вывода: RX и TX. TX — означает transmit (передаю), RX — receive (принимаю). Отсюда становится понятно что RX одного устройства нужно подключать к TX другого. Если Вы подключите RX одного устройства к RX другого, то оба устройства будут слушать друг друга, вы соединили их входы. Если соединить TX и TX — это уже более опасно, это выходы низкого сопротивления устройств и если на одном будет логическая единица, а на втором ноль — по проводу пойдёт ток короткого замыкания (это зависит от конкретной программной или аппаратной реализации). Хотя в современных чипах от этого есть защита, на всякий случай, не стоит на неё ориентироваться. Так же необходимо объединить референсные уровни двух устройств (GNDGND), если не подразумевается гальваническая развязка.

Пример соединения двух UNO:

UART на Arduino:

На Arduino и Arduino-совместимых платах аппаратный UART обозначается символами RX и TX рядом с соответствующими выводами. На Arduino UNO/Piranha UNO это 0 и 1 цифровые выводы:

Arduino UNO/Piranha UNO

В скетче инициализируется функцией begin() в коде функции setup():

Serial.begin( СКОРОСТЬ );
Serial.begin( СКОРОСТЬ, ПАРАМЕТРЫ );

Пример:

void setup()

Piranha ULTRA

На Piranha ULTRA присутствуют два аппаратных UART. Один на тех же выводах, что и UNO, второй на 8 (RX) и 9 (TX) выводах:

В Arduino IDE второй аппаратный UART называется Serial1 (Сериал один), и инициализируется так же как и первый:

Простой пример для копирования буфера первого UART’а во второй и наоборот:

void setup() < // Инициируем UART Serial.begin(9600); Serial1.begin(9600); >void loop() < // Пока буфер первого UART не пуст while(Serial.available()) < // Выводим следующий байт FIFO в буфер второго Serial1.write(Serial.read); >// Пока буфер второго UART не пуст while(Serial1.available()) < // Выводим следующий байт FIFO в буфер первого Serial.write(Serial1.read); >>

Arduino MEGA

У Arduino MEGA, помимо UART’a на цифровых выводах 0 и 1 как и у UNO, присутствуют ещё три аппаратных UART. На плате это выводы 19 (RX1), 18 (TX1), 17 (RX2), 16 (TX2) и 15 (RX3), 14 (TX3) соответственно. UART совместимый по расположению с UNO обозначен RX0, TX0:

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

Отладка проектов при помощи UART

В совокупности с монитором последовательного порта UART может быть очень полезен для отладки кода. Например, если не понятно доходит ли Ваш код до определённого места или какие значения принимает переменная, можно вызвать функцию println() и вывести значение переменной или какое-нибудь сообщение в монитор порта. В Arduino IDE монитор порта находится в меню Инструменты -> Монитор порта, так же его можно вызвать нажав пиктограмму лупы в правом верхнем углу главного окна Arduino IDE или вызвать с клавиатуры комбинацией клавиш Ctrl+Shift+M. Перед вызовом монитора порта необходимо выбрать порт с которым Вы хотите работать. Сделать это можно в меню Инструменты -> Порт.

Для удобства отладки можно указать директивы препроцессора языка Си #define , #ifdef , #ifndef

Пример:

/* * Определяем DEBUG. * Если эту строку удалить * или закомментировать * код от #ifdef DEBUG до * #endif не будет скомпилирован * и в монитор порта (в данном примере) * ничего не будет выведено. */ #define DEBUG void setup() < // Инициируем последовательный порт Serial.begin(9600); /* * Ждём старта последовательного порта * (необходимо для чипов со встроенным * USB-UART преобразователем). */ while(!Serial); >void loop() < // Создаём флаг составного числа. bool not_prime = false; for (int n = 2; n < 100; n++) < for (int i = 2; i < n / 2; i++) < // Проверяем факторы (делители) числа. if (n % i == 0) < /* * Если есть факторы * устанавливаем флаг, * выходим из цикла проверки. */ not_prime = true; break; >> /* * Если определён DEBUG * выводим простые числа * в монитор порта. */ #ifdef DEBUG if (not_prime == false) < Serial.println(n); >#endif not_prime = false; > // Останавливаем выполнение скетча. while(true); >

Программный UART на Arduino

Помимо аппаратного UART в Arduino можно использовать программный. Программный порт хорошо подходит для простых проектов, не критичных к времени работы кода или для отладки проектов, позволяя не отключать модули использующие UART во время загрузки сетчей. При его использовании нужно лишь помнить что никакой другой код не может выполняться пока программа занимается считыванием данных из него и передача может осуществляться только в полудуплексном или симплексном режимах. Так же на программный RX можно назначать только те выводы, которые поддерживают прерывание по смене уровней. На UNO, например, это все цифровые выводы, кроме 13-го. Прежде чем собирать свой проект, проконсультируйтесь с инструкцией к конкретной плате.

Пример использования программного порта:

// Определяем вывод RX #define RX 8 // Определяем вывод TX #define TX 9 // Подключаем библиотеку программного UART #include // Создаём объект программного UART SoftwareSerial mySerial(RX, TX);

Далее к программному порту нужно обращаться через объект mySerial . Например: mySerial.write(data); .

UART на Raspberry Pi:

На Raspberry Pi UART находится на выводах колодки 8 — TX (GPIO14) и 10 — RX (GPIO15)

Перед работой с последовательным портом необходимо его включить. Сделать это можно из эмулятора терминала командой sudo raspi-config -> Interfacing options -> Serial -> No -> Yes -> OK -> Finish или из графической среды в главном меню -> Параметры -> Raspberry Pi Configuration -> Interfaces -> Serial Port

Пример работы с последовательным портом на Python:

# Подключаем модуль для работы с последовательным портом import serial # Конфигурируем последовательный порт serialport = serial.Serial("/dev/ttyS0", 9600, timeout=0.5) # Выводим байтовую строку в порт serialport.write(b'iArduino.ru') # Входим в бесконечный цикл while True: # Если буфер порта не пуст if serialport.in_waiting: # Записываем данные из буфера в список response = serialport.readlines() # Выводим эти данные в stdin, декодируя в UTF-8 и удаляя пустые символы print(response[0].decode("utf-8").strip()) # Если нужны "сырые данные" с символами возврата каретки и новой строки # print(response) # .readlines() возвращает список байтовых строк

Данный пример выводит строку «iArduino.ru» в последовательный порт Raspberry и ждёт данных из последовательного порта.

Подробнее о UART:

Параметры

При обозначении параметров UART принято использовать короткую запись ЦИФРАБУКВАЦИФРА

  • ЦИФРА — количество бит в кадре
    • от 5 до 9 бит. Обычно 8.
    • N — None (Отсутствует) без бита чётности
    • E — Even (Чётный). Проверка данных на чётность. Перед стоп-битом в кадр добавляется бит: 0 если в кадре было нечётное количество единиц, 1 — если чётное.
    • O — Odd (Нечётный). Проверка данных на нечётность. Перед стоп-битом в кадр добавляется бит: 1 если в кадре было нечётное количество единиц, 0 — если чётное.
    • 1, 1.5, 2. Продолжительность стоп-бита (1, 1.5 или 2 битовых интервала)

    Таким образом, стандартные настройки в Arduino: 8-N-1

    Кадрирование данных

    При приёме-передаче данных каждое устройство ориентируется на своё внутреннее тактирование. Обычно это тактирование от 8 до 16 раз быстрее скорости передачи данных и обычно отсчитывается от стартового бита. Именно поэтому необходимо чтобы оба устройства были настроены на одну и ту же скорость передачи.

    Так же при передаче данных присутствуют синхронизирующие биты, именуемые старт-бит и стоп-бит. Старт-бит сигнализирует о начале передачи данных и стоп-бит, соответственно об окончании.

    Рассмотрим кадр данных:

    При разговорах о серийный протоколах принято использовать такие слова как кадр и пакет. Кадр — интервал от старт-бита до стоп-бита. Пакет — количество кадров полезных данных. При этом не стоит путать кадр и байт: байт — это только сами данные, не включающие в себя синхронизирующие и проверочные биты.

    Старт-бит:

    При отсутствии передачи линия удерживается в состоянии логической единицы (в случае TTL Arduino это 5 вольт или Vcc). Как только передающее устройство притягивает линию к 0 (GND или 0 вольт в случае Arduino), это сигнализирует принимающему устройству о том что сейчас будет передача данных.

    _______ ____ ____ ____ ____ ____ ____ ____ ____ __________ \____/____X____X____X____X____X____X____X____X | старт-бит [данные . ] [стоп-бит] 

    Данные:

    При появлении старт-бита на линии принимающее устройство начинает отсчитывать время в соответствии с установленной скоростью и считывать состояния линии через определённые промежутки времени в соответствии с установленным количеством бит данных, после этого.

    _______ ____ ____ ____ ____ ____ ____ ____ ____ __________ \____/____X____X____X____X____X____X____X____X | | | | | | | | [старт-бит] данные . [стоп-бит] 

    Стоп-бит:

    По завершении передачи данных принимающее устройство ожидает стоп-бит, который должен быть на уровне логической единицы. Если по завершении кадра удерживается логический ноль, значит данные неверны. Если логический ноль удерживается время, превышающее длину кадра в 1,5 раза, такое состояние именуется break (разрыв линии, исторически пошло от устройств, использующих токовую петлю для передачи данных). Некоторые передатчики вызывают это состояния специально перед посылкой пакета данных. Некоторые приёмники считают такое состояние за неправильно выставленную скорость и сбрасывают свои настройки на установки «по умолчанию».

    _______ ____ ____ ____ ____ ____ ____ ____ ____ __________ \____/____X____X____X____X____X____X____X____X | [старт-бит][данные . ] стоп-бит 

    Скорость передачи данных

    Скорость изменения логических уровней (импульсов) на линии принято измерять в бодах. Единица измерения названа так в честь французского изобретателя Жана Мориса Эмиля Бодо.

    Скорость при использовании UART может быть любой, единственное требование — скорости передающего и принимающего должны быть одинаковы. Стандартная скорость UART принята за 9600 бод. Arduino без проблем и лишних настроек может принимать и передавать данные на скоростях до 115200 бод.

    Так как при передаче данных присутствуют синхронизирующие биты, именуемые старт-бит и стоп-бит, не совсем корректно говорить, что скорость 9600 бод равна 9600 битам в секунду. Если речь идёт о полезных данных, то реальная скорость на 20% ниже. Например, если выставлены параметры 8-N-1 и 9600 бод, то на передачу одного байта уходит десять бит, и 9600/10 = 960 байт, что равно 7680 битам в секунду.

    Методы связи

    UART позволяет одновременно передавать и принимать данные, однако не всегда это возможно или нужно. Например, если Вам нужно только получать не критические данные (которые можно проверить следующим пакетом, например расстояние, посылаемое лидаром каждые несколько сотен миллисекунд) от цифрового датчика или любого другого устройства и не нужно ничего передавать, такой метод называется симплексным. Всего различают три метода связи:

    • Полнодуплексная — когда ведущий и ведомый могут одновременно принимать и передавать (одновременная передача в обе стороны)
    • Полудуплексная — когда ведущий и ведомый поочерёдно принимают и передают (Поочерёдная передача в обе стороны)
    • Симплексная — когда ведущий или ведомый только передают (Передача в одну сторону)

    Используем Arduino как USB -> UART преобразователь

    Использование Arduino как USB-UART преобразователь:

    На платах Arduino c USB портом (у некоторых плат нет USB порта) уже есть USB-UART преобразователь на базе чипа CH340 или FTDI, или ATmega, или др. Шина USB этих чипов подключена к порту USB, а шина UART к аппаратным выводам TX и RX контроллера платы Arduino.

    Всё что нужно сделать для работы платы Arduino в качестве USB-UART преобразователя, это отключить её контроллер от шины UART или заставить его не реагировать на сигналы проходящие по этой шине. Сделать это можно соединив вывод RESET с выводом GND платы Arduino.

    Теперь плату Arduino можно подключить к USB порту компьютера, а внешние устройства к выводам TX и RX платы Arduino (обычно это выводы 0 и 1). Обратите внимание на то, что выводы устройств подключаются к плате, не TX к RX, RX к TX, а TX к TX, RX к RX (так как вывод TX чипа преобразователя на плате Arduino подключён к выводу RX самой платы, а вывод RX чипа подключён к выводу TX платы).

    Для управления подключённым устройством нужно установить на компьютер программу терминал. Одним из таких терминалов является свободно распространяемая программа Termite с поддержкой Русского языка.

    Альтернативный метод:

    В качестве альтернативного метода можно воспользоваться двумя шинами UART Arduino: аппаратной и программной. Аппаратная шина используется для подключения Arduino к USB порту компьютера, а программная шина UART используется для подключения модулей к плате Arduino.

    Вы просто загружаете скетч, подключаете Arduino к USB порту компьютера, а устройство к выводам указанным в скетче (в примере: вывод D2 это RX — подключается к выводу TX устройства, вывод D3 это TX — подключается к выводу RX устройства).

    #include // Подключаем библиотеку SoftwareSerial для общения с модулем по программной шине UART SoftwareSerial softSerial(2,3); // Создаём объект softSerial указывая выводы RX, TX (можно указывать любые выводы Arduino UNO) // В данном случае вывод TX модуля подключается к выводу 2 Arduino, а вывод RX модуля к выводу 3 Arduino. // Инициируем работу шин UART с указанием скоростей обеих шин: // void setup() < // softSerial.begin(38400); // Инициируем передачу данных по программной шине UART на скорости 38400 (между модулем и Arduino) Serial.begin(9600); // Инициируем передачу данных по аппаратной шине UART на скорости 9600 (между Arduino и компьютером) >// // // Выполняем ретрансляцию: // Всё что пришло с модуля - отправляем компьютеру, а всё что пришло с компьютера - отправляем модулю void loop() < // if(softSerial.available())< Serial.write(softSerial.read());>// Передаём данные из программной шины UART в аппаратную (от модуля через Arduino к компьютеру) if( Serial.available()) // Передаём данные из аппаратной шины UART в программную (от компьютера через Arduino к модулю ) >

    Этот метод не требует подключения вывода RESET к GND на плате Arduino и не требует установки программы терминал на компьютер.

    Управление подключёнными устройствами осуществляется через монитор последовательного порта Arduino IDE (для передачи AT-команд не забудьте установить пункт — добавлять символы NL & CR в нижнем правом углу монитора последовательного порта).

    RX-TX-10 Bluetooth Adapter

    RX-TX-10 Bluetooth Adapter

    Для того, чтобы жена могла смотреть телевизор, а я без проблем читать книжку, купил в пару к наушникам вот такой RX-TX-10 Bluetooth Adapter.

    Выбрал самый простой блютус приемник/передатчик, просто, чтобы попробовать. Есть варианты и поинтереснее, например, у Ugreen, но, во-первых там и ценник совсем другой, а во-вторых я для начала хотел просто разобраться, насколько это удобно и можно ли вообще пользоваться подобными устройствами без особых танцев с бубном. Забегая вперед скажу, что покупка себя полностью оправдала.

    Покупал на распродаже 11.11 и применил купон от Али -2/10$ на корзину, в результате чего скинул 0.91$, скидок во время распродажи в магазине не было. Доставляли долго — 30 дней.

    Характеристики RX-TX-10 Bluetooth Adapter:
    Модель: RX-TX-10
    Версия Bluetooth: 4.2 (поддержка протоколов A2DP и AVRCP)
    Поддержка форматов: MP3, WAV, WMA, APE, FLAC
    Частота: 2,402 — 2,480 GHz
    Источник питания: Встроенный аккумулятор Li-ion, 3.7V, 200mAh
    Время работы: Около 10 часов
    Время зарядки: Около 2 часов
    Дальность приема/передачи сигнала: Около 20 метров на открытом пространстве
    Разъемы: Разъем питания — MicroUSB
    Два аудио-разъема 3,5 мм на вход и выход
    Количество каналов: Моно (один канал)
    Поддержка микрофона: Да
    Размеры: 6.20 x 4.00 x 1.00 см.
    Комплект: RX-TX-10 Bluetooth Adapter, 1 x Audio Cable, 1 x Charging Cable, 1 x English/Chinese Manual

    RX-TX-10 Bluetooth Adapter

    RX-TX-10 Bluetooth Adapter

    Фото RX-TX-10 Bluetooth Adapter:
    Подключение RX-TX-10 Bluetooth Adapter:

    С подключением не возникло никаких проблем, благодаря встроенному аккумулятору устройство становится мобильным, при стационарном использовании можно подключить внешний источник питания. Т.к. собираюсь использовать для передачи звука с телевизора на беспроводные наушники, подключил кабель питания к свободному разъему USB на телевизоре. Либо можно отдельно запитать от любого ЗУ 5V/1A. Гнездо «TX» используется для подключения устройства в качестве передатчика, Гнездо «RX» — в качестве приемника. Между аудио-разъемами находится световой индикатор, при включении загорается синий светодиод, потом быстро мигают синий/красный, При спаривании с устройством горит красный светодиод и с промежутками мигает синий. При зарядке отключенного устройства горит красный светодиод. На устройстве имеются три кнопки: кнопка включения/выключения и кнопки «-» и «+» для регулировки уровня громкости.

    Подключение в качестве передатчика:

    1. Подключаем устройство к, например, телевизору: вставляем один разъем аудио-кабеля из комплекта в разъем «TX» на устройстве, другой подключаем к разъему для наушников на телевизоре. Включаем телевизор.
    2. Подключаем кабель USB из комплекта к устройству и к источнику питания (ЗУ или свободный порт USB на телевизоре). При полностью заряженном аккумуляторе можно не подключать внешнее питание, но время работы будет ограничено десятью часами (как заявляет производитель).
    3. Включаем RX-TX-10 Bluetooth Adapter долгим нажатием на кнопку питания, о включении устройства просигнализирует световая индикация.
    4. Включаем устройство для приема сигнала (в моем случае беспроводные блютус-наушники).
    5. Одновременно зажимаем на RX-TX-10 кнопки «-» и «+». При спаривании устройств в наушниках раздастся сигнал и появится звук.

    Подключение в качестве приемника:

    1. Подключаем устройство к, например, аудио динамику: вставляем один разъем аудио-кабеля из комплекта в разъем «RX» на устройстве, второй в аудио-разъем динамика. Включаем аудио динамик.
    2. Подключаем кабель USB из комплекта к устройству и к источнику питания, например к зарядному устройству с разъемом USB.
    3. На смартфоне включаем блютус и запускаем поиск устройств. Находим устройство RX-TX-10 и подключаемся к нему.

    RX-TX-10 Bluetooth Adapter

    Плюсы и минусы RX-TX-10 Bluetooth Adapter:

    Плюсы:

    • Устройство выполняет все заявленные функции
    • Возможность подключения к любому устройству с аудио разъемами типа Jack 3,5 мм.
    • Встроенный аккумулятор для автономной работы
    • Легко подключить и настроить
    • Поддерживается работа микрофона
    • Компактные размеры

    Минус:

    • Только один канал звука, хотя в описании стерео (в моем случае при просмотре программ по телевизору это не имеет значения)
    Выводы:

    Что хотел, то и получил. Причем за совсем небольшие деньги. Подключается легко и выполняет все заявленные функции, кроме стереозвука. Появилось желание достать свой старый кассетный магнитофон Hitachi TRK-W3W, который мне подарили родители на шестнадцатилетие и подключить RX-TX-10 к нему, при желании можно даже спрятать провода и само устройство внутри корпуса. Меломанам рекомендую искать что-другое и со стереозвуком.

    4,021 просмотров всего, 1 просмотров сегодня

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *