成功完成首次卫星通联试验

在今年的辞旧迎新博文《2011新年好》中,我提出了今年希望能完成的一个愿望,就是能够进行一次卫星通联试验。眼看一年时间过去大半,在计划就要搁浅的时候,向来瞬间执行力超强的好友BG4KKS以迅雷不急掩耳盗铃儿响叮当的速度购入了一根UV双段的八木天线,促成了这次试验。

2007年,南京三中的同学们曾经与国际空间站(ISS)的宇航员进行过一次十分钟的天地对话,这次活动前后花费了2年半的准备时间外加经费16万元,这无疑会让人觉得卫星通信试验是一件很高不攀的事情。实际上,除了ISS的官方的业余无线电活动(ARISS)外,还有不少给业余无线电爱好者使用的卫星一直在围绕着地球运转,在地面上使用一些简单的设备就有希望通过这些卫星上的中继器,把信息从一个地方传递到另一个地方。

2009年底,中国在太原卫星发射基地通过一箭双星的方式发射了我国第一颗业余通信卫星希望一号(HO-68),期望通过中国自己的业余通信卫星在太空中传递自己的声音成为我计划进行卫星通信试验的一个动因。遗憾的是,在准备这次通联试验时,我们才发现,希望一号从今年一月底开始就因为一些设备故障无法打开各转发器,仅存留一个等幅电报(CW)的发射器不断发出表示“我在这里”的信标。所以,通过希望一号传递信息已经变得不可能,只能尝试接收来自它的信标。作为替换方案,我们选择了另外两颗国外的卫星SO-50AO-27做为进行语音通信试验的目标。

通过卫星的调频(FM)转发器进行语音通信,其实跟在地面上通过中继台进行语音通信非常相似:无线电台把信号通过上行频率发送给中继台,中继台接收到信号后进行放大并重新在下行频率上发送出去。由于中继台的天线能力、高度和功率通常都会大于一般的移动电台,所以可以起到扩大通信范围的作用。卫星通信,就是让卫星充当中继台的角色,把地面发送给卫星的信号,重新转发回地面,以达到地面直接通信较难达到的更大的覆盖范围。

当然卫星通信与地面中继台通信也还是存在一些不同的地方:

1) 时间窗口:业余通信卫星很多为低轨道卫星,绕地周期很短,所以对于一个特定的地点来说,卫星每次经过上空的时间都很有限,只有几分钟到十多分钟时间。必须提前计算好卫星通过的时间和角度,并抓紧分分秒秒,才能完成一次通联。

2) 飞行轨迹:如果使用八木天线等定向性非常强的天线,必须在卫星飞行过程中不断调整天线的角度对准卫星,才能保证通信的正常进行,所以必须提前知道卫星飞过上空时的轨迹。同时,如果飞行轨迹的仰角过低(贴近地平线),而通信地点不是在高山上,则可能会由于建筑物的遮挡而导致通信比较困难。

3) 多普勒效应:由于卫星与地球间存在较高的相对速度,在卫星接近和飞离时都会出现多普勒效应,导致频率飘移,所以在通信过程中需要不断调整接收发射频率才能补偿多普勒效应,达到较好的通信效果。

4) 转发器工作状态:卫星上的转发器受到电力等各种因素的制约,有可能不是一直可用的,所以在进行卫星通联前需要预先了解卫星过顶时转发器是否正在工作。对于有些卫星(比如SO-50),还需要通过向它发送特定的亚音信号,才能在一个时间段内激活它的转发器。这些都是要在做准备工作时所关注的。

要获知卫星飞过所在地上空的时间和轨迹,需要进行对于普通人来说非常复杂的天文计算,好在有很多软件可以帮我们来完成这样的计算,GNOME Predict就是Linux下的这类软件。通过在软件中载入卫星轨道根数(开普勒参数)和所在地坐标,就可以算出卫星后面的经过时间和轨迹。在Windows下,可以使用Orbitron软件,功能更为强大。使用这类软件时,一定要确认把软件中的卫星轨道参数更新到最新的数据,不然就会得出错误的结果。也有一些网站会提供在线的跟踪和预测数据,临时需要查阅的时候也很方便。

