Show HN: Heard – offline LoRa mesh that keeps hiking groups together

luciobaiocchi2 pts0 comments

GitHub - luciobaiocchi/heard: Offline group-safety mesh for hikers: ESP32 + GPS + LoRa, with a firmware-in-the-loop simulator and 3D replay viewer · GitHub

/" data-turbo-transient="true" />

Skip to content

Search or jump to...

Search code, repositories, users, issues, pull requests...

-->

Search

Clear

Search syntax tips

Provide feedback

--><br>We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

Saved searches

Use saved searches to filter your results more quickly

-->

Name

Query

To see all available qualifiers, see our documentation.

Cancel

Create saved search

Sign in

/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up

Appearance settings

Resetting focus

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

luciobaiocchi

heard

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

main

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>2 Commits<br>2 Commits

code

code

images

images

.gitignore

.gitignore

HEARD_PROJECT.md

HEARD_PROJECT.md

LICENSE

LICENSE

README.md

README.md

View all files

Repository files navigation

HEARD — Hiking Emergency Assistance and Rescue Device

Embedded devices for the safety of hiking groups in remote environments — fully offline, over LoRa.

Born as a Bachelor's thesis in Computer Engineering and Computer Science — Alma Mater Studiorum · University of Bologna (Cesena Campus), AY 2024–2025.<br>Author: Lucio Baiocchi · Supervisor: Prof. Alessandro Ricci

📺 Build video: the whole creation process is documented on YouTube.

The Heard Core prototype: live group status on e-ink (left) and the internals — ESP32, GPS, LoRa, e-ink (right). 10-cent coin for scale.

The problem

In remote mountain areas there is no cellular coverage, and existing safety tools (PLBs, satellite messengers, GPS locators) are individual-use only: they can call for help after an accident, but they don't help a group stay together and prevent one. HEARD is a small mesh of ESP32 devices that lets a group leader know, in real time and with zero infrastructure, where everyone is and whether anyone left the planned route .

How it works

Every hiker carries a device with GPS and a LoRa radio .

The planned route (GPX) is loaded onto each device; an onboard algorithm continuously classifies the hiker as IN_PATH / OUT_PATH against a configurable corridor (default ±100 m).

The group leader's device (Core ) periodically polls the group over LoRa. Out-of-range members are reached via multi-hop relaying through the other devices (selective flooding with hop lists).

Everything runs offline on the devices themselves: no phone, no internet, no SIM.

Device variants

Device<br>User<br>Role

Heard Core (dispositivo_madre)<br>Guide / experienced hiker<br>E-ink display, SOS button, route recording, group coordination

Heard Node (dispositivo_figlio)<br>Adult hiker<br>Follows the route, answers polls, relays messages

Heard Pico (concept)<br>Child / beginner<br>Button-sized: send distress, receive alerts

LoRa protocol (3 message types)

REQ|hopList|knownPositions Core broadcasts a position request<br>WAIT|deviceId an intermediate node signals it is relaying<br>POS|id,lat,lng|... a device returns (aggregated) positions

WAIT messages keep the Core's timeout alive while distant nodes are being reached; duplicate relays are suppressed via hop-list fingerprints. Polling interval, global and per-device timeouts are configured in code/dispositivo_madre/include/config.h.

Simulator + 3D replay viewer

The repository includes a full digital twin of the system: the actual firmware protocol code (ConnectionManager) is compiled into a Python module via pybind11 and driven tick-by-tick along real GPX tracks, with a probabilistic LoRa channel (distance falloff + optional terrain line-of-sight using ITU-R P.526 knife-edge diffraction over real DEM tiles).

Recorded runs are replayed in the browser on 3D terrain (MapLibre GL JS):

Blue trail = planned route, green corridor = allowed deviation, dots = devices (red = Core), expanding rings = LoRa transmissions, sidebar = live protocol state, delivery metrics and group connectivity matrix.

# 1. Build the simulation module (firmware C++ → Python)<br>cd code/simulator<br>pip install numpy matplotlib pybind11<br>cmake -B build -DPYTHON_EXECUTABLE=$(which python3) && cmake --build build<br>cp build/heard_sim*.so .

# 2. Record a run (real GPX, optional terrain obstruction, custom radio range)<br>python3 record.py --loops 1 --terrain --reliable 2000 --max-range 5000

# 3. Replay it in 3D<br>cd web && python3 -m http.server 8000 # → http://localhost:8000

See code/simulator/README.md for the full...

heard lora group device code build

Related Articles