Проект с камерой от Siemens C65
Предисловие.
На форуме очень часто возникают вопросы и критика, типа: а почему картинка такая мыльная? А где же цвет, камера ведь цветная? А почему в камере нет фокуса? А почему разрешение такое слабое и т.д. и т.п.
Авторам этих сообщений статью можно даже не читать, мой ответ один. Сходите на барахолку, накупите себе всяких фотоаппаратов, мыльниц лсиди телевизоров и всякой хрени, и радуйтесь жизни.
Дальше текст посвящен тем, кто пытается сотворить что то своими руками и головой в целях саморазвития, не взирая на китайский рынок, и не думая, что зачем мне это, типа лучше пойти да купить готовое.
Надеюсь, хоть кто нибудь по достоинству оценит мой труд…. Заранее благодарен…..
Ведущий специалист.
Разработчики электроники всё больше и больше задумываются о том, как бы приспособить камеру от сотового телефона в свой проект. Но полное отсутствие документации отодвигает данные задумки на второй план, делая такие уникальные вещи бесполезными детальками, пылящихся в ящиках до лучших времен. Данная статья поможет прояснить некоторые вопросы по подключению и программированию некоторых камер от разных моделей сотовых телефонов. Также здесь вы увидите конкретный пример по использованию камер от сотовых в реальных устройствах, как образец подключения камеры от сименса С65 к микроконтроллеру ATmega 128.
Почему низкое разрешение?
Проблема сохранения данных видеозахвата. Приведем простейший подсчёт. Пусть мы имеем поток видеосигнала разрешением в среднем 640 на 480 точек с глубиной цвета 256 цветов на точку и стандартной частотой 50 кадров в секунду. Тогда разрешение одного кадра будет равно 307200 точек. Если представить это все в цифровой вид, то при глубине цвета в 256 цветов получится порядком 307 килобайт (1 точка 1 байт). Но не забудем, что мы просчитали всего один кадр, поэтому придется 307200 умножить на 50. В результате получилась страшная сумма 15360000 байт. Нетрудно себе представить, какой процессор должен передвигать 15 мегабайт информации в секунду, да и какие нужны устройства для хранения этого всего в несжатом виде.
Элементная база. В первом пункте мы посчитали, какие объемы нас ожидают, и с какой скоростью нам надо работать. В настоящее время существует множество сигнальных процессоров, 32х разрядных микроконтроллеров, позволяющих обрабатывать огромные массивы информации в реальном времени. Но для освоения этих устройств, требуется немало знаний и времени, которых зачастую нет для решения более простых и обыденных задач.
Технологичность процесса сборки устройства. Детали сейчас делаются как можно меньше, вследствие чего припаять деталь в условиях среднего производства не представляется возможным, а более дешевые детали в доступных корпусах имеют уже не те возможности, которые нам нужны.
Поэтому сделаем вывод: для разработки своих устройств не будем стремиться к супер разрешениям, к супер быстрым процессорам, а будем смотреть на доступные микроконтроллеры типа АVR или Silabs. На данный момент микроконтроллеры AVR имеют максимальную тактовую частоту в 20 мегагерц (Silabs 120MHz) и благодаря своей RISC архитектуре могут выполнять одну команду за один такт процессора.
Пламенный мотор.
Как мы уже договорились, за большими разрешениями гоняться нет смысла. Тому есть несколько причин, с которыми мы ознакомились из главы1.Чем приглянулись avr ы? Во первых доступность, во вторых цена, скорость… Автор не будет расхваливать этот процессор, у него есть и недостатки , которые чуть позже мы выявим. С микроконтроллерами Silabs дело обстоит чуть лучше. Одна только тактовая частота в 120 мегагерц тут же приказывает нам: возьми меня и я решу все твои проблемы. Порадовала также система команд привычного семейства MCS 51 от Intel. Но, обдумав глубже проблемы насущные, автор решил посчитать, что же мы имеем.
Камера со средним разрешением порядка 0.3 мегапиксела для передачи своих данных имеет восьми разрядную шину данных. Но как мы узнаем, когда нам нужно забирать полезный нам байт? Для этого существует отдельный управляющий сигнал, который при появлении нового байта на шине данных устанавливается в единицу.
Так вот, для нормальной передачи видеосигнала частота этого сигнала должна быть минимально 6 мегагерц. Теперь вернемся к нашим процессорам. Давайте опять начнем считать, теперь уже частоту. Если максимальная частота процессора 20 мегагерц, то для сбора данных не остается ничего кроме как взять этот байт с шины данных, и выдать его, допустим в тот же дисплей, перед этим соответственно его настроив. В результате, отработав три команды, мы имеем совсем мало времени, чтобы просто ничего не успеть сделать, и потом гнаться за новым байтом. Кто то сейчас наверное подумал, что AVR вообще не пригоден ни на что в этой отрасли. Да это так, но ведь можно и кадр пропустить, правильно? А можно принимать изображение через строку. В конце концов можно вообще считывать изображение через точку. В конце статьи автор приведет пример с использованием этого микроконтроллера в устройстве с камерой от телефона сименс и выдаче принятого изображения в дисплей от того же телефона. Так что не всё так плохо.
Микроконтроллер Silabs тоже не очень хорош, как его хвалят. Для его тактовой частоты в 120 мегагерц мы имеем по времени около 20 команд, чтобы поплясать, как говорится от печки. К тому же 120 мегагерц используется в самых дорогих контроллерах этой серии. Обычно среднедоступный Silabs контроллер имеет в два раза заниженную частоту. Так что думайте сами, господа.
Проект с камерой от Siemens C65
Поразмыслив с выбором контроллера, я решил взять АТмегу 128. Начав было с меги 162, у меня стал вопрос о запоминании строки. Объясню для чего это нужно. С камеры идет непрерывный поток данных, который синхронизируется сигналами, выходящими опять же с неё. Остановить этот поток программно нельзя. А для того чтобы преобразовать формат данных, выходящий с камеры, нам нужны некоторые вычисления с данными. Ещё нас чуть чуть задерживает дисплей, куда мы все это выводим, так как он имеет последовательный интерфейс. Мега хоть и имеет тактовую частоту 16 – 20 мегагерц, не успевает за камерой, либо нам следует сильно занизить её тактовую частоту. Тактовую частоту камеры занижать я не стал, так как получится уже не камера, а черт знает что. Пришлось подпаивать внешнюю память. Память позволила сохранить кадр целиком в ней, а потом делать с ним все, что угодно. Но опять же стал вопрос о нехватке портов меги. Память забрала у меги 19 выводов. Всего у меги162 32 ножки портов. Остается еще 14 ног, но, увы, дисплей занимает 5 ног (из них 2 вывода порта SPI). С камеры идет 12 выводов,
причем нужен целый 8ми разрядный порт и три ножки прерывания, что никак не согласовывалось с оставшимися выводами микроконтроллера. I2C шина здесь не используется, поэтому она не подключена. Вывод ресет также не подключен, либо его можно подключить на землю.
Схема подключения камеры:
Потратив кучу времени со всякими дешифраторами и всякими согласовывающими микросхемами, я все таки решил использовать мегу 128. Но и это не освободило меня от навешивания внешней памяти, так как у неё всего 4 килобайта оперативной памяти.
Вызвонить контакты по схеме относительно разъема можно тестером по земляным контактам.
Назрела вот такая схема: схема прилагается в формате sch.
Немного слов о микросхеме статической памяти. Я ставил то, что у меня есть. Если возникают трудности в поисках такой, какая на схеме, то советую сходить на сайт терраэлектроники и выбрать микросхему себе по душе. Причем я бы отдал предпочтение 3х вольтовой памяти. Тому есть несколько причин, во первых потребление устройства, что немаловажно. Во вторых, устройство в целом можно запитать от одного источника 3 вольта, что избавит от согласующих резисторов. И еще, у меня стоит память 128килобайт. Используется от неё всего 64 кило, поэтому никто не мешает в целях удешевления устройства приобрести себе микросхему такого объема.
В устройстве применен этот дисплей:
На схеме расположение выводов камеры нарисовано НЕ относительно разъема. Поэтому проявите внимательность при подключении.
Для запоминания нескольких кадров я решил взять микросхему датафлэш AT45DB041B. Мне нравится эта микрушка, хотя бы потому что она имеет согласование по уровням питания. При её питании от 3х вольт, я могу смело подключать её выводы к микроконтроллеру, который имеет питание 5 вольт. Чего кстати не скажешь про дисплей от сименса S65. Пришлось ставить резистивные делители. На камеру через делитель я подавал лишь тактовую частоту. Остальные выходы камеры работают на выход.
С программойя парился долго. Самое трудное было добиться четкой синхронизации по строкам, так как разнилось разрешение дисплея и поток строки камеры. Бесил ещё тот факт, что я не знал полного размера в точках выходного сигнала. В этом случае помог цифровой двухканальный осциллограф. Приходилось попросту считать время длительности строки, и сравнивать затраченное контроллером время.
ВАЖНО!!!
Кстати, при заливке программы необходимо в Fuse bits ВЫКЛЮЧИТЬ интерфейс JTAG. Иначе на камеру пойдет 5 вольт (чуть камеру не пожег), да и программа работать не будет. Также необходимо снять совместимость с мегой 103, что стоит по умолчанию в новенькой меге128. Также ставим Fuse на внешний кварц. Здесь стоит проявить осторожность, так как есть шанс залочить мегу на внешний тактовый сигнал. Если такое все же произошло, соберите какой нибудь генератор на 4 – 8 мегагерц. Для этого подойдет обычная микросхема к561лн1.
С подсветкой экрана даже не думал, поэтому оставляю все как есть. В конце концов тот, кто захочет повторить это устройство сам придумает какой нибудь повышающий преобразователь. Я пробовал спаять dc – dc преобразователь из даташита кранца, но у меня напряжение просаживалось, хотя я применял дроссель больших размеров. Поэтому плюнул на это дело и пока не стал заморачиваться.
Описание получившегося устройства:
После подачи питания устройство переходит в режим вывода непрерывного видео.
У устройства есть 2 кнопки. Menu и Sel. Кнопка Menu позволяет запомнить кадр в память. В этом режиме кнопкой Sel выбираешь место сохранения кадра.
Кнопкой Sel можно просматривать сохраненные кадры по кругу. Нажав в этом режиме кнопку Menu, пользователь возвращается в режим камеры.
В дальнейшем устройство будет дорабатываться. Я хочу ещё добавить в устройство MMC карту, а также подключить радио модуль, который будет позволять передачу видео на расстояние. Также крутится мысль выводить запомненный кадр на экран телевизора в обычном видео формате. Есть даже некоторые подборки софта, и ресурсы, где народ страдает этим. Осложняется дело тем, что нужно выводить градации яркости, а это ломает, потому как на выходе SPI канала надо ставить резистивный цап (неохота считать сопротивления).
Сейчас собираю средства на эти самые радио модули. Поэтому проект пока прикрываю до лучших идей.
Ведущий специалист.