У меня есть CMOS-камера, и у нее всего 3 контакта (v+, gnd и видеовыход), видеовыход представляет собой аналоговый сигнал.
Проведя некоторые исследования, я обнаружил, что в этой камере используется PC1089K CMOS-датчик, который имеет цифровой выход и соединение I2C, используемое для связи с последовательной памятью EEPROM (микросхема AT24C16K).
Я обнаружил контакты I2C, и мне нужно знать, Я могу использовать Arduino или Raspberry-pi для получения данных с камеры, чтобы отправлять видеопоток через Xbee.
Как я могу получить данные с камеры с помощью I2C и Arduino или Raspberry-pi 3?
Ответы (1)
Короткий ответ? Точно нет. Практически невозможно отправлять видеоданные через соединение с низкой пропускной способностью (например, I2C) без специального аппаратного компрессора.
Причина? Максимальная тактовая частота I2C составляет 400 кГц. Предположим, что каждый байт отправляется за 10 тактов (это немного больше, так как вам нужно отправить еще и адрес, но все же...). Это означает 40 кБ/с. Допустим, вы кодируете каждый пиксель только одним байтом (ОЧЕНЬ плохо, это настройка 256 цветов, см., например, это изображение). У вас 40к пикселей в секунду. Правильная скорость видео составляет 25 кадров в секунду, но давайте уменьшим до 1 кадра в секунду (вы будете видеть ОДНО изображение каждую секунду, например, когда вы открываете изображение с камеры низкого качества). поэтому каждое изображение имеет размер 40 тыс. пикселей. Имеется ввиду кадр примерно 240х180. Итак, у вас ОЧЕНЬ маленькое изображение (меньше, чем наихудшая настройка изображения на ютубе), с одной картинкой в секунду, всего с 256 цветами, и это лучшее, чего вы можете добиться в лучших условиях... Нет, вы определенно можете 'т.
Кроме того, если вы сомневаетесь, прочтите руководство (или, в области электроники, техническое описание). Вы можете найти его, например, здесь.
Вы можете видеть, что интерфейс I2C помечен как ведущий (это означает, что камера ВЛАДЕЕТ шиной), и, прочитав немного больше, вы обнаружите, что единственное использование для этого — позволить пользователю (или дизайнеру) поместить I2C. EEPROM для предоставления значений инициализации для регистров.
Таким образом, единственный способ получить видео с камеры — через аналоговый порт. Другого интерфейса нет, и вы не можете использовать канал с низкой пропускной способностью (например, I2C или даже XBee) без сжатия.
Теперь, если вам нужно передавать видео по беспроводной сети, я предлагаю вам, в порядке предпочтения,
- Получить Wi-Fi камеру
- Получите Raspicam и Raspberry и поделитесь видео по ссылке Wi-Fi.
- То же, что и выше, но с веб-камерой USB вместо raspicam.
- ...
- ...
- Откажитесь от этого проекта
- ...
- Используйте raspicam или usb, raspberry и Xbee (малина должна сильно сжимать видео, например, с помощью h264 или, если процессор может, h265)
- Используйте датчик cmos, который у вас есть, с периферийным устройством для сбора видео USB и малиной, затем сожмите видео и используйте Wi-Fi или ... Нет, по крайней мере, не xbee.