Build a DIY EMF/RF Field Strength Meter with ESP32
A dedicated EMF/RF field strength meter is a genuinely useful shop and home tool — tracking down a noisy switching supply that's wrecking your SDR reception, checking for AC wiring hot spots behind a wall, confirming a WiFi/Bluetooth device is actually transmitting, or just satisfying curiosity about what's radiating in your house. Commercial meters are either cheap and vague (a single LED bar with no real numbers) or genuinely expensive lab equipment. This project builds a practical middle ground: an ESP32-based meter that logs and displays both low-frequency AC magnetic field strength and broadband RF power, with a small display and optional WiFi logging.
How It Works
This build actually combines two separate sensing techniques, because "EMF" covers two very different phenomena that need different sensors:
- Low-frequency AC magnetic fields (50/60Hz mains wiring, transformers, motors) are sensed with a simple inductor coil — a wound coil develops a tiny AC voltage proportional to the changing magnetic field passing through it, which gets amplified and rectified into a DC level the ESP32's ADC can read.
- Broadband RF fields (WiFi, Bluetooth, cell signals, switching supply harmonics) are sensed with a simple RF detector circuit built around a Schottky diode and a small antenna — the diode rectifies the RF signal into a DC voltage proportional to field strength, a classic and well-understood "diode detector" topology.
Both analog outputs feed the ESP32's ADC, get scaled and displayed in real units (mG for magnetic field, relative dB for RF), and get logged to the OLED screen with a simple bar-graph and numeric readout. This is a relative/comparative instrument, not a calibrated lab-grade meter — it's excellent for finding sources and comparing relative strength, not for producing certified compliance measurements.
Build Steps
- Wind the magnetic field coil. Wind roughly 1000-2000 turns of 32-38AWG magnet wire around a small ferrite rod or plastic bobbin core — more turns increases sensitivity at the cost of a slower response and higher coil resistance. Coat the finished coil in a thin layer of hot glue or heat-shrink to protect the fine wire.
- Build the magnetic field amplifier. Feed the coil into an op-amp stage (a simple non-inverting amplifier with gain around 100-1000x depending on coil turns) followed by a precision rectifier so the ESP32 sees a clean DC level proportional to field strength rather than a raw AC signal it would need to sample and process.
- Build the RF detector. A small whip or PCB trace antenna feeds a Schottky diode (1N5711 or BAT series works well for its low forward voltage) configured as a simple envelope detector, followed by a smoothing capacitor and a op-amp buffer stage to present a clean, low-impedance DC level to the ADC.
- Wire both amplifier outputs to separate ESP32 ADC pins. Use the ESP32's ADC calibration API for more accurate low-voltage readings, since both circuits produce fairly small DC swings at typical ambient field strengths.
- Add the display. A small SSD1306 OLED (wired over I2C, covered in this site's Driving TFT and OLED Displays guide) shows live numeric readings and a simple bar graph for each channel.
- Calibrate against known sources. Hold the meter near a known mains cable for magnetic field reference and near a WiFi router at a known distance for RF reference, and set your display scaling so the readings track sensibly relative to each other — true absolute calibration requires reference equipment most makers won't have, but relative, repeatable readings are what makes this tool useful day to day.
- Optional: log readings over WiFi. Push readings to Home Assistant or an InfluxDB/Grafana stack (see this site's Home Weather Station guide for the InfluxDB/Grafana pattern) if you want a walking survey logged with position/time rather than just a live handheld readout.
Enclosure and Antenna Placement
A 3D-printed enclosure works well and — critically — needs to keep all conductive elements (screws, any metal standoffs) away from the sensing coil and antenna, since metal near either sensor distorts your readings. Print the enclosure in a low-permittivity, non-conductive filament (standard PLA/PETG is fine) and route the antenna wire away from the ESP32's own WiFi antenna and any switching regulator on the board, both of which will otherwise show up in your own readings as false RF sources.
What This Meter Is and Isn't Good For
Good ForNot Suitable For Finding which wall run or appliance is radiating strongestCertified RF safety compliance measurements Confirming a device is actually transmittingPrecise absolute field strength in calibrated units Tracking down noise sources hurting SDR/radio receptionFrequency-selective measurement (it's broadband, not tuned) General curiosity and comparative surveys around the house/shopMedical or occupational safety decisionsSafety Notes
This project is entirely passive sensing — it doesn't transmit anything and poses no RF exposure risk itself. If you use it to investigate suspected mains wiring problems (unusually strong magnetic field readings near a wall or outlet), treat that as a signal to call a licensed electrician for inspection, not as a DIY electrical troubleshooting tool — a hobby-grade field meter can point you toward a problem area but can't diagnose or safely resolve an actual wiring fault.
This build turns two well-understood, decades-old sensing techniques — a coil for magnetic fields, a diode detector for RF — into a genuinely handy shop tool, and it's a good beginner-friendly analog electronics project if you've mostly worked with digital sensors so far: real op-amp gain stages, a real rectifier, and results you can immediately go verify against a known source.
Related Guides
- How to Program Addressable LED Strips: WS2812B Patterns, Effects, and Power Design
- I2C vs SPI vs UART: How to Choose and Use Serial Communication Protocols
- How to Use Sensors with Arduino and ESP32: Temperature, Distance, Load, Current, and Hall Effect
- How to Control Motors with Arduino and ESP32: Stepper, DC, and Servo Drivers
- How to Hack Wi-Fi and Bluetooth with the Flipper Zero and Wi-Fi Marauder
- ESP32: Setting Up for Arduino IDE
- Setting Up Marauder on the ESP32 Wi-Fi Dev Board for Flipper
- Setting Up Wi-Fi Dev Board with Flipper Zero