
有一次,我的同事彼得建议参加一个有趣的项目-创建一个“对洞穴学家的洞穴电话”,因为他对洞穴学很感兴趣。 卡弗有这样一个问题:地下无线通信实际上是行不通的。 可接受的无线电接收只有在视线内才有可能,但值得一转。-没有连接。 您需要在整个山洞之间进行沟通,山洞的长度可能长达数公里。 当然,移动通信并没有赶上那里,这意味着在洞穴中自主工作数周的团体与外界没有任何联系。
在2018年8月,彼得参加了一个相当复杂和危险的洞穴探险。 对于这次探险,我们决定开发一种新设备,以解决将自主工作小组与外界联系起来的问题。
想法描述
洞穴学家使用“洞穴电话”通过现场电缆(通常是p-274)工作,这些电缆沿着洞穴的整个长度延伸,如下所示:
(C)Pavel Rudko,TP17 Nedra,生产克拉斯诺亚尔斯克。这个想法是将地下电话连接到智能手机,并通过地面上的蜂窝“基站”与外界通信。 为了能够从地下发送短信给亲戚,亲戚和亲戚,要求对地面进行天气预报,以便在阵雨的情况下提前升到地面。
彼得和其他洞穴探险者计划下降到位于阿布哈兹
的Snezhnaya系统的底部
,该系统曾经是世界上第二深的洞穴系统。 他们计划穿过较低的入口,即银行的洞穴。 从主要的洞穴危险之一(洪水)的角度来看,这种方式比其他已知路线安全得多,但是您仍然必须克服一个非常危险的部分-咆哮的小瀑布。 沿地下河250米的洪水完全无法通行。 在进行本节之前,我们想了解表面的天气。
从计划居住两个星期的自治地下营地到最近的出口,距离路径表面3.5公里,高差为800 m。在整个路线上已经与在该山洞中工作的其他小组装备了一条地下通讯线-它被野外延伸电缆P-274。 我们计划在我们的想法中使用此行。
剩下的事情就是构造一对设备:控制应该在洞穴中的那一组,受控的-在可靠接收GSM信号区域的地面上。 并且有必要为他们提供一种沟通的方式。 受管设备必须从管理器接收命令,并且能够接收和发送SMS。 一个重要的条件是该装置在地面上完全自治了两个星期,也就是整个探险期间,因为没有人在洞穴入口处等我们。 没有人可以充电,更换电池或重新启动设备。
在开发中参与了:
- Koveshnikov Peter-软件部分的想法,发起人和开发的作者。
- Matveev Lyubomir-收发器板的组装,安装,接线。
- Shelepin Sergey-收发器设计。
总体方案如下。 基站安装在地面上,由太阳能电池充电的电池供电,考虑到洞穴的平均旅行时间,它应至少工作两周,并且应具有自主性,因此无需引起人们的注意。 下面的人可以在鳄鱼夹或拧入式接线端子的帮助下,连接到线路上的任何位置(在洞中伸出的现场电线),并在地下电话与地面站之间建立连接。 她处于“睡眠”模式,定期“唤醒”并接收服务信号。 需要睡眠模式以节省电池电量,因为并不总是存在太阳为电池供电。
现在有一些技术细节。
想法的实施
我们在这次探险中使用的综合体如下:
- 两部运行专门编写程序的Android智能手机。
- 具有自己设计的两个收发器,分别连接到地下线路和电话的音频端口。
- P-274双田野田鼠长约3600 m,延伸至800 m的深度。
- 地面电话电源复杂。
- 移动电源,用于为“水面”电话供电。
- Arduino ,重新启动从移动电源为手机充电的过程。
- 用于为移动电源充电的太阳能电池板。

他们以普通电话的电路为基础,而智能手机本身只是代替人,而是接收和发送命令。 为了彼此通信,设备交换声音信号序列-DTMF音(具有16音的双音多频模拟信号)。 通道为半双工。 为了传输数据本身,使用了16个中的9个音调,其余7个是服务音调,例如,指示消息/序列的开始/结束,紧急重启信号等。 DTMF音调的持续时间以及传输速度从每秒1个音调变化到每秒15个音调。 排除技术暂停,这相当于每秒0.3-5.5字节。 使用
dtmf-cpp库的智能手机会将文本转换为音频,反之亦然。

