diff --git a/docs/tutorials/i2c-environmental-sensor-module.mdx b/docs/tutorials/i2c-environmental-sensor-module.mdx new file mode 100644 index 0000000..a45f661 --- /dev/null +++ b/docs/tutorials/i2c-environmental-sensor-module.mdx @@ -0,0 +1,141 @@ +--- +title: I2C Environmental Sensor Module +description: Build a small BME280-based environmental sensor module with I2C pull-ups, an optional OLED header, and external connector pins. +--- + +import CircuitPreview from "@site/src/components/CircuitPreview" +import TscircuitIframe from "@site/src/components/TscircuitIframe" + +## Overview + +This tutorial walks through a compact I2C environmental sensor module built +around a BME280 temperature, humidity, and pressure sensor. The board exposes +power, ground, SDA, and SCL on a header so it can connect to a microcontroller, +Raspberry Pi, or breadboard wiring harness. + +## Circuit Requirements + +The module needs: + +- a BME280 sensor connected to the I2C bus +- pull-up resistors on SDA and SCL +- decoupling near the sensor power pins +- a 4-pin external connector for power and I2C +- an optional OLED expansion header sharing the same I2C bus + +## Final Circuit Preview + + ( + + + + + + + + + + + + + + + + + + + + + + + +) +`} /> + +## Step 1: Add the Sensor + +The BME280 is the main part on the module. In a production design you should +match the footprint and pinout to the exact package and supplier part you plan +to order. + + ( + + + +) +`} /> + +## Step 2: Add Pull-Up Resistors + +I2C is an open-drain bus, so SDA and SCL need pull-up resistors. `4.7k` is a +common starting value for short sensor-module wiring at standard I2C speeds. + +## Step 3: Add Headers + +`J1` is the main host connector. `J2` is optional and can be used for a small +OLED display or another I2C device. Both headers share the same VCC, GND, SDA, +and SCL nets. + +## Example Microcontroller Code + +```ts +import { Bme280 } from "your-bme280-driver" + +const sensor = new Bme280({ bus: 1, address: 0x76 }) +await sensor.init() + +const reading = await sensor.read() +console.log({ + temperatureC: reading.temperature, + humidityPercent: reading.humidity, + pressurePa: reading.pressure, +}) +``` + +## Layout Guidance + +Place the decoupling capacitor close to the sensor power pins, keep SDA and SCL +short when possible, and avoid placing hot components directly next to the +sensor package because that can skew temperature readings.