物联网低功耗视频传输协议

Low-Power Video Transmission Protocol for IoT

我目前正在开发一种远程喂养和监控我的狗的设备。基本思想是使用 2 个主要组件来实现:

它的用途在于我能够登录我的 phone(使用我创建的应用程序)到第二个组件,以便它向我展示实时视频并通过它发送信号到打开食品容器门一段时间。我有一个 BeagleBone Black 可以用于这个项目,我想我会把它应用到第二个组件上。

我的问题:

1) 哪种协议适用于两个组件(蓝牙、zigbee、6lowpan 等)之间的通信?相机可能会是 640*480 或更高,并且延迟(~ 15 秒 - 20 秒)没有问题,只要我可以观看相对连续的实时视频来检查我的狗是否吃得很好。电池要运行长时间

,尽量低功耗

2) 有什么方法可以让第一个组件在没有它的情况下能够流式传输视频 运行宁 OS?

我知道有一些更合乎逻辑的解决方案(扩展 wifi 网络、购买已经上市的解决方案等),但我也希望将此项目用作 IoT 的学习实例。我做过研究,但未能得出任何令人信服的结论。我希望你们能在这方面帮助我,或者至少为我指明正确的方向。我(和我的狗)将不胜感激。

非常感谢。

视频

首先你要知道什么是视频?摘要视频是一个字节流,包含相机以一定间隔拍摄的图像。每个图像都以 FRAME 命名。因此,视频流具有分辨率和颜色配置文件,这适用于所有帧。例如,一个 24 位的 RGB 图像意味着每个通道(红色、绿色、蓝色)有 8 位用于颜色指示。

由于您的查询说明分辨率为 640x480,因此 RGB 原始图像包含:

640 * 480 * 3 = 921600 bytes
a video without compression with 24 fps (frames per second) will produce
921600 * 24 = 22.118.400 bytes per second.
this will require a bandwidth of (ideally):
22.118.400 * 8 = 176.947.200 bits roughly 168,75 mbits

不过别担心。然而,有压缩格式(如 Jpeg),它们减少了图像字节的总数。这种压缩取决于光线、分辨率、细节等条件。这需要进行测试以计算总字节数以计算所需的带宽。有 TTL 摄像头模块(询问 google 像串行摄像头模块 arduino 或 ttl 串行 jpeg 摄像头)。这些模块可以输出视频或静止图像,并且可以进行配置。这些模块有ttl串行接口。这是重要的部分。

转会

基于xbee(最流行)或NRF***的无线传输协议and/or模块有ttl串口。根据他们的数据表,他们可以以高达每秒 3 兆位的波特率进行传输。现在我们回到视频字节大小的计算。我们需要一个可以支持摄像头数据的模块(xbee 或类似的)。

在最基本的层面上,您的第一个组件可以包含这些组件:

ttl_camera -> xbee + battery + regulators

和第二个组成部分

xbee -> beaglebone -> internet connection 

但是您的问题表明,在第一个组件上连接了一个伺服电机,这需要在第一个组件端安装一个 MCU。 (xbee 有 gpio 端口,但我不确定你是否可以远程控制它们来驱动伺服)所以第一个组件可以这样修改:

ttl_camera -> arduino pro mini -> xbee + battery + regulators

通讯

在第一个组件和第二个组件之间必须有一个通信协议才能使 beaglebone 控制第一个组件。我认为您需要打开和关闭相机,从而打开视频流。您需要控制伺服电机。协议模式可以是这样的:

site_2 --> site_1 (control commands)
site_1 --> site_2 ( *ONLY* Video stream )

所以连接模式可以是这样的:

CAM_TX --> xbee_RX
ARDUINO_RX --> xbee_TX
ARDUINO_TX --> CAM_RX

结论

使用此配置,您将能够通过互联网从 site_1 获取视频流并使用 site_2 控制 site_1。我认为这是一个学习项目的良好开端。