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

1 arduino i2c video-streaming raspberry-pi

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

fra*_*i87 5

简短的回答?绝对不。在没有专用硬件压缩器的情况下,几乎不可能通过低带宽连接(如 I2C)发送视频数据。

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

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

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

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

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

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