Freewaygrp.ru

Строительный журнал
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как подключить камеру к микроконтроллеру

roboforum.ru

Технический форум по робототехнике.

  • Список форумовМастерскаяМикроконтроллеры
  • Изменить размер шрифта
  • Версия для печати
  • Магазин
  • Правила
  • Wiki
  • FAQ
  • Регистрация
  • Вход

камера для микроконтроллера

камера для микроконтроллера

Andrey » 26 ноя 2010, 21:37

Re: камера для микроконтроллера

EdGull » 26 ноя 2010, 21:39

Re: камера для микроконтроллера

Andrey » 26 ноя 2010, 21:53

ну тут всё от fps зависит я планирую примерно 5 6 fps!

Добавлено спустя 12 минут 40 секунд:
В принципе если честно то мне пока трудно оценить производительность, да и быстродействие сильно не нужно!

Re: камера для микроконтроллера

EdGull » 26 ноя 2010, 22:01

Re: камера для микроконтроллера

Andrey » 26 ноя 2010, 23:34

Вот в том и вопрос, очевидно что камера (я хочу подыскать что нить типо микросборки) должна иметь свой буффер захвата, либо рабоать через скоростной интерфейс USB точно хватит+встроенный в микроконтроллер DMA. Предположим что камера 256 цветовой палитры, тогда 640*480*1байт=300КБ для моих целей подойдёт на самом деле и 1 кадр в секунду, имеем что нужен интерфейс со скоростью 2.4 мегабит, я думаю что SPI справиться!

Добавлено спустя 53 минуты 48 секунд:
А вообще реально ли использовать камеру от сотового телефона.

Re: камера для микроконтроллера

yak-40 » 26 ноя 2010, 23:39

Re: камера для микроконтроллера

Andrey » 26 ноя 2010, 23:43

Re: камера для микроконтроллера

yak-40 » 26 ноя 2010, 23:57

Re: камера для микроконтроллера

Andrey » 27 ноя 2010, 00:08

Re: камера для микроконтроллера

EIN_ENGEL » 27 ноя 2010, 00:09

сенсор OV7725 управление по И2С, данные по параллельной шине.
осталась одна лишняя от проекта.

Re: камера для микроконтроллера

Michael_K » 27 ноя 2010, 00:11

Re: камера для микроконтроллера

Andrey » 27 ноя 2010, 00:54

Интересная вешч «OV7725»!!
Это что за зверь и можно ли его купить и где.
Или это только в единственном эксклюзивном вариант??
я правильно понят что данный модуль 0.3 мегапиксела. погуглив я так и не нашёл ничего вразумительного по поводу протокола и интерфейса если у вас есть проект поделитесь пожалуйста куском работы с камерой если не сложно! Заранее спасибо!!

Добавлено спустя 32 минуты 47 секунд:

Re: камера для микроконтроллера

AndreiSk » 27 ноя 2010, 01:29

Re: камера для микроконтроллера

EIN_ENGEL » 27 ноя 2010, 02:42

Andrey писал(а): Интересная вешч «OV7725»!!
Это что за зверь и можно ли его купить и где.
Или это только в единственном эксклюзивном вариант??
я правильно понят что данный модуль 0.3 мегапиксела. погуглив я так и не нашёл ничего вразумительного по поводу протокола и интерфейса если у вас есть проект поделитесь пожалуйста куском работы с камерой если не сложно! Заранее спасибо!!

Добавлено спустя 32 минуты 47 секунд:

Заказывали их где-то в инете. Не, не единственная. Если интересует, спрошу, может будем ещё заказывать.
Я с ней ковырялся только на аппаратном уровне. Собрал такую штуку, проверил ответ камеры по И2С и работу шины данных осциллографом. Дальше я ей уже не занимался.

У меня есть проект на С в Кодевижине под ХМегуА3.
Там инициализация контроллера, интерфейса И2С и тестовый опрос нескольких регистров.
Есть ещё куски кода, найденные в инете — какой-то проект с похожим сенсором, но там всё программно сделано, все интерфейсы. И карта регистров.

Да, ещё схематик, могу дать, если надо.

