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
Pre-Soldered I2C Logic Level Converter 3.3V-5V Bi-Directional for Arduino, Raspberry Pi, ESP32 & Pico
$6.25
TCA9548A Pre-Soldered 1-to-8 I2C 8-Channel Multiplexer Module
$9.99
ADS1115 Pre-Soldered ADC Analog to Digital Converter Module for Arduino & Raspberry Pi
$9.75
BH1750 Pre-Soldered Digital Light Sensor for Arduino & Raspberry Pi
$6.98Arduino 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
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
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
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
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
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
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
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
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
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
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
Build a Raspberry Pi Pico ADXL345 I2C accelerometer reader in MicroPython to print real-time X, Y, Z values in g for ...