Linux下的卫星跟踪软件,HO-68正在经过南京上空

Linux下的卫星跟踪软件,HO-68正在经过南京上空

我们所有的通信设备是仅仅是两个手持电台(俗称“对讲机”):YAESU FT-60R加上0.4米长的UV双段橡胶天线和Kenwood G71A加上新买的U段7单元V段4单元的八木天线,两个电台的最大发射功率都不到5W。另外,我们还用手机和GPS用来获得精确的时间、位置和角度信息。

Kenwood G71A和UV双段八木天线

Kenwood G71A和UV双段八木天线

星期六晚上在仙林某学校的教学楼楼顶进行了第一次试验,首先是尝试抄收希望一号HO-68的信标信号。首次试验免不了有点手忙脚乱,不过还是非常顺利的在两个电台上都抄收到了来自太空的信号:一阵“噗噗”的声音。因为希望一号的信标信号是不到200mW的CW信号,而我们没有用于抄收CW信号的设备,只能用调频设备去接收这个信号,CW信号经过调频设备“错误”的解调后,就只能得到一串“噗噗”的噪音,而不是一般人想象中的”嘀嘀“的电报声。这些“噗噗”声按Morse码解码后就得到了希望一号信标的内容,包含它的呼号BJ1SA,遥测信号起止符XW XW和相关遥测数据。

一段完整的希望一号HO-68信标录音(有剪辑):

继续尝试通过SO-50进行语音转发,虽然我们有两个电台,但由于只有一个“牛”天线,所以很难进行有效的通联。不过我还是抱着“侥幸”心理通过我的FT-60R加上橡胶天线进行了一次呼叫,G71A上抄收到了这个信号!虽然信号非常的微弱几乎被淹没在噪音中难以辨识,但是我们的声音的确是变成电波实实在在的去天空转了圈又回到了地球上,心情非常激动。不过这也就是我们这天在SO-50上的唯一收获了。

有了周六的基础,周日下午我、BG4KKS和BG4XPH一同再次试验SO-50和AO-27时就显得更加信心十足。成果也很不错,在SO-50上,我们抄收了若干日本业余电台的通联过程,不过由于信道很繁忙,我们没有机会插入呼叫。在AO-27上,我们成功完成了与泰国电台HS35NP的通联,信号55(语音清晰,信号强度中等),并联络上了沈阳的BG2TOS。

卫星飞得很快,每次有效通联试验的时间也非常短暂,前后准备和等待了一天多时间,实际能说上话的时间也就不足5分钟,颇是意犹味尽。在一个电话就能打遍全球的年代,业余无线电通信这种古老而又“高科技”技术显得很没有性价比。然而无线电运动的魅力也许也就在于每次你想说话时,不知道能不能说得成,也不知道会跟谁说上话。期待下次卫星通联试验。

除了完成了卫星通联试验,周日早上在栖霞山上还完成了数次UV段的远距离通信,这天的信号传播很给力,我们成功联络了南京、仪征、常州、无锡、芜湖、宜兴和南通等地的电台,收获颇丰。其中与南通的直频通信(不通过中继)直线距离达到了190公里,打破了我所参与过的通信试验中黄山到芜湖直频149公里的小小记录。

在即将结束一天活动前,我们在仙林的亚东城某高楼顶还第一次观测到了国际空间站(ISS)飞过南京上空的景象,它的亮度很高,所以用肉眼就可以轻松观测。唯一的重点是你得知道它会在这个时候飞过你的上空,并且最好知道经过的轨迹,这样才会比较容易在天空中找到它。怎么才能知道这些信息?请参考本文第十段……

有关书的一点碎碎念

2011年6月18日,全民动员,像打了鸡血一样在京东抢购对折书,连我这种向来对“非必须”商品持谨慎态度的人也冲动了一把。冲动的后果当然就是到现在为止还在对着“正在出库”了2天半的订单无奈的流口水。

@和菜头对抢书行为很不以为然,认为书的价值在于阅读,而抢购低价图书则似乎是因为有些人把购买与阅读这两个完全不同的行为在心理上等同了起来,并没有体现出书籍真正应有的价值。或者说低价倾销图书也是互联网界一直存在的鼓励用户贪婪之心的一种体现。