Re: камера для микроконтроллера

Doniak » 27 ноя 2010, 20:16

Видеокамера на ESP32.

В этой статье речь пойдет об интересной плате на базе микроконтроллера ESP32. Плата называется ESP32-cam, она необычна тем, что на борту нее есть 2х мегапиксельная камера OV2640. Данную плату можно купить тут: http://ali.pub/3f04uj

Также понадобится usb/ttl преобразователь: http://ali.pub/3f156r

Обычно мощностей микроконтроллера не хватает для того чтоб обрабатывать видео поток. Но данная плата настолько мощная, что вполне себе тянет потоковое видео. Вот краткая табличка сравнения контроллеров ESP32 и ESP8266:

Как видно из таблички ESP32 на голову выше своего младшего брата ESP8266.

Чтож давайте посмотрим теперь, что же можно сделать с камерой. Если вы установили плату ESP32 в программе arduino ide допустим по моей инструкции, То в стандартных примерах Файл -> примеры -> ESP32 -> camera -> CameraWebServer

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

Во первых нужно закоментировать одну камеру и раскоментировать другую:

Далее нам нужно ввести SSID нашей wi-fi сети и пароль от нее:

Так как в модуле ESP32-cam нет гнезда под usb кабель, прошивать ее будем через usb/ttl адаптер. Вот схема подключения:

Обратите внимание, что для прошивки обязательно нужно замкнуть контакт IO0 и GND. Это обязательно иначе не зальется прошивка в ESP32. Также для заливки нужно выбрать плату “ESP32 Wrover Module” и Partition Scheme: ” Huge App (3MB no OTA)” . После того как вы все сделали так как я описал, скетч должен залиться без ошибок.

После заливки скетча нужно обязательно убрать перемычку IO0 и GND иначе ESP32 не загрузится в нормальном режиме. Итак включает плату и открываем монитор порта в программе Arduino ide. В мониторе порта должен показаться ip адрес устройства если ESP32 подключилась к wi-fi сети. Выглядит это так:

После этого вводим в браузер данный ip адрес и видим непосредственно настройки камеры и изображение с нее

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

Давайте теперь уберем все лишнее, оставим только воспроизведение видео с камеры, сделаем для нее корпус. И получим самодельную камеру для видеонаблюдения.

Сначала отредактируем скетч, я это конечно же уже сделал, теперь он выглядит так:

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

Как видим нет ничего лишнего просто изображение с довольно хорошим разрешением.

Чтож с выводом изображения разобрались, теперь нужно что-то придумать с корпусом. На ум пришла идея купить с Aliexpress муляж камеры и вмонтировать ее туда. Сама камера выглядит вот таким образом, от оригинала не отличить, только внутри пусто:

Разбирается камера без усилий, нужно открутить только 3 самореза. Так выглядит разобранный корпус:

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

Я нашел блок питания 5В поэтому никаких dc-dc преобразователей ненужно. Так выглядит камера в сборе:

Ну и вот изображение с камеры уже из корпуса :

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

Также я все это дело снял на видео и рассказал в нем.

STM32

STM32 — семейство 32-битных микроконтроллеров производства STMicroelectronics. Чипы STM32 группируются в серии, в рамках каждой из которых используется одно и то же 32-битное ядро ARM, например, Cortex-M7F, Cortex-M4F, Cortex-M3, Cortex-M0+ или Cortex-M0. Каждый микроконтроллер состоит из ядра процессора, статической RAM-памяти, флеш-памяти, отладочного и различных периферийных интерфейсов.

Содержание

  • 1 Обзор
  • 2 Серии STM32
    • 2.1 STM32 H7
    • 2.2 STM32 F7
    • 2.3 STM32 F4
      • 2.3.1 Память
      • 2.3.2 Периферия
    • 2.4 STM32 F3
      • 2.4.1 Память
      • 2.4.2 Периферия
  • 3 Примечания
  • 4 Ссылки

Обзор [ править | править код ]

