NE-WX1 Atmospheric Measurement System

Six-channel atmospheric measurement instrument purpose-built for motorsports. Feeds real-time environmental data into the NumberEdge CIPM-2007 prediction pipeline at 1 Hz. Dual connectivity (WiFi + USB-C), integrated IPS display, aspirated sensor enclosure. Track surface temperature estimated via solar load model or manual entry. The data layer that makes everything else possible.

6
Measurement Channels
1 Hz
Sample Rate
±0.1°C
Temperature
±3 Pa
Pressure (Rel.)

Measurement Specifications

ChannelSensorAccuracyRange
TemperatureSensirion SHT45±0.1°C (±0.18°F)-40 to +125°C
Relative HumiditySensirion SHT45±1.0% RH0–100% RH
Barometric PressureBosch BMP390±3 Pa relative (±0.001 inHg)300–1250 hPa
Wind SpeedDavis 6410±5% or 1 mph1–200 mph
Wind DirectionDavis 6410±7°0–360°
Track Surface Temp (Est.)Solar load model + manualModel-dependent
Ambient LightVishay VEML770016-bit resolution0–120,000 lux

Derived Outputs (Computed at 1 Hz)

All derived atmospheric values are computed both on the instrument and in the NumberEdge Race Deck using metrological-grade formulas (CIPM-2007, Buck-1996, Hardy-1998):

Connectivity

WiFi (802.11 b/g/n, 2.4 GHz)

USB-C (Serial, 115200 baud)

Both interfaces operate simultaneously. The Race Deck auto-detects the connection method and prioritizes USB when both are available. WiFi is not required for operation — the instrument functions fully over USB-C and the integrated display.

Integrated Display

2.0″ IPS TFT (240×320), sunlight-readable with wide viewing angles. Displays CF and Density Altitude as primary readouts with secondary metrics on rotation. Operates independently of any external device — the instrument is fully functional standalone.

Sensor Enclosure

Aspirated multi-plate radiation shield with forced airflow. Engineered for accurate measurement in direct sunlight, radiant heat from track surfaces, and proximity to engine exhaust.

Competitive Position

The Computech RaceAir Pro ($749) has been the industry standard since the early 2000s. It measures three atmospheric variables on a 10-second cycle over a proprietary serial link. The NE-WX1 measures six variables at 10x the sample rate with higher accuracy on every channel, estimates track surface temperature via solar load model, and feeds directly into a prediction engine that turns weather data into actionable race intelligence.

SpecificationComputech RaceAir ProNumberEdge NE-WX1
Temperature±1.0°F (thermistor)±0.18°F (CMOSens)
Humidity±2% RH (capacitive)±1% RH (CMOSens)
Pressure±0.01 inHg±0.001 inHg (relative)
WindCup + vane (add-on)Cup + vane (integrated)
Track Surface TempIR probe (add-on)Solar load model + manual IR gun
Ambient LightNone16-bit lux sensor
Sample Rate0.1 Hz (10 sec)1 Hz (1 sec)
DisplayReflective LCDIPS TFT + any browser
InterfaceRS-232 (1 client)WiFi + USB-C (unlimited)
CF ComputationNHRA standardNHRA + CIPM-2007 + SAE J1349
Prediction PipelineNoneProgressive regression model
Remote UpdatesNoneOTA firmware deployment

Data Integration

NumberEdge Dial Lab

The NE-WX1 is the primary data source for NumberEdge Dial Lab. Dial Lab ingests raw sensor data and applies the full CIPM-2007 atmospheric model to compute CF, density altitude, and predicted ET. The prediction engine learns each vehicle's specific response to atmospheric conditions through progressive regression (naive → linear CF → multivariate → full stepwise), delivering predictions that improve with every run logged.

REST API

GET  /api/weather     # Current readings + system state (JSON)
GET  /api/status      # Diagnostics: sensor health, heap, calibration, clients
POST /api/calibrate   # Apply measurement offsets (persisted to flash)
WS   ws://:81/        # 1 Hz JSON push to all connected clients

JSON Payload

{
  "temp_f": 62.3,        "humidity_pct": 48.0,
  "pressure_inhg": 30.120,
  "wind_speed_mph": 3.2, "wind_direction_deg": 185,
  "sunlight_lux_k": 42.5,
  "est_track_temp_f": 118.4,
  "temp_c": 16.83,       "pressure_hpa": 1020.1,
  "battery_pct": 87,     "battery_v": 3.92,
  "uptime_sec": 3600,    "firmware": "2.0.0",
  "rssi": -45,           "ip": "192.168.1.100"
}

