Temperature and Humidity Sensor Node Design

continue
I’ll inspect the current schematic and project docs, run design checks, then fix any schematic issues I find before summarizing what remains for layout.
I’m blocked because the account has no available ACUs, so I can’t continue AI layout actions right now.
Completed this session:
  • Verified the schematic/ERC state: no open errors or warnings were reported.
  • Set up the PCB as a 45 mm × 30 mm rounded rectangle with a standard 4-layer stackup and 0.5 mm board keepout.
  • Confirmed the board area is workable, though routing may be tight around the ESP32/power section.
Remaining work:
  • Place components with ESP32 antenna keepout, USB-C edge placement, compact buck/eFuse layout, and isolated SHT41 placement.
  • Route the PCB.
  • Run DRC and airwire checks.
  • Fix any routing or layout violations before manufacturing export.
Review placement constraints
Check ACU balance
Run layout checks
Estimate board size

Refine this doc
Ask about this doc
Firmware Starter — ESP32-C3 Environmental Sensor
Pin Map

Table


NetESP32-C3 pinFirmware name
I2C_SDAGPIO4SDA_PIN
I2C_SCLGPIO5SCL_PIN
STATUS_LEDGPIO7STATUS_LED_PIN
USB_DNGPIO18Native USB D−
USB_DPGPIO19Native USB D+
ESP_BOOT_IO9GPIO9BOOT strap / button
ESP_BOOT_IO8GPIO8Download strap pull-up
ESP_BOOT_IO2GPIO2Boot recommendation pull-up
PlatformIO Example

Ini


[env:esp32-c3-devkitm-1]
platform = espressif32
board = esp32-c3-devkitm-1
framework = arduino
monitor_speed = 115200
lib_deps = sensirion/Sensirion I2C SHT4x
build_flags =
  -D ARDUINO_USB_MODE=1
  -D ARDUINO_USB_CDC_ON_BOOT=1
Arduino Firmware Skeleton

Cpp


#include <Arduino.h>
#include <Wire.h>
#include <WiFi.h>
#include <SensirionI2CSht4x.h>

#define SDA_PIN 4
#define SCL_PIN 5
#define STATUS_LED_PIN 7

const char* WIFI_SSID = "YOUR_SSID";
const char* WIFI_PASS = "YOUR_PASSWORD";

SensirionI2CSht4x sht4x;
unsigned long lastSampleMs = 0;
const unsigned long SAMPLE_PERIOD_MS = 60000;

void connectWiFi() {
  WiFi.mode(WIFI_STA);
  WiFi.begin(WIFI_SSID, WIFI_PASS);
  unsigned long start = millis();
  while (WiFi.status() != WL_CONNECTED && millis() - start < 15000) {
    delay(250);
  }
}

void setup() {
  pinMode(STATUS_LED_PIN, OUTPUT);
  digitalWrite(STATUS_LED_PIN, LOW);

  Serial.begin(115200);
  delay(1000);

  Wire.begin(SDA_PIN, SCL_PIN);
  sht4x.begin(Wire);
  sht4x.softReset();
  delay(10);

  connectWiFi();
}

void loop() {
  if (millis() - lastSampleMs >= SAMPLE_PERIOD_MS) {
    lastSampleMs = millis();
    float temperatureC = 0.0f;
    float humidityRH = 0.0f;
    uint16_t error = sht4x.measureHighPrecision(temperatureC, humidityRH);

    digitalWrite(STATUS_LED_PIN, HIGH);
    delay(25);
    digitalWrite(STATUS_LED_PIN, LOW);

    if (!error) {
      Serial.printf("T=%.2f C, RH=%.2f %%\n", temperatureC, humidityRH);
    } else {
      Serial.printf("SHT4x read error: %u\n", error);
    }

    if (WiFi.status() != WL_CONNECTED) connectWiFi();
  }
}
Bring-up Commands

Bash


pio run
pio run -t upload
pio device monitor
Low-Power Firmware Notes
For lowest average power, sample infrequently, keep LED off except short blinks, use BLE only for provisioning windows, keep Wi-Fi sessions short, and consider light/deep sleep if USB standby power matters.
  • Pin Map

  • PlatformIO Example

  • Arduino Firmware Skeleton

  • Bring-up Commands

  • Low-Power Firmware Notes

USB-C WiFi BLE Environmental Sensor Node

USB-C WiFi BLE Environmental Sensor Node thumbnail
Consumer USB-C powered temperature/humidity sensor node using a low-power Wi‑Fi + BLE MCU, protected 5 V input, and 3.3 V sensing/control rail.

Properties

USB-C

IoT

Consumer

Bluetooth

5

V

Wi-Fi

Pricing & Availability

Distributor

Qty 1

Arrow

$2.31–$2.80

Digi-Key

$3.96–$4.08

HQonline

$3.02–$3.12

LCSC

$5.07–$5.20

Mouser

$10.64

TME

$0.00

Verical

$1.11–$1.70

Controls