我很认同书的主要价值在于阅读,不过我倒是觉得把书买回来放着也不算是什么罪恶。书籍做为商品,自然会有它多方面的使用价值,阅读是价值之一,收藏当然也是。另一方面说,购买行为也可以看成是对书籍作者和作品价值的肯定。就我自己而言,能让我下决心买回来的书(或音像制品),多半是我已经在图书馆或另的地方看过的,所以购买这件事本身,通常不会完全是为了阅读。我向来觉得,对于书籍这种商品,在我读过(或者在一定程度上了解)它之前,我无法判断它对我有没有价值,我又凭什么要支付它封面上所标明的价格呢?

一周前拿到了摆摆书架的内测邀请,这是在5月底的TEDxNJU活动上了解到的一个网站。摆摆书架试图打造一个社会化的图书馆,通过捐赠、交换来更充分的实现图书的价值。基本的模式就是注册会员捐赠自己的图书,根据捐赠的数量可以获得等量的从别人那里获取图书的机会。

我很喜欢摆摆书架的创意,但是这个创意和目前的实现似乎完全基于一个不现实的基础:所有人都是善意与合作的。在摆摆书店目前的体系中,只要出现一些不合作的人,整个体系就会乱套,很快就会出现类似于“劣币驱逐良币”的现象:大家把好书都囤到自己手里,剩下一些价值不高的书籍在外面流通或甚至导致流通趋于停滞。

类似于京东打折这样的低价图书的存在和中国高昂的物流成本,也会更多的限制摆摆书架的发展:买一本新书可能只要不到20元,寄一本旧书给别人却需要7-12元左右的快递费用(别跟我提中国邮政的平邮业务,实践证明,“丢包率”太高了)。一本书在摆摆书架的体系中流通两三次的物流成本,就可能超过它本身的价格,这样的书籍价值实现,实在是不好让人接受。

有个叫“青蕃茄”的网站,实现了免费图书借阅、送书上门,感觉它把图书和物流这两个问题放到一起去通盘考虑,似乎是可以找到一种可靠的模式来维持这个体系的存在。不过我一直没有去体验他们的服务,不知道现在实际运营的如何。

进入IPv6的世界

本文写于2011年,目前我已不再试用Linode,新的VPS提供商不提供IPv6的环境,所以目前本网站不再支持IPv6访问。

我的虚拟主机提供商Linode从5月份开始提供原生的IPv6支持,虽然暂时没有什么实质性的用处,但还是决定体验一下。记录一下添加IPv6支持时遇到的问题,供大家参考。

1. Linux中启用IPv6支持

原则上只需要确保你的Linux内核中已经把IPv6的支持编译进去了就行了。在Red Hat系列的发行版上,可能要检查一下/etc/sysconfig/network这个配置文件中有没有把NETWORKING_IPV6设成yes。启用IPv6后,网卡在up过程中就可以从DHCP服务器那里分配到IPv6地址了。如果需要手工配置静态的IPv6地址,跟配置IPv4的方法是类似的,直接修改相应的配置文件即可。比如在Red Hat系列的发行版上,就修改/etc/sysconfig/network-scripts/ifcfg-eth0,在里面加上IPV6INIT, IPV6ADDR, IPV6_DEFAULTGW等配置项即可。

2. nginx中启用IPv6支持

如果只是在配置文件中写上listen 80;的话,nginx只会在IPv4的80端口上侦听。如果需要全局启用IPv6,可以改成:

listen [::]:80;

因为在Linux中,默认情况下,IPv6的TCP socket会同时在IPv4地址上工作。所以对于listen 80;和listen [::]:80;这两种绑定所有地址的80端口的监听,只能两者取其一。不然在启动nginx时会报端口已经被占用而导致启动失败。

如果你的nginx是为多个vhost提供服务的,却又不想在所有的vhost上都启用IPv6,则可以分开写IPv4和IPv6的监听规则:

listen 80;
listen [::]:80 default ipv6only=on;