STM32 — семейство микроконтроллеров, основанных на 32-битных ядрах ARM Cortex-M7F, Cortex-M4F, Cortex-M3, Cortex-M0+ или Cortex-M0 с сокращённым набором инструкций. STMicroelectronics (ST) имеет лицензию на IP-процессоры ARM от ARM Holdings. Дизайн ядра ARM имеет множество настраиваемых опций, и ST выбирает индивидуальную конфигурацию для каждого микроконтроллера, при этом добавляя свои собственные периферийные устройства к ядру микроконтроллера перед преобразованием дизайна в полупроводниковую пластину. В следующей таблице представлены основные серии микроконтроллеров семейства STM32.

Серия STM32 Ядро ARM CPU
L5 Cortex-M33
F7, H7 Cortex-M7F
F4, F3, L4, J Cortex-M4F
F2, F1, L1, W, J Cortex-M3
L0, J Cortex-M0+
F0, J Cortex-M0

Серии STM32 [ править | править код ]

Семейство микроконтроллеров STM32 состоит из 16 серий микроконтроллеров: F0, F1, F2, F3, F4, F7, L0, L1, L4, L4+, L5, G0, G4, H7, WB, WL [1] . Каждая из серий базируется на одном из ядер ARM: Cortex-M33, Cortex-M7F, Cortex-M4F, Cortex-M3, Cortex-M0+, Cortex-M0.

Производитель делит все серии микроконтроллеров STM32 на 4 платформы (группы):

Платформы STM32
Платформа микроконтроллеров Названия серий, входящих в группу
Высокопроизводительные [2] F2, F4, F7, H7
Широкого применения [3] F0, G0, F1, F3, G4
Сверхнизкого потребления [4] L0, L1, L4, L4+, L5
Беспроводные [5] WB, WL
Высокопроизводительные микроконтроллеры STM32
Название серии Ядро ARM Максимальная частота ядра, МГц CoreMark Объем Flash памяти (кБайт) Объем RAM (кБайт) Особенности
F2 [6] Cortex-M3 120 398 128-1024 до 128 ART ускоритель, Ethernet MAC, USB 2.0 HS OTG, camera interface, hardware encryption support and external memory interface
F4 [7] Cortex-M4F 180 608 64-2056 до 384 Chrom-ART Accelerator™, dual Quad-SPI, SDRAM interface, Ethernet MAC, camera interface
F7 [8] Cortex-M7F 216 1082 64-2056 256-512 AXI and multi-AHB шины, L1 кэш, Double precision FPU (в некоторых моделях), Chrom-ART ускоритель (в некоторых моделях). Серия F7 pin-to-pin совместима с серий F4.
H7 [9] Cortex-M7F, Cortex-M4F (Dual-core line) 480, 240 3224 128 — 2048 до 1,4 МБайт TFT-LCD, JPEG codec, Ethernet, Chrom-GRC™, optional embedded SMPS, dual Octo-SPI with on-the-fly decryption
Cortex-M7F(Single-core line) 480
Микроконтроллеры STM32 широкого применения
Название серии Ядро ARM Максимальная частота ядра, МГц CoreMark Объем Flash памяти (кБайт) Объем RAM (кБайт) Особенности
F0 [10] Cortex-M0 48 106 16 — 256 4 — 32 Для приложений, чувствительных к цене микроконтроллера
G0 [11] Cortex-M0+ 64 142 16 — 512 до 128 Для приложений, чувствительных к цене микроконтроллера
F1 [12] Cortex-M3 72 117 16 — 1024 4 — 96 Ethernet MAC, CAN and USB 2.0 OTG, motor control
F3 [13] Cortex-M4F 72 245 16 — 512 16 — 80 Серия микроконтроллеров для смешанных сигналов, содержит на кристалле богатый набор компараторов, операционных усилителей, дельта-сигма АЦП, АЦП последовательного приближения и т. д.
G4 [14] Cortex-M4F 170 550 32 — 512 до 32 Серия микроконтроллеров для смешанных сигналов, содержит на кристалле богатый набор компараторов, операционных усилителей, дельта-сигма АЦП, АЦП последовательного приближения и т. д.
Микроконтроллеры STM32 сверхнизкого потребления
Название серии Ядро ARM Максимальная частота ядра, МГц CoreMark Объем Flash памяти (кБайт) Объем RAM (кБайт) Особенности
L0 [15] Cortex-M0+ 32 75 до 192 до 20 Динамическое потребление тока (минимальное): 49 µA/MHz (при использовании внешнего DC/DC конвертера) и 76 µA/MHz (при использовании LDO)
L1 [16] Cortex-M3 32 93 32 — 512 4 — 80 Динамическое потребление тока (минимальное): 177 μA/MHz
L4 [17] Cortex-M4F 80 273 64 — 1024 40 — 320 Динамическое потребление тока (минимальное): 28 μA/MHz
L4+ [18] Cortex-M4F 120 409 512 — 2048 320 — 640 Динамическое потребление тока (минимальное): 41 μA/MHz
L5 [19] Cortex-M33 110 442 256 — 512 256 Динамическое потребление тока (минимальное): 62 µA/MHz
Беспроводные микроконтроллеры STM32
Название серии Ядро ARM Максимальная частота ядра, МГц CoreMark Объем Flash памяти (кБайт) Объем RAM (кБайт) Особенности
WB [20] Cortex-M4F, Cortex-M0+ 64, 32 216 256 — 1024 до 256 Встроенный радиотрансивер, поддерживающий протоколы Bluetooth ® LE, Zigbee ® and Thread ®
WL [21] Cortex-M4 48 161 до 256 до 64 Встроенный радиотрансивер, поддерживающий sub-GHz radio: модуляции — LoRa ® , (G)FSK, (G)MSK, BPSK

