Estimated build time: 90 minutes for a tech who has done one before; ~3 hours the first time.
- Soldering iron with M3 / M2.5 insert tips
- M3 / M2.5 heat-set brass inserts (10 each)
- Phillips #1 driver
- 2.0 mm hex driver
- Multimeter (verify buck output before connecting Pi)
- Wire strippers, heat-shrink, helping hands
- Body, lid, sensor head, and storage tray come off the printer.
- Clean all heat-set insert bosses with a 2.8 mm drill (light pass) — PETG can pull tight as it cools.
- Dry-fit the lid to the body. It should drop in with ~0.2 mm slop on
each side. If it doesn't,
slopwas too tight when you sliced — re-print or sand the rim.
| Location | Size | Quantity |
|---|---|---|
| Lid corners | M3 | 4 |
| Storage tray clip | M3 | 2 |
| Hotspot retention bar | M3 | 1 |
| Pi 5 mounting deck | M2.5 | 4 |
| Sensor backplane mount | M2.5 | 2 |
| Buck converter standoff | M2.5 | 4 |
Set the iron to 230 °C for PETG, 250 °C for ASA. Press the insert square — wobble = ruined boss.
- Solder leads to the barrel jack (red = center +, black = sleeve).
- Insert the 3 A polyfuse in line on the red lead.
- Connect to buck input
Vin+ / GND. - Before connecting anything else: power the buck from 12 V and
verify
5.05 ± 0.05 Vat the output with no load. - Solder a USB-A pigtail to the buck output for the hotspot power feed.
- Solder a USB-C PD trigger module (set to 5 V) to the buck output for
the Pi feed. Confirm
5.10 ± 0.10 Vat the trigger output before plugging in the Pi. - Mount the buck on its 4 standoffs in the power well.
- Mount the Pi 5 to the deck with 4 × M2.5 × 6 mm screws.
- Install the active cooler per Pi Foundation instructions.
- Plug in the USB-C PD feed. Boot to confirm — solid green = good.
- Power down. Lay the deck into the body but don't fasten yet.
- Solder header pins to the SCD41, SHT45, BME688, VEML7700.
- Wire the I2C harness:
- All SDA → GPIO 2
- All SCL → GPIO 3
- All 3V3 → Pi 3V3 pin (1 or 17)
- All GND → Pi GND
- Add the 2.2 kΩ pull-ups (SDA→3V3, SCL→3V3) at one end of the bus.
- Mount the backplane to the sensor head with M2.5 screws.
- Plug the harness into the Pi GPIO header.
- Boot the Pi, run
i2cdetect -y 1— you should see four addresses:0x10 0x44 0x62 0x76. If any are missing, fix before continuing.
- Place a 3 mm closed-cell foam pad on the bay floor.
- Slide the 1 TB drive in, USB port facing the divider wall.
- Route the USB 3.0 cable through the 12 × 6 mm slot.
- Clip the strain-relief into the entry slot.
- Plug into the Pi's blue USB 3.0 port.
- Lay a second 3 mm foam pad on top of the drive.
- Snap the storage tray lid down — captive screws stay on the lid.
- Boot and confirm
lsblkshowssdawith the expected capacity.
- Place a 2 mm silicone pad on the bay floor.
- Drop the Nighthawk in, screen facing the top window.
- Route the USB-C power cable from the buck pigtail to the hotspot's USB-C power port.
- Route the USB-C data cable from the Pi's USB 2.0 port to the hotspot's USB-C data port.
- Screw the TS-9 → SMA pigtails into the hotspot's antenna ports and route them out through the side passthroughs to the rear antennas.
- Clip the retention bar across the top — single M3 captive screw.
- Power on. Wait ~60 s for cellular lock. Confirm
nmclishows the tether interface up and routable.
- Wire three LEDs (green/amber/red) with 470 Ω current-limit resistors to GPIO 17/27/22 and GND.
- Mount in the front panel.
- Boot — green should blink heartbeat, amber should flicker on each batch upload, red should be off.
- Fasten the compute deck with 4 × M2.5 × 8 mm screws.
- Run the antenna SMA bulkheads through the rear panel holes; tighten with a 10 mm spanner.
- Twist-lock the sensor head onto the top.
- Drop the lid on and fasten the 4 corner M3 × 8 mm screws.
- Apply a fleet inventory label to the rear.
ssh crowe@<node-ip>
sudo crowe-provision \
--node-id cs-7Q4F2A \
--site mycology-lab-01 \
--enroll-token "$ENROLL_TOKEN"This generates the ed25519 keypair, registers the node with the cloud fleet service, and pins the manifest URL. After this runs, the node will reboot once and start streaming telemetry.
Let the node run on the bench for 4 hours before deployment. Verify:
- At least 3 successful uploads per hour
- No
STORAGE_DEGRADEDorBACKHAUL_OFFLINEevents - CO2 readings track when you breathe near the sensor head
- Cellular RSSI stays above -100 dBm
- No watchdog-initiated hotspot resets
If all checks pass, the node is ready to ship.