让我们用这句话来开头:在明朗、视野开阔的天空中,你可以通过一个低轨道卫星网络在几乎任何地球表面传输少量的数据(比如短信或41个字符鸣叫)。 这种点对点连接的卫星短信可以通过一些串行命令来简单控制。这将为各种远程数据感知和跟踪项目提供了可能。它并不便宜(硬件150美元、一年的服务100美元,开发板20美元,每条短信0.10美元),因此你不会使用YouTube推送服务,但是这比蜂窝网络要好得多。
第一部分,包括了串行接口要求。所以,如果你只是使用开发板,从这里开始。
第二部分,包括了这个项目所需的拆卸和反向工程工作。需要有好眼力,但是由于技术性内容过多,对于那些不喜欢不断调试的人来说比较困难。
第一部分 串行接口
如果你拿到了开发板并且基于想要开始使用,这里有一些关于命令结构的信息。
你可以在“点对点”说明书中找到代码示范。开发板的版图文件也可以在那里找到。
点连接通过RX-I管脚接收到串行短信信号,并且通过TX-O管脚把这些信号发送出去。 所有的通讯速度都是每秒钟115200个比特。每个短信或者命令通过一个头序列(0xAA)开始,这个头序列表示了命令的长度,然后是数据包的其他内容。在这里没有终止字符或者CRC。
请记住: 在点连接网站开始定位或者传输短信前,你需要激活你的点连接(每年需要花费100美元)。你需要在一个开阔、干净的室外环境中使用。我有一个室内的点连接功能,但是我假设你需要在室外使用。点连接功能并不能穿墙使用。
发送短信
0xAA : 头序列
0x0C : 命令长度 (0x0C = 12 byte)
0x26 : 传输短信命令
0x01 : 短信类型 (0x01 = Ok, 0x04 = help, 0x40 track)
0x00 01 00 01 : 未知状态和命令类型
0x54 65 73 74 : 这些是“Test”的ASCII字符。这里是我们的短信内容。改变这个字符串和长度命令(如果你的字符串长度比4个字符更加长或者短)。
状态请求:
0xAA 03 52
0xAA : 头序列
0x03 : 长度为3
0x52 : 状态请求。点连接将对41个字符的内容进行相应。请见以下状态相应序列。
请求最近一次的GPS位置:
0xAA 03 25
0xAA : 头序列
0x03 :长度为3
0x25 : 请求最近一次的GPS位置。单元将会以一个12bit长度的序列进行响应,其中包括经度和纬度的数据信息。需要指导如何解码这些数据,请查阅这些相关的文章。
取消短信命令:
0xAA 04 51 10
0xAA : 头序列
0x04 : 长度为4
0x51 10 : 取消最近一条短信.
发送帮助短信:
0xAA 0C 26 04 00 01 00 01 54 65 73 74
0xAA : 头序列
0x0C : 长度为12
0x26 : 传输短信内容
0x04 : 短信类型 (0x04 = help)
0x00 01 00 01 : 未知状态和命令比特
0x54 65 73 74: 用ASCII表示的内容 “Test”
状态响应序列包:
点连接将会对41bit的数据包进行响应(太强大了)。你能够打开OpenOffice中.ods的任何文件。什么?不需要用OpenOffice打开。太酷了,这是XLS的文件格式。
为了不要重复这些比特位,这里有一些好的建议:
位置7:单元状态(0x00 = GPS/radio powered off, 0x07 = GPS searching, 0x0F = GPS lock, 0x06 = transmitting to satellite network)。请注意,一旦该单元被GPS锁定,它们将会关闭GPS接收机并且转向无线发射。
位置11和12:(例如: 0x1BF = 447s)直到下一个传输之前一直数秒。在GPS搜索期间,数值为零。每次传输以后,这个数字都在变化。这个数值开始的时候是未知的(例如447秒),最后变为零,这时候该单元需要重新发送。
位置19:多次发送短信。当GPS锁定以后,该数值将从00变化为01。直到下一个传输之前一直数秒前,这个数值会再一次增加。它将从00变为01,再变为02.在第二次数据传输之前达到零。这时候,该单元会把无线电前端关闭并把状态切换为0x00。
位置26:获得GPS锁定信息。如果这个数值变为0x01时,GPS信号被锁定。一旦这个数值变为0x01时,对于电话应用来说意味着获取最近一次GPS的位置信息(你也可以这么做)。
位置31:可见的卫星数量。这个数值将从00变换到04或者更多(我在测试中最多一次看到08)。然而,一旦单元被GPS锁定,它将把GPS关闭,在将位置信息发送给卫星网络是,这个数字将变化成00。
《电子设计技术》网站版权所有,谢绝转载
第二部分:拆卸和反向工程
从2011年圣诞节起,当我走过位于SparkFun 的Aaron办公室后,我就开始了这个项目。在他的办公室里面罗列着许许多多的电子器件。我很快意识到这就是点连接的原型。当我第一次在堪萨斯的高中气流中迷失方向时,作为备份,几个月后我买了一个点连接。Aaron提到,某人已经发现如何发送正确的命令来使点连接传输编码信息(而不只是一长串的坐标)。
所以,我开始Natrium42的复制工作。他作了很多有意思的工作,意在找到那个bit对应那个功能。我现在还不是完全确信他是如何知道设定短信的第五个bit是用来确定射频通道的。上面是我尝试控制点连接的工作(现在从1开始标识)。
分解点连接非常简单,但是你必须利用这些硬件来开发串联线。你可以看到,我用炉子来加热MSP硬件(是的,这可以做出让适度的SMD重新工作)并且添加不同的串行连接。在我把MSP移除五秒后,我意识到我可以把MSP放在正确的位置上,并且简单地把重设线拉到MSP上面。噢!做得好。在处理串联包几个小时以后,我发现我可以从STX2卫星无线电上发送和接收数据包信号了。在使用点连接几天后,我发现它的天线接收非常差,从而导致GPS信号非常弱。另外一个限制因素是你只能传输修正后的位置信息,这使得你只能限制传输5bit用户数据。有意思的是,最新的点连接2让我对破解其他平台非常感兴趣。
进入点连接。对于150美元的服务(通常有50美元的折扣,这样的话是100美元),你可以得到一个黑盒子,这个盒子可以通过蓝牙与你的手持电话连接。从我的安卓手机里面,我可以通过蓝牙给点连接发送短信,然后通过卫星网络把我的消息传输给我通讯录里的每一个联系人。“你好,妈妈!”从大西洋中部有了新的意义。
正如我桌面上其他正在进行的项目(鸟巢恒温器、镭射磁带测量仪、Wiimote)一样,点连接不会拖延时间。
你好,迷你USB接口!通过一些简单的飞利浦螺丝刀就能够拆卸下来。
《电子设计技术》网站版权所有,谢绝转载
这是在主板前部的卫星传输天线和GPS接收天线的集合体。上面奇怪的箭头是在天线校准的时候有意刻上去的。对我来说,如何调谐天线是一个迷。你也可以在顶部看到顺时针方向的五个LED灯:蓝牙、开关键、GPS、卫星、SOS。
在点连接的内部有两层板相连。在主板上层叠着一层子板(用于供电)。从一些文献中,我对这些板子的层叠方式产生了兴趣。通过分析板子间信号是如何传递的,我们就可以很容易的把板子的互连了解清楚。这对终端用户的硬件修改也提供了可能性。但是如何一个点连接从一块板子上卸下来二安装到一个SparkFun开发板上时,你不需要焊接任何东西。这就是核心思想。
这是主板的背部。
这是主要播放器的一个高分辨率图片。点连接的主要核心是MSP430F5524。它能够做每一件事情。卫星无线电射频前端被PIC30F2012芯片控制。GPS芯片已经由原来的点连接配置上升级成了uBlox-5。你可以在这块板子上看到测试点的痕迹。这就是为反向准备的。
这是供电板的背部。这块板虽然重要性不是太大,但是却包含了很多有意思的内容。
《电子设计技术》网站版权所有,谢绝转载
首先,我不断测试了很多IC的互连方法。原先我想做得事情就是Narium43曾经做过的,学习MSP并且与无线电/PIC沟通。为了做这个,我不得不排布GPS的输入输出端口,并且让这些输入输出端口直接与无线电相连(现在是PIC30F2012芯片)。
对于反向工程,你做得越多,就会发现越容易。我仔细研究了1号点连接,从中我学到了很多东西,对后续点连接的工作做好了准备。最后,MSP与GPS和无线电通过四相模拟开关(74LVC4066)相连,这与在原来1号点连接上的连接方式一致。
然后,我拆掉了我忠实的逻辑分析仪(这个仪器可以寿终正寝了)并且开始监听。
在MSP(核心)、PIC(无线电)、uBlox(GPS)之间的串口连接与Narium编码过的1号点连接相似。它同样具有头序列、比特位数以及最后的一个或者两个CRC比特,但是比特数目却显著变大了。我认为这是由于复杂的无线电通讯信号需要不停地发送完整的字符串包,而不是原来的坐标信息。在花了几个小时把29比特虚列报研究清楚以后(这得益于Travis关于BT模块数据手册的帮助),我突然意识到在智能电话的应用中一定有额外的串行信号与蓝牙模块进行数据交互。
果然,在子板上有蓝牙模块的发送和接收端口,这些端口与主板上MSP的通信速度竟然达到了每秒钟115200个比特。在手机应用中还会发送许多额外的信号,如“hi,你好”、“我是蓝牙”、“我能否连接”等等,但是这些都是无用的信息我们这里就不详细说了。
《电子设计技术》网站版权所有,谢绝转载
如果你能够从主板的BT-TX端口得到以下字符,那么主板就会以每秒中115200比特的速度传输“Test”加上你的经度纬度信息:
0xAA 0C 26 01 00 01 00 01 54 65 73 74
0xAA : 头序列
0x0C: 命令长度 (0x0C = 12 bytes)
0x26 01 00 01 00 01: 所有状态和命令比特,目前未知,但是也无法改变。
0x54 65 73 74: 这些是“Test”的ASCII字符。这也是我们的消息内容。改变这些字符串和长度命令。(如果你的字符串比4个字符更长或者更短)
我们现在应该能够拔出子板,然后把主板插到开发板上以满足我们自己的需求。我花了几天时间研究电源端口并且检查不同总线上的噪声水平。在电源板上有许多直流转换器,它们的噪声会影响到GPS,PIC控制器会严重影响GPS的接收性能,使得卫星信息传输出错。
苹果安全IC?那是什么?MFI341S2164芯片是苹果授权的应用于iPhone外部设备的协同处理器。太赞了!我找到一个电路现实了MFI341S2164是如何接通电源的。板上20管脚的QFN标签2164确实满足了电路的连接。在单元打开以后,这个IC被MSP通过I2C来控制。如果MSP没有得到IC的响应,这个单元会出现很多模式错误(以不同的形式来闪烁LED灯)。幸运的是,如果我们切换到蓝牙探索模式的话(持续按On按钮5秒以上),MSP就不会与2164进行通信,这样的话我们的开发板就不用去模拟I2C总线上的响应(这是一件非常好的事情)。
其他的一些IC和电源控制就非常清楚了,但是PIC电源模块仍然需要注意一下。不同的直流转换器会有一些电源走线,这将会引起许多噪声(在50~150毫伏之间抖动)。PIC模块有一个线性整流器,还包括一个好的去耦模块,该去偶模块能够产生具有很小抖动(10~20毫伏)的3.0V电压。我意识到这是为了开发板获得较好的卫星传输所必须的。我假设噪声会影响到PIC模块,并且把噪声传输到无线通信模块。
回到主板,你可以看到连接器的管脚和不同的功能。几乎每一个功能都已经有所说明了。
《电子设计技术》网站版权所有,谢绝转载
这里是主要的一些测试点。你并不需要连起这些点除非你强迫自己去做。如果你需要板子没有标签的高清晰度照片,你可以从这里找到(这对辨认IC型号有好处)。
这里是一张射频掩蔽区域内部的照片。我相信左边模块包含了GPS信号的接收器。右边模块包括了卫星发射器的放大器。
正因为我无法抗拒,这里有关于最近点连接2位置反解的一些图片。他们不用点连接1的原来配置,而是改变成了一个通过PIC30F3014芯片的非常简化的IC解决方案。你是不是还认为在MSP工程师和PIC工程师之间会有争议呢?
我希望你能够喜欢上述的反向!如果你对于功能强大的卫星发射器有好的主意的话,请告诉我。
原文作者:Nathan Seidle, SparkFun Electronics Inc
《电子技术设计》网站版权所有,谢绝转载
文章评论(0条评论)
登录后参与讨论