Оглавление:

UChip - последовательный порт через ИК-порт !: 4 шага
UChip - последовательный порт через ИК-порт !: 4 шага

Видео: UChip - последовательный порт через ИК-порт !: 4 шага

Видео: UChip - последовательный порт через ИК-порт !: 4 шага
Видео: Rayhon va Shohjahon Juraev - Kuzlari Zebo... 2024, Ноябрь
Anonim
UChip - последовательный порт через ИК-порт!
UChip - последовательный порт через ИК-порт!
UChip - последовательный порт через ИК-порт!
UChip - последовательный порт через ИК-порт!

Беспроводная связь стала ключевой функцией в наших проектах в настоящее время, и, говоря о беспроводной связи, первое, что мне приходит в голову, это Wi-Fi или BT, но обработка протоколов связи Wi-Fi или BT - непростая задача и требует больших затрат. ресурсов MCU, оставляя мало места для кодирования моего приложения. Поэтому я обычно выбираю внешний модуль Wi-Fi / BT, последовательно подключенный к микроконтроллеру, чтобы разделить роли и получить большую свободу.

Однако иногда Wi-Fi и BT являются «излишними» для некоторых приложений, требующих низкой скорости передачи данных и небольшого расстояния связи. Кроме того, использование Wi-Fi или BT подразумевает необходимость подключения вашего смартфона или устройства с надлежащей аутентификацией.

Представьте, что вам просто нужно включить / выключить внешний свет, или изменить яркость лампы, или открыть электрические ворота. Стоит ли использовать Wi-Fi или BT?

В зависимости от среды и приложений может пригодиться беспроводная связь через инфракрасный (инфракрасный) диапазон длин волн. Последовательный порт через ИК-порт, реализованный с помощью нескольких внешних компонентов (3 дискретных компонента!), И uChip (очень маленькая плата, совместимая с Arduino) могут быть решением, которое вы искали!

Спецификация материалов (для одного устройства Tx-Rx):

1 х чип

1 x ИК-светодиод: с пиком излучения на 950 нм

1 x TSOP-38238 (эквивалент)

1 резистор 1 кОм

Аппаратное обеспечение

1 x макетная / прототипная плата

1 x черная пластиковая трубка: внутренний диаметр такой же, как у ИК-светодиода, трубка необходима для предотвращения перекрестных помех с приемником TSOP.

1 х алюминиевая фольга (3 см x 3 см)

1 х лента

СОВЕТ: Вы можете сделать устройство только-TX или только-RX в случае, если вам нужна односторонняя связь, удалив ненужное оборудование RX / TX из схемы или включив / отключив соответствующий код в скетче.

Шаг 1. Подключение

Проводка
Проводка
Проводка
Проводка
Проводка
Проводка

Соедините компоненты вместе согласно схеме.

Несколько замечаний по простой схеме. Поскольку TSOP-38238 допускает питание от 2,5 В до 5 В и потребляет максимум 0,45 мА (вы можете найти техническое описание ЗДЕСЬ), я буду запитывать приемник с помощью двух контактов, которые будут обеспечивать заземление и питание соответственно. Это позволяет включать / выключать приемник по запросу и очень просто настроить аппаратную разводку. Кроме того, если вам нужна односторонняя связь, вы можете выбрать, следует ли делать устройство только (Tx / Rx), просто отключив / включив TSOP-38238.

Как работает схема?

Все очень просто. Выходной контакт TSOP переводится в низкий уровень, когда датчик обнаруживает последовательность из 6 или более импульсов на частоте 38 кГц, с другой стороны, он переводится в высокий уровень, когда такого сигнала нет. Следовательно, чтобы передавать последовательные данные через ИК-порт, схема запитывает анод светодиода с помощью ШИМ 38 кГц, модулированного последовательным сигналом TX, который понижает уровень катода светодиода.

Следовательно, на высоком уровне последовательного TX0 светодиод не смещается или не смещается в обратном направлении (без импульсов), и выходной контакт TSOP подтягивается к высокому уровню. Передавая низкий уровень по последовательному каналу, светодиод получает питание и генерирует ИК-импульсы в соответствии с подаваемым ШИМ-сигналом; следовательно, на выходе TSOP устанавливается низкий уровень.

Поскольку передача является прямой (0-> 0 и 1-> 1), нет необходимости в инверторах или другой логике на стороне приемника.

Я регулирую выходную оптическую мощность светодиода, выбирая рабочий цикл ШИМ в соответствии с приложением. Чем выше рабочий цикл, тем выше выходная оптическая мощность и, следовательно, тем дальше вы будете передавать свое сообщение.

Имейте в виду, что нам еще нужно генерировать импульсы! Таким образом, вы не должны превышать рабочий цикл 90%, иначе TSOP не обнаружит сигнал как импульсы.

Вам нужно больше мощности?

Чтобы увеличить ток, можем ли мы просто уменьшить номинал резистора 1 кОм?

Может быть, просто не будь слишком требовательным! Максимальный ток, который вы получаете от вывода MCU, ограничен 7 мА, когда вывод порта превышает нормальный (PINCFG. DRVSTR = 1 и VDD> 3 В), как указано в таблице данных SAMD21.

Однако стандартная конфигурация (которая используется библиотеками Arduino IDE по умолчанию) ограничивает ток до 2 мА. Следовательно, использование 1кОм уже дает текущий лимит с настройками по умолчанию!

Повышение тока касается не только электрических компонентов. Вкратце:

  • Замените резистор (минимальное значение которого ограничено примерно 470 Ом -> VDD / 470 ~ 7 мА);
  • Установите соответственно PORT-> PINCFG-> DRVSTR на 1;

Я предоставлю код, включающий эту функцию, в будущем обновлении.

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

