Sensor Node Hardware
- Sensor Node Hardware Selection
- Building an Environmental Sensor Node
- Solar-Powered Sensor Node Deployment
Sensor Node Hardware Selection
Sensor Node Hardware Selection
Choosing the right sensor hardware determines the long-term reliability, accuracy, and maintainability of your mesh monitoring deployment. This page compares the two dominant approaches: RAK WisBlock modular sensor boards and Meshtastic telemetry running on commodity hardware such as the TTGO T-Beam.
RAK WisBlock Sensor Modules
WisBlock is RAK Wireless's modular ecosystem: a WisBlock Core module (e.g., the RAK4631 = Nordic nRF52840 / SX1262) pairs with a WisBlock Base board such as the RAK19007 (other bases exist, e.g. RAK5005-O and RAK19003). Sensor modules snap onto the base board's sensor slots with no soldering required, making field assembly and repair straightforward.
- RAK1906 (BME680) - Measures temperature (±1°C), relative humidity (±3% RH), barometric pressure (±0.6 hPa), and volatile organic compound (VOC) air quality index. The BME680 gas sensor requires a burn-in period of roughly 48 hours before IAQ readings stabilise (IAQ also depends on the Bosch BSEC library and ongoing calibration). Current draw: ~0.15 µA sleep; the standard temperature/humidity/pressure measurement is in the microamp range (a few µA at 1 Hz), while the integrated gas (VOC) heater draws several mA in bursts only when VOC sensing is enabled. Ideal for indoor air quality and outdoor environmental monitoring.
- RAK12500 (u-blox ZOE-M8Q GPS) - Adds GNSS positioning for mobile or asset-tracking nodes. Cold-start TTFF ~29 s, hot-start ~1 s. Active current ~17-18 mA; disable when stationary to preserve battery. Compatible with external active antenna via U.FL connector.
- RAK12004 (MQ-2 Gas Sensor) - Detects LPG, propane, hydrogen, methane, and smoke. The MQ-2 heater (~150 mA) cannot be put to sleep and must run continuously for valid readings; duty-cycling it to save power makes gas readings unreliable until the heater re-stabilises (tens of seconds to minutes after warm-up). This ~150 mA continuous draw (~3.6 Ah/day) dominates the power budget, so the MQ-2 is poorly suited to small solar/battery nodes and should not be relied on as a life-safety combustible-gas detector.
- RAK1901 (SHTC3) - Dedicated temperature/humidity sensor with ±0.2°C and ±2% RH accuracy. Lower-power alternative to the BME680 when pressure and air quality are not needed. Current: ~0.5 mA during measurement, <1 µA idle.
Meshtastic Telemetry on T-Beam / Generic Boards
Meshtastic supports telemetry from I2C sensors wired to the GPIO header of ESP32-based boards. Common pairings include:
- BMP280 / BME280 - Temperature, pressure, and (BME280) humidity. Widely available and inexpensive. Direct I2C wiring to SDA/SCL pins. The BME280 draws only ~3.6 µA active (typical, @ 1 Hz, humidity+pressure+temperature) and well under 1 µA in sleep per the Bosch datasheet - negligible relative to the radio and MCU.
- SHT31 - High-accuracy temperature and humidity (±0.3°C, ±2% RH). More robust against contamination than the cheap capacitive temperature/humidity modules often used on hobbyist nodes.
- Enable the Telemetry module in Meshtastic and set the sensor type in the module config. Data is broadcast on the mesh as Protobuf telemetry packets at the configured interval.
Power Consumption Comparison
| Component | Active Current | Sleep Current |
|---|---|---|
| RAK4631 base node (LoRa TX) | 10 - 50 mA (lower-power TX); SX1262 reaches ~118 mA at +22 dBm | 2.5 µA |
| BME680 (RAK1906) | +microamps (T/RH/P); gas heater several mA in bursts only when enabled | +0.15 µA |
| SHTC3 (RAK1901) | +~0.5 mA (during measurement) | +0.5 µA |
| ZOE-M8Q GPS (RAK12500) | +~17-18 mA | +7.5 µA (backup) |
| MQ-2 heater (RAK12004) | +150 mA | Cannot sleep heater |
| T-Beam + BME280 (Meshtastic) | ~80 mA (board-level) | ~500 µA |
Note: the T-Beam figures are board-level (ESP32 + GPS + peripherals). Stock T-Beam deep-sleep current is frequently in the low-mA range unless peripherals are disabled, and is often higher than 500 µA in practice; the BME280's own contribution is microamp-level.
For battery-constrained outdoor deployments the RAK WisBlock platform with BME680 or SHTC3 is strongly preferred. Base sleep current below 5 µA enables multi-month operation on a modest LiPo without solar, assuming moderate temperatures - cold significantly reduces usable battery capacity. Outdoor lithium-powered nodes (including LiFePO4) must not be charged below 0°C (32°F); see the deployment pages for low-temperature charge-cutoff guidance when a node is solar-equipped.
Form Factor and Weatherproofing
Outdoor sensor nodes must be rated for the deployment environment. Common IP ratings relevant to mesh sensor nodes:
- IP65 - Dust-tight, protected against low-pressure water jets. Minimum for exposed outdoor use.
- IP67 - Dust-tight, temporary immersion to 1 m. Suitable for ground-level or flood-risk sites.
- IP68 - Continuous submersion rated. Required near water crossings or in humid tropical climates.
Membrane vents (Gore-Tex or equivalent) are essential for enclosures containing humidity sensors. A sealed enclosure traps heat and distorts readings. In the Northern Hemisphere, mount the enclosure on a north-facing surface to minimise solar heating effects on temperature sensors, or use a radiation shield (Stevenson screen style) for meteorological-grade accuracy.
Building an Environmental Sensor Node
Building an Environmental Sensor Node
This guide walks through assembling a production-ready environmental sensor node using the RAK WisBlock platform with the BME680 sensor, then configuring it for MeshCore firmware deployment.
Bill of Materials
- RAK19007 WisBlock Base Board (v2)
- RAK4631 WisBlock Core (nRF52840 + SX1262)
- RAK1906 WisBlock Sensor (BME680)
- LoRa antenna (868 MHz or 915 MHz depending on region), SMA-to-IPEX pigtail
- 3.7 V LiPo battery (1000 - 3000 mAh) with JST 2.0 connector
- In-line fuse or polyfuse for the LiPo positive lead (outdoor/lithium safety)
- Enclosure: Hammond 1591XXFLBK (approx. 120×65×40 mm) or RAK Unify Enclosure (approx. 100×75×38 mm) - verify exact dimensions against the manufacturer datasheet
- 2× M16 IP68 cable glands
- Silica gel desiccant packet (2 g)
- Gore-Tex membrane vent plug (optional but recommended)
Safety note: A single-cell LiPo must never be charged below 0 °C (32 °F) - doing so plates lithium and risks a cell fault or fire. If this node will be deployed where winter temperatures drop below freezing, use a charger/PMIC with a low-temperature charge cutoff (NTC-based), and verify the RAK19007's cold-charge behavior before cold-weather deployment. Always include an in-line fuse on the battery positive lead.
Assembly Steps
- Prepare the base board. The RAK19007 features four sensor slots (A, B, C, D); slots A-C take 10 mm modules and slot D takes larger 23 mm modules (and supports GNSS). No soldering is required - all WisBlock modules use proprietary 40-pin or 24-pin board-to-board connectors. Press the RAK4631 core firmly onto the core slot until it clicks.
- Attach the BME680 sensor module. The RAK1906 is an I2C sensor and can go in any of the I2C sensor slots (A-C for 10 mm modules); Slot A is just a convenient default. It uses the 24-pin connector. Align the gold contacts and press until seated. The module sits flush with the base board surface.
- Connect the LoRa antenna. Attach the IPEX end to the U.FL connector on the RAK4631 (labelled LoRa). Ensure the antenna is fully connected before powering on to avoid PA damage. Route the SMA pigtail through a cable gland in the enclosure wall.
- Connect the battery. Plug the JST 2.0 LiPo connector into the battery port on the RAK19007 - verify connector polarity first, as RAK battery-connector polarity is not universal across LiPo vendors. The base board includes an onboard USB-C LiPo charger that stops charging once the battery is full. Over-discharge protection generally comes from the battery pack's own protection circuit (PCM) rather than the base board, so use a protected cell.
- Flash the firmware. Download the appropriate RAK4631 MeshCore firmware
.uf2(e.g. a Companion or Repeater build) from the MeshCore GitHub releases page. MeshCore has no dedicated "SENSOR" firmware variant - sensor support is a compile-time feature selected at build time, so confirm a sensor-capable build before relying on one. (Alternatively you can flash standard Meshtastic firmware, whose Telemetry module supports the BME680 directly.) Put the RAK4631 into bootloader mode (double-tap reset - the driveRAK4631should appear), then drag-and-drop the.uf2file.
Firmware Configuration
After flashing, connect over USB serial or BLE (via the companion app / meshcore-cli) to configure the node. The MeshCore device CLI uses commands such as:
set name "SensorNode-01" # Set the node name
gps off # Disable GPS for indoor/static nodes
set advert.interval 15 # Advert cadence in minutes (or set flood.advert.interval in hours)
reboot
Note: MeshCore has no set telemetry_interval, set gps_enabled,
set power_save, or set node_name command - those are Meshtastic-style
names that do not exist in MeshCore. Power saving (powersaving on) is documented as
a repeater-role feature. If you are running Meshtastic instead, set the environment telemetry
interval with meshtastic --set telemetry.environment_update_interval 900.
In Meshtastic, a supported BME680 on the I2C bus is auto-detected at startup; MeshCore selects sensor hardware at compile time rather than by an I2C auto-scan. Once configured, confirm telemetry is being produced on a listener node or via the telemetry request protocol. On the BME680's 0-500 IAQ scale (which requires the Bosch BSEC library and a calibration period): 0-50 good, 51-100 moderate, 101-150 little bad / unhealthy for sensitive groups, 151-200 bad, 201-300 worse, 301-500 very bad.
Enclosure and Weatherproofing
Drill two M16 cable gland holes in the bottom face of the enclosure - one for the LoRa antenna SMA cable and one for a USB-C charging cable if periodic wired charging is desired. Thread the cable glands and tighten until the rubber grommet compresses around the cable. Place the desiccant packet inside and install the Gore-Tex vent plug on a side wall to allow pressure equalisation without moisture ingress. Apply silicone sealant around any remaining penetrations.
Mount the PCB assembly on the supplied standoffs inside the enclosure using M3 screws. Ensure the BME680 sensor on the RAK1906 faces toward the vent plug - airflow across the sensor significantly improves humidity response time and reduces self-heating error.
Label the outside of the enclosure with the node name, installation date, frequency region, and an emergency contact. Photograph the final assembly before sealing for maintenance records.
Commissioning Checklist
- Antenna connected before power-on
- Firmware version confirmed in boot log
- Sensor readings visible in serial output
- Node appearing in MeshCore network map within expected hop count
- Telemetry packets visible at expected interval on a listener node
- Enclosure sealed, cable glands tightened
- In-line fuse fitted on the battery positive lead
- Node name and installation date label affixed externally
Solar-Powered Sensor Node Deployment
Solar-Powered Sensor Node Deployment
A well-designed solar sensor node can run for years with minimal maintenance in favorable climates, but no solar node runs indefinitely: batteries degrade with calendar aging, panels accumulate dirt and snow, and winter insolation at high latitudes or under dense canopy can fall short. Size for the worst-case (winter) month for your site, plan for periodic battery replacement and seasonal checks, and aim for an average current consumption well below 1 mA so that even a small panel can replenish the battery during short winter days.
Power Budget Design
Start with a current budget before selecting hardware. Charge per event is current × time (for example 5 mA × 1.5 s = 7.5 mAs = 2.08 µAh). A 15-minute telemetry cycle on a RAK4631 + BME680 node, transmitting at full +22 dBm output, breaks down as follows:
| Event | Duration | Current | Charge (µAh) |
|---|---|---|---|
| Deep sleep | 898 s | 3 µA | 0.75 |
| Wake + sensor read | 1.5 s | 5 mA | 2.08 |
| LoRa TX (1 packet, +22 dBm) | 0.5 s | 118 mA | 16.4 |
| Total per 15-min cycle | 900 s | - | ≈ 19.2 µAh |
| Average current | - | - | ≈ 0.077 mA |
At ~0.077 mA average, daily consumption is ~1.85 mAh (≈ 19.2 µAh × 96 cycles/day). Note the SX1262 draws ~118 mA at +22 dBm, so TX dominates the budget — if you transmit at a lower output power the average drops further, but never assume the 40 mA figure sometimes quoted for low-power transmit. Size the panel against the worst-case (winter) month rather than an annual average: a small 0.5 W panel can comfortably cover this load on short overcast winter days at mid-latitudes, but always confirm against the December peak-sun-hours for your target latitude, panel voltage, and conversion losses, and derate for soiling and snow.
Sleep/Wake Cycle Design
The nRF52840 on the RAK4631 supports deep sleep with RAM retention at 2.5 µA. Choose the minimum useful reporting interval for your application:
- Weather monitoring: 15 - 30 minutes is typically sufficient. Temperature and humidity change slowly outdoors.
- Air quality / smoke detection: a shorter interval (e.g. 5 minutes or less) is advisable. VOC spikes and smoke events evolve faster than weather parameters.
- Asset tracking with GPS: 1 - 5 minutes when moving, 30 minutes when stationary (detected via onboard accelerometer). GPS adds ~15 - 25 mA active depending on the module - budget accordingly.
Avoid waking more frequently than necessary. Each LoRa transmission occupies shared airtime. At a 15-minute interval a single node has a very low duty cycle (~0.5%), which is comfortably within EU 868 MHz duty-cycle limits. US/Canada 915 MHz operation is governed instead by FCC Part 15 rules, which impose no duty-cycle limit on digital-modulation LoRa — only a 400 ms maximum dwell time per channel (with frequency hopping). Verify the rules for your specific region and band.
Solar Panel Selection
Match panel output to your deployment's worst-case (winter) solar insolation. A conservative rule of thumb: the panel's short-circuit current (Isc) should be at least 10× the node's average current draw.
- 0.5 W, 5 V panel (~100 mA Isc) - Sufficient for a basic BME680 node at 15-minute intervals. Physically small (~80×55 mm), suitable for fence-post or junction-box mounting.
- 1 W, 6 V panel (~165 mA Isc) - Comfortable margin for nodes with GPS enabled part-time, or deployments above 50° latitude where winter insolation is poor.
- MQ-2 / continuous-heater gas-sensor nodes - An MQ-2 runs its heater continuously at ~150 mA (~3.6 Ah/day) and cannot sleep, so a 2 W panel is not sufficient — that load far exceeds a 2 W panel's winter harvest, and battery sizing dominates. The 10× Isc rule would demand ~1.5 A Isc. Either duty-cycle the heater, or budget a substantially larger panel and battery; a continuous-heater gas sensor is generally not well suited to a small solar node.
To stop the battery from discharging back through the panel at night, use a series blocking diode (a low-drop Schottky type) in line between the panel and the battery, or a charge controller with built-in reverse-current/night protection — most MPPT and PWM charge controllers already block reverse current, making an external diode unnecessary. (A bypass diode is a different component, wired in parallel across panel cells to route current around partial shading, and does not stop night reverse current.) An MPPT charge controller (e.g., CN3791) improves harvest efficiency 15 - 30% over simple PWM controllers and is worthwhile for any deployment intended to last more than one year. Add an inline fuse (or polyfuse) on the battery positive lead for any outdoor lithium node.
Battery Selection
Never charge any lithium cell — LiPo, Li-ion, or LiFePO4 — below 0°C (32°F). Charging a sub-freezing lithium cell causes lithium plating, permanent capacity loss, and a risk of internal short and fire. This matters for solar nodes specifically: they will attempt to charge on cold, sunny winter mornings exactly when the battery is below freezing. Deployments where temperatures drop below 0°C must use a charge controller/PMIC with a low-temperature charge cutoff (NTC thermistor), or site/insulate the battery so it stays above freezing while charging. A bare TP4056 module has no low-temperature cutoff. Discharge is acceptable down to about −20°C, but charging is not.
- LiPo (3.7 V, 2000 - 5000 mAh) - Best energy density, wide availability, integrates directly with the RAK19007 PMIC. Never charge below 0°C (lithium plating, permanent damage). Discharge capacity also drops sharply below −20°C. Replace every 3 - 5 years.
- 18650 Li-ion - More robust mechanically, with better low-temperature discharge performance — but the same sub-0°C charge prohibition still applies. Requires a separate holder and protection circuit unless using pre-protected cells. Useful when cylindrical cells fit the enclosure better.
- AA lithium primary (e.g., Energizer L91) - For locations where charging is infeasible. Rated to −40°C. A 4×AA pack in series is ~6 V (~3000 mAh); on a regulated rail this can run a sub-milliamp node for many months without any solar input (at 0.56 mA, ~220 days).
Size the backup battery for at least 7 days of autonomy without solar input. For a 0.56 mA node: 7 × 24 × 0.56 mA = 94 mAh minimum. A 2000 mAh LiPo provides roughly 100 days of reserve at 0.56 mA in ideal conditions, but cold reduces usable capacity and can block charging entirely below 0°C — so factor in winter derating rather than assuming the battery covers any overcast period.
Mounting and Deployment Best Practices
- Orient solar panels within 30° of due south (Northern Hemisphere) or due north (Southern Hemisphere) at an angle matching the site's latitude for optimal year-round harvest.
- Mount the enclosure in shade where possible (under eaves, north-facing surface) while keeping the panel in direct sun. High ambient temperature degrades LiPo capacity over time.
- Use stainless steel hose clamps for pole mounting. UV-resistant zip ties degrade within 2 - 3 years outdoors and are not adequate for permanent installation.
- Route cables with a drip loop before entering the enclosure cable gland to prevent water wicking along the cable jacket into the enclosure.
- Record GPS coordinates, orientation, panel angle, and photos of each node at installation. This data is invaluable for remote troubleshooting and future maintenance visits.