I read about a search and rescue case a while back — someone lost off-trail for the better part of a day, close enough to other people that a light or a signal fire would have been spotted almost instantly, but nobody nearby had any reason to look. No cell signal, no way to call for help, and just as importantly, no way to actively signal for it either. That gap stuck with me.
The uncomfortable truth is that almost all of our emergency communication assumes the grid is still up — cell towers, wifi, satellite services you pay a monthly fee for. But the moments people actually need to signal for help are disproportionately the moments that infrastructure fails: a wildfire that's taken out cell towers, a hurricane that's knocked out power and comms for days, a hiking trip somewhere with no signal to begin with, an earthquake that's left public utilities scrambling to even locate people, let alone reach them. In exactly the situations where public services can't get to someone fast, most people are left with just their voice and whatever's in their pockets.
I had a drawer full of ESP32 boards from other projects and kept coming back to how much of what an emergency signaling device actually needs, those boards already do well: a way to blink or beep a message with precise, repeatable timing, and a radio that can talk to another nearby radio without any infrastructure in between. ESP-NOW specifically doesn't need a router, an access point, or even pairing — it just broadcasts, peer-to-peer, to anything listening nearby. That's the kind of off-grid behavior worth building around: something that works because the grid isn't there, not something that quietly depends on it anyway.
So I built SIGNAL — a single-button, pocket-sized device meant to do two things when public utilities can't.
What it doesMorse Pacer & Torch Guide. Select a preset — SOS, MED, FIRE, LOST, HERE, OK — and SIGNAL paces it out on-screen in perfectly timed Morse code. The OLED alternates between a filled "LIGHT ON" block and an outlined "LIGHT OFF" box, synced exactly to ITU-standard dot/dash/gap timing, so anyone — with zero prior knowledge of Morse — can flash a flashlight, key a radio, or bang on metal in correctly formed code just by following the screen. It turns a fairly obscure skill into something anyone can execute correctly under stress.
2.4GHz Disaster Beacon. Switch to beacon mode and SIGNAL broadcasts a structured distress packet — device name, status, an incrementing counter — over ESP-NOW every 2.5 seconds, straight to the broadcast address. No router, no access point, no pairing. Any nearby ESP32 listening on the same channel picks it up directly.
Everything runs off a single push button. A short click moves through the menu, a long press (600ms+) selects, and a double-click instantly cancels whatever's playing and drops back to the main menu — deliberately minimal, because in an actual emergency, fumbling through submenus is the last thing you want.
Inside the buildThe whole circuit is six wires: an SSD1306 OLED over I2C (SDA/SCL), a push button wired to the ESP32's internal pull-up (no external resistor needed), and an optional buzzer that beeps in sync with the Morse timing. The buzzer is genuinely optional — the visual light guide works standalone, so it's easy to build a stripped-down version without it.
On the firmware side, the whole thing runs as a non-blocking state machine. Button input is decoded through a debounce loop that distinguishes single-click, double-click, and long-press purely by timing millis() deltas — no delay() calls anywhere in the input path, so the device is never unresponsive while something else is happening on screen. Each Morse preset gets expanded once, on selection, into a flat sequence of dot/dash/gap symbols from a standard ITU lookup table, then played back on its own timed loop that drives the buzzer and the OLED's light-guide block in sync. The display itself runs on U8g2 over I2C, redrawing on a lightweight refresh loop — menu highlight, Morse pacer, and live beacon counter are all just redrawn frames, not static bitmaps. Beacon mode puts the ESP32's WiFi radio into station mode with no access point, and fires a small packed struct to the ESP-NOW broadcast address on a fixed interval, with a send-status callback driving the on-screen "TX OK" indicator.
The prototype pictured here is corrugated cardboard, hot glue, and parts pulled from a drawer — and that's deliberate. If this only works as a polished, expensive build, the whole premise falls apart. It needs to be something anyone can put together with basic tools and cheap parts, then upgrade later.
The enclosure is cut from a single sheet of cardboard: side strips, front and back panels with an OLED window and button cutout traced directly from the actual components (component sizing varies enough between suppliers that fixed dimensions fight you), and a handful of small standoff squares to hold the electronics stack at the right height inside. Everything's glued together with hot glue, dry-fitted before any seam is sealed permanently.
None of that is set in stone. The wiring and firmware are entirely enclosure-agnostic — the same electronics stack drops into a 3mm PVC shell cut on a laser cutter, or a 3D-printed case modeled around the same footprint, without touching a single line of code. That's the natural next step if this needs to survive actually being carried on a hike or kept in a go-bag long-term, rather than sitting on a bench.
Using it in the fieldPower on, and SIGNAL boots to its splash screen, then drops into the main menu — seven presets, the current selection shown in an inverted highlight bar. Cycle with single clicks, activate with a long press. Pick a Morse preset and the display switches into pacing mode: hold a flashlight and toggle it in time with the "LIGHT ON / LIGHT OFF" guide, no Morse knowledge required. Pick 2.4G Beacon and it starts broadcasting continuously in the background, showing a live transmission count until double-clicked to stop.
Where this goes nextThis isn't meant to replace real emergency services — it's meant to buy time and visibility in the exact window where those services can't reach someone yet, which, during an actual disaster, is often the window that matters most. A few directions worth building on: a dedicated receiver unit that logs incoming beacon packets with a timestamp, so this becomes a real two-node distress system instead of a signal into the void; solar charging ahead of the LiPo boost module for genuinely multi-day off-grid use; and weatherproofing, since cardboard obviously isn't going to survive rain.
Full source code is open on GitHub, and a detailed step-by-step build guide with photos is up on Instructables — both linked below.
Code:https://github.com/The-Uncertified-Engineer/SIGNALFull build guide:https://www.instructables.com/SIGNAL-Pocket-Off-Grid-Morse-Pacer-Emergency-Beaco
Off-grid resilience doesn't have to mean expensive, over-engineered gear. Sometimes it's a $10 microcontroller, a lookup table of dots and dashes, and a decision to make sure that when the towers go down, there's still a way to say I'm here and be understood.















Comments