Шаг 2: программирование

Загрузите скетч «IRSerial.ino» в uChip (или на плату, совместимую с Arduino, которую вы используете).

Если вам нужно изменить вывод, генерирующий ШИМ, убедитесь, что вы используете вывод, подключенный к таймеру TCC, поскольку эта версия кода работает только с таймерами TCC (проверьте «вариант.c» вашей платы для этой информации.). Я добавлю код для использования таймеров TC в будущих обновлениях.

Код довольно простой. После установки низкого уровня PIN_5 (обеспечивает TSOP GND) и высокого уровня PIN_6 (питание TSOP) MCU запускает ШИМ на PIN_1, устанавливая период таймера и сравнивая захват в соответствии с необходимой частотной модуляцией (в моем случае это 38 кГц) и дежурством. цикл (по умолчанию 12,5%). Для этого используется стандартная функция analogWrite () на выводах ШИМ и изменяется только регистр PER_REG (регистр периода) и регистр CC (сравнение захвата) (написанный код - это просто вырезка и вставка из библиотеки wiring_analog). Вы можете установить необходимую частоту в соответствии с изменением PER_REG датчика TSOP (который является верхним пределом, сбрасывающим счетчик таймера), а CC пропорционально значению периода до желаемого процента рабочего цикла.

Затем код устанавливает для последовательного порта правильную скорость передачи, равную 2400 бит / с. Почему такая низкая скорость передачи ?! Ответ находится в таблице данных TSOP, которую вы можете найти ЗДЕСЬ. Поскольку TSOP оснащен фильтрами подавления шумов для предотвращения нежелательного переключения, необходимо отправить последовательность из нескольких импульсов, чтобы отключить выходной вывод TSOP (количество импульсов зависит от версии TSOP, типичное значение - 6). Точно так же на выходе TSOP устанавливается высокий уровень после минимального периода времени, эквивалентного 10 или более импульсам. Следовательно, чтобы установить выход TSOP как модулирующий сигнал TX0, необходимо установить скорость передачи данных, учитывая следующее уравнение:

Последовательная скорость <PWM_frequency / 10

При использовании 38 кГц это приводит к скорости передачи данных ниже 3800 бит / с, что означает, что более высокая «стандартная» разрешенная скорость передачи данных составляет 2400 бит / с, как и предполагалось ранее.

Вы хотите увеличить скорость передачи данных? Есть два варианта.

Самый простой вариант - изменить TSOP на более высокочастотную версию (например, TSOP38256), что позволит вам удвоить скорость передачи (4800 бит / с).

Недостаточно?! Затем вам нужно создать собственное оптическое соединение, используя простой ИК-светодиод + фотодиод и схему усиления. Однако это решение требует большого опыта в области кодирования и электроники, чтобы предотвратить влияние шума на передаваемые данные, и поэтому его реализация совсем не проста! Однако, если вы чувствуете себя достаточно уверенно, вы можете попробовать создать свою собственную систему TSOP!:)

Наконец, я установил порт SerialUSB (2400 бит / с), который я использую для отправки и получения данных на последовательном мониторе.

Функция loop () включает код, необходимый для передачи данных по двум серийным номерам, и копируется непосредственно из примера скетча SerialPassth, изменяя только имена серийных номеров.

Шаг 3: экранирование ИК-светодиода

Экранирующий ИК-светодиод
Экранирующий ИК-светодиод
Экранирующий ИК-светодиод
Экранирующий ИК-светодиод

Если вы включите указанную выше схему после загрузки кода «IRSerial.ino», проверьте Serial Monitor в Arduino IDE и попробуйте отправить строку. Вы, вероятно, увидите, что uChip получает именно то, что передает! В схеме есть перекрестные помехи из-за оптической связи между ИК-светодиодом и TSOP одного и того же устройства!

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

Как нам разорвать петлю?

Первый вариант, вы уменьшаете рабочий цикл ШИМ, тем самым снижая выходную оптическую мощность светодиода. Однако такой подход также сокращает расстояние, на котором вы получаете надежный последовательный ИК-канал. Второй вариант - экранировать ИК-светодиод, создавая направленный ИК-луч. Это попытка и ошибка; наконец, используя кусок черного пневматического шланга для воздуха, обернутый алюминиевой фольгой и лентой (обеспечивающей электрическую изоляцию), мне удалось прервать перекрестный разговор. Размещение передающего ИК-светодиода внутри трубки предотвращает обмен данными между TX и RX одного и того же устройства.

Посмотрите на картинку, чтобы увидеть мое решение, но не стесняйтесь пробовать другие методы и / или предлагать свое! Абсолютного решения этой проблемы нет (если вам не нужен простой однонаправленный канал), и вам, вероятно, потребуется настроить схему схемы, рабочий цикл ШИМ и ИК-экран в соответствии с вашими потребностями.

Как только вы прервете перекрестную наводку, вы можете убедиться, что ваше устройство все еще работает, создав петлю на устройстве Tx-Rx, используя отражение длины волны ИК-излучения на отражающих ИК-поверхностях.

Шаг 4: Общайтесь

Общаться!
Общаться!
Общаться!
Общаться!

Это все

Ваше устройство с последовательным интерфейсом через ИК-порт готово к обмену данными, используйте их для отправки данных через ИК-порт, включения / выключения всего, что вам нравится, или проверки состояния датчика, который вы тайно скрываете!

Расстояние, на котором связь надежна, не такое большое, как для устройства Wi-Fi или BT. Однако он является направленным (в зависимости от апертуры светодиода и реализованной системы защиты от ИК), что может быть очень полезно в некоторых приложениях!

Скоро выложу видео, где вы сможете увидеть несколько примеров сделанных мной приложений. Наслаждаться!

Рекомендуемые: