Coder Social home page Coder Social logo

emi_mapper's Introduction

EMI mapping with RTL-SDR and OpenCV

Mapping near-field electromagnetic parasitic emissions is useful for the design, debug and pre-compliance testing of electronic devices. Unfortunately, there is no simple way to make EM scans with sufficient level of details/accuracy, speed and reasonable cost. Hence, I developed this solution to make high-resolution and fast 2D maps of RF EMI for PCBs and more.

You can find more information and details on my project page (including more examples): http://charleslabs.fr/en/project-Electromagnetic+interference+mapping

Prerequisites

Hardware requirements:

  • A USB camera (for camera_emi_mapper.py script only),
  • A 3D printer (for gcode_emi_mapper.py script only),
  • An RTL-SDR with a (DIY?) near-field probe.

Software dependencies for the python scripts:

  • OpenCV (sudo apt install python3-opencv && pip3 install opencv-contrib-python imutils setuptools)
  • Pyserial (pip3 instal pyserial)
  • pyrtlsdr (sudo apt install rtl-sdr && pip3 install pyrtlsdr)
  • numpy, scipy, matplotlib (pip3 install scipy numpy matplotlib)

These install commands were tested in Ubuntu 19.10.

Method #1: 3D printer EMI mapping

To make an EM map with the 3D printer method:

  1. Put the DUT on the printer's bed and the near-field probe attached to the carriage,
  2. Launch the script (optionnal arguments, refer to the help),
  3. Wait for the printer to scan the board, the result will be displayed as soon as it is done.

Call with python3 gcode_emi_mapper.py -h to view the help (arguments description).

Typical use: python3 gcode_emi_mapper.py -s /dev/ttyUSB0 -f 100 -z 120 -r 5 (start the script using a 100MHz center frequency, zone size of 120mm, resolution 5mm, where 3D printer is connected to the /dev/ttyUSB0 serial port).

Method #2: Camera EMI mapping

To make an EM map with the machine vision method:

  1. Launch the script (optionnal arguments, refer to the help),
  2. Properly position the device under test (DUT) in the camera image,
  3. Press "R" to set the position (the camera and DUT must not move after pressing "R"),
  4. Put the probe in the frame, press "S", select the probe with the mouse and press "ENTER" to start the scanning,
  5. Scan the DUT by moving the probe,
  6. Press "Q" to exit. If a scan was made, the result is displayed.

Call with python3 camera_emi_mapper.py -h to view the help (arguments description).

Typical use: python3 camera_emi_mapper.py -c 1 -f 100 (start the script using a 100MHz center frequency and camera id 1).

Sample result

This is a scan of an Arduino Uno board performed with this script and a DIY near-field loop probe:

Arduino Uno RF power map.

emi_mapper's People

Contributors

cgrassin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.