Разработка и производство устройств электронной техники и автоматики. Разработка печатных плат, программного обеспечения, составление технической документации. Сопровождение от техзадания до производства, гарантийное обслуживание. Ремонт электроники.

ГЛАВНАЯ

ОБ АВТОРЕ СТАТЬИ ПРОГРАММЫ ФОРУМ F.A.Q. КОММЕРЦИЯ КОНТАКТЫ

 

 
JPEG-фотокамера. Введение

Дмитрий Дмитренко
ddn.radioliga.com

 

В настоящее время в продаже появилось большое количество устройств, получивших название JPEG-камер. Данные устройства позволяют производить снимки различных объектов, сжимать их в формат JPEG, и моментально передавать данные по каналу UART (микроконтроллерный аналог RS232), RS485 или RS232.
JPEG (произносится «джейпег», англ. Joint Photographic Experts Group, по названию организации-разработчика) — один из популярных графических форматов, применяемый для хранения фотоизображений и подобных им изображений. Файлы, содержащие данные JPEG, обычно имеют расширения (суффиксы) .jpg, .jfif, .jpe или .jpeg. Однако из них .jpg является самым популярным на всех платформах. MIME-типом является image/jpeg.
Первыми «ласточками» (по крайней мере, так было в Украине) такого типа устройств были широко известные камеры С328, С1028. Они использовали собственный протокол приема-передачи данных. В настоящее же время данный протокол (в некоторых источниках обозначаемый как OV528 Protocol) используют подавляющее большинство моделей. Даже если протокол и не указан, в даташите можно его определить самостоятельно: любое слово запроса данных начинается с байта 0хАА.
На рис. 1, 2 приведено изображение одной из JPEG-камер. Нужно сказать, что в данное время производится большое количество подобных камер, автору попалось в руки изделие с маркировкой CCGE-0638 одного, как всегда – неизвестного, китайского производителя. Но, так как большинство устройств имеют практически аналогичные сборку и схему, можно брать предлагаемое устройство как образец.
Как видно, устройство состоит из печатной платы с установленной на нем линзой с CMOS-датчиком, управляемая микросхемой MV3018SOK-G производства mtekvision. Для преобразования изображения в JPEG-формат, и для связи с «внешним миром» используется микроконтроллер STC11L08XE. Далее возможны варианты: производятся камеры, использующие прием-передачу данных в формате UART, RS232, RS485. В зависимости от этого устанавливается соответствующая микросхема преобразователя: MAX232 для RS232, MAX485 для RS485 (или аналогичные китайского производства).

JPEG-камеры. Конструкция
Рисунок 1.

JPEG-камеры. Внешний вид
Рисунок 2.

Перейдем к описанию протокола приема-передачи данных.
Стандартное слово протокола OV528 (назовем его так) состоит из шести символов. Первый символ всегда 0хАА. Для запроса команды от устройства управления к камере (или наоборот) передается посылка, состоящая из символа 0хАА, кода команды, и четырех байт данных (рис. 3).

JPEG-камеры. Запрос данных
Рисунок 3.

Первоначально установленная скорость приема-передачи данных для различных вариантов своя. Для некоторых устройств битрейд значения не имеет, и определяется автоматически при инициализации. Но мне не повезло, моё устройство инициализируется только на скорости 57600. Эту скорость имеется возможность впоследствии, при настройке, переустановить, но начинать следует именно на ней. Для камеры С328 включена функция автоопределения скорости, поэтому она автоматически определяется во всем диапазоне битрейдов, но для камеры С328 начальная скорость приема-передачи равна 14400 бод. Эту особенность следует учитывать при разработке устройств под различные камеры…
Инициализация камеры производится многократной посылкой команды синхронизации 0хАА 0x0D 0x00 0x00 0x00 0x00. По даташиту необходимо послать до пятидесяти таких посылок, до получения ответа устройства. На рисунке 4 показан алгоритм запроса инициализации. После отклика камеры инициализация считается завершенной.

JPEG-камеры. Алгоритм запроса инициализации
Рисунок 4.

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

JPEG-камеры. Основные команды. Команда 01
Рисунок 5.

