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.98ESP32 BME280 + ST7735: Wi-Fi Weather Station Display | ShillehTek
Build an ESP32 Wi-Fi weather station with a BME280 sensor and ST7735 TFT display to show indoor readings plus OpenWea...
Arduino DS3231 RTC: OLED Alarm Clock with Buzzer | ShillehTek
Build an Arduino DS3231 RTC alarm clock with an SSD1306 OLED and buzzer for accurate, battery-backed timekeeping and ...
Arduino Nano RC522 RFID: Smart Door Lock with OLED | ShillehTek
Build an Arduino Nano RC522 RFID smart door lock with an OLED status screen and servo latch action, using simple wiri...
Arduino 24MHz Logic Analyzer: Decode I2C SPI UART | ShillehTek
Capture and decode Arduino I2C traffic with a 24MHz USB logic analyzer in PulseView, so you can verify SPI, UART, and...
Arduino PCF8574: Add 8 GPIO Pins Over I2C | ShillehTek
Build an Arduino PCF8574 I2C GPIO expander project to drive 8 LEDs using only SDA and SCL, freeing pins for bigger bu...
Arduino SSD1306 OLED: Display Text and Graphics | ShillehTek
Wire an Arduino to an SSD1306 0.96 inch I2C OLED and upload a simple sketch to display text and graphics on a crisp 1...
Arduino Nano MPU6050: Stream Accel and Gyro Data | ShillehTek
Build an Arduino Nano + MPU6050 IMU reader that streams live accelerometer and gyroscope data over Serial for motion ...
Arduino MLX90614: Read Non-Contact Temperature Values | ShillehTek
Build an Arduino MLX90614 non-contact IR thermometer that reads ambient and object temperature over I2C, perfect for ...
Arduino Nano MPU9250 IMU: Stream 9-Axis Data | ShillehTek
Wire an Arduino Nano to an MPU9250 IMU and stream 9-axis accel, gyro, and compass data over Serial for fast motion an...
Arduino ADS1115: 16-bit Precision Analog Reads | ShillehTek
Build an Arduino ADS1115 16-bit I2C analog reader for four high-precision channels, ideal for sensors and battery mon...
Arduino ADXL345: Stream 3-Axis Acceleration Data | ShillehTek
Wire an Arduino Nano to an ADXL345 accelerometer and stream live X/Y/Z acceleration over Serial for quick motion and ...
Arduino Nano BMP280: Stream Serial Readings | ShillehTek
Wire a BMP280 to an Arduino Nano and stream live pressure, temperature, and altitude to the Serial Monitor using I2C ...