使用SDR接收器和OpenCV探索电磁场



SDR接收器,即使是最便宜的,也是一种高度敏感的仪器。如果在其中添加特殊的天线和OpenCV,则不仅可以习惯性地收听以太,还可以查看空间中电磁场的分布。本文将讨论这种有趣的应用程序。注意!下切了很多图片和动画!

您想看看电磁场吗?是的,没有什么比这容易的了,它们是:



我同意,不是很清楚。即使我们能够看到光(这些方程式也对此进行了描述),但是无线电频谱对我们来说并不是那么容易获得。由于这个原因,人类已经提出了许多不同的方式来监视自然的奥秘,同时使用计算机建模和专门的安装。

后者可以在科研机构,大公司的研究部门以及军方的墙壁内找到。通常这是一个单独的房间,被法拉第笼子屏蔽,免受外部辐射,内部被雷达吸收材料覆盖。毕竟,进行此类实验时,邻居或非接地微波不应该打扰我们。这个房间称为消声室。这个名称当然与录音棚更加一致,但是在这种情况下,“回声”是指干扰研究并且被无情地淬灭的电磁波的任何内部反射和重新反射。从天线的角度来看,在相机内部,您处于一个绝对的空隙中,其中所有辐射进入由无线电吸收器模拟的无尽扩展中,而没有任何回波。

, -, , - — , , . «» , ---, .


, Panasonic. « » — . — .

在进行电磁兼容性测试,天线开发以及与电磁辐射有关的科学研究时,没有这种相机是无法做到的。但是,相机本身只是故事的一部分。在记录电磁波行为所必需的其他关键要素中,还需要特殊的天线,昂贵的测量仪器以及事实上的现场扫描仪。扫描仪无非是带有CNC的臭名昭著的坐标系。您可以在扫描仪的“手中”给扫描仪安装合适的天线或测量探针,然后去喝咖啡,直到它仔细地绕过程序所设置的点,从而构成一幅美丽的图画,描绘出新水箱周围的电场分布,例如雷达的辐射方向图。

但是回到重点。碰巧的是,在远离源头的空旷空间中,电磁场看起来很无聊。像这样:



最神奇和有趣的事物潜伏在波形成(靠近源)或与物体相互作用的区域中。这些区域通常不超过实验所涉及的无线电发射波长的大小,被称为近场区域。毫无疑问,对近场领域的调查是最好奇的一项,当然,它们只能在大型组织的屏蔽墙后面停留很长时间。

热情的人们很快意识到,要按照与专业相机相同的原理来映射字段,您可以构建自己的坐标扫描仪,或者甚至更简单地将无处不在的3d打印机用于此目的。为什么,实际上,他们甚至为此写了一篇科学文章


3d打印机,而不是挤出机(或与其一起安装)安装了测量探针,天线。上面显示了两个环形天线的耦合系数如何变化:测量的一个和位于打印机工作台上的一个(所谓的S21参数)在空间上的变化。下面是构建Arduino披肩上的高频磁场分布的示例。

尽管自制扫描仪不在消声室的电磁消毒环境中,但它们仍可以产生有趣的结果。而且,如果在上图中的第一个示例中,使用了昂贵的专业分析仪来收集数据(毕竟是一篇科学文章),则在第二种情况下,它们要花费一台便宜的SDR接收器,这使得这种实验更加经济实惠。但是,我们不会停留在3d打印机上,他们已经厌倦了按顺序进行的所有操作。

图片的第二个项目的作者Charles Grassin决定进一步简化该过程,并完全摆脱任何坐标系,例如一个额外的笨重的元素,可以使用OpenCV跟踪测量天线的运动。他构想的系统如下所示:


使用SDR接收器和OpenCV映射电磁场的安装图。

摄像机安装在我们要查看其视野的对象上方。该脚本设置了我们天线的外观,然后像画笔一样在希望看到该区域的区域绘制它。来自天线的信号进入SDR接收器,并且python脚本将天线在帧中的位置与来自接收器的均方根信号电平进行比较。之后,我们得到了具有领域分布的美丽图画。当然,到目前为止,这种方法将我们限制在一架飞机上,但这并没有使它变得不那么有趣。让我们构建这个系统并检查它的工作方式,因为不需要很多细节。

