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

时间:2017-01-13 20:21:36

标签: arduino raspberry-pi video-streaming i2c

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

1 个答案:

答案 0 :(得分:4)

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

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

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

你可以看到I2C接口被标记为主设备(这意味着摄像头OWNS总线),并且,阅读更多,你会发现,唯一的用途是允许用户(或设计师)放置I2C EEPROM以提供寄存器的初始化值。

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

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

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