Далее в таблице приведены все возможные команды JPEG-камеры.

JPEG-камеры. Общая таблица команд

Теперь более подробно. Для наглядности приведем пример. Задача: требуется получить снимок JPEG-качества размером 640х480, размер пакета данных 512 байт, скорость приема-передачи 115200 бод.
После проведения инициализации согласно рис. 4, нужно передать основные параметры (рис. 5). Для нашего случая передается следующая комбинация:

0xAA 0x01 0x00 0x07 0x00 0x07,

где, согласно рис. 5:
байт 4 – установки цвета, у нас это JPEG;
байт 6 – разрешение JPEG, 640х480.

При удачном выполнении устройство выдает ответ:

0xAA 0x0E 0x01 [xx] 0x00 0x00,

где [xx] – любое число. Ответы камеры следуют после каждого запроса, при этом третий байт определяет, на какую команду был дан ответ. В случае ошибки будет дан ответ:

0xAA 0x0F 0x01 [xx] [Код ошибки] 0x00

Коды возможных ошибок представлены в таблице:

JPEG-камеры. Ошибки передачи

Настройка выполнена успешно. Следующим этапом выполняется установка битрейда. Для скорости передачи 115200 бод необходимо подать следующую команду:

0xAA 0x07 0x0F 0x01 0x00 0x00

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

0xAA 0x06 0x08 0x00 0x02 0x00

Здесь четвертый (младший разряд) и пятый (старший) байты и являются размером пакета данных. В нашем случае 0х0200 равно 512 байтам. Если требуется установить формат 64 байта, то следует передать в порт:

0xAA 0x06 0x08 0x04 0x00 0x00

Возможность устанавливать размер пакета данных очень удобен, особенно если для управления камерой применяются микроконтроллеры с малым объемом оперативной памяти.
Теперь переходим непосредственно к получению снимка.
Устанавливаем тип преобразования: с компрессией или без. У нас – с компрессией, поэтому третий байт равен 0х00, для режима без компрессии этот байт устанавливается 0х01:

0xAA 0x05 0x00 0x00 0x00 0x00

Получение результатов снимка:

0xAA 0x04 0x01 0x00 0x00 0x00

Третий байт – тип снимка: съемка (полный формат, 0х01), предпросмотр (0х03) или JPEG-предпросмотр (0х05). В ответ камера передаст две посылки:

0xAA 0x0E 0x04 [xx] 0x00 0x00
0xAA 0x0А 0x01 [А] [B] [C],

где [А] [B] [C] – размер полученного файла в байтах, вычисляется по формуле:

(([C] * 256) + [B]) * 256 + [A]

Всё, все предустановки сделаны, снимок сделан, размер файла известен, осталось только его из камеры «извлечь». Для этого посылаем в порт команду:

0xAA 0x0E 0x00 0x00 0x00 0x00

для получения первой «партии» данных. В ответ придет посылка вида, изображенного на рис. 6.

JPEG-камеры. Формат принимаемых данных
Рисунок 6.

Остановимся подробнее на формате посылки. Как видно, кроме байтов данных присутствуют также специальные данные: 2 байта идентификатора – номера посылки, 2 байта размера посылки, а также 2 байта верификации (проверка корректности принятых данных, вычисляется обычным суммированием всех байт, входящих в посылку). Исходя из этого, становится понятно, что в посылку, состоящую из 512 байт, входит только 506 байт собственно данных снимка.
Допустим, устройство проинформировало, что снимок имеет размер 10000 байт. Можно сразу вычислить, что будет передано (10000/506)=19 полных посылок по 512 байт (506 байт снимка плюс 6 служебных байт), и одна неполная посылка размером 392 байта (386 байт снимка плюс 6 служебных байт).
Для получения от устройства новой «порции» байт необходимо передавать следующую информацию:

0xAA 0x0E 0x00 0x00 [A] [B],

где [A] – младший байт идентификатора (номера посылки), [B] – старший байт идентификатора. то есть для получения посылки с номером 1 необходимо передать

0xAA 0x0E 0x00 0x00 0х01 0х00

