Исследование радиосинхронизатора Yongnuo

К вопросу о том, что называется "протокол общения", а также TTL, E-TTL, iTTL, P-TTL и др..
Ответить
  • Автор
  • Сообщение
Не в сети
эксперт
Сообщения: 10367
Стаж 11 лет 6 месяцев

Исследование радиосинхронизатора Yongnuo

Непрочитанное сообщение Impulsite » 18 апр 2019, 23:30

Вашему вниманию ниже представлен перевод статьи HACKING THE YONGNUO WIRELESS CONTROLLER.
Оригинальный текст был здесь: http://www.g7smy.co.uk/2018/02/hacking- ... ontroller/

Если у вас возникнут замечания по терминологии и поправки к переводу, прошу сообщить в комментариях.


http://www.g7smy.co.uk/2018/02/hacking- ... ontroller/

ИССЛЕДОВАНИЕ БЕСПРОВОДНОГО КОНТРОЛЛЕРА YONGNUO.
22 февраля 2018, KARL

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

Применяю этот радиосинхронизатор Yongnuo в съёмке для управления несколькими вынесенными далеко от фотокамеры. Синхронизатор состоит из двух частей: передатчика, который подключается к башмаку на камере, и приёмников, в башмаки которых подключаются вспышки, один передатчик может управлять любым количеством приемников с вспышками в пределах заявленной 300-метровой дистанции. Передатчик с парой приемников можно купить на eBay приблизительно за 35 фунтов.

Беспроводной контроллер Yongnuo с частотным кодированием (FSK) 2.4 ГГц.
RF-600TX передатчик
RF-602RX приёмник

Изображение

Я постарался:
  • изучить, как подключаются вспышки,
  • изучить, как работает трансмиттер – настолько, насколько я мог реконструировать схему,
  • посмотреть, смогу ли управлять трансмиттером, применяя непосредственно Ардуино,
  • посмотреть, можно ли так же управлять другими устройствами, работающими на тех же микросхемах,
  • не повредить трансмиттер во время его изучения.
Разборка

Изображение

Внутри, на печатной плате вы найдете:
  • Включатель питания on/off
  • Двухцветный красно/зелёный светодиод
  • Кнопку с двойным нажатием и двумя переключателями для ручного управления вспышкой
  • Переключатель кода из 4 микропереключателей
  • Неизвестный (без маркировки) микроконтроллер – MK
  • приёмопередатчик A7105 диапазона 2.4 ГГц с FSK/GFSK модуляцией и внутренним переключением (ISM)
На нижней стороне печатная плата имеет маркировку версии и даты:
Version: 1.21
Date: 14/04/23 – 23 April 2014

Как сообщается в технической спецификации на A7105, он может работать как передатчик, так и как приемник, и использует интерфейс SPI для пользовательского управления, он, кажется, популярен в сообществах радиоуправляемых авиамоделей и дронов. Приёмник выглядит очень похожим по компонентам, использует тоже A7105 и неизвестный микроконтроллер. Я не рассматривал его в деталях и требуется аккуратность при разборке, так как есть три паянных соединения горячего башмака.

Изображение
Приёмник RF-602RX

Подключение вспышки
В башмаке камер Canon имеется шесть соединений, но нам требуется изучить только три из них. Если смотреть на камеру сверху, объективом направленным вперед, обойма, в которую входит нога вспышки, заземлена, большая центральная точка - это синхроконтакт вспышки, чуть ниже этого и слева - контакт "готовности камеры". Я предполагаю, что остальные для функций E-TTL, и я не изучал их.
Примечание от переводчика. Автор текста указывает на контакт "№5, который называется STSPC = TTL OK signal / clock / сигналы TTL (фото)

Изображение
Контакты горячего башмака Canon.

Исследуя горячий башмак мультиметром, можно видеть, что синхроконтакт показывает большое сопротивление, которое уменьшается до нуля в момент поджига вспышки. Я полагаю, это унаследовано от старых, механических камер. Напряжение на контакте "готовности камеры" становится высоким - около 5 Вольт, сообщая вспышке, что вы нажали кнопку затвора наполовину, объектив сфокусирован, и вы собираетесь сделать фотографию.

Чтобы определить длительность сигнала вспышки на башмаке фотоаппарата, я подключил почти разряженную батарею типа АА между землей и и синхроконтактом вспышки, что до дало 1,2 вольт и позволило измерять осциллографом (при проверке на самой вспышке Canon напряжение между синхроконтактом вспышки и заземлением составляет 4,47 вольт). Я обнаружил, что сигнал на вспышку посылается камерой в течение 352 мс, что довольно долго, с учётом того, что типичная выдержка затвора для фотосъемки с вспышкой равна 1/125 секунды, что равно 8 мс, хотя длительность импульса вспышки задаётся самой вспышкой, а не этим сигналом.

Изображение
Запись процессов на вспышке.

Цепи микроконтроллера
Я потратил некоторое время на восстановление большей части схемы передатчика, и проигнорировал часть вспомогательных цепей схемы и кварцевого таймера, так как хотел изучить передачу данных. Детали также довольно маленькие и проблематично исследовать их стандартными щупами мультиметра.