STM32 H7 [ править | править код ]

В серию H7 входят высокопроизводительные микроконтроллеры, основанные на ядре ARM Cortex-M7F с поддержкой чисел с плавающей запятой двойной точности и тактовой частотой до 550 МГц. У микроконтроллеров STM32H747/757 и STM32H745/755 дополнительно имеется ядро Cortex-M4F частотой до 240 МГц. Ядро M7F в таком случае работает на частоте до 480 МГц. Ядра при этом могут работать как совместно, так и независимо [9] .

STM32 F7 [ править | править код ]

Серия F7 представлена микроконтроллерами на базе ядра ARM Cortex-M7F частотой до 216 МГц. По расположению портов ввода/вывода большинство микроконтроллеров серии взаимозаменяемы с контроллерами серии STM32 F4 [8] .

STM32 F4 [ править | править код ]

STM32 F4 — первая серия, основанная на ядре ARM Cortex-M4F и имеющая поддержку DSP и чисел с плавающей запятой. Расположение портов ввода/вывода совместимо с серией F7, а сам чип отличается большей тактовой частотой (от 84 до 180 МГц), имеет 64 КБ встроенной памяти, поддержку протокола I²S, встроенные часы реального времени и более быстрый АЦП.

Память [ править | править код ]
  • До 192 КБ SRAM, 64 КБ CCM, 4 КБ NVRAM, 80 байт NVRAM, стираемой при вмешательстве.
  • Flash-память разделяется на блоки 512 / 1024 / 2048 для непосредственного использования, 30 КБ для загрузки, 512 байт одноразовой памяти (OTP), 16 байт для конфигурации.
  • В каждый чип запрограммирован 96-битный уникальный номер.
Периферия [ править | править код ]
  • USB 2.0 OTG две CAN-шины один интерфейс SPI + два SPI/I²S, 3 I²S, 4 USART, 2 UART, SDIO, двенадцать 16-битных, два 32-битных и два сторожевых таймера, датчик температуры, 16/24-канальный АЦП, два ЦАП, от 51 до 140 пинов GPIO, 16 DMA, часы реального времени, а также аппаратный генератор случайных чисел,
  • В моделях STM32F4x7 присутствует Ethernet, MAC и интерфейс для подключения камеры.
  • В моделях STM32F41x/43x присутствует криптопроцессор, поддерживающий методы DES, TDES и AES, а также SHA-1 и MD5.
  • В моделях STM32F4x9 присутствует LCD-TFT контроллер.
  • Рабочее напряжение находится в диапазоне от 1,8 до 3,6 вольт.

