【问题标题】:Low-Power Video Transmission Protocol for IoT物联网低功耗视频传输协议
【发布时间】:2016-02-06 22:11:58
【问题描述】:

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

  • 第一个组件将由一个指向我的狗盘子的摄像头和一个带有伺服电机的微控制器组成,该伺服电机将打开和关闭食物容器的食物门。在这个地方没有WIFI接入也没有电源插座,所以它会靠电池运行。我希望这个组件中的计算尽可能低,所以如果它可以在不运行在 linux 或其他操作系统上的情况下完成,那就太好了。

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

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

我的问题:

1) 什么协议适合两个组件(蓝牙、zigbee、6lowpan 等)之间的通信?摄像头可能会是 640*480 或更高,延迟(~ 15s - 20s)没有问题,只要我可以观看相对连续的实时视频来检查我的狗是否正在吃东西。为了让电池长时间运行,它应该尽可能低功耗。

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

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

非常感谢。

【问题讨论】:

  • 购买带有视频源的婴儿监视器。会便宜十倍。 :)
  • @MertGülsoy jajaja 是的,我想它会,但问题是我也在尝试通过构建它来学习,所以我避免使用市场解决方案。关于使用什么技术的任何见解?谢谢

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


【解决方案1】:

视频

您首先需要了解什么是视频?概括地说,视频是一个字节流,其中包含相机以一定间隔拍摄的图像。每个图像都以 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 相机模块(询问谷歌,如串行相机模块 arduino 或 ttl 串行 jpeg 相机)。这些模块可以输出视频或静止图像,并且可以进行配置。这些模块具有 ttl 串行接口。这是重要的部分。

转让

基于 xbee(最流行)或 NRF*** 的无线传输协议和/或模块具有 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。我认为这是一个学习项目的良好开端。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2019-01-11
    • 2014-02-06
    • 2017-11-25
    相关资源
    最近更新 更多