如何使用 I2C 和 Arduino 或 Raspberry-pi 3 从相机获取数据?

问题描述 投票:0回答:2

我有一个 CMOS 摄像头,它只有 3 个引脚(v+、gnd 和视频输出),视频输出是模拟信号。
经过一些研究,我发现这款相机使用PC1089K CMOS传感器,它具有数字输出和用于与串行EEPROM存储器(AT24C16K芯片)通信的I2C连接。
我找到了 I2C 引脚,我需要知道是否可以使用 Arduino 或 Raspberry-pi 从摄像头获取数据,以便我可以通过 Xbee 发送视频流。

arduino raspberry-pi video-streaming i2c
2个回答
6
投票

简答?绝对不是。如果没有专用的硬件压缩器,实际上不可能通过低带宽连接(如 I2C)发送视频数据。

原因是什么? I2C 最大时钟速度为 400kHz。假设每个字节在 10 个时钟周期内发送(这有点多,因为您还必须发送地址,但无论如何......)。这意味着 40kB/s。假设您仅使用一个字节对每个像素进行编码(非常差,它是 256 色设置,请参见例如此图像)。每秒有 40k 像素。正确的视频速度是每秒 25 帧,但让我们降低到每秒 1 帧(您每秒会看到一张图像,就像您打开低质量凸轮视图时一样)。所以每张图像都是 40k 像素。这意味着帧大小约为 240x180。因此,您的视图非常小(比 youtube 中最差的图像设置还要小),每秒一张图片,只有 256 种颜色,这是您在最佳条件下可以实现的最佳效果...好吧,不,您绝对可以

此外,当您有疑问时,请阅读手册(或在电子领域,阅读数据表)。例如,您可以在here找到它。

您可以看到 I2C 接口被标记为主接口(这意味着相机拥有总线),并且,多读一点,您会发现它的唯一用途是允许用户(或设计人员)放置一个I2C EEPROM 为寄存器提供初始化值。

因此,从相机获取视频的唯一方法是通过模拟端口。没有其他接口,您也不能在不进行压缩的情况下使用低带宽通道(如 I2C 甚至 XBee 通道)。

现在,如果您必须无线传输视频,我建议您按照偏好顺序,

  1. 获取 wifi 摄像头
  2. 获取 Raspicam 和树莓派并通过 wifi 链接分享视频
  3. 与上面相同,但使用 USB 网络摄像头而不是 raspicam
  4. ...
  5. ...
  6. 放弃这个项目
  7. ...
  8. 使用 raspicam 或 USB、树莓派和 Xbee(树莓派应该对视频进行大量压缩,例如使用 h264,或者如果 CPU 可以,则使用 h265)
  9. 使用您拥有的cmos传感器以及USB视频采集外设和树莓派,然后压缩视频并使用wifi或...不,至少不是xbee

0
投票

旧答案,旧错误。 I2C有多种速度模式: 标准模式(100kbps), 快速模式(400kbps), 快速模式 Plus (1Mbps), 高速模式(3.4Mbps)和 超快速模式 (5Mbps)。

UM10204 I2C 总线规范和用户手册 Rev. 6 - 2014 年 4 月 4 日,第 3.2 节(第 23-64 页) 解释一下超快速模式,好吗? 2014

因此,告诉某人放弃一个项目、不熟悉某个主题或者对某个主题没有或了解有限,这是愚蠢的!

如今,基本上所有手机都通过 I2C 与所有模块进行通信,甚至包括相机!

© www.soinside.com 2019 - 2024. All rights reserved.