STM32 F3 [ править | править код ]

В серии F3 представлены контроллеры на базе ядра M4F с тактовой частотой до 72 МГц. Все контроллеры данной серии совместимы с контроллерами серии F1.

STM32F4Discovery – подключаем камеру по интерфейсу DCMI

STM32F4Discovery – подключаем камеру по интерфейсу DCMI

Когда-то, подключая камеру от мобильного телефона к микроконтроллеру STM32F407VGT6 (который имеет место быть на плате STM32F4Discovery), я даже не думал о том, что данный контроллер имеет специальный аппаратный интерфейс для данного дела. Может быть, невнимательно читал даташит, но я всегда считал, что интерфейс DCMI имеется только у чипов в корпусах UFBGA176 и LQFP от 144 ног. Однако, не так давно, открыл для себя озвученную деталь: 100-ногий STM32F407 также имеет DCMI на борту.
Являясь большим любителем изучения и совместного запуска различного мобильного железа (в частности, LCD и камер) с МК, мимо такого открытия я просто так пройти не смог, и решил восполнить данный пробел в изучении периферии STM32. Собственно, данный материал и посвящен описанию осуществления возникшей затеи.

Совсем немножко теории.

Прежде всего, нужно представлять, о чем идет речь – а точнее, что такое CMOS-камера, и с чем ее едят.
Данный вид камер осуществляет вывод информации с сенсора в цифровом виде: RGB, YCbCr, а также в сжатом виде – JPEG. У различных камер имеются свои нюансы в плане возможностей, я буду рассматривать вполне конкретный случай камеры с небольшим разрешением (VGA, 640×480), вытащенной мною в незапамятные времена из телефона «Siemens C72» (сенсор PixelPlus PO2030N). Данная камера является наиболее подходящей для изучения в виду простоты функционирования и принадлежности к типу более-менее распространенному. Давным-давно я вытравил для нее небольшую плату (для большего удобства подключения) – со стабилизатором на 2.8 В и подтягивающими резисторами на шине I2C. Вот она (шлейф и разъем камеры скрыты под кожухом).

Кроме нюансов в области формата данных, камеры также могут отличаться в области количества выводов синхронизации. У большинства (по моему мнению) сенсоров в наличии имеются специальные выводы строчной и кадровой синхронизации; но есть камеры, имеющие только лишь вывод строба пикселя, а о начале новой строки/кадра они дают знать с помощью специальных передаваемых кодов (к примеру, 0x00 или 0xFF). Камера, что есть у меня в наличии, имеет выводы внешней синхронизации.
Можно прикинуть примерное схематическое изображение камеры в виде блока.

По большей части CMOS-камеры управляются по интерфейсу I2C (хотя я встречал устройства, управляющиеся и по UART). По I2C производится настройка различных параметров, таких как: разрешение, цветовая гамма, формат данных на выходе, и т.д.
Вывод EXTCLK – тактирование камеры, которым нужно обеспечить ее извне. DCLK – строб-сигнал, по переднему или заднему фронту которого на шине данных камеры фиксируются данные (к примеру, байт данных одного пикселя матрицы, либо байт данных «полупикселя», если камера работает в режиме RGB565). HSYNC – сигнал горизонтальной синхронизации, свидетельствующий о начале новой строки, а VSYNC – сигнал синхронизации, активный уровень которого указывает на начало нового кадра. Выводы D0..D7 – шина данных; как правило, у подобных камер она восьмиразрядная.
Теперь подробнее о сигналах синхронизации.

На графиках видно, что камера настроена на активность сигнала DCLK только в активную фазу HSYNC (а именно эта фаза нас и интересует, тактовый сигнал в период «перевода строки» нам не интересен). Если камера настроена на разрешение 320×240, то в период каждого импульса HSYNC укладывается 320 импульсов DCLK, а в период VSYNC – 240 HSYNC.
При увеличении масштаба, видим, что творится на шине данных.

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

В теории все более-менее понятно, теперь об интерфейсе DCMI микроконтроллера STM32.

