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

时间:2016-02-06 22:11:58

标签: video video-streaming video-capture beagleboneblack iot

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

  • 第一个组件将由指向我的狗板的相机和带有伺服电机的微控制器组成,该伺服电机将从食物容器打开和关闭食物门。在这个地方没有WIFI接入或电源插座,所以它将使用电池供电。我希望这个组件中的计算尽可能低,所以如果没有它在Linux或其他操作系统上运行就可以完成,那就太棒了。

  • 第二个组件将与第一个组件和我的路由器通信,以便我可以通过Internet远程访问它。这个可以插在电源插座上。

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

我的问题:

1)哪种协议适合两个组件之间的通信(蓝牙,zigbee,6lowpan等)?相机可能是640 * 480或更高,延迟没有问题(约15秒 - 20秒),只要我能看到相对连续的实时视频来检查我的狗吃得好。电池长时间运行应尽可能低功耗。

2)有没有办法让第一个组件能够在不运行操作系统的情况下流式传输视频?

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

非常感谢。

1 个答案:

答案 0 :(得分:2)

视频

您需要知道的第一件事是什么是视频?由于摘要视频是包含由具有特定间隔的相机拍摄的图像的字节流。每个图像都以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 ***的无线传输协议和/或模块具有ttl串行接口。根据他们的数据表,他们可以以每秒3mbits的波特率进行传输。现在我们回到视频字节大小计算。我们需要一个可以支持摄像头数据的模块(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。我认为这是一个学习项目的良好开端。