首先,我们决定要精确测量什么。尽管电磁场是一个现象,但我们可以分别查看其电磁成分。每种类型都将需要自己的特殊测量天线。像原始作者一样,我根据以下方案制作了用于磁场的探头天线:


一种用于制造探头的方案以及我制作的示例。如果您认真对待场的映射,那么请制造许多不同尺寸的天线-派上用场。即使没有边距,也有吹肥皂泡的好方法。

这种设计以环状天线的名称为火腿所熟知,但是,与其他兄弟不同,该天线不必与接收器配合使用,这无疑简化了我们的生活。作为探头的基础,最好使用硬或半硬同轴电缆,但是原则上您可以做任何事情。电缆阻抗也不起作用。重要的是天线的尺寸,我们将在后面看到。

为了演示探针如何“感受”电磁场的不同成分,我在CST中对其进行了建模:


, , . — , ( ). . .

即使作为单个实体的两种表现形式,电场和磁场也以不同的方式与天线相互作用。我们从上面制成的编织物中的空隙不过是空气冷凝器。就像电容器一样,它将电场集中在其间隙中。由于结构的对称性,磁场在回路内部具有最大值。因此,如果我们要测量后者,则只需将环路平行于被测物体即可。这就是您需要使用OpenCV在框架中捕获的内容!因此,在天线准备就绪后,添加最后的接触。我们将使用黑色热收缩或电工胶带来改善其视觉识别能力。这是我的工作:


对于最大的天线(直径5厘米),没有缩小所需的尺寸。但是,最后我没有使用它。黑色将与白色背景形成鲜明的对比,因此OpenCV可以更轻松地看到我们的天线。

接下来,您需要获取网络摄像头并将其安装在某种三脚架上。如果突然之间没有网络摄像头,那么也可以使用android上带有DroidCam应用程序的智能手机。天线连接到SDR接收器,然后又连接到计算机。硬件已准备就绪。

下载camera_emi_mapper.py脚本。它将需要opencvpyrtlsdr起作用。。在指定的链接上有详细的安装说明。请注意,如果您使用Windows,则pyrtlsdr库的位深度应与系统上的python版本相同。该脚本由以下命令启动:

python3 camera_emi_mapper.py -c 1 -f 100

-c 标志可让您选择一个摄像机(如果有多个摄像机),而-f标志则设置将监视信号幅度的频率(兆赫兹)。如果一切正常,那么我们将看到网络摄像头中的图像。对于第一个测试实验,我将OSA103设备放置在框架中,并在发生器模式下以100 MHz的频率将其打开:我们



R键,以便脚本记住背景图像,然后将循环放入扫描区域。然后,使用S键,可以通过以下方式选择我们的天线:



Enter键确认选择后,立即开始从摄像机和SDR接收器捕获数据。好了,并且像往常一样,第一次出现错误:



为了了解OpenCV看到的内容以及捕获无法正常运行的原因,我对脚本的以下几行进行了注释:

# debug only
#cv2.imshow("Thresh", thresh)
#cv2.imshow("Frame Delta", frameDelta)

它们会打开两个其他窗口,您可以在其中查看天线与背景图像的对比度。对比度通过阈调整

    	
thresh = cv2.threshold(frameDelta, 50, 255, cv2.THRESH_BINARY)[1]

最初是15,我将此值增加到50,然后开始放心地捕获天线。必须根据框架中的照明选择此编号。同时,我尝试了天线的亮度,因为黑色有时会与大型方形FPGA混淆。经过这些更正之后,一切都开始像时钟一样工作:


扫描完成后,您需要按Q,脚本将构建字段分布。在这种情况下,结果如下:


老实说-很少有人了解,所有事情都变得模糊不清,并且有些离婚。并不是我期望得到一个超级结果,而是我希望看到更具体的信息,例如,设备中的哪些电路参与了这一代。尽管如此,电磁场的映射应该给出问题的答案,而不是提出新的问题。我再次查看代码,发现在构建过程中现场的图像非常模糊。我通过将sigma值从7更改为2来降低了这种影响:


blurred = gaussian_with_nan(powermap, sigma=2)