Интерфейс DCMI способен работать с шиной данных шириной до 14 разрядов, поддерживает как аппаратную, так и программную синхронизацию, а также форматы данных: YCbCr, RGB и JPEG.
Кроме того, DCMI содержит буфер FIFO, имеет возможность настройки прерываний (в том числе и по заполнению регистра данных) и настройки работы через DMA.

Прерывания от DCMI могут вызываться при наступлении следующих условий: окончание линии, окончание кадра, переполнение приемного буфера, обнаружение ошибки синхронизации (при внутренней синхронизации).
В некоторое недоумение меня ввело отсутствие специального вывода тактирования камеры. Я не знаю, по каким причинам разработчики из SGS Microelectronics от него отказались, но по мне, было бы весьма удобно иметь, к примеру, настраиваемый источник тактовой частоты.
Лично я задействовал таймер-счетчик общего назначения, включенный в режиме ШИМ на генерацию меандра частотой 4 МГц. Большого FPS, конечно, с такой тактовой не получить, но сразу оговорюсь – дисплей, который я использую, подключен не к FSMC, поэтому самая длительная функция во всей цепи – функция вывода на LCD, следовательно, при бОльшей частоте происходит срыв вывода изображения на экран. Посему перед выгрузкой я глушу таймер, а после нее – включаю таймер снова.
Аппаратный модуль DCMI содержит, кроме регистра данных, десять регистров управления/статуса. Это: регистр управления (DCMI_CR), регистр состояния (DCMI_SR), регистр состояния прерываний (DCMI_RIS), регистр разрешения прерываний (DCMI_IER), регистр маски прерываний (DCMI_MIS), регистр сброса флагов прерываний (DCMI_ICR), регистр кодов внутренней синхронизации (DCMI_ESCR), регистр сброса маски кодов внутренней синхронизации (DCMI_ESUR), регистр стартовых значений при захвате части кадра (DCMI_CWSTRT) и регистр величины фрагмента кадра в режиме CropWindow (DCMI_CWSIZE). И, само собой, регистр данных – DCMI_DR.
В данном случае регистры, относящиеся к захвату части кадра и внутренней синхронизации нас не интересуют. Прерывания я тоже решил пока оставить в покое, поэтому рассмотреть подробнее стоит только регистр управления DCMI_CR и регистр состояния DCMI_SR.

Регистр управления дает нам возможность полностью настроить формат взаимодействия с камерой: размер шины данных, активные уровни линий HSYNC и VSYNC, и т.д.

По порядку. Бит ENABLE – само собой разумеется, включение интерфейса в работу. Поле EDM (extended data mode) – размер шины данных; шина у моей камеры восьмиразрядная, так что это поле следует установить в значение «00». Поле FCRC (frame capture rate control) дает возможность немного регулировать FPC: 00 – захватываются все приходящие кадры, 01 – каждый второй кадр, 10 – каждый четвертый. Биты VSPOL и HSPOL – активные уровни линий кадровой и строчной синхронизации. Активные уровни игнорируются, и данные в периоды активности не захватываются, это следует учитывать. PCKPOL – бит активного уровня строба пикселя – по какому фронту сигнала считывать данные с шины: переднему, или заднему. ESS – бит выбора способа синхронизации: внешняя, либо внутренняя. JPEG – выбор формата приходящих данных – сжатый, или нет. CROP – бит выбора захвата фрагмента кадра (crop window). Если данный бит установить в единицу, то интерфейс будет захватывать данные в окне, определяемом значениями в регистрах DCMI_CWSTRT и DCMI_CWSIZE.

Итак, настраиваем.

Так как я привык использовать стандартную библиотеку периферии от ST (хотя в первых итерациях работы с новой периферией никогда ее не использую, пока не поковыряюсь в регистрах «ручками»), настройку привожу именно с использованием библиотеки.

Собственно, для моих нужд можно было не трогать ни одного бита в регистре DCMI_CR – по умолчанию они сброшены – кроме битов CAPTURE и ENABLE.
Интерфейс сконфигурирован и готов к работе. После подачи тактового сигнала камере, интерфейс начнет принимать данные, которые нам необходимо обрабатывать.
Задачу для начала я поставил перед собой максимально простую – выводить изображение на дисплей, так что и обработка данных будет минимальной.
В своевременном считывании данных из приемного буфера нам поможет статусный регистр DCMI_SR.