а для получения посылки с номером 5:

0xAA 0x0E 0x00 0x00 0х05 0х00

После получения всех посылок передается команда:

0xAA 0x0E 0x00 0x00 0xF0 0xF0

передача данных завершена. Можно использовать полученные данные: сохранять их на диск или иное запоминающее устройство или выводить на дисплей.
Где можно применить JPEG-камеру? Этот вопрос уже не раз обсуждался на просторах интернета. Ввиду своего очень низкого быстродействия кроме как в режиме фотоаппарата это устройство не применимо. В тех же сигнализациях GSM, можно обеспечить, наряду с посылками SMS и дозвоном передачу изображения посредством GPRS, или обычным MMS-сообщением. Кроме того, из-за низкого быстродействия можно использовать для управления камерой не очень «скоростные» микроконтроллеры, и с небольшим объемом оперативной памяти (об этом было сказано выше). В общем, поле деятельности, хоть и небольшое, но есть…
Для проверки работоспособности, да и просто для тестирования и проверки камеры на поддержку тех или иных функций автором еще в 2008-м году была создана утилита Tester C328 (рис. 7).

JPEG-камеры. Программа для проверки JPEG-камер. Главное окно.
Рисунок 7.

Данное программное обеспечение подключается к камере через преобразователи USB>>UART, USB>>RS232, USB>>RS485, RS232>>UART, в зависимости от того, какой протокол использует камера и какие порты имеются в наличии у компьютера. Примерное подключение представлено на рис 8.

JPEG-камеры. Примерное подключение камеры к компьютеру
Рисунок 8.

Теперь о том, как работать с программой.
После установки программы на компьютер и подключения устройств необходимо произвести инициализацию порта, нажав клавишу «Открыть порт». После этого требуется кнопок «Инициализация» произвести инициализацию камеры. Всё, устройство готово к работе. Теперь, оперирую всеми кнопками поля программы, можно установить требуемые параметры камеры, и увидеть их в действии.
Для получения однократного снимка нажимается кнопка «Снимок». Если требуется получить серию снимков, нажимается кнопка «Снимок++», для отключения серии следует нажать данную кнопку повторно. Все снимки, созданные в режиме «Снимок++», сохраняются в папку Snapshot, расположенной в папке с программой.
После приема данных изображение появится в окне программы (рис. 9).

JPEG-камеры. Программное обеспечение для проверки JPEG-камер.
Рисунок 9.

Полученное изображение можно сохранить, нажав кнопку «Сохранить».
На этом вводная часть о JPEG-камере считается завершенной, в следующий раз будет рассказано о том, как подключить к камере микроконтроллер, с сохранением информации на карту памяти.

Ресурсы

http://ddn.radioliga.com – сайт автора
http://ddn.radioliga.com/cnt/36.htm  – страничка программного обеспечения для проверки работоспособ-ности камеры – утилита Tester C328.

 

Что еще почитать

Сигнализация GSM с применением ключей iButton. Версия 2
Бутлоадер для Меги
Проект UART-осциллограф MyOscill
Tester C328. Тестер JPEG-камер.

Лампа освещения салона автомобиля
BU808DFI: так поддельный или настоящий?
Автомобильный цифровой тахометр с автоматическим выбором предела измерения
Сигнализация GSM с применением  ключей iButton
Прибор сигнализации GSM на основе модуля SIM900

SIM900A в SIM900
Температурный «фиксатор»
Устройство управления доступом
Охранная GSM-сигнализация для дома, дачи, гаража

Особенности применения комбинированных измерителей влажности-температуры


 

Комментарии
 
Нам интересно Ваше мнение


Поддержка работы сайта:
Z585211219986 (USD)
E693987287372 (EUR)
R427344352799 (RUR)
U793913124801 (UAH)
B217286195816 (BYR)



©®DDN Research CL, Ukraine
Все права на материалы производства DDN Research (автор - Дмитренко Д.Н.) защищены. Копирование материалов без согласования с Администрацией сайта запрещена. При копировании ссылка на сайт обязательна.

 


Copyright - - DDN Research