FireLord is an open hardware reference for low-cost, peer-to-peer sensor meshes. The repository captures mechanical models, firmware helpers, PCB files, and planning artifacts produced during an Alaskan field concept so future teams can reuse or adapt the design.
- Municipal and resource agencies that need rapidly deployable sensor coverage.
- Community groups and educators building inexpensive environmental monitors.
- Integrators evaluating FireLord as a foundation for broader sensing programs.
| Path | Contents |
|---|---|
device-firmware/ |
Arduino-oriented helpers for sensor sampling and LoRa communication. |
device-case/ |
3D models, print notes, and assembly guidance for the field enclosure. |
pcb-and-schematics/ |
KiCad project for the carrier board and custom footprints. |
cosmos-firelord/ |
OpenC3 COSMOS stack with the FireLord LoRa plugin, Docker compose, and bridge config for a base-station FireLord node over USB serial. |
- Field nodes collect local sensor data, flag anomalies, and rebroadcast peer packets.
- Base stations are FireLord nodes flashed in base-station mode (no sensors, receive-only) that log every packet over USB serial and forward data when backhaul is available.
- Optional cloud services expose data to stakeholders or downstream tooling.
The mesh design keeps infrastructure light: any node can relay data, and a single active base station is sufficient.
- Review the operating targets below (range, duty cycle, enclosure limits) and adjust for your field conditions.
- Select components from the baseline bill of materials; plan on roughly $75 per node at 100-unit scale.
- Manufacture or print hardware following the subsystem READMEs.
- Load the firmware scaffold, confirm sensor and LoRa links, and tailor packet contents.
- Deploy nodes so each device reaches two peers or a base station, then validate end-to-end logging.
Use the risk guidance below while planning; the most common issues are supply delays, isolated nodes, and inadequate solar input.
- Peer-to-peer LoRa range: design for non-line-of-sight coverage of at least 500 m between nodes; verify in your terrain.
- Reporting cadence: transmit sensor packets no less frequently than every 60 s unless power constraints dictate a longer interval.
- Receive availability: keep the radio in a ready state to forward peer traffic continuously.
- Data bandwidth: maintain ≥ 1.2 KB/s (9600 baud) for device-to-device links.
- Power: average receive-ready draw ≤ 100 mW with duty-cycled heaters; energy storage provided by supercapacitors only.
- Mechanical envelope: keep external dimensions within 200 mm per axis to fit the reference enclosure.
- Environmental durability: target IP55 ingress protection and verified operation down to −30 °C for at least 30 min.
- Radio spectrum: operate in the regional sub-GHz LoRa band (e.g., 902–928 MHz in North America) with a fixed-length header and byte-structured frame format.
- Bill of materials: $75 per node is achievable at 100-unit quantities using the parts listed below.
- Topology: Maintain overlapping coverage; document approved node spacing before field work.
- Placement: Mount above snow or vegetation, shield cables from wildlife, and orient vents downward.
- Backhaul: Configure the base station to cache indefinitely; cloud transfer is optional.
- Operations: Schedule inspections ahead of seasonal activities (e.g., controlled burns or tourism peaks).
- Use
cosmos-firelord/to run OpenC3 COSMOS locally and view theLORAtarget. Update.envsecrets before exposing ports beyond localhost. - Bridge a base-station FireLord node (USB serial) to COSMOS with the provided profile:
./openc3.sh cli bridge openc3-cosmos-lora/bridge.txt write_port_name=/dev/ttyACM0 baud_rate=115200 router_port=2950. The plugin instance expectshost.docker.internal:2950. - Base-station firmware emits
DATA <nodeId> <ver> <ts> <tempCx100> <humidity> <co2> <pressure> <voc> <smoke> <flags>on every validated packet; COSMOS tooling can key off that stable line alongside the[RX]log. Nodes are TX-only; no COSMOS commands defined. - Container lifecycle:
./openc3.sh runto start,./openc3.sh stopto halt; seecosmos-firelord/README.mdfor rebuild and reload steps.
| Component | Key details | Mount style | Unit cost (USD, 2-unit qty) | Remarks |
|---|---|---|---|---|
| LoRa module (Reyax RYLR998) | 3.3 V P2P radio | Through-hole module | 16.90 | Ships on a carrier with 2.54 mm headers; can be socketed or wired directly without reflow. |
| MCU (Seeeduino XIAO SAMD21) | Arduino-compatible controller | Castellated SMD | 5.40 | Hand-solderable to the XIAO footprint; DIP adapters are available if you prefer header pins. |
| CO₂/temp/humidity sensor (Sensirion SCD40) | I²C environmental sensing | LGA SMD | 17.95 | Use a breakout like the SparkFun SEN-18360 when avoiding reflow. |
| CO sensor (MQ-7) | Analog gas sensor | Through-hole | 5.65 | Duty-cycle the heater to save power. |
| Pressure sensor (NXP MPL115A2) | I²C barometer | LGA SMD | 4.75 | Choose a breakout (Adafruit 992 or similar) if assembling without reflow. |
| Smoke sensor (DFRobot SEN0570) | Analog particle indicator | Module w/2.54 mm header | 4.90 | Mount behind vent mesh. |
| VOC sensor (DFRobot SEN0566) | Analog VOC indicator | Module w/2.54 mm header | 4.90 | Co-locate with smoke sensor. |
| Supercapacitor (Tecate TPLH-2R7-800) | 2.7 V 800 F storage | Radial through-hole | 17.50 (each) | Use two in series with balancing. |
| Base-station node (FireLord in BASE_STATION_MODE) | USB-powered receive-only gateway | Onboard | 5.40 + radio | Same hardware as field nodes; flash with BASE_STATION_MODE=true and omit sensors. |
| Solar panel (Seeed 1 W) | 5 V nominal, 1 W | Leaded | 11.95 | Size array for local insolation. |
| Connectors, cabling, misc. | JST harnesses, fasteners | Through-hole / pre-crimped | ~10.00 | Include spare gaskets and glands. |
Estimated total: ≈ $75 per field node at 100-unit scale. Choosing breakout boards for the SMD-only sensors raises cost slightly but simplifies assembly when reflow is unavailable.
- 283 mW: receive-ready state with high-draw sensors active.
- 116 mW: duty-cycled average with smoke/VOC heaters at 5 % duty.
- 600 mAh equivalent storage supports ~7 h at peak load and ~17 h at averaged load.
Adjust sampling cadence, heater duty cycles, or panel capacity to meet local endurance goals.
| Theme | Mitigation |
|---|---|
| Part delays | Order early, maintain alternates, record substitutions. |
| Node isolation | Pre-survey install sites, document minimum spacing, train field crews. |
| Power loss | Site panels in clear sun, inspect seasonally, log low-voltage events. |
| Sensor drift | Implement firmware sanity checks; schedule recalibration windows. |
| Base station downtime | Provide backup power and confirm local logging before field work. |
Document mitigations and revisit them seasonally to keep deployments stable.
- Add routing intelligence, adaptive transmit power, or health beacons for larger meshes.
- Integrate SMS, dashboard, or API publishing pipelines.
- Incorporate soil probes, weather stations, or perimeter sensors.
- Package sensor pods for quick swap service.
- Expand packet signing or integrity checks for regulated deployments.
- Work breakdowns and PERT charts outline the original build sequence.
- Firmware helpers (
I2C_COMMS,UART_COMMS) provide safe defaults for sensor and radio access. - Mechanical CAD documents enclosure iterations and tolerance tests.
Use these as reference when creating production-ready variants.
- Operating profile: LoRa P2P mesh at 915 MHz (example: SF7, 125 kHz BW, CR 4/5, 10 dBm) with receive-ready nodes and 60 s sampling. Packets are fixed-length (23 bytes payload + CRC32) with flag bits for outliers and a rolling CRC buffer to block duplicates.
- Performance targets: ≥ 500 m NLOS hops, ≥ 1.2 KB/s link budget (9600 baud), IP55 enclosure, −30 °C for 30 min, and < 200 mm mechanical span. Power: 283 mW RX-ready with heaters on; ≈116 mW average at 5 % heater duty. 600 mAh-equivalent storage yields ~7 h peak or ~17 h average runtime. BOM ≈ $75 per node at 100-unit quantities.
- Radio and payload: Example initialization uses
AT,AT+MODE=TEST,AT+TEST=RFCFG,…,AT+TEST=RXLRPKT;UART_COMMS::p2pTxHexwaits for+TEST: TX DONE. Payload layout mirrorsdevice-firmware/FireLordNodesuggestions (version, device ID, timestamp, temperature, humidity, CO₂, CO, pressure, smoke, VOC, flags, CRC32). - Electronics: KiCad carrier hosts a Seeeduino XIAO (I²C, UART, analog), Reyax/Wio-E5 radio, and connectors for SCD40, MPL115A2, MQ-7, smoke, and VOC sensors. Supercapacitor pads include balancing; test pads expose 3.3 V, ground, UART TX/RX, and reset. Footprints favor hand assembly; run ERC/DRC, then generate Gerbers and pick-and-place before fab.
- Firmware behavior: Samples I²C sensors via
I2C_COMMS, analog after heater warm-up, validates ranges, packages the frame, records CRC history, and transmits throughUART_COMMS. Bench mode seeds data when sensors are absent. Power practices include MOSFET-controlled heaters, RTC/low-power sleep, and voltage checks to gate TX. - Enclosure and assembly:
device-casecontains Fusion 360, STEP, 3MF, and OpenSCAD sources. Print with PETG/ASA/PC, 0.2 mm layers, ≥ 3 perimeters, 20 % infill; gaskets in TPU or 2 mm silicone. Assembly sequence: seat gasket, mount PCB on M3 standoffs, route solar/antenna through glands with strain relief, close lid diagonally, add vent mesh. Use conformal coating and desiccant; vents should face down. Heat/flame resistance is not provided. - Deployment and validation: Maintain overlapping node coverage, mount above vegetation/snow, shield cables, and cache packets indefinitely at the base-station node on USB serial. Validation steps: pre/post I²C scans,
LoRaE5::ping(), inspect TX/RX/FWD serial logs (includingDATA …) for delivery, and record hop counts during field trials. Revisit risk mitigations seasonally (supply, isolation, power, sensor drift, base-station uptime). - Extension paths: OTA or signed updates, adaptive routing/TX power, cloud/API publishing, additional sensors (soil, weather, perimeter), antenna/housing variants, and SMA with controlled impedance for external antennas.