Для чтения доступно весьма скудное количество битов – всего три. Биты HSYNC и VSYNC сигнализируют о состоянии соответствующих линий: активная фаза, либо перевод строки; самым интересным является бит FNE. Он указывает нам на заполнение буфера данными. Или на не заполнение.
Проверяя в постоянном цикле состояние бита FNE в DCMI_SR, узнаем о приходе данных в приемный тридцатидвухразрядный буфер. В моем случае данные будут располагаться так:

При установке бита FNE в регистре состояния DCMI_SR в приемном буфере будут содержаться четыре байта, данные двух соседних пикселей: Byte0 и Byte1 – 16 разрядов пикселя n, а Byte2 и Byte3 – 16 разрядов пикселя n+1. Мне останется только их объединить и отправить для отображения на дисплей. Итак, вот каким образом выглядит основной цикл:

То есть, я жду установки бита FNE в регистре состояния DCMI_SR, а после – в два захода выгружаю по 16 бит данных на дисплей.
На этом моменте хотелось бы подойти к логическому завершению, но не тут-то было.
После прошивки и перезапуска МК на дисплее я увидел… нет, я увидел вполне себе знакомую собственную физию, но в черно-синих оттенках. Красный и зеленый цвета отсутствовали напрочь.
После недолгих разборок с дебагером было обнаружено следующее: регистр данных интерфейса содержал лишь 16 бит данных одного пикселя, причем младшие 8 бит располагались на месте Byte0 (см. рис. выше), а старшие – на месте Byte2. Пространства Byte1 и Byte3 же были пусты. До сих пор я не понял, откуда такое несоответствие документации действительности, и, возможно, обращусь в STM.
В итоге удалось получить изображение с камеры с помощью интерфейса DCMI, хотя и не без некоторых сложностей. На рисунке привожу фотографию дисплея, на который выводилось изображение демо-борды STM32F3Discovery с моей камеры.

А вот что увидим на выводах EXTCLK, PIXCK, HSYNC и VSYNC, если подключить логический анализатор.

Всё выглядит именно так, как и ожидалось: 240 импульсов HSYNC укладывается в длительность одного VSYNC, 320 PIXCK – в одном HSYNC. В активную фазу HSYNC камера не выдает сигналов PIXCK – именно так, как она была настроена.
Вообще говоря, интерфейс меня несколько разочаровал. Отсутствие «штатной» ноги тактирования камеры, отсутствие мало-мальски интересных встроенных фишек (а как насчет аппаратного кодера JPEG?), да еще и танцы с бубном вокруг располовиненного FIFO
Организуя работу с камерой на прерываниях PIXCK, HSYNC и VSYNC я не имел столько головняка, сколько поимел, работая с камерой с помощью аппаратного DCMI.
Тем не менее, в ближайшее время буду пробовать осуществлять захват кадра, сжатие оного в JPEG, и пробовать писать картинку на SD карту.
PS. На всякий случай даю ссылку на проект для «Code::Blocks» — вдруг пригодится кому.

Подключение IP камеры к смартфону на Android

Видеонаблюдение — инструмент контроля и защиты имущества, личного или корпоративного. На объектах различного назначения устанавливают камеры, выбирая функциональность и сложность комплекса в зависимости от задач, имеющегося бюджета. Покупка, установка и настройка оборудования — дорогостоящие мероприятия. Для крупных торговых центров или банков такие вложения оправданы, в то время как для мелких офисов или частных домовладений — не всегда. В таких случаях есть рациональное решение — использование камеры через смартфон с ОС Android. Это способ разумной экономии. Для удаленного наблюдения за объектом подойдет практически любое мобильное устройство Android с камерой и возможностью установки приложений.

Когда это целесообразно?