Изображение
Фрагмент схемы RF600TX.

Микроконтроллер, похоже, использует внутренние подтягивающие резисторы на входах, сигнал "готовности камеры" от башмака переключает транзистор, так, что на выводе 16 контроллера устанавливается низкий уровень.

Глядя на принципиальную схему, мы видим выход на антенну с вывода 8 микроконтроллера. При нажатии кнопки спуска затвора выводятся два разных прямоугольных импульса: один для готовности камеры, а другой для вспышки. Я думаю, что они модулируются на выходе передатчика для получения радиосигнала и упрощения конструкции передатчика. Если посмотреть осциллографом на выходной сигнал с 8 контакта, то можно увидеть достаточно четко два состояния:

Изображение
Сигнал готовности камеры.

Изображение
Сигнал на вспышку.

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

Применение логического анализатора
Самое время разобраться с Logic Analyzer, это хитрое устройство, которое позволяет вам видеть обмен данными между микроконтроллером и трансивером. Я не хочу вдаваться в подробности, но думаю, что это может помочь в дальнейшем.

A7105 использует последовательный SPI-протокол данных. Шина Serial Peripheral Interface использует четыре провода: Chip Select SCS, несколько чипов могут быть на одной шине SPI, но все они имеют разные соединения SCS, чип главного контроллера использует SCS, чтобы сообщить подчиненному чипу, который он хочет использовать для обмена данными. Serial Clock SCK: используется для обеспечения синхронизации времени для обмена данными с фиксированной длительностью для максимумов и минимумов. Data SDIO: это данные, отправляемые микроконтроллером, а GIO1 - это данные от приемопередатчика, отправляемые в ответ, обычно для SPI это 8 бит, формирующие байт.

Используемые здесь условные наименования взяты из спецификации A7105. Шина SPI имеет стандартные имена для линий данных; SDIO - это MOSI - Master Out / Slave In, GIO1 - это MISO - Master In / Slave Out, а SCS - SS - Slave Select. В нашем случае микроконтроллер будет ведущим, а трансивер - ведомым.

Изображение
SPI один ведомый

Логический анализатор отображает данные в форме, которая позволяет видеть логику, здесь мы можем видеть два байта данных:

Изображение
Пример SPI данных.

Микроконтроллер (МК) отправляет данные по линии SDIO и прослушивает ответы на GIO1. Когда МК устанавливает низкий уровень Select SCS, это говорит приемопередатчику, что МК хочет поговорить с ним. МК отправляет командный байт, за которым следует пакетом один или несколько байтов данных. Во время события SCS данные передаются только во время работы тактовой частоты SCK.

Изображение
Данные SPI, двоичные данные из низких и высоких уровней

Мы можем видеть, что логика на SDIO читается каждый раз, когда тактовые импульсы уменьшаются до низкого уровня, спадают, тактовые импульсы на линии SCK представляют собой бит данных, восемь тактов составляют байт. Теперь у нас есть двоичные данные: 00100101 - для удобства это преобразуется в шестнадцатеричный 0x25.
We can see that the logic on the SDIO is read every-time the clock goes low, falling edge, a clock tick on the SCK line represents a bit of data, eight ticks make a byte. We now have our binary data: 00100101 for convenience this is converted into hexadecimal 0x25.

При изучении шины SPI, нужно проверить все доступные таблицы данных, чтобы увидеть, установлены ли тактовые импульсы для падающего или нарастающего фронта, какой порядок битов: самый старший бит - младший бит или младший бит - младший бит, и длину данных (обычно восемь).

Смотрим на трансивер A7105
Изображение
Блок-схема A7105 (более полную версию можно увидеть в спецификации)

Из спецификации A7105 шина SPI настроена следующим образом:
  • для активации SPI необходимо установить низкий уровень на выводе SCS
  • длина данных: 8 бит
  • порядок бит: старший значащий бит (MSB) идёт первым
Я сделал следующие подключения к передатчику. Удобнее всего припаяться к контрольным точкам микроконтроллера (МК).

Изображение
Подключение логического анализатора

В этой таблице показаны контакты ввода / вывода на трансивере и микроконтроллере, соответственно цвета проводов логического анализатора.
A7105   Описание		    Вход/Выход	МК	Цвет провода
11	SCS	3 Wire Chip Select	I	9	жёлтый
12	SCK	3 Wire Clock		I	10	оранжевый
14	SDIO	Чтение/Запись		I/O	12	коричневый
16	GIO1	4 Wire SPI Data Output	I/O	11	красный
17	GIO2	4 Wire SPI Data Output	I/O	13	белый
	GND	Земля					чёрный
		Trigger Out		O	8	серый