Failed sensors return null. The system degrades gracefully — each channel operates independently.

USB Serial Stream

Identical JSON payload transmitted at 1 Hz over USB CDC (115200/8N1). Each frame is a complete JSON object terminated by newline.

Calibration

All sensors ship factory-calibrated. Field calibration offsets can be applied to match a reference standard (e.g., Kestrel 5500, laboratory hygrometer, NIST-traceable barometer).

Procedure

  1. Co-locate the NE-WX1 and reference instrument in a shielded, equilibrated environment for a minimum of 10 minutes
  2. Record simultaneous readings from both instruments
  3. Compute offset: offset = reference − NE-WX1
  4. Apply via API:
    POST /api/calibrate
    {"temp_offset_f": 0.3, "humidity_offset": -0.5, "pressure_offset_inhg": 0.002}
  5. Offsets persist in non-volatile storage across power cycles
Barometric pressure from airport METAR/AWOS is sea-level corrected. Station pressure (absolute) is required. Convert: P_station = P_altimeter × (1 - 6.8753×10&supmin;&sup5; × elevation_ft)^5.2559

Power

Component Procurement

Every component required to build one NE-WX1 unit. All parts listed are the exact manufacturer SKUs used in our production units. Order everything before starting assembly.

Core Electronics

ComponentPart NumberQtyPriceSource
Microcontroller — Seeed Studio XIAO ESP32-S3XIAO-ESP32S31$7.49seeedstudio.com
Temperature / Humidity — Adafruit SHT45 (STEMMA QT)Adafruit #56651$12.50adafruit.com
Barometric Pressure — Adafruit BMP390 (STEMMA QT)Adafruit #48161$10.95adafruit.com
Ambient Light — Adafruit VEML7700 (STEMMA QT)Adafruit #41621$4.95adafruit.com
IPS Display — Adafruit 2.0″ 320x240 TFT (ST7789)Adafruit #43111$19.95adafruit.com

Wind Sensor

ComponentPart NumberQtyPriceSource
Anemometer + Wind Vane — Davis 6410Davis 64101$240.00Amazon  /  Davis Direct

The Davis 6410 includes the cup anemometer, wind vane, and 40 ft (12 m) of cable with an RJ-11 connector. Do not substitute with Davis 7911 (incompatible pinout).

Wiring & Interconnects

ComponentPart NumberQtyPriceSource
STEMMA QT Cable — 100mm (JST SH 4-pin)Adafruit #42103$0.95 eaadafruit.com
STEMMA QT Cable — 200mm (longer run for light sensor)Adafruit #44011$1.25adafruit.com
10kΩ Resistor (wind speed pullup)any 10k 1/4W2$0.10Any electronics supplier — Adafruit 220-pack $7.95
N-Channel MOSFET — IRLZ44N (fan control)IRLZ44N1$1.50Amazon
Half-size breadboardAdafruit #45391$5.00adafruit.com
Jumper wires (male/male + male/female assortment)Adafruit #19571$1.95adafruit.com
RJ-11 Breakout Board (optional — avoids cutting Davis cable)generic1$3.00Amazon

Power

ComponentPart NumberQtyPriceSource
3.7V 2000mAh LiPo Battery (JST PH 2-pin)Adafruit #20111$12.50adafruit.com
JST PH to JST SH Battery Adapter CableAdafruit #47141$0.75adafruit.com
USB-C Cable (data capable, 6 ft)any USB-C data cable1$8.00Amazon — must be data-capable, not charge-only

Enclosure & Mounting

ComponentPart NumberQtyPriceSource
40mm 5V Brushless Fan — Noctua NF-A4x10 5VNF-A4x10 5V1$15.95Amazon
Radiation shield / Stevenson screenAmbient Weather SRS100LX or 3D-printed1$25.00Amazon
Tripod mount (camera tripod, 4–5 ft)any standard ¼″-20 tripod1$20.00Amazon
Velcro cable ties + foam tape (battery/board mounting)1$5.00Amazon
Waterproof project enclosure (120×80×55mm or similar)1$8.00Amazon

Tools Needed