然后在各个vhost的配置文件中分别有选择性的使用这两行配置就可以了。或者也可以采用非全地址绑定的方式,在listen后面显式的指明要绑定的IP地址。

有关nginx的配置,可以参考nginx的HTTP Core Module的相关文档。

3. DNS设置

在你的域名的DNS配置面板上,你应该可以为你的域名添加A记录或AAAA记录,A记录是IPv4地址,AAAA记录IPv6地址。同一个域名可以同时指定A记录和AAAA记录。在访问的时候就会同时解析出IPv4和IPv6的地址。

除了主域名上同时绑定A和AAAA记录,通常也建议用一个独立的子域名去单纯绑定AAAA记录,这样可以便于在双栈的网络中明确指定希望走IPv6网络。

目前我的主域名freemindworld.com上同时绑定了IPv4和IPv6地址,ipv6.freemindworld.com上为纯IPv6地址。

使用国内的ISP的DNS服务器测试IPv6时需要小心,如果你的域名只绑定了IPv6地址,ISP的DNS服务器可能会进行一次DNS劫持,在返回你IPv6地址的同时,也返回给你一个错误的IPv4地址。至少在Linux下,Firefox和wget都会优先去用那个假的IPv4地址去发起请求,从而得到错误的结果。换用更可靠的DNS服务器或在/etc/hosts文件中添加IPv6地址映射可以解决一部分的问题,更可靠的解决途径可能可以使用TCP DNS。

4. 客户端

CERNET2的用户应该是有原生的IPv6环境来使用的,中国电信的用户就暂时只能通过Teredo隧道这样的方法来使用IPv6了。在Linux下,Teredo的一种实现叫做miredo(音乐中的三个唱名,mi re do),常见发行版中直接安装这个软件包并启动相应的服务就可以得到IPv6地址,通过Teredo隧道的方式来体验IPv6了。请记得改用ping6来测试IPv6的服务器连接,在nslookup时需要set type=AAAA。

最后再赞一下Linode的客服,我在不同时间提交了两个VPS开通IPv6的ticket后,都在3分钟中内得到响应并完成了请求,效率相当的高。

设计与传承

顺应民意,南京地铁开始进行车站导向标识的改版,如图:

南京地铁新版导向标识

南京地铁新版导向标识

什么是一个好的设计?在我看来,一个好的设计必须首先满足功能上的需求。作为导向标识,它最重要的功能性就是要表现出车站所在的方位,新版的导向标识在标明方位的同时还提供了车站名、线路号和距离等实用的信息,提供了更多的功能,也就给乘客提供了更多的方便。

设计心理学》一书中提到,对于设计师来说,有一种致命的诱惑叫做“悄然滋长的功能主义”,或者用别的一种表述的方法,就叫做“设计师应该会做加法,但更要重视做减法”。新版标识上所增加的信息,是不是足够的必要?

必要或不必要,对于不同的目标用户,常常会得到不同的答案。假设以外地游客作为导向标识的主要受益者,他们的需求,就是通过搭乘地铁,到达下一个目的地,所以对于他们来说,导向标识能指向最近的地铁站是最为重要的。而车站名称、距离和线路号,都是次要的信息,只要在地铁站内部布置更详细的线路图和换乘指示,他们都可以在到达地铁站后再获取更多的信息并顺利到达目的地。新版导向标识所增加的信息,只是对于一部分人来说可能可以提高出行效率或节省少量出行费用。

所以从“做减法”的角度说,我觉得改版的标志牌算是画蛇添足。

可是在导向标识牌上增加距离信息是广大人民群众的呼声啊,有人会这么说。好吧,这是个很大的话题,而且已经有很多人讨论过,比如白鸦的那篇《听不听用户的?》。

好的设计,除了满足功能需求,应该要考虑到一致性。因为人在日常生活中,通过不断积累对世界的认识,就形成了一种概念模式。通过一致的设计可以有效帮助用户去借助他头脑中已有的知识,去认识和理解新的事物。

