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
No comments to display
No comments to display