Mesh Beacon — Neighborhood LoRa Mesh with Solar Trickle & LTE SMS/Email Gateway
Operational, repeatable build: ESP32 + LoRa (US-915), solar-trickled nodes, a status board with a check-in button, and an LTE bridge that forwards critical messages to SMS/email when the internet resurfaces.
What you’re building
- Nodes (x3+) — ESP32+LoRa radios flashed with Meshtastic, 915 MHz antennas, solar-charged 18650s.
- Repeater — same hardware, elevated placement, router role enabled.
- Gateway — Meshtastic USB radio + mini PC/Raspberry Pi + LTE router; Python bridge to SMS/Email.
- Status Board — small display shows last messages; big pushbutton sends “I’m OK / Need help”.
Standards based, legal-use aware (FCC Part 15). Region set to US915 with proper power/channel presets.
Bill of Materials (core)
| LoRa Nodes | LILYGO T-Beam (ESP32 + SX1262/127x, 915 MHz) or Heltec WiFi LoRa 32 V2 |
|---|---|
| Antennas | 915 MHz whip (keep matched for US-915) |
| Solar (node) | 6 V 5–10 W panel → Adafruit BQ24074 Solar Li-ion charger → 18650 → 5 V boost |
| Gateway LTE | GL.iNet router (USB LTE or built-in) + SIM; or USB LTE modem to mini PC |
| Status Board | Raspberry Pi + 7″ HDMI or any small monitor; big momentary pushbutton |
Choose US-915 hardware and set the Meshtastic region to US during initial config.
Regulatory sanity & radio plan (US-915)
- Unlicensed band: 902–928 MHz under FCC Part 15; devices must not cause harmful interference and must accept interference. Use certified modules/boards and follow antenna/power limits in the firmware presets.
- Meshtastic Region: set to US (band 902–928 MHz). Use LongFast default unless you need LongSlow for extreme range. Avoid custom overrides until your basics work.
References: FCC Part 15; LoRaWAN US915 regional parameters (channelization & band); Meshtastic radio settings.
Node Power (solar trickle)
| Panel | 6 V 5–10 W mono panel |
|---|---|
| Charger | Adafruit BQ24074 Solar Li-ion (smart load-sharing) |
| Battery | 18650 Li-ion 3000–3500 mAh (protected) |
| Boost | Pololu U3V12F5 5 V step-up to power the ESP32 board |
| Fuse | Inline 2 A on battery + |
Gateway Power (bigger)
| Battery | 12 V LiFePO₄ 10–20 Ah |
|---|---|
| Solar | 100 W panel → Victron SmartSolar 75/15 |
| Loads | Meshtastic USB radio + Pi/mini-PC + LTE router |
| Fuse | Blade/MIDI fuses near battery + |
Wiring Maps (ASCII)
Step-by-Step — Flash & Configure Meshtastic
- Flash firmware: Connect board via USB, open flasher.meshtastic.org in Chrome/Edge, select device, flash latest stable. Never power the radio without the antenna attached.
- Initial config: Using the app or web client/CLI, set Region = US, confirm 915 MHz band. Keep LongFast preset initially.
- Channels: Create a private primary channel (your neighborhood). Share via QR with neighbors. Optionally add a public secondary for discovery.
- Roles: On the high node, set Device Role = Router or Repeater; enable Store & Forward on fixed nodes if you want delayed delivery.
- Power tuning: Start at default TX power; only raise if needed. Follow local limits.
Docs: Web flasher + initial config + channels + radio presets are all in Meshtastic’s official docs.
“I’m OK” Check-In Button (no phone needed)
- Wire a normally-open pushbutton between GND and an unused GPIO (e.g., GPIO 26 on T-Beam).
- In Meshtastic, enable the Canned Message module:
- Input Source: scanAndSelect
- Input Broker Pin Press: your GPIO
- Preset list: “OK”, “Need help: water”, “Need help: medical”
- Press: cycles the presets; long-press: sends.
Module supports buttons/encoders; see docs for exact GPIOs per board.
Status Board (Pi + USB radio)
- Plug your Meshtastic node into the Pi via USB.
- Install Python libs: pip install meshtastic twilio sendgrid.
- Run the bridge script below to print the last 50 messages on screen and forward alerts to SMS/Email when LTE is up.
US SMS: comply with Twilio 10DLC rules; verify numbers/senders.
Gateway Bridge — Python (SMS/Email on LTE)
Create /opt/meshbridge/bridge.py, set env vars, then make a systemd service (unit file included below).
systemd unit (auto-start)
Node Setup — Step-by-Step
- Assemble power: panel→BQ24074→18650→5 V boost→ESP32 5 V. Verify 5.0 V, polarity, and fusing.
- Flash Meshtastic via Web Flasher; pair the phone or use CLI; set Region=US.
- Create your private channel; share QR; keep LongFast.
- Enable canned messages on the node with the button wiring. Test sends.
- Weatherproof box, strain-relief, desiccant. Mount with the antenna vertical.
Repeater/Gateway — Step-by-Step
- Mount repeater high; set Device Role = Router/Repeater. Optional: enable Store & Forward.
- Gateway: wire 12 V system + MPPT + LTE router + Pi. Boot.
- Attach USB Meshtastic radio; run pip install meshtastic twilio sendgrid.
- Drop the Python script, enable the systemd unit, reboot. Send a test “ALERT Water at 5th & Pine”.
- Verify SMS/Email receipt. If no LTE, message stays on the mesh only; retries when back online.
Operational Checks
- Range walk: Send canned message every 100 m; log hops on status board.
- Power audit: Sunny/overcast overnight; confirm nodes don’t brown-out.
- Failover drill: Kill LTE; confirm mesh still passes messages; restore LTE; confirm SMS bursts arrive.
- Noise hygiene: Don’t spam the mesh; canned messages keep airtime light. Use Router role on fixed nodes only.
Quick-Start Card (print)
- Turn on nodes; antenna vertical; battery above 25%.
- Check the status board for last traffic.
- Press the big button to send “OK”. Long-press cycles messages (“Need water/medical”).
- If LTE is up, alerts mirror to SMS/email; if not, they still traverse the mesh.
- Solar: face south (N. hemisphere), tilt ~latitude; secure cables.
Bill of Materials — Links & Notes
Radios
- LILYGO TTGO T-Beam (choose 915 MHz option). Product • Meshtastic page
- Heltec WiFi LoRa 32 V2 (ESP32 + SX127x/SX1262). Overview • Docs
- Semtech SX1276 family (LoRa transceiver). Semtech • Datasheet
Power (node)
Mesh/Gateway Software
- Meshtastic Web Flasher & Initial Config. Flasher • Initial config
- Radio presets, channels & device roles. Radio settings • Channels • Roles
- Canned Messages & Store-and-Forward. Canned msg • S&F
- Python library/CLI. API • CLI
LTE & Email/SMS
- GL.iNet cellular setup (USB modem & built-in). Docs v4
- Twilio Programmable SMS Quickstart. Docs
- SendGrid Email API Quickstart (Python). Docs
Solar (gateway)
Legal & Safety
- Operate under FCC Part 15; do not exceed allowed power; your device must accept interference.
- Always attach the antenna before powering the radio.
- Use protected 18650 cells, correct polarity, and fuses near sources.
- Respect channel plans and duty-cycle etiquette; avoid spamming the mesh.