Как A7105 обрабатывает данные
Трансивер имеет 2 режима работы, стробирование и управление. Существует восемь строб-команд для управления различными режимами, которые поддерживает чип, они имеют длину четыре бита и всегда начинаются с 1, когда приемопередатчик работает в 8-битном режиме, последние четыре бита игнорируются. Управляющие регистры имеют длину восемь битов и используются для настройки и чтения параметров из трансивера, они имеют длину восемь битов. Первый БИТ всегда равен 0, а второй - 1 для записи и 0 для чтения. В таблице ниже приведены примеры записи, чтения (или, точнее, запроса, приемопередатчик отвечает на GIO1) и команды стробирования, отправленной микроконтроллером.

Изображение

Изучение данных A7105
Обмен данными на SPI происходит в течение двух событий: после включения передатчика и при нажатии спуска затвора камеры или кнопки на устройстве.

Включение
Изображение
Выборка данных SPI при включении, показывающих событие SCS 48, см. спецификацию для получения более подробной информации

Когда вы включаете устройство, микроконтроллер инициализирует приемопередатчик несколькими сотнями байтов данных, я создал эту таблицу из данных SPI, данные hex data across - самое полезное представление для просмотра:

Изображение

В итоге последовательность инициализации состоит из следующего:
  • Микроконтроллер устанавливает большинство регистров управления по умолчанию.
  • Внутренняя калибровка запущена, и микроконтроллер продолжает проверять, пока не закончит.
  • Заключительная очистка.
  • Перевод A7105 в режим ожидания.
Спуск затвора
В последовательности SPI нажатие на спуск затвора состоит из двух отдельных этапов: преамбулы и передачи. Преамбула выводит камеру из режима ожидания и устанавливает канал, по которому она будет передавать. Передача сообщает информацию о готовности камеры и состоянии вспышки.

Преамбула
В начале записи данных я вижу пакет преамбулы, отправленный через SPI:

Изображение
Данные логического анализатора - первые пять байтов пакета преамбулы

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

Изображение

Взяв первый пример, мы можем разбить его на части, чтобы увидеть, что делает каждый байт

Изображение

Трудно понять, что здесь происходит, в соответствии со спецификацией, вы посылаете пакет данных 0xb5 0xf0 для передачи в FIFO Data 0x5и затем следует строб-команда TX mode 0xd0, но то, что передается, не имеет никакого отношения к пакету FIFO.

Нам нужно заглянуть глубже в последовательность инициализации и в спецификацию, у A7105 есть три режима передачи; легкий, сегментный и расширенный. Требуется небольшое расследование, чтобы выяснить, что это такое. Глава 16.4 спецификации показывает нам два регистра, используемые в последовательности инициализации, которую мы должны изучить:

Изображение

В спецификации нет прямого указания, поэтому нам нужно пройти через описание каждого режима, чтобы увидеть, какой из них подходит лучше всего. Сегмент FIFO выглядит хорошо: "В сегменте FIFO длина TX FIFO равна (FEP [7: 0] - PSA [5: 0] + 1). FPM [1: 0] должен быть равен нулю". Итак, наши настройки: (FEP: 0b1 - PSA: 0b0) + 1 = 2. Количество байтов, отправленных нашим пакетом данных FIFO, также равно 2.

Дальнейшее чтение описания "Эта функция очень полезна для кнопочных приложений. В таком случае каждая кнопка используется для передачи фиксированного кода (данных) каждый раз. Во время инициализации каждый фиксированный код записывается в соответствующий сегмент FIFO раз и навсегда. Затем, если кнопка нажата, MCU просто назначает соответствующий сегмент FIFO (PSA [5: 0] и FEP [7: 0]) и выдает строб-команду TX".

Передача
При первоначальном рассмотрении данных, собранных во время нажатия кнопки затвора на выходе триггера (вывод 8 микроконтроллера), мы ясно видим переход из режима готовности камеры и вспышки, как мы видели на осциллографе ранее.

Изображение
Данные логического анализатора

GIO2 показывает зеркало Trigger Out, но изменив масштаб данных, и я вижу, что он следует за сигналом Trigger. Глядя в таблицу инициализации при событии SCS, мы видим, что команда 0xc 0x1 была отправлена для установки функции контакта GIO2. Глядя на таблицу данных, кажется, что он установлен как сигнал "Я передаю", WTR - ждите окончания передачи или приема. Если я установлю низкий уровень на GIO2, соединив его с землей, вспышка не срабатывает, когда я нажимаю на спуск затвора.

Изображение
Данные логического анализатора

Во время записи данных сигнал готовности камеры передавался шесть раз, а сигнал вспышки - тринадцать раз, я уверен, что это зависит от продолжительности времени, в течение которого я нажимал кнопку спуска затвора на камере.

Прошу извинить за незавершённый финал, но у меня не было времени продолжать эту тему дальше.

Ссылки и источники

Не в сети
эксперт
Сообщения: 10367
Стаж 11 лет 6 месяцев

Re: Исследование радиосинхронизатора Yongnuo

Непрочитанное сообщение Impulsite » 2 май 2020, 16:18

Закончен перевод статьи Hacking The Yongnuo Wireless Controller на русский язык.
Ответить

Вернуться в «Языки, на которых общаются вспышки и камеры»