Отметим несколько распространенных сценариев, при которых уместно использовать видеонаблюдение на Андроид через интернет:

  • контроль за ребенком — подключение камеры смартфона в детской комнате;
  • мониторинг квартиры/дома в период вашего отпуска;
  • отслеживание происходящего в рабочем кабинете и т.д.
  • использование “бесполезного” старого телефона для полезного видеонаблюдения.

Что нужно для запуска наблюдения?

Использование IP-камеры через смартфон возможно при помощи приложения IP Webcam для ОС Android. IP Webcam позволяет транслировать видео с камеры вашего устройства через Ivideon. Здесь вы можете скачать приложение для смартфона под управлением ОС Android.

Поддерживает ли мое устройство вещание через Ivideon?

IP Webcam может транслировать видео через Ivideon на большинстве устройств с Android. Требования к операционной системе — версия 4.1 и выше. Чтобы убедиться, что ваш смартфон подходит работы с Ivideon, сделайте следующее:

  1. Запустите приложение.
  2. Выберите пункт «Вещание через Интернет».
  3. Нажмите «Проверить совместимость».

Приложение сообщит вам о совместимости IP-камеры из телефона с Ivideon.

Как это работает?

Запустите приложение, выберите пункт «Вещание через Интернет» и нажмите «Включить Интернет-вещание». Введите свои учетные данные или создайте новый аккаунт. Для регистрации потребуется ввести адрес электронной почты и пароль, принять условия обслуживания и ознакомиться с политикой конфиденциальности. Также можно подписаться на рассылку информации о промо-акциях и новых функциях приложения.

Теперь вернитесь в главное меню приложения и нажмите «Запустить». Камера уже будет привязана к вашему личному кабинету. Теперь можно смотреть живое видео с IP-камеры из телефона.

Внимание! На данный момент на аккаунтах с актуальной тарифной линейкой отсутствует возможность бесплатного использования сторонних камер (в том числе и IP Webcam). Для того, чтобы получить доступ к живому видео с камеры, потребуется подключить один из платных тарифных планов.

Для активации тарифа зайдите в свой личный кабинет. Вам предложат настроить новую камеру. После подтверждения откроется вкладка «Мои услуги», где нужно выбрать тарифный план. Выбрали? Готово, теперь можно смотреть живое видео со встроенной камеры вашего мобильного устройства.

Могу ли я сохранять видеозаписи?

Да, можете. Для этого нужно выбрать тарифный план с возможностью записи архива в облако. Подробнее о тарифах можно узнать здесь. Архив записывается в облако только в случае регистрации камерой движения или звука, т.е. вам необходимо включить датчики. Для этого откройте главное меню приложения и в разделе «Датчики движения и звука» выберите пункты «Включить датчик движения» и/или «Включить датчик звука».

Готово, теперь видео с вашей камеры записывается в облачное хранилище. Вы можете просматривать эти записи через личный кабинет или приложение Ivideon Ivideon, а также экспортировать эти записи на ваш компьютер и сохранять на любых носителях.

Могу ли я получать уведомления о событиях?

Да, вы можете получать уведомления о движении, звуке, включении и выключении устройства с камерой. Для получения уведомлений о движении и звуке включите соответствующие датчики в разделе “Датчики движения и звука”.

Работает ли приложение в фоновом режиме?

Да, работает. Для этого в окне просмотра живого видео нажмите «Действия…» и выберите пункт «Работать в фоновом режиме», либо просто сверните приложение.

Возможен ли автоматический запуск приложения?

Да, для запуска приложения при включении телефона установите флаг «Запуск при загрузке» в главном меню приложения. Теперь при перезапуске смартфона приложение будет открываться автоматически.

Какие параметры видео оптимальны для трансляции через Интернет?

Разрешение – не более 1280*720, битрейт – не более 1200 Кбит/с. Выставить их можно в разделе «Настройка видео».

Насколько быстро разряжается устройство при работе приложения?

Энергия расходуется довольно быстро. Для долговременной работы устройства с запущенным приложением рекомендуется постоянно заряжать устройство от розетки при помощи зарядного устройства с силой тока не менее 1А. Для уменьшения энергопотребления откройте раздел «Управление питанием» и снимите флаг «Не выключать экран».

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector
Яндекс.Метрика