Electromagnetic interference mapping

Code - 22-04-2019


Electromagnetic Interference (EMI) is a phenomenon where electrical circuits generate RF disturbances through electromagnetic induction, electrostatic coupling, or conduction.

To comply with Electromagnetic Compatibility (EMC) regulations, various constraints and test methods have been defined, such as the CE mark in the European market (e.g. EN55022), which limit the amount of parasitic electromagnetic emission per device.

EMI can also be a serious concern for product operation, as radiating components on a PCB can cause glitches or other issues. This makes it crucial to consider EMI during the integration, validation, and debug of hardware systems.

EMC simulation with ANSYS EMC simulation with ANSYS, by LEAP FEA Team, finiteelementanalysis.com

Finite element analysis EM modeling and simulation tools can be used during the design phase, but real tests require expensive equipment, a lot of physical space, and specially trained engineers or technicians.

Inside of shielding room Inside of shielding room by Stan Zurek - Own work, CC BY-SA 3.0, Wikimedia

Moreover, compliance and pre-compliance testing does not provide insight into the spatial EM radiation distribution, making it unsuitable for fast prototyping, hardware iterative design, and Agile development.

To address these challenges, I developed a proof-of-concept solution that provides a simple and cost-effective system to obtain accurate 2D EMI mapping of a board or device. In this article, I explore two methods to create fast maps of the near-field EMI.


The following video demonstrates the project in action.

Method #1: Using a 3D printer

One approach to obtaining accurate 2D EMI maps involves moving an H-field probe using the carriage of a 3D printer or any CNC machine while measuring the radiated power.

To implement this method, I used my DIY Skeleton 3D printer with a DIY probe mounted on a 3D printed holder.

Probe mounted on the Skeleton3D 3D printer

A Python script controls the printer by sending GCode commands to move the carriage while measuring the EM field with an RTL-SDR radio receiver.

There are 4 parameters that affect the speed of scan:

  • The size of the zone to map,
  • The resolution of the grid, which is also limited by the size of the H-field probe loop,
  • The frequency span of the scan. For instance, 1GHz would take a much longer integration time.
  • The printer's feed-rate, which we can tune.


Here's a sample result using this method:

EMI scan of an Arduino Uno board with a grid resolution of 5mm EMI scan of an Arduino Uno board with a grid resolution of 5 mm

This map shows a good view of the spatial distribution of near-field emissions, making it possible to perform broadband scans even with a narrow receiver by sweeping the center frequency.

It is possible to do broadband scans even with a narrow receiver by sweeping the center frequency.

Although this method produces accurate results, it is quite cumbersome and requires a 3D printer and mounting the probe, etc.

Method #2: Using machine vision

This method utilizes a near-field probe that is moved above the device under test, while a camera tracks its current position. RF power measurements are performed by an RTL-SDR, and a Python script handles all of the signal processing: tracking in the camera stream, computing the RF power, and generating an EMI heat-map. The principle of operation is shown in the schematic below:

Schematic of the principle of operation Schematic of the principle of operation of the machine vision technique

The Python code for this method was written in Python 3 using OpenCV (for image processing and tracking), pyrtlsdr (for the RTL-SDR wrapper interface), and various math and signal processing libraries.

Clip showing the tracking of the probe with the machine vision method. The area that has been mapped is highlighted in red.


A short video demonstrating the scanning process of an Arduino Uno board performing analog readings and computation is shown below:

Output samples are shown below:

Arduino Uno board EMI scan EMI scan of an Arduino Uno board (as shown in the video).

MacBook pro EMI scan EMI scan of a MacBook laptop under heavy artificial CPU load.

RF hairpin filter EMI scan EMI scan of a hairpin RF filter (see article). A signal fully out of filter bandwidth is fed from the bottom SMA.


  • Simple and fast: the setup and measurements can be completed in as little as 5 minutes.
  • High resolution: the physical size of the probe is the main limitation, but this can be mitigated through smart signal processing.
  • Inexpensive: all the necessary hardware costs less than 15 USD, including a DIY near-field loop probe.


  • Repeatability: the main issue with this method is the handheld probe, which can lead to varying distances between the probe and the device under test. Using a jig to keep the probe at a known height can help mitigate this issue.
  • Bandwidth: the RTL-SDR used in this method has a bandwidth of only 2MHz, but better SDRs can provide hundreds of MHz.
  • Software: the current implementation of the code has some limitations, particularly with respect to probe tracking and signal processing. However, these issues can be addressed with additional investment in time and resources.

Download and usage

