通过树莓派从近太空发回实时图像 [翻译]

原文地址:

http://www.daveakerman.com/?p=592

越来越多的人喜欢访HAB(放高空气球),爱好者使用标准气象气球将小设备(一般100克到1公斤)发送到近太空(大概距地面30公里),一般会携带跟踪设备(这样可以在飞行过程中知道气球的位置),并且通常会带一些传感器(比如温度、压力等),有的还携带摄像机或照相机,将照片保存在SD卡中,方便之后取回。 跟踪器的作用是从GPS接收器读取作为,可能的话,读取传感器的内容,按照一定的格式通过低功率无线设备发回地面。飞行必须通过预定的路线,保证安全的情况下飞行,比如说避开机场和人口密集地区,并申请许可,比如在英国需要的到CAA的许可。我们使用70厘米无线频率(大概是434MHz),使用RTTY(无线电报)发送遥感信息到一些地面由其他爱好者建的接收站。从接收器接收到的遥感信号都会发送到中央服务器,并画出实时的地图,只要连上英特网大家都能看到。这个系统运行的非常好,已经被用来跟踪800公里距离的小设备,但是发射器必须低于英国法律规定的10mW。

五月初我接收到我第一个树莓派计算机,在我准备利用飞行计算机之前,已经放飞了好几次高空气球。前几次基本都是用Arduino迷你板,因为它很小,轻到几乎没有,简单,并且很省电。对比Pi,感觉它没有任何优势。当我看到它的usb口可以提供快速、简单、廉价网络摄像头,也就是说我可以提供实时地照片(SSDV),这个大概尝试的人不多。

近太空是个比较恶劣的环境 – 不到1%的空气,温度低至零下50度,任何一个东西出问题,他就会一直出问题。无线链接是单向的,也就是说没有机会远程做类似”sudo reboot”的操作,让它关机并重新启动!下降过程非常暴力,所以即使是SD卡插座也是一个潜在的失败因素。PI比我们通常的主板复杂,没有SD卡,没有USB,甚至没有操作系统,所以额外的电力和功能都是由代价的,第一个是增加大约60-500毫安的电流,意味着更高的功耗。人们一直都担心近太空的低温,如果你的设备只靠几瓦的电力驱动,这也许就不再是个问题。我反而更担心设备中间变得太热,所以我在PI上加了散热片。

我用特殊的热粘合胶把散热片粘在USB/以太网芯片上以及3.3v稳压器上。他们通常都会变暖但是不会太热,我担心在1%稀薄空气中(对流太少)他们会变得太热。你还可以看到有两条线直接连接5V,比使用一个连接器,焊接更可靠一些。另外一个修改是拆除了S2的视频接口,可以增加空间容纳我的扩展板。最后的修改是降低USB保险,因为我的摄像头电流需求超过其额定值。然后我增加了一块板来安装Radiometrix NTX2无线发射器来发送遥测及图像到地面,并连接到一个简单的GPS接收器上的线尾,这样他可以远离我的发射器。

最后的一项是合适的电源。劲量锂AA电池是显而易见的选择,因为它们可以在零下40摄氏度条件下工作到,而且适合大电流(500mA以上的PI加上网络摄像头)。在30公里上空,通常会降到零下50度,即使只有最少绝缘,电池自身发热也能保证其在可控范围。PI需要5V电压,所以我用6个AA电池加一个外部的低压降线形稳压器给它提供足够的电压,直到没电为止。稳压器大概有3瓦,所以需要一个散热片。对于小负载来说,这个热量太高,因为这是绝缘体。当然你也不想它变得太冷,因为这样也会影响其它部件。我订购了一些开关稳压器,但是在我放飞之前还没到货,我只好用线性稳压器。

通常,NTX2通过GPIO口发送1或者0,以一定的速率发送无线电报(RTTY),比如每隔20ms,按照50波特率。如果是在AVR或者PIC单片机上,这个非常容易,只需要设置延时或者时间中断。但是Pi运行的不

是实时操作系统,我无法控制一个正确的时序,特别是当系统正在忙于拍照。还有其它的方式,但我选择了最简单的方式,通过串口来控制NTX2。RTTY使用正常的RS232串行标志和占空以及停止位,所以

为什么不用硬件的UART来做计时呢?没有花太多时间写了一小段C程序来以4800bps打开串口,读取GPS数据来获取经纬度及海拔,然后关闭端口,并重新以300bps发送电报(我发现如果不先关闭再重新打

开串口,经常不太稳定)。当然,做这个的时候,需要关闭串口的登陆提示以及内核消息,但总之还是比较简单。我将一个标准的Debian镜像写在一个4G的SD卡上。

为了获取实时的图像,我只能给debian打了一个补丁,终于能够将摄像头识别为/dev/video0.我尝试了好几种摄像头,最后选择了罗技德C270,他能够提供比较合理的质量、亮度,并且不贵(如果所有

设备都找不回来的话)。我尝试了好几种图片获取程序,最后觉得fswebcam最好。别忘了,无线系统带宽很低,通常要飞2个小时,所以我们没有时间发送大图片,所以没有必要选择非常好的摄像头和高