收发器通过3.5毫米音频插孔使用4-PIN迷你插孔(如常规耳机)连接到电话。 电话要播放的任何音频信号都会发送到收发器,线路中发生的所有事情都会放大并通过麦克风通道传输到电话。 除了放大输入信号外,收发器还可以将电话与线路隔离,以避免意外电涌造成的损坏。 另外,收发器控制传输介质的分离。 当电话尝试播放某些内容时,收发器会将电话的左音频通道连接到线路,其余时间则将麦克风通道连接到接地的线路。 当需要传输时,软件将开销信号发送到正确的通道,以便收发器切换到传输模式。
您可以在此处收听我们的收发器的通信方式:
cloud.mail.ru/public/JAjQ/wuF4XMm4W在电话上启动了一个自编写程序,在预期某些信号或用户通过接口输入的情况下收听通信通道。 数据传输算法:
- 控制电话上的用户在菜单中选择所需的命令。
- 该程序以字节流的形式生成一个请求。
- 将流划分为不超过16个字节的序列,将校验和添加到每个序列中,然后按DTMF音调序列对字节序列进行编码。 将两个服务序列添加到音调序列集,指示序列组的开始和结束。
- 每个序列均以PCM 16bit 8000 / s单声道编码并由电话播放。
- 每个序列由受控电话读取,解码,检查是否有错误,并根据结果发送接收成功或失败的信号。
- 收到确认信号后,被管理的电话将发送以下序列或重复当前序列。
- 成功接收所有序列后,被管理的电话将从这些序列中收集字节流,将其解码为命令,然后执行该命令。
从被管理电话到管理者的数据传输是根据相同的算法执行的。
该视频可在此处获得:
https :
//drive.google.com/file/d/1Y4O5R1Hce0S_djni-B1k5_B9Lw7uRlyp/view?usp=sharing示例:程序中智能手机上的山洞中的人选择命令“发送短信”,输入要向其发送消息的电话号码及其文本。 所有这些数据都通过DTMF信号进行编码,以音频模式通过有线方式传输到地面,另一部电话对其进行解码,然后通过其SIM卡将SMS发送到指定的号码。 有了反馈,相同的模式几乎相同:电话会定期唤醒,退出飞行模式,接收操作员积累的SMS,并将其存储在候车室中,直到从洞穴发出“给我SMS”服务命令为止。 所有累积的内容,智能手机都沿线传输。
电源供应
探险期间的整个建筑群必须吃点东西。 地下电话的供电没有问题-电话和收发器均具有内置电池,在使用过程中耗电量不会太大,其余时间都将其关闭。 借助“地面”控制电话的功能,情况变得更加复杂:他需要保持工作状态至少两周。
如果智能手机继续收听电话线,甚至连接到GSM网络,它将持续数小时,并且太阳能电池板将无法解决此问题,因为它消耗的能量少于智能手机消耗的电量,并且移动电源只会延长一天的工作时间二。 我必须设置一个待机模式,在该模式下,电话不会被窃听,还必须打开飞行模式。 闲置5分钟后,程序进入睡眠状态,每10分钟唤醒一次,持续15秒,等待特殊的唤醒信号。 飞行模式每天关闭6次,持续10分钟以接收短信。 问题在于,管理飞行模式需要应用程序提升权限,而无需
扎根手机就无法获得
该权限。 该应用程序的所有其他功能(与节能无关)不需要提升权限,并且可以在装有Android 4.1及更高版本的任何手机上使用。
现场测试和计划
在这次探险中,Peter和一组探洞者在野外首次测试了这些装置。 当然,有一些问题。 该应用程序很快就写在膝盖上,因为探险用完了。
有两个主要的软件问题,“表面”设备的电源问题和“表面”组件的密封问题,连接器问题。 这些家伙已经准备好应对大多数问题,并使用了预先准备的备份选项,可以随时随地进行修改。 无论哪种方式,该系统都能正常工作,我们能够进行全面的测试。 第二组,留在洞穴底部,调查远征主体离开后的第一次上升,报告结果,并了解当前的天气和预报。 几乎所有检测到的问题和缺点都可以轻松修复,我们更正了它们,以进行2018年12月至2019年1月的下一次Snezhnaya探险。
在测试过程中,我们发现了最大的稳定数据传输速率。 将设备直接彼此连接时,它与实验室条件下获得的最大稳定速度没有区别。 通过延伸穿过洞穴的通讯线传输的信号没有任何失真,没有发现可比音量的外部噪声。 随着下降深度的增加,信号量只会下降一点。 由于软件问题,也有可能在失真的“停顿”间歇信号的条件下验证操作,乍一看,在该信号中无法成功传输。 尽管如此,仍然可以选择一种操作模式,即使在这种情况下,也支持两个设备之间的通信-这表明我们创建的传输协议可能具有很高的稳定性。
最初计划使用移动电源为顶部电话供电。 原来,我们已经为手机充电了100%的移动电源,然后关闭了电源。 要再次初始化充电,您必须从移动电源上拔下电线,然后重新插入,否则他不明白手机已经坐下了,是时候再次释放能量了。 探险还剩两天。 除了欺骗Arduino外,我还没有想出更好的方法。
视频:
cloud.mail.ru/public/76ay/F5xinJZQi根据Arduino的时间表,每隔三个小时,使用继电器,它会断开移动电源上的移动电源USB电缆的通道+ 5v,并在15分钟后将其重新打开。 最初,开发板由4节AA电池供电,然后他们为电池仓配备了四个18650组电池。这实际上是最薄弱的环节,因为首先为Arduino供电的是电池。 但是她有时会工作。 上升到地面的第一批探险队更换了电池,系统工作了另外一周。
我们继续进行实验:有一个工作版本的供体电话,通过外壳上的开口焊接了一块18650的大块,电话处于待机状态,电池仅在26.5天后才放电!

因此,将来我们可能会放弃太阳能电池板,这也是一个薄弱的环节:它可能会撒满灰尘或积雪,并撒满灰尘。 在使用收发器电池的4.6 V工作电压进行的三周考察中,“上部”放电至3.8 V,“下部”放电至4.1V。
当前版本的收发器不知道如何像普通电话一样工作。 我们希望最终确定方案,以便您可以在通常的“洞穴电话”模式下在没有智能手机的情况下使用收发器:按-说,释放,收听。
现在,该软件仅支持SMS接收和传输以及许多服务命令。 数据传输协议除了带宽外没有其他任何限制,因此从互联网上下载天气预报或例如将消息发送到即时通讯程序都相对容易。 不幸的是,传输速度不足以完全访问Internet和传输图片。 现在,最大稳定速度约为每秒6个字节。 在稳定的频道上,发送或接收160个西里尔字母的短信大约需要1分钟。
对于下一次探险,我们计划通过向软件中添加缺少的功能并更正错误来完成软件的定稿,以及对“地面”设备的电源系统进行返工。 已经实现了振铃线路的功能-每分钟发出一次服务信号以检查线路是否中断。 我们还添加了服务功能,例如手动速度设置,强制重启和其他一些小功能。 也许那时候我们将使手机上网并找出天气预报。 我想将自己的气象站连接到地面电话(可能是基于Arduino收集的),并从传感器下传最新数据。