南京地铁线路号的标识是什么样子的?答:圆圈里一个数字。或者,你想不出这个答案,但你一看到这个答案时就能迅速的回想起地铁车站里无处不在这种表示方法。可是遗憾的是,在新版的标识牌上,线路标志变成了一个方框,这分明是北京地铁用的表示方式嘛。缺乏一致性,从而不能成功的利用用户心中已经有概念模式去有效的给用户提供信息,是新版标识设计的败笔之二。

要做到一致性,标准化是一个非常行之有效的方法,虽然标准化可能会束缚一些创新,但从成本和效率上来看,它都不失是一种值得考虑的途径。

好的设计,从实现的层面上,要具有可扩展性。尤其当你的设计会成为标准,在多个场合应用的情况下,设计就必需要为多种应用场景留出必要的扩展空间,不然这样的设计就会很难让人来复用,最终失去了设计和标准化的意义。

在这一点上,已经有人恶搞了一下新版标识在”高铁南京南“站应用的效果图,不解释。

新版导向标识在高铁南京南站的应用场景

新版导向标识在高铁南京南站的应用场景

好的设计,在满足了基本的应用需求和设计思想后,最终还是要能给人一种设计美感。一些细节的设计和艺术的加工,是可以帮助设计本身更好的去实现它所应该具备的功能性的。

新版导向标识,包括鼓楼站站内最近更新的各块标识牌,都把原本很有特色的宋体风的字体改成了普通黑体(Serif风变成了Sans-serif风),英文字体虽然一直是Sans-serif的,但是字体也变得更平庸了。虽然美观这件事是见仁见智的,但是我个人觉得把一种有点特色设计变成了一个平庸的设计,大部分情况下恐怕是欠考虑的。

做一个好的设计很难,但更多的时候,传承一个好的设计更难。后来的人常常因为没有经历最初创作的过程,从而无法发现和理解一个设计中所内涵的东西。尤其对于一个功能性很强的东西,在时间、资源等限制条件下,被遗忘或者妥协掉的,总是设计。这也是南京地铁标识系统中现在的问题所在。

有时候,我们会嚷嚷着说,时间来不急了,我们先把东西做出来,细节上的东西和实现上的优化我们以后慢慢再改。但实际上,这种口号从来都只是一种美好的愿望,在功能实现的时候,不管是出于资源有限还是人类天生的懒惰,所有的改进和设计的愿望都会被抛到脑后,并且随着时间的推移,这种愿望实现的成本会越来越高,从而最终无奈的放弃。

做一个好的设计、传承一个好的设计,有时候只需要我们在刚开始的时候多走一步,比如采用文档、标准化等方法把一些基本的东西规定下来,事情就可以得以顺利的推进,并且也许不会增加太多的成本。但是一旦涉及到更改,成本总是会变得很高。可惜人们常常都是短视的。

以上图片资源和部分观点转载自地铁族论坛:链接一链接二

以上所有观点都适用于软件系统的设计和开发。

魔术小游戏 – 猜车厢

整理硬盘时发现了这个2002年时写的已经被我自己都忘记到犄角旮旯里的小程序,虽然它从2002年8月起就一直在Internet上以一个几乎固定的URL存在,也曾经在CSDN软件中心发布过,但似乎所有的搜索引擎都没有发现它的存在。

这是一个魔术大师大卫·科波菲尔的观众互动魔术的翻版,某年春晚上李咏用过一个演化的版本表演过。最近看了一本不错的数学科普书:从惊讶到思考-数学的印迹,其中有一节介绍了一些电视互动魔术中如何通过概率学原理给人造成错觉。不过我这个魔术不是错觉,而是有简单而确定的数学原理在里面,想不明的TX可以到我的那篇有关二进制的文章里去寻求启发。

下载地址是:http://www.freemindworld.com/g34/csdn/Magic.zip

程序截图

程序截图

UI比较丑。用VC6写的,Windows用户应该没有鸭梨,Linux用户可以用wine,但预先要把Visual C++的运行库装上。从现在的眼光看,用原生应用程序来做这么简单的应用实在是自找麻烦,完全可以很简单的用JavaScript在网页上来实现。我在考虑是不是可以做一个在Bambook上运行的Widget呢?

劳动节到了,祝大家节日快乐!