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 Nano MPU6050: MAX7219 LED hourglass timer
Build an Arduino Nano hourglass timer using MAX7219 LED matrices and an MPU6050 so falling-sand grains reverse when flipped, plus tick and...
ESP32 SSD1306 OLED: Track ISS Passes with Alerts
Build an ESP32 SSD1306 OLED ISS pass tracker with countdown, rise and set directions, peak elevation, and a buzzer LED visibility alert...
ESP32-C3 OLED MPU6050: Build a reactive desk pet
Build an ESP32-C3 desk pet with SSD1306 OLED RoboEyes, MPU6050 tilt and shake reactions, and TTP223 touch input for playful moods by...
Arduino Nano VL53L0X: Ball and Beam PID Control
Build an Arduino Nano ball-and-beam using a VL53L0X ToF sensor, MG90S servo, and slide pot setpoint to tune a live PID controller...
ESP32 MPU6050: On-Device Gesture Recognition
Build an ESP32 plus MPU6050 TinyML gesture recogniser using Edge Impulse, then run on-device inference and show results on an OLED with...
ESP32 AMG8833: Interpolated Thermal Heat Map on TFT
Build an ESP32 + AMG8833 thermal viewer that renders a smooth interpolated heat map on an ILI9341 TFT, plus a quick OLED...
RP2040-Zero MPU6050: Build a USB HID Air Mouse
Build an RP2040-Zero USB HID mouse with five buttons, then add an MPU6050 for tilt-based cursor control for a simple air mouse...
Arduino Uno DHT11: SD Data Logger with Timestamps
Build an Arduino Uno DHT11 data logger that writes timestamped temperature and humidity readings to a micro SD card using a DS3231...
Arduino Nano OLED: Triggered Waveforms to ~30 kHz
Build an Arduino Nano plus SSD1306 OLED mini oscilloscope with triggered trace, Vpp and frequency readout up to about 30 kHz using...
Arduino Nano LM339: Measure Inductance on OLED
Build an Arduino Nano LC ring meter using an LM339 and SSD1306 OLED to measure unknown inductors from about 5 uH to...
Arduino Nano MPU6050: Build a Self-Balancing Robot
Build an Arduino Nano self-balancing robot using the MPU6050 and L298N, with a complementary filter and PID loop for stable two-wheel balancing...
Arduino Nano DS3231: Build a Binary LED Clock
Build an Arduino Nano DS3231 binary LED clock with 12 LEDs for hours, minutes, and a seconds heartbeat, plus battery-backed timekeeping from...