解析度。我权衡了质量和传输速度,觉得432×240的分辨率,50%压缩率比较适合。 我测量了摄像头电流,空闲时50mA,拍照时大概是250mA,所以需要缩减USB保险(最大140mA).写了一个脚本每30秒拍

张照,保存在SD卡上,跟踪程序会选择最好的照片(最大的文件)进行传输。每个选中的文件会转化成适合下载的格式(分成块,每块都带FEC校验),每次发送一块。我把图片数据分散在无线电报中-每

个电报中包含四个图像数据包。这是PI的自拍照:

经过完整的试验和测试,取得CAA的许可,我作了一个盒子,里面装了Pi、摄像头、GPS、电池和稳压器。我不想使用太多绝缘体,这样才不会使里面太热,所以我用了10mm的EPX材料。低于这个厚度的话

,可能会变形。

升空那天,根据风向,预计会按照S型轨迹飞行,从我家(West Berkshire)附近的升空地点,先向南,再向东,然后一直向北,直到在高海拔的地方转向西面。下降的时候,会按照相反的顺序改变方向

,最后降落在Chilterns附近。当天天气不错,应该不会出现意外,我开始给气球充气。我申请了可以飞两次,所以我的朋友兼爱好者Anthony Stirk可以放飞他做的跟踪器。因为有3个跟踪器以及两次飞

行许可,我们选择了升空一个带小光线跟踪的大气球,另外一个气球带上了Anthony的大跟踪器和一个GoPro高清摄像机,然后把Pi放里面。经过一番思考,我们决定把第三个跟踪器作为备份,确保GoPro

能够找回来。

放飞的那天终于来了,同时也等来了雨,因为天气预报是阵雨,我们就到升空地等到变成了毛毛雨。我们先放飞了带着小负载的大气球,这样Anthony可以尝试记录坐标。然后我们放飞了后面这个复杂的

东东,我的Pi在最上面,然后是GoPro,最后下面是备用的Buzz跟踪器。这张是飞行前的Pi:

和即将升空的气球:

整个一串东西,包括降落伞和3个设备大概1kg左右(何我最初试验相同),从气球到最低的设备大概有60米长。升空非常有趣,最开始风很小,几乎是垂直升空。后来风稳定了,气球按照一个角度升空

,它可以顺利的按照我能达到的最快速度升上去。直到顺利升空我才放松下来。这巨大一串东西冲入云中,让人印象非常深刻。

升空地在我住的村庄,之后我们开车回到家中,在“任务监控中心”看它传回来的照片。预计的落地点不远,我没不需要急急忙忙的去追赶,我们有足够的时间回来看照片并吃点东西。

第一架飞行器是海拔高度尝试,根据经使用的制造商和大小,要不在27公里之前就爆炸了,要不超过预计范围,跑到了40公里之外。实际上,前几个地方的海拔高度纪录表都是用这个牌子和尺寸。Anthony一直就在看紧紧盯住屏幕看遥感数据。

那个时候,我当然更关心树莓派到底运行得怎么样。GPS位置还显示在发射场地,这是个明确的干扰GPS信号。我还没确定是不是,但GPS接收器和天线非常靠近Pi和摄像头。下次我会增加一些距离。然而图像很好的传输过来了,不仅通过我家的天线和接收器,也可以通过全国各地的其他接收机接收。气球升的越高,图像的质量更好,越来越多的接收器接收到了更好的图像,甚至远在北爱尔兰(远在500公里之外,对于10mW已经很不错了)。现在饼型飞行还没完全出来。下图是一个饼图显示了不同的监听器接收到的图片数量。

第一架飞行器还在不断的攀升,最终达到了第4区,只比世界纪录低了300多米。一方面我希望它飞得更高些,一方面我很高兴它没有在第二区就挂掉。然后,气球爆炸了,最初下降还算正常。但是多数气球还挂在上面,成功地变成了一个降落伞的形状,速度减到大概2米每秒的速度,在这个高度,正常速度应该是这个的5倍以上。谈到主要的飞行,它一张一张发回的图像,没有出现任何错误,而且一张比一张更好,直到飞到最后越来越高。

 


我们预期它在34公里处爆炸,但很明显气球不完全符合我们的计算。它经历了34公里,35公里,最终在40公里处爆炸(准确的说是39994米,在海拔记录里面排12位)。对于一个中等大小带着1公斤负重的气球来说,已经非常惊人了。气球爆炸了,也就是该我们取出追车了,两辆车都配备了天线、无线电接收器、解码和底土,还有3G网络。预计降落点靠近Didcot,所以我们前往那里,然后停车确认最新的预测降落点。设备最终降落在密尔顿高地,我们离它不远,离发射场只有几英里。令我们惊讶的是,有一个接收器离它非常近,接收到了实时的图像。过了一段时间,大家都能看到设备落到了长长的草丛里面。


Anthony最先从他的车里看到设备,在球场边上的草丛里。得到俱乐部的允许,我们拿回了所有3个设备和降落伞。

