Building a Pocket Wardriving Rig with an ESP32 and GPS
I wanted a wardriving box small enough to toss in a bag and forget about — no laptop, no phone tether, just power it on and let it log. This is the first pass: an ESP32, a cheap GPS module, and a microSD card, in a printed enclosure small enough to clip to a strap.
Parts
- ESP32 dev board (any WROOM-32 variant works)
- NEO-6M GPS module
- microSD breakout (SPI)
- 18650 cell + a basic TP4056 charge/protection board
- Small 3D-printed enclosure
Total cost is under $25 if you’re buying modules instead of a pre-built board, and the whole thing runs for a full day on a single 18650.
Wiring
Nothing unusual here — the GPS module talks over UART, the SD card over SPI, and both share the 3.3V rail:
| Module | ESP32 pin |
|---|---|
| GPS TX | GPIO16 (RX2) |
| GPS RX | GPIO17 (TX2) |
| SD CS | GPIO5 |
| SD MOSI/MISO/SCK | GPIO23/19/18 |
The GPS module needs a clear-ish view of the sky, so it sits at the top of the enclosure under a thin printed window rather than buried next to the battery.
Firmware approach
The logging loop is deliberately simple:
- Put the Wi-Fi radio in promiscuous mode and capture beacon/probe frames.
- Alternate short windows of BLE scanning using the same radio.
- On every frame, grab the current GPS fix (or the last known good one if there isn’t a lock yet) and append a line to a WiGLE-compatible CSV on the SD card.
- Sleep briefly between windows to keep power draw manageable.
That CSV format means captures drop straight into WiGLE or any tool that already speaks that dialect, without a conversion step. This is the same rough shape as the ESP32-class sensors in projects like AntiHunter — single radio, dumb logger, no realtime processing on-device.
Power and enclosure
The TP4056 handles charge and protection, so the whole thing survives being tossed in a bag without a fuel gauge or a fancy PMIC. Battery life lands around 10-12 hours of continuous scanning on a single 2600mAh 18650, which comfortably covers a day of driving or walking.
The enclosure is a simple two-piece print: a base that holds the board stack and battery, and a lid with a cutout for the GPS window and a status LED. Nothing press-fit — just two M2 screws — so it’s easy to get back in for firmware updates.
What’s next
Right now this is a standalone logger — pull the SD card, drop the CSV wherever it needs to go. The obvious next step is a mesh uplink so a handful of these can report back without ever touching a laptop, which is the direction I’m taking with MeshRF. More on that once there’s a second unit built.