Buy 10+ on select items — save 10% auto-applied
Free US shipping on orders $35+
Order by 3pm ET — ships same-day from the US
Skip to main content
ShillehTek IoT & Beyond

I2C Tutorials & Guides

Bus wiring, address conflicts, level shifting — solved.

Half of all “my sensor doesn’t work” problems are I2C problems. These guides cover bus wiring and pull-ups, address scanning and conflicts, 3.3V↔5V level shifting, and running multiple identical devices with a multiplexer — with working examples on Arduino, ESP32, and Pi. The exact converters and expanders used in the guides are below.

Shop the parts used in these tutorials
Arduino MAX30102: Stream Heart Rate to Serial | ShillehTek
May 14, 2026 Mahmood M. Shilleh 76 views

Arduino MAX30102: Stream Heart Rate to Serial | ShillehTek

Build an Arduino MAX30102 pulse oximeter project that streams live heart rate (BPM) to Serial Monitor over I2C using ...
Arduino VL53L0X: Millimetre Distance Over Serial | ShillehTek
May 14, 2026 Mahmood M. Shilleh 41 views

Arduino VL53L0X: Millimetre Distance Over Serial | ShillehTek

Build an Arduino Nano + VL53L0X ToF distance reader that streams millimetre measurements over Serial for accurate sho...
Arduino BH1750: Read Real Lux Over Serial | ShillehTek
May 14, 2026 Mahmood M. Shilleh 64 views

Arduino BH1750: Read Real Lux Over Serial | ShillehTek

Build an Arduino Nano lux meter with the BH1750 (GY-302) sensor and read real light intensity over I2C in the Serial ...
Arduino MCP2515 CAN Bus Module: DHT11 Data to LCD | ShillehTek
Apr 30, 2026 Mahmood M. Shilleh 87 views

Arduino MCP2515 CAN Bus Module: DHT11 Data to LCD | ShillehTek

Build an Arduino MCP2515 CAN bus link that sends DHT11 temperature and humidity from a Nano to a Uno and displays it ...
Arduino Uno VL53L0X: Show Distance on SSD1306 OLED | ShillehTek
Apr 24, 2026 Mahmood M. Shilleh 80 views

Arduino Uno VL53L0X: Show Distance on SSD1306 OLED | ShillehTek

Build an Arduino Uno distance meter using the VL53L0X ToF sensor and SSD1306 OLED to display real-time millimeter rea...
Arduino UNO MAX30102: Measure Heart Rate BPM | ShillehTek
Apr 10, 2026 Mahmood M. Shilleh 82 views

Arduino UNO MAX30102: Measure Heart Rate BPM | ShillehTek

Build an Arduino UNO heart rate monitor with the MAX30102 sensor to read IR data, detect beats, and calculate stable ...
Arduino PCA9685: Control Multiple Servos Easily | ShillehTek
Mar 18, 2026 Mahmood M. Shilleh 251 views

Arduino PCA9685: Control Multiple Servos Easily | ShillehTek

Build an Arduino Uno multi-servo controller using the PCA9685 16-channel PWM driver for cleaner I2C wiring, stable ti...
Raspberry Pi ADS1115: Read MQ-135 Analog Voltage | ShillehTek
May 25, 2024 Mahmood M. Shilleh 592 views

Raspberry Pi ADS1115: Read MQ-135 Analog Voltage | ShillehTek

Build a Raspberry Pi ADS1115 setup to read MQ-135 analog voltage over I2C in Python, enabling accurate air quality mo...
Arduino ADXL345: Calibrate and Read 3-Axis Data | ShillehTek
Oct 30, 2023 Mahmood M. Shilleh 588 views

Arduino ADXL345: Calibrate and Read 3-Axis Data | ShillehTek

Build an Arduino ADXL345 I2C setup to read 3-axis acceleration and optionally calibrate offsets for more accurate mot...
ESP32 BMP280: Read pressure, temperature, altitude | ShillehTek
Oct 23, 2023 Mahmood M. Shilleh 731 views

ESP32 BMP280: Read pressure, temperature, altitude | ShillehTek

Build an ESP32 BMP280 sensor reader that prints pressure, temperature, and altitude to the Serial Monitor using the A...
Arduino Nano MPU9250: Read accel, gyro, mag | ShillehTek
Oct 23, 2023 Mahmood M. Shilleh 726 views

Arduino Nano MPU9250: Read accel, gyro, mag | ShillehTek

Build an Arduino Nano MPU9250 IMU hookup to read accelerometer, gyroscope, and magnetometer values using the hideakit...
Raspberry Pi Pico ADXL345: Read Acceleration in MicroPython | ShillehTek
Oct 23, 2023 Mahmood M. Shilleh 268 views

Raspberry Pi Pico ADXL345: Read Acceleration in MicroPython | ShillehTek

Build a Raspberry Pi Pico ADXL345 I2C accelerometer reader in MicroPython to print real-time X, Y, Z values in g for ...