同时,前一个飞行物还在下降,但非常慢。只有我们预期的1/5.我们不知道具体的时间,但是我们知道已经被降落伞接管。然后在最后的几公里,它急剧下降(可能是乳胶撕毁了),最后降落在牛津北边的一块地上。这里的海拔不太常见:

花了我们不断地时间来找到它的位置,但它似乎在一个比较难靠近的地方。随着雨越来越大,Anthony 决定收工,而不是找一个只值50镑的跟踪器。然后他开走了。我上网告诉其他在UKHAS聊天室的爱好者我也要回家了,“它就在A34附近的停车场”,有人告诉我,“很容易就拿到”,“雨5分钟就停了”。嗯,好象没有那么糟,我往北开到A34,然后回到南边的停车处。

嗯,上面的三句话,只有第1条是正确的,只离停车处155米。但是暴雨一直在下,我只能在车里等。最后,我决定出去了,爬过树木和灌木丛去找,前面有片五尺高的玉米地。已知没找到那个设备。失败后,我走到车边,用我的anroid手机打开HamGPS软件来确定设备的位置。花了很多时间才到哪里,我感觉我在演“疯狂的戴夫”,当我到达目的地,我钻进了设备和气球中间的尼龙线。这的确看不到,直到我爬到最顶上,最终成功拿到。

所以,一切的一切,伟大的一天。所有的4个跟踪器全部回收,并且我们得到了令人惊叹的图像。如果有兴趣,可以访问UKHAS网站。更多的图像和视频,请访问:

All SSDV images

Photos from the day

pAVA Inflation Time-Lapse

Burst video from the GoPro

Launch video of PIE1, uAVA and BUZZ8

Landing video from the GoPro

Recovery of PIE1, uAVA and BUZZ8

Anthony’s Write-Up

感谢Anthony Stirk开车从阳光明媚的约克郡到最严峻最黑暗的Berkshire,并且提供GoPro HD相机, 感谢Phip Heron提供我们摄像头成像和编码软件,感谢Nick提供帮助,当然还要感谢我的妻子Julie让我们吃饱喝足,而且帮我开车,而我只需要做技术方面的东西。

 

 

用Siri来控制车库门[翻译]

本文为本站首发,在树莓派论坛转载,其他网站转载需要指明出处及作者信息。

原文:
https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=25118&hilit=siriproxy&sid=aa0660b88dd63482d287d7fb089e0d60

hi,这是我第一个树莓派的项目,SiriProxy。它运行在树莓派上,使用wiringPi访问派的GPIO口,并发一个延时的on/off信号。这个延时信号用来控制我车库门。所以我可以在iphone上用siri来控制我的车库门。

可能有其它的方式来做同样的事情,比如在Pi上跑一个web服务器来访问Pi的GPIO端口,但是我只是简单的做了一个,符合我自己的需求,并且运行的一切正常。

我的派在整个安装过程中都用root用户运行,这样可以比较简单一些(原文粗制滥造)。我用wheezy版本。

下面这个链接 http://www.idownloadblog.com/201 … oxy-tutorial-video/ 告诉你怎么安装和运行siriproxy。如果你按照这些步骤,并且把11,12,13步的顺序更换为12,13,11。顺便说一下,命令7大概需要在PI上编译90分钟。

然后开始安装wiringPi,可以从 https://projects.drogon.net/rasp … wnload-and-install/ 获得。

一旦这些都安装好了,我们只需要更改一下siriproy里面自带的ruby脚本的例子。
编辑/root/SiriProxy/plugins/siriproxy-example/lib/siriproxy-example.rb 文件

找到这几行:

listen_for /test siri proxy/i do
say “Siriproxy is up and running!” #say something to the user!

request_completed #always complete your request! Otherwise the phone will “spin” at the user!
end

在它后面追加这几行

listen_for /open the garage door/i do
say “Opening the garage door..”
request_completed
system(“gpio mode 1 out”)
system(“gpio write 1 1”)
system(“sleep 0.5”)
system(“gpio write 1 0”)
end

listen_for /close the garage door/i do
say “Closing the garage door..”
request_completed
system(“gpio mode 1 out”)
system(“gpio write 1 1”)
system(“sleep 0.5”)
system(“gpio write 1 0”)
end

你可以看到,ruby脚本简单的用system命令来访问wiringPi,设置GPIO针脚作为输出端口,设置它半秒高电平,半秒低电平。

你可以让siri调用任何你在命令行终端能用的命令,比如说通过无密码的SSH登录到远程的电脑让它关机或重起。

listen_for /turn off my laptop/i do
response = ask “Are you sure you want me to shut down your laptop?”

if(response =~ /yes/i)
say “OK, I’ll shut it down now..”
system(“ssh root@192.168.1.74 shutdown -h now”)
else
say “OK, I wont!”
end

request_completed
end

你可以把树莓派放在不同房间使用不同的命令控制,但只使用一个siriproxy服务器。注意:每次你修改完配置后,你需要在重起服务器之前运行”siriproxy bundle”命令。

这里还有一个我安装过程的演示视频。

http://youtu.be/NUJ5z76Xv5o

墙内的朋友安了吧,墙了。