ToolPriceNotes
Computer with USB-C portMac, Windows, or Linux
Arduino IDE 2.xFreearduino.cc/en/software
Soldering iron + solder$25–40Amazon — only needed for MOSFET fan circuit (optional — can use pre-wired fan)
Wire strippers$8Amazon — for Davis 6410 cable leads
Small Phillips screwdriver$3For terminal blocks if used
Multimeter (optional)$15Amazon — helpful for verifying connections

Total Build Cost

Core Electronics (MCU + 3 sensors + display)$55.84
Wind Sensor (Davis 6410)$240.00
Wiring & Interconnects$13.65
Power (battery + adapter + USB-C cable)$21.25
Enclosure & Mounting$73.95
Total (everything, ready to build)$404.69
Tools (if you don't already own them)+$51–66

Prices as of April 2026. All components available with standard shipping. Order from Adafruit + Amazon and have everything in 2–3 days.

Assembly Guide

Step-by-step instructions for building one NE-WX1 unit from the component list above. Every connection is described in detail. If you have never built electronics before, you can do this — most of the build is plugging cables into connectors.

Before you start: Unbox everything and lay it out on a clean, flat surface. Make sure you have all components listed above. Read through the entire guide once before doing anything. Work in a well-lit area. Static electricity can damage components — touch a metal object (like a doorknob or the USB port of your laptop) before handling circuit boards to discharge yourself.

Step 1: Identify Your Parts

Lay everything out and match each item to this list. Every sensor board has text printed on it telling you what it is.

  1. XIAO ESP32-S3 — Tiny green board, about the size of a postage stamp. Has a USB-C port on one end. This is the brain.
  2. SHT45 board — Small purple Adafruit board, says "SHT4x" on it. Has two small white connectors (STEMMA QT ports) on each end. Measures temperature and humidity.
  3. BMP390 board — Small purple Adafruit board, says "BMP390" on it. Has two STEMMA QT ports. Measures barometric pressure.
  4. VEML7700 board — Small purple Adafruit board, says "VEML7700". Has two STEMMA QT ports. Measures ambient light.
  5. TFT display — 2-inch color screen. Has pins along one edge. This is the built-in display.
  6. STEMMA QT cables — Thin black cables with tiny white 4-pin connectors on each end. These connect the sensor boards together. You should have three 100mm (short) and one 200mm (long).
  7. Davis 6410 — The wind sensor assembly with cups and a vane. Has a long cable ending in an RJ-11 (phone jack style) plug.
  8. LiPo battery — Flat rectangular pouch battery with a small red JST connector.
  9. Fan — Small 40mm square fan with two wires.
  10. Breadboard or proto board — Plastic board with rows of holes for making electrical connections.

Step 2: Connect the XIAO ESP32-S3 to Your Computer

Before building anything, let's make sure the microcontroller works.

  1. Take the XIAO ESP32-S3 board and plug the USB-C cable into it.
  2. Plug the other end of the USB-C cable into your computer.
  3. A small LED on the board may blink or glow. This means it has power.
  4. Open Arduino IDE on your computer.
  5. Go to File → Preferences. In the "Additional Boards Manager URLs" field, paste:
    https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
    Click OK.
  6. Go to Tools → Board → Boards Manager. Search for "esp32". Install "esp32 by Espressif Systems" (version 3.x).
  7. Go to Tools → Board and select "XIAO_ESP32S3" (under ESP32S3 Dev Module if XIAO isn't listed).
  8. Go to Tools → Port and select the port that appeared when you plugged in the board (on Mac it looks like /dev/cu.usbmodem..., on Windows it's COM3 or similar).
  9. Go to Tools → USB CDC On Boot and set it to "Enabled". This is critical for serial communication.
  10. If the port doesn't appear: try a different USB-C cable (some cables are charge-only and don't carry data). Also try pressing the tiny "RST" button on the XIAO board while plugging it in.

Step 3: Plug In the I2C Sensor Chain (No Soldering)

This is the easiest part. Three of the four sensor boards (SHT45, BMP390, VEML7700) have STEMMA QT connectors — small white rectangular sockets. The cables snap in with a satisfying click. The connectors are keyed so you cannot plug them in backwards.

  1. Connect XIAO → SHT45:
    The XIAO ESP32-S3 does not have a built-in STEMMA QT port, so you need to use jumper wires for this first connection. Take a STEMMA QT cable and cut ONE end off. You'll see 4 wires inside: Red (3V3), Black (GND), Blue (SDA / data), Yellow (SCL / clock).

    Strip about 3mm of insulation from each cut wire end and connect them to the XIAO pins using the breadboard:
    Red wire → XIAO pin labeled 3V3
    Black wire → XIAO pin labeled GND
    Blue wire (SDA) → XIAO pin labeled D3 (this is GPIO5)
    Yellow wire (SCL) → XIAO pin labeled D4 (this is GPIO6)

    Plug the intact STEMMA QT end into either port on the SHT45 board. You'll hear/feel a click.
  2. Connect SHT45 → BMP390:
    Take a 100mm STEMMA QT cable. Plug one end into the other (unused) STEMMA QT port on the SHT45 board. Plug the other end into either port on the BMP390 board. Click, click. Done.
  3. Connect BMP390 → VEML7700:
    Take the 200mm (longer) STEMMA QT cable. Plug one end into the unused port on the BMP390 board, the other end into either port on the VEML7700 board. Use the longer cable here because the light sensor will be mounted with a clear sky view, away from other components.

That's it for three of the four sensors. They are now daisy-chained on a shared I2C data bus. Power, ground, and both data lines run through every cable.

Step 4: Wire the TFT Display (SPI Connection)

The display uses SPI, which is a different communication protocol from I2C. It needs its own dedicated wires to the XIAO.

  1. The TFT display has labeled pins along one edge. Use jumper wires to connect each pin to the XIAO as follows:

    TFT PinXIAO Pin
    VIN (or VCC)3V3
    GNDGND
    SCK (Clock)D5 (GPIO7)
    MOSI (Data In / SI)D7 (GPIO9)
    CS (Chip Select)D8 (GPIO8)
    DC (Data/Command / RS)D9 (GPIO10)
    RST (Reset)3V3 (tie high)
    BL (Backlight)3V3 (always on) or a GPIO for dimming
  2. Double-check every connection. The display will show nothing (blank/white) until the firmware drives it. A wrong connection won't damage it but it won't work either.

Step 5: Wire the Davis 6410 Wind Sensor

The Davis 6410 cable terminates in an RJ-11 plug. You need to either cut the plug off and wire directly, or use an RJ-11 breakout board.

  1. Option A — Cut the RJ-11 plug and wire directly:
    Cut the plug off the end of the cable. Strip about 5mm of each wire. The Davis 6410 uses 4 wires:
    Wire ColorFunctionConnect To
    RedWind speed signal (reed switch closure)XIAO D0 (GPIO2) + 10kΩ pullup to 3V3
    BlackGround (shared)XIAO GND
    GreenWind direction (potentiometer wiper)XIAO D1 (GPIO3) — ADC input
    YellowDirection reference voltageXIAO 3V3
  2. Install the 10kΩ pullup resistor:
    The wind speed signal is a reed switch that connects to ground when the cups spin. The XIAO needs a pullup resistor to detect this. On the breadboard, connect one leg of a 10kΩ resistor to the 3V3 rail and the other leg to the same row as the wind speed wire (XIAO D0 / GPIO2). This ensures the pin reads HIGH normally and gets pulled LOW on each cup rotation.
  3. Option B — Use an RJ-11 breakout:
    If you don't want to cut the cable, get an RJ-11 breakout board (search "RJ-11 breakout" on Adafruit or Amazon). Plug the Davis cable in and wire from the breakout screw terminals using the same pin mapping above.

Step 6: Wire the Fan Circuit

The aspirating fan keeps air moving over the SHT45 sensor for accurate temperature readings. The fan requires more current than the XIAO GPIO can provide directly, so we use a MOSFET as a switch.

  1. MOSFET wiring (IRLZ44N or 2N7000):
    The MOSFET has three legs. Hold it with the flat side facing you and the legs pointing down:
    Left leg (Gate) → connect to XIAO D0 (GPIO1) via a jumper wire. This is the control signal.
    Middle leg (Drain) → connect to the NEGATIVE (black) wire of the fan.
    Right leg (Source) → connect to GND on the breadboard.

    Then connect the POSITIVE (red) wire of the fan directly to the 5V pin on the XIAO (labeled "5V" or "VBUS" — this is the USB 5V rail).
  2. How it works: When the XIAO sets GPIO1 HIGH, the MOSFET allows current to flow through the fan. The firmware runs the fan at full speed by default. The fan will start spinning once the firmware is loaded.
Pin check: GPIO1 is labeled D0 on the XIAO ESP32-S3. Do NOT confuse this with GPIO2 (D1) which is used for wind speed. The XIAO's silk-screen labels (D0, D1, D2...) do NOT match GPIO numbers. Always refer to the GPIO allocation table below.

Step 7: Connect the Battery (Optional)

The LiPo battery allows the NE-WX1 to run untethered for 8–10 hours.

  1. The XIAO ESP32-S3 has a small battery connector on the bottom side of the board (JST SH 1.25mm, 2-pin).
  2. The Adafruit #2011 battery has a JST PH 2.0mm connector, which is a different size. You need either:
    • A JST PH-to-SH adapter cable, OR
    • Cut the battery connector and solder on a JST SH 1.25mm plug (available from Adafruit #4208), OR
    • Solder the battery wires directly to the battery pads on the XIAO board (labeled BAT+ and BAT-).
  3. IMPORTANT: Verify polarity before connecting. Red wire = positive. Black wire = negative. Reversed polarity will destroy the board.
  4. Once connected, the battery charges automatically whenever USB-C is plugged in.

Step 8: Install Arduino Libraries

Before flashing firmware, install all required libraries in Arduino IDE.

  1. Open Arduino IDE.
  2. Go to Sketch → Include Library → Manage Libraries.
  3. Search for and install each of these (click "Install" for each one):
    • ArduinoJson by Benoit Blanchon — version 7.x
    • Adafruit SHT4x Library by Adafruit
    • Adafruit BMP3XX Library by Adafruit
    • Adafruit VEML7700 Library by Adafruit
    • WebSockets by Markus Sattler (links2004)
    • TFT_eSPI by Bodmer
  4. When prompted to install dependencies (like "Adafruit Unified Sensor"), click "Install All".
TFT_eSPI configuration: After installing TFT_eSPI, you must edit its User_Setup.h file to match our pin assignments. Find the library folder (usually ~/Arduino/libraries/TFT_eSPI/) and edit User_Setup.h:
• Set #define ST7789_DRIVER
• Set #define TFT_WIDTH 240 and #define TFT_HEIGHT 320
• Set pin defines: #define TFT_MOSI 9, #define TFT_SCLK 7, #define TFT_CS 8, #define TFT_DC 10, #define TFT_RST -1

Step 9: Flash the Firmware

  1. Open the firmware file: numberedge-wx.ino from the tools/weather-station/firmware/numberedge-wx/ directory.
  2. Verify these settings in Tools menu:
    • Board: XIAO_ESP32S3
    • USB CDC On Boot: Enabled
    • Upload Speed: 921600
    • Port: your XIAO's port
  3. Click the Upload button (right arrow icon). Wait for compilation and upload to complete. This takes 1–2 minutes.
  4. When you see "Hard resetting via RTS pin..." in the console, the upload is complete.

Step 10: Verify Sensor Detection

After flashing, open the Serial Monitor (Tools → Serial Monitor, set baud to 115200).

  1. Press the RST button on the XIAO (or unplug/replug USB).
  2. Within 5 seconds, you'll see the boot sequence. Look for initialization messages for each sensor:
    [SHT45]    OK  0x44     ← Temperature/Humidity detected
    [BMP390]   OK  0x77     ← Barometric Pressure detected
    [VEML7700] OK  0x10     ← Ambient Light detected
    [TFT]      ST7789 240x320
    [Wind]     GPIO2 pulse / GPIO3 ADC
    [WiFi]     Scanning...
  3. If a sensor shows FAIL: That sensor's wiring has a problem. Check the specific cable connection for that board. Common issues:
    • STEMMA QT cable not fully clicked in — push harder, you'll feel/hear the click
    • Cut wires touching each other (short circuit) — separate and re-strip
  4. The TFT display should light up and show the NumberEdge splash screen, then begin displaying CF and DA values.

Step 11: Configure WiFi

  1. With the Serial Monitor open, press RST on the XIAO.
  2. Within the first 5 seconds after boot, type the letter c and press Enter.
  3. The firmware enters configuration mode. It will prompt you:
    Enter WiFi SSID: 
    Type your WiFi network name and press Enter.
    Enter WiFi Password: 
    Type your WiFi password and press Enter.
  4. The credentials are saved to flash memory and persist across reboots.
  5. The device will connect and display its IP address on both the serial monitor and the TFT screen.
  6. Important: The ESP32-S3 only supports 2.4 GHz WiFi. If your network is 5 GHz only, it will not connect. Most routers broadcast both — connect to the 2.4 GHz network (often has "2G" or "2.4" in the name).

Step 12: Verify the Web Dashboard

  1. On any phone or computer connected to the same WiFi network, open a browser.
  2. Navigate to http://numberedge-wx.local — or use the IP address shown on the TFT display (e.g., http://192.168.1.100).
  3. You should see the NE-WX1 atmospheric dashboard with live-updating values for CF, DA, temperature, humidity, pressure, and all derived metrics.
  4. Breathe on the SHT45 sensor — you should see temperature and humidity spike upward within 1 second. This confirms the full data path from sensor to browser is working.

Step 13: Connect to NumberEdge Dial Lab

  1. Open NumberEdge Dial Lab on your laptop.
  2. Dial Lab auto-detects the NE-WX1 on the local network via mDNS.
  3. If auto-discovery fails, enter the IP address manually in Dial Lab's weather source settings.
  4. Live weather data now flows at 1 Hz into the full CIPM-2007 prediction pipeline. CF, DA, ADR, vapor pressure, grains, dew point, wet bulb, SAE CF, and all other derived values appear in the Race Deck's weather panel.

Step 14: Final Assembly into Enclosure

  1. Radiation shield: Mount the SHT45 and BMP390 inside the aspirated radiation shield (Stevenson screen). The fan should draw air in from the bottom and exhaust out the top, pulling ambient air across both sensors.
  2. Light sensor: Mount the VEML7700 on top of the enclosure with a clear view of the sky. Avoid shadowing from the wind sensor mast.
  3. Display: Mount the TFT in a window cut into the enclosure, visible from outside. The display face should be protected from rain and direct water contact.
  4. Wind sensor: Mount the Davis 6410 on a mast above the enclosure, as high and unobstructed as possible. Align the vane to match your track heading configuration.
  5. Microcontroller + breadboard: Secure the XIAO and breadboard inside the enclosure. Route the USB-C port to an accessible opening for charging and wired data connection.
  6. Battery: Secure the LiPo battery inside the enclosure with foam tape or a velcro strap. Keep it away from direct heat sources.
You're done. The NE-WX1 is now fully assembled and operational. Mount it at 4–5 feet above grade on a tripod, canopy pole, or trailer awning support. Allow 5–10 minutes for thermal equilibration after power-on before using data for race decisions.

Technical Reference

Pin assignments, bus addresses, and library versions for firmware development and troubleshooting.

I2C Bus

ModuleAddressInterface
SHT45 (Temp/RH)0x44I2C, fixed address
BMP390 (Pressure)0x77I2C, 0x76 alternate
VEML7700 (Light)0x10I2C, fixed address

All three I2C modules use JST SH 4-pin connectors in a daisy-chain topology. No address conflicts.

GPIO Allocation

FunctionPinMode
I2C SDAGPIO5I2C data
I2C SCLGPIO6I2C clock
Wind speedGPIO2Interrupt (pulse count)
Wind directionGPIO3ADC input
Fan PWMGPIO1PWM output (25 kHz)
TFT MOSIGPIO9SPI data
TFT SCKGPIO7SPI clock
TFT CSGPIO8SPI chip select
TFT DCGPIO10SPI data/command
Status LEDGPIO21Digital output

Library Dependencies

LibraryVersionPurpose
ArduinoJson7.xJSON serialization
Adafruit SHT4xlatestTemperature + humidity driver
Adafruit BMP3XXlatestBarometric pressure driver
Adafruit VEML7700latestAmbient light driver
TFT_eSPIlatestDisplay rendering (ST7789)
WebSockets (links2004)latestWebSocket server

Verification

After assembly, verify sensor initialization via serial output:

[SHT45]    OK  0x44     [BMP390]   OK  0x77
[VEML7700] OK  0x10
[TFT]      ST7789 240x320
[Wind]     GPIO2 pulse / GPIO3 ADC
[WiFi]     Connected  192.168.1.100  -42 dBm

Validate derived outputs against reference conditions:

Reference ConditionExpected CFExpected DA
60°F / 0% RH / 29.92 inHg1.00000 ft (±50)
90°F / 60% RH / 29.50 inHg1.08+3,000+ ft
40°F / 20% RH / 30.30 inHg<0.97Negative

Troubleshooting

Sensor Initialization Failure

Network

Measurement Drift

Wind Sensor

Open Dial Lab