另外,我更换了测量对象。要测试该方法,您需要一些简单的东西作为测试对象,而内部结构复杂的设备不适合此方法。此外,必须预先知道新对象的射频磁场的分布,以便清楚脚本是否正确显示了这些场。同一磁环完全符合该标准。如我们先前所见,在一个回路中,磁场集中在其回路内部。因此,在扫描时,我们应该看到它。我焊接了一个简单的方形谐振电路,形式为铜箔和电容器:


, . , . , .

您可能有一个问题-如果这里甚至没有任何资料,我们将如何以这种方式查看该字段!事实是,我们被白噪声(当我们没有调谐到喜欢的电台时听到的“噪声”)包围,并且在其频谱中已经几乎存在任何所需的频率。如果将测量天线靠近谐振电路,则在该电路本身的谐振频率下,它更容易受到噪声的影响。 SDR接收器是如此灵敏,甚至可以用来测量无源物体中的磁场!让我们尝试一下会发生什么:



我尝试非常谨慎地执行操作,但是在此过程中,我还是稍微移动了粘贴轮廓的图纸。但是,结果还不错。您可以更快地驱动我们的探针。据我了解,数据处理的速度仅取决于计算机的性能和手的抖动。无论如何,我的笔记本电脑的视频卡在测试过程中会明显拉紧。是的,而且我还将颜色图更改为对眼睛而言更舒适的等离子:



似乎实践仍然与理论和工作方法相吻合。我们在电路内部看到了预期的磁场。同时,我们图像的分辨率直接取决于测量天线的大小,这就是为什么磁场在实际位置上有些偏离的原因。这就是天线尺寸如此重要的原因,因为这种偏移的大小将取决于它。还可以清楚地看到,天线运动方向的变化会使图像失真。这是因为这样的“绘制”过程使我有些怀疑:



通过与以上示例类似,该方法在天线的移动方向上给出了良好的分辨率。但是,随着该方向上的每次变化,误差都会以场图像位移的形式蔓延到数据中。我圈出了相同的轮廓,但是这次是对角线,再次证明了这一缺点。顺便说一下,两次扫描均以87 MHz的频率进行。



不幸的是,我是一个马马虎虎的程序员,因为我还没有弄清楚如何修改代码来解决此错误。相反,我可以提供一种简短的创作方法来测量字段。我们称其为单笔触技术:



一切都很简单-如果有一个方向,那么就没有错误。当然,尽管这进一步限制了可能的应用范围,但是我们将确保观察到的场或多或少与现实相符。现在,知道如何正确测量后,您可以尝试扫描其他东西。例如,您是否知道完全不需要导体就能完成一个已经显示的谐振电路?正如我已经说过的,高频电流流过电容器,这意味着您可以仅使用电容器而仅用它来组装谐振电路。小心地增加电容器很多次,并得到一块陶瓷,陶瓷也可以在电容器附近定位磁场(感谢ITMO的同事提供了样品)。扫描频率254 MHz。



值得一提的是该方法的另一个缺点-从物体到天线的距离在理想情况下应该相同,否则我们的场图将不再在平面上,这将导致其失真。从理论上讲,我认为也可以使用OpenCV通过跟踪框架中天线尺寸的变化来解决此问题。

在最后的演示中,我整理了一个更复杂的东西:



这是一个多级低通滤波器,它也可以称为传输线,甚至可以称为超材料(具有很大的延展性)。电路图如下所示:



由于此结构中有许多谐振元件,因此它也具有很多谐振频率(由第一个实验的设备测量)。图表的每个最小值都是频谱中的共振:



这种共振称为本征模。他们每个人都有自己独特的领域图景。但是,它们全都以一定的规律性相连,即适合结构的波数,在扫描时可以清楚地看到:



计算了场峰值的数量之后,您可以准确地命名模式编号。它也很好地说明了电磁场如何降低其在材料内部的速度。毕竟,波速较小-图像中包含更多的场峰值。我认为这是一种很好的视觉辅助。

如您所见,跨越SDR和OpenCV的想法非常好。最重要的是,这种结合为无聊而单调的测量过程带来了创造性的触动。我认为,将来它可以使电磁场的研究变得更加令人兴奋,并为家庭实验室提供良好的帮助。

All Articles