To download the Python scripts, visit my Github repository at https://github.com/CGrassin/EMI_mapper. The repository contains detailed instructions on the prerequisites, setup, and usage of the program. Please note that this is an early proof-of-concept program and may require some Python knowledge to use.


This open-source proof-of-concept program is an efficient method of creating 2D electromagnetic radiation heat-maps, despite its known limitations.

There is a vast potential for improvement with better signal processing, such as utilizing the I/Q samples to recover a wealth of information on the actual radiation, including harmonics, power distribution, phase, circuit states, surges, and 3D mapping.

With improved computer vision algorithms and graphical representations, this tool could provide engineers with a unique EMI/EMC insight.

Appendix: DIY H-field probe

My probe is a homemade antenna known as an H-field loop. While commercial near-field probe kits can be relatively expensive, it is easy to make one using a piece of semi-rigid coaxial cable with an SMA/SMB connector.

The schematic below illustrates how it can be built:

H loop probe schematic

There are many resources available that provide additional information on how to make these antennas. For example, the article on interferencetechnology.com or the video on EEVBlog are great places to start.

The image below shows one of my DIY probes before I covered it with insulating tape:

uninsolated H loop probe

It is recommended to insulate the probe with heat-shrink or electrical tape to avoid shorting the device under test while probing.

In addition, I highly recommend placing a ferrite on the probe to prevent common-mode currents from flowing on the coaxial shield.


What is on your mind?

  • #1 Martin - G8JNJ

    I wonder if this could also be used to map the radiation pattern of an antenna by means of an optically tracked drone with a suitable RF detector and data link.
    For greater precision maybe attaching something like a modulated LED (UV ?) beacon to the sensor probe would perhaps permit pin point optical tracking.

    on April 30 2019, 12:08

  • #2 Author Charles

    This is an interesting idea! I was actually planning to do it the manual way for a future project. I wonder if the GPS error is low enough to make it even simpler, without optical sensing. Then, the drone could be completely autonomous to take the measurements and output radiation patterns fast. Cameras are incredibely powerful and cheap sensors, but they take a lot more data processing and thought.

    on May 1 2019, 23:03

  • #3 Alexandre

    Thanks for this great work. I was wondering how do you leverage these heatmaps in order to be confident your product will pass EU certifications? Do you nees to make multiple pass, one for each frequency?

    on May 3 2019, 8:22

  • #4 Author Charles

    Thank you, Alexandre! The various standards define radiated EMI limits in terms of field strength (in V/m) at a given distance, for several bands. For instance, the FCC part 15 specifies a maximum of 150µV/m for the 88-216MHz, measured at 3 meters. There are several challenges to check this with the data we have and quite a bit of math involved here.
    First, the SDR/antenna would need to be calibrated, which is possible with the adequate equipment. Then, the far-field must be extrapolated from the local near-field. As you observed, a frequency sweep is required to get the power over the full band.
    Of course, this could be automated in the python script. This is why I described my current implementation as a "proof-of-concept"! The point here is that we have the tool to get a lot more information than what we would get from a far-field measurement.

    on May 5 2019, 0:51

  • #5 G8JNJ

    Hi Charles,
    This RSGB drone measurement presentation by Jenny Bailey, G0VQH may be a good starting point.

    on May 6 2019, 12:09

  • #6 John

    Nice. (I saw it on Hacker News.) Your #1 limitation, repeatability, could be somewhat addressed by OpenCV not just producing an (x,y) position but also an estimate of the size of the loop, allowing you to derive a z-coordinate?

    on May 8 2019, 8:43

  • #7 Author Charles

    Hi John! That is is true, and pretty smart! However, the issue with that is that we need to have a Z resolution in the order of millimeters to get consistent readings. This means that the tracking has to be incredibly accurate. Maybe with 2 or 3 markers on the probe?

    on May 8 2019, 11:16

  • #8 Thor

    Very interesting project. Thank you for sharing.

    on May 8 2019, 14:58

  • #9 Malik

    Great work again. I think one of the interesting thing we could do is do a frequency sweep, where sweeping 30Mhz to 1GHz steps.

    on August 6 2020, 17:13

  • #10 Luxondes

    Bonjour et bravos pour votre réalisation de carto avec traitement d'image
    pour information Luxondes développe des systèmes un peu identique mais en réalité augmenté
    et nous avons également un systéme de carto avec Kinect
    Contactez nous pour plus d'info.
    A bientôt
    L'equipe luxondes

    on October 14 2020, 16:04

  Back to projects

Related articles