<!--order=8-->


<h1>Field Deployment of Meshtastic Nodes</h1>
<p>Getting Meshtastic working on a bench is straightforward. Getting it working reliably outdoors in a field — surviving weather, running on battery for weeks, mounted at height to maximize range — is a different problem. This covers node placement strategy, enclosures, power, and the practical lessons from deploying LoRa hardware in real environments.</p>

<h2>Node Placement and Height</h2>
<p>Height is the single biggest factor in LoRa range. The Fresnel zone — the elliptical region around the direct path between two antennas — needs to be clear of obstructions. In open fields, even 3 metres of height above surrounding vegetation makes a significant difference:</p>
<pre>
Fresnel zone radius at midpoint (r₁, approximate):
  r₁ = 17.3 × sqrt(d / (4 × f))
  
  where d = distance (km), f = frequency (GHz)
  
For d = 2km, f = 0.915 GHz:
  r₁ = 17.3 × sqrt(2 / (4 × 0.915))
  r₁ = 17.3 × sqrt(0.547)
  r₁ ≈ 12.8 metres

The Fresnel zone at midpoint is ~13 metres in radius.
To avoid significant signal loss, the path should be clear for at least
60% of this radius above obstructions — roughly 8 metres clearance.

Practical implication: in a field with 1m tall crops:
  Node at 2m height → most of Fresnel zone blocked → poor link
  Node at 5m height → partial clearance → marginal link  
  Node at 10m+ → clear Fresnel zone → good link
</pre>

<h2>Antenna Selection</h2>

<table>
  <thead><tr><th>Antenna type</th><th>Gain</th><th>Pattern</th><th>Use case</th></tr></thead>
  <tbody>
    <tr><td>Small stub (included with module)</td><td>1–2 dBi</td><td>Omnidirectional</td><td>Testing only — too short for field use</td></tr>
    <tr><td>Omnidirectional fiberglass, 915MHz</td><td>3–5 dBi</td><td>Omnidirectional</td><td>General field node — connects in all directions</td></tr>
    <tr><td>Omnidirectional fiberglass, high gain</td><td>8–10 dBi</td><td>Narrower vertical pattern</td><td>Flat terrain — more horizontal gain, less vertical</td></tr>
    <tr><td>Yagi / directional</td><td>10–16 dBi</td><td>Directional</td><td>Point-to-point link between specific nodes</td></tr>
  </tbody>
</table>

<pre>
Connector types — get this right before ordering:
  Waveshare modules: SMA female connector
  Most external antennas: SMA male plug (direct connect)
                       or N-type (weatherproof for outdoor runs)

Use LMR-240 or LMR-400 coax if running cable between the node enclosure
and a roof-mounted antenna. Standard RG-58 has too much loss at 915 MHz
for runs over 3 metres.

Loss at 915 MHz (per metre):
  RG-58: ~0.45 dB/m  (a 5m run = 2.25 dB lost)
  LMR-240: ~0.22 dB/m
  LMR-400: ~0.13 dB/m
</pre>

<h2>Weatherproof Enclosures</h2>
<pre>
For outdoor deployment, IP65 or better rated enclosures are required.
Standard electrical project boxes rated IP65/IP67 work well.

Important details:
  - Antenna connector must penetrate the enclosure — use a bulkhead N-type or SMA
    connector rated for outdoor use; seal with self-amalgamating tape
  - Cable entry points: use waterproof cable glands (PG7 for small wires)
  - Avoid black enclosures in direct sun — internal temperature can exceed 60°C
    which affects battery and electronics. Use light grey or white.
  - Orient the enclosure so any condensation drains away from the electronics
  - Silica gel desiccant packet inside reduces condensation

Battery mount:
  - LiPo or Li-Ion inside the enclosure
  - Li-Ion 18650 cells handle -20°C to 60°C — better cold tolerance than LiPo flat cells
  - At temperatures below 0°C, Li-Ion capacity drops ~20-30%; below -20°C, they struggle
  - For winter field use, consider insulating the enclosure or a heated enclosure
</pre>

<h2>Power Options</h2>

<table>
  <thead><tr><th>Power source</th><th>Pros</th><th>Cons</th><th>Best for</th></tr></thead>
  <tbody>
    <tr><td>USB power bank</td><td>Easy; no setup</td><td>Limited capacity; not weatherproof; may auto-shutoff at low current draw</td><td>Testing and short deployments</td></tr>
    <tr><td>18650 Li-Ion + TP4056 charger</td><td>Cheap; replaceable cells</td><td>Manual charging; no protection if charger fails</td><td>Short deployments with accessible nodes</td></tr>
    <tr><td>LiPo + solar + MPPT charger</td><td>Self-sustaining indefinitely</td><td>More complex; solar panels add bulk</td><td>Long-term deployment in sunlit locations</td></tr>
    <tr><td>Primary lithium AA/D cells</td><td>Extreme cold tolerance; no charging needed</td><td>Not rechargeable; cost</td><td>Short-duration winter deployments</td></tr>
  </tbody>
</table>

<h2>Build the Power Budget from Measurements</h2>
<p>Battery life estimates are a starting point, not a deployment guarantee. Measure the complete node at the battery input: radio, Pico, sensors, regulator, charger, and any indicator LEDs all count.</p>
<pre>
Average current ≈
  (sleep current × sleep time
   + receive current × receive time
   + transmit current × transmit time)
  / total time

Usable battery capacity is lower than the label:
  cold weather + regulator loss + battery ageing + reserve
</pre>
<p>For a solar node, size against the worst useful month rather than a bright July day. Record panel orientation, shading, enclosure temperature, and battery voltage over several days before relying on the system unattended.</p>

<pre>
Solar sizing example (915MHz Pico node, transmitting every 5 minutes):
  Average current draw: ~2 mA (sleep + periodic TX)
  Daily energy: 2 mA × 24h = 48 mAh

  A 1W 5V solar panel produces ~100-150 mAh on a good day in Canada
  (accounting for angle, clouds, daylight hours)

  Panel: 1W-2W panel (Voltaic, Adafruit, etc.)
  Battery: 2000-5000 mAh LiPo
  MPPT charger: CN3791-based or Adafruit Solar Charger

  This combination should sustain a node indefinitely from April–October
  in southern Canada. Winter is marginal — short days, snow on panel.
</pre>

<h2>Node Configuration for Field Use</h2>
<pre>
# Optimize for battery life — reduce transmit intervals
$ meshtastic --set position.position_broadcast_secs 1800    # 30 min position updates
$ meshtastic --set telemetry.device_update_interval 900     # 15 min telemetry
$ meshtastic --set device.role ROUTER_CLIENT                # act as relay when awake

# ROUTER_CLIENT mode: relays other nodes' messages while also sending its own
# SENSOR mode: low-power, doesn't relay (saves battery, reduces mesh participation)
# CLIENT_MUTE: receives only — does not relay at all

# Power saving on Pico (put radio in sleep between transmissions)
$ meshtastic --set power.ls_secs 300      # low-sleep after 5 min of inactivity
$ meshtastic --set power.min_wake_secs 10 # stay awake minimum 10s after waking
</pre>

<h2>Testing Before Deployment</h2>
<pre>
Range test before mounting permanently:
1. Set up one node as the base station (ideally in a high location or connected to PC)
2. Walk with the second node, watching RSSI in the Meshtastic app
3. Note where RSSI drops below -120 dBm — that's your reliable edge
4. Check SNR — stay above -10 dB for reliable packet delivery

Use the range test plugin (both nodes must have it configured):
$ meshtastic --set range_test.enabled true
$ meshtastic --set range_test.sender 60   # send a packet every 60 seconds
# The receiving node logs RSSI/SNR for each packet — useful for coverage mapping

Tools:
  Meshtastic iOS/Android app: shows RSSI and SNR for each received packet
  Meshtastic Python CLI + --listen: logs all packets with signal info
</pre>

<h2>Deployment Checklist</h2>
<ul>
  <li>Burn in the assembled node indoors for at least a day on the intended power source.</li>
  <li>Photograph wiring, antenna connectors, and enclosure layout before closing it.</li>
  <li>Export the Meshtastic configuration and record the firmware version.</li>
  <li>Confirm the antenna is matched to the regional band and sealed at the bulkhead.</li>
  <li>Check that cable glands, fasteners, and the enclosure still close with the battery installed.</li>
  <li>Set a maintenance date and define what low-battery or missing-telemetry condition triggers a visit.</li>
</ul>
<p>A field node should fail loudly enough to be noticed. Logging the last telemetry time and battery voltage at the gateway is more useful than discovering an outage weeks later.</p>

<h2>Common Field Problems</h2>

<table>
  <thead><tr><th>Problem</th><th>Likely cause</th><th>Fix</th></tr></thead>
  <tbody>
    <tr><td>Intermittent link</td><td>Trees swaying in wind, varying Fresnel zone obstruction</td><td>Raise antenna height; increase SF</td></tr>
    <tr><td>Node stops transmitting</td><td>Battery voltage too low</td><td>Check battery size; add solar; reduce transmit interval</td></tr>
    <tr><td>Good RSSI but packet loss</td><td>Multipath interference (reflections)</td><td>Try slightly different antenna height or position</td></tr>
    <tr><td>Works in summer, fails in winter</td><td>Wet snow on antenna; battery cold issues</td><td>Insulate enclosure; use Li-Ion instead of LiPo</td></tr>
    <tr><td>Range much less than expected</td><td>Fresnel zone obstructed; wrong antenna</td><td>Raise height; check antenna connector is tight; verify frequency match</td></tr>
  </tbody>
</table>

<h2>Keep a Deployment Record</h2>
<pre>
Node name:
Location / approximate height:
Hardware and firmware:
Regional setting and modem preset:
Antenna and cable:
Battery and solar details:
Expected telemetry interval:
Baseline RSSI / SNR:
Last service date:
</pre>
<p>That record turns a future troubleshooting visit into a comparison against known-good conditions instead of a fresh guessing session.</p>

<h2>References</h2>
<ul>
  <li><a href="https://meshtastic.org/docs/configuration/radio/power/" target="_blank" rel="noopener">Meshtastic Power Configuration ↗</a></li>
  <li><a href="https://www.pasternack.com/t-calculator-fresnel-zone.aspx" target="_blank" rel="noopener">Fresnel Zone Calculator ↗</a></li>
  <li><a href="https://meshtastic.org/docs/configuration/module/range-test/" target="_blank" rel="noopener">Meshtastic Range Test Module ↗</a></li>
</ul>
