2016-02-06 46 views
2

我目前正在开发一种远程喂养和监控我的狗的设备。其基本思想是让这个使用2个主要部分组成:适用于物联网的低功耗视频传输协议

  • 第一部分将由相机指向我的狗的盘子和一个伺服电机的微控制器将打开,并从食品关闭食物门容器。在这个地方没有WIFI接入,也没有电源插座,所以它会在电池上运行。我希望这个组件中的计算尽可能低,所以如果没有它在Linux或其他操作系统上运行它可能会很好。

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

这样做的使用将包括对我能登录我的电话(与一个应用程序创建)到第二组件它给我看实时视频和发送信号,通过它打开食品容器门一段时间。我有一个BeagleBone Black,我可以用于这个项目,我想我会应用在第二个组件上。

我的问题:

1)什么协议将适合于两种组分(蓝牙,ZigBee,6LoWPAN的之间的通信等)?相机可能会是640 * 480或更高,并且延迟(〜15s - 20s)没有问题,只要我可以观看相对连续的实况视频来检查我的狗是否吃得好。电池应该尽可能低功耗地运行很长时间。

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

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

非常感谢。

+0

购买带视频输入的婴儿监视器。它会便宜十倍。 :) –

+0

@MertGülsoyjajaja是的我想这会,但事情是我也试图通过构建这个学习,所以我正在避免市场解决方案。任何有关使用什么技术的见解?谢谢 –

回答

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相机模块(问谷歌像串行相机模块arduino或TTL串行JPEG相机)。这些模块可以输出视频或静止图像,并且可以进行配置。这些模块具有ttl串行接口。这是重要的部分。

转移

的的XBee(这是最流行的)或NRF ***基于无线传输协议和/或模块具有TTL串行接口。根据他们的数据表,他们可以以高达3mbits/s的波特率进行传输。现在我们回到视频字节大小计算。我们需要一个可以支持来自相机数据的模块(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和控制站点1通过site_2进行流式传输。我认为这是一个学习项目的良好开端。