Three nodes for about $42 each
Prices are what I paid on Oct 11, 2026, in USD before tax and shipping. Nothing here needs soldering: the boards come pre-flashed and the batteries plug straight in.
| Qty | Part | Why | Source | Each | Line |
|---|
Heltec now sells a V4 with a stronger 28 dBm transmitter. The V3 is used here because its lower power makes relays easier to force on a small campus.
One board, four connections
Each node is a Heltec V3 with a battery, an antenna and a phone or laptop on the other end. The settings table fixes the radio configuration so every test runs the same way.
Screw the antenna on first. Transmitting into an open connector reflects the power back into the radio. If you swap in any battery other than Rokland's Heltec-polarity pack, check the plug with a meter: many 1S packs are wired the other way.
Connection schedule
4 runs| # | Connection | Part | Notes |
|---|
Meshtastic settings
All three nodes| Setting | Value | Why |
|---|---|---|
| Region | US (902–928 MHz) | Legal band and power limits for the US. |
| Modem preset | LONG_FAST | SF11, 250 kHz bandwidth, coding rate 4/5. The network default, so results compare with other people's. |
| Hop limit | 3 | Default. The relay test needs only 1. |
| Device role | CLIENT on all three | Every node relays the same way, so the relay result isn't a special router setting. |
| Channel | Private name and key | Keeps the logs to my own traffic. Other nodes on the same preset can still relay, which L10 checks. |
| Range Test module | Sender on A, every 30 s | Numbered packets make missed ones countable. |
Power budget
Per node| Load case | Value | Basis |
|---|---|---|
| Transmit burst, SX1262 at +22 dBm | ~118 mA | SX1262 datasheet |
| Average, BLE connected, screen on | 60–110 mA | estimate measured in L02 |
| Usable capacity, 80% of 2,000 mAh | 1,600 mAh | Stop at about 3.5 V |
| Runtime | 15–27 h | 1,600 mAh ÷ average current |
What the radio should do, before it's tested
The link budget sets how much signal can be lost before packets stop arriving. How fast it's lost with distance depends on terrain, which is the number this study measures.
Link budget
LONG_FAST, SF11, 250 kHz| Term | Value | Note |
|---|---|---|
| Transmit power | +21 dBm | Heltec V3 rating |
| Antenna gain, both ends | 0 dBi | assumed stock antennas |
| Noise floor, 250 kHz | −120.0 dBm | −174 + 10·log₁₀(250,000) |
| Receiver noise figure | +6 dB | Typical SX1262 |
| SNR needed at SF11 | −17.5 dB | LoRa can decode below the noise |
| Sensitivity | −131.5 dBm | Sum of the three rows above |
| Link budget | 152.5 dB | Transmit power minus sensitivity |
| Fade margin | 10 dB | Body blocking, multipath |
| Allowed path loss | 142.5 dB | Used for the range estimates |
Path-loss model
Log-distance31.7 dB is free-space loss over the first metre at 915 MHz. Free space is n = 2. Real ground-level links run 2.7 to 4, and a handheld node 1 m off the ground loses most of its clearance. The range for each n is where the line crosses 142.5 dB.
| Path-loss exponent n | Typical setting | Range at 142.5 dB |
|---|---|---|
| 2.7 | Open, elevated | 12.8 km |
| 3.0 | Open ground, handheld | 5.0 km |
| 3.5 | Mixed campus | 1.5 km |
| 4.0 | Through buildings | 0.59 km |
Range against path-loss exponent
Model, not dataAirtime
8.19 ms per symbol · 1.07 kbit/s| Payload | Symbols | Time on air |
|---|---|---|
| 20 bytes | 28 + 20.25 preamble | 0.40 s |
| 40 bytes | 48 + 20.25 | 0.56 s |
| 60 bytes | 63 + 20.25 | 0.68 s |
| 100 bytes | 103 + 20.25 | 1.01 s |
Packets include Meshtastic's header, so a short text message lands near 40 bytes. Each relay adds at least one more airtime plus a wait before rebroadcast.
Procedure
Three weeks- Bench check. All three nodes on one desk; 50 messages each way.
- Range walk. A stays at a marked spot 1 m off the ground. C walks outward along a line-of-sight route and a through-buildings route. The laptop logger records RSSI, SNR and position for every Range Test packet.
- Fit n. Regress RSSI against log₁₀(distance); the slope is −10n. Mark where the rolling delivery rate drops below 90%.
- Relay test. Put B near the edge of A's measured range and C past it. Send 100 messages A → C and log delivery, hop count and delay.
- Control. Turn B off, move C back into direct range, and repeat. The difference is the cost of one relay.
Relay test layout
Fig. C2Each prediction, and how it gets tested
Predictions and pass bands are written before testing, so a result can't be explained away later. A miss gets reported here like any other result.
Planned build document — not measured test results. Every test entry is a prediction or proposed pass band; no measured results are reported here.
| ID | Quantity | Predicted | How it's measured | Pass band | When | Measured | Status |
|---|
Three nodes and one campus. The fitted path-loss exponent describes these routes on the days they were walked, not LoRa in general. Weather, foot traffic and where the phone sits in a pocket all move RSSI by several dB; repeat runs show how much.