Introduction: Promiscuous Leds

Ever wonder about all the WiFi around you ? This simple display will graphically show you the surrounding WiFi users. This device continuously scans the local area WiFi channels in promiscuous mode, looks at the headers & tosses the payloads( a bit like reading the envelope but not opening it). We can then grab a list of who is sending & display some information.

Since we don't want to creep people out too much we only display the lower three bytes of the senders MAC (which is a six byte number) the top bytes are used for manufacture information so the lower 3 tend to be random enough to get a pretty colors(the program further reduces this to 5-6-5 color code) . There are 13channels in N.A. WiFi this is mapped across 16 columns and we make the row signal strength mapped from -30db to -100db. Having the color mapped against the channel & signal would make the display static & we couldn't know when a signal was moving in or out, decreasing or increasing so we set the display to do a lossy blur so any signal fades to black before being scanned again.


  1. ESP32 -Wrover-B
  2. 16x16 led array ws2812b
  3. level shifter
  4. 220uf 16V
  5. 2.1mm female jack
  6. 5v 1-3A supply
  7. Optional: header strip, Dupont female wires , translucent plastic

Step 1: Componant Choices & Putting It Together

The level shifter i used was convenient - & the first one my hand hit / almost any 3->5 volt upshifter or bidirectional level shifter could be used. In retrospect, I used one wire less with this one since it had its own regulator.

I used a ESP 32-Wrover-b because I've had better luck integrating with external libraries ( I did try esp8266 but wouldn't compile ).

I utilized the LED outgoing connector to attach the level shifter to LED input.

Power must be a regulated 5v going to the panel with the capacitor on the input to prevent surges

- USB power on the ESP could not handle the current-

So with only 8wires it can be up & functional *(9wires if level shifter needs +3.3 v)

  1. ESP pin 4 -> level shifter input (3.3v side)
  2. ESP Gnd -> level shifter Gnd
  3. ESP 5v -> level shifter 5Vdc

  4. level shifter output (5v side) to LED panel Data IN
  5. level shifter Gnd to LED panel Gnd

  6. level shifter 5V to LED panel 5v

  7. LED panel 5v & Capacitor & 2.1mm jack

  8. LED panel Gnd & Capacitor & 2.1mm jack

Step 2: Software

The code is based on ESP32-WiFi-Sniffer which in turn is based on the work of Łukasz Podkalicki -

with further inspiration from FastLED examples from Kriegsman

I placed it all in a 3d printed case with a small piece of 1/8" translucent acrylic. IMO it worked best when the LEDs were ~40mm from the plastic

Code & case source:

Lighting Challenge

Participated in the
Lighting Challenge