The Inter-integrated Circuit (I²C) Protocol (pronounced I-squared-C) is a hardware serial interface (or "protocol") intended to allow multiple "slave" components to communicate with one or more "master" components. It used across many microprocessors and microcontrollers, including the Raspberry Pi.
I²C permits sensors and other IO devices to be connected to the controller (and/or each other) with only four wires (or really only two if you don't count Vcc and ground):
The Pimoroni "Breakout Garden" set of I²C sensors also includes an "INT" (interrupt) pin, AKA "GCLK" or "GPIO4".
To see what's connected on your Raspberry Pi, type (not including the % prompt):
% i2cdetect -y 1and you'll see something like:
0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- 14 15 -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- 28 -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 70: -- -- -- -- 74 75 -- 77
Some well known I²C products. No two I²C may share the same address on an I²C bus, otherwise there will be contention.
Stock | Brand | Description | 7 bit address | Notes |
---|---|---|---|---|
1 | Pimoroni | LTR-559 Light & Proximity | 0x23 | |
3 | Pimoroni | VL53L1X Time of Flight (ToF) | 0x29 | range 40mm-4m |
1 | Adafruit | VL6180X Time of Flight Distance Sensor | 0x29 | range 5-100mm |
2 | Adafruit | HT0740 Big Damn Switch 10A | 0x38 / 0x39 | |
2 | Pimoroni | 11x7 LED Matrix #1 | 0x75 | |
2 | Pimoroni | 11x7 LED Matrix #2 | 0x77 | |
4 | Pimoroni | 5x5 RGB Matrix | 0x74 / 0x77 | 77 will be in conflict with 11x7 #2 |
2 | Pimoroni | ADS1015 +/-24V ADC 3 Channel | 0x48 / 0x49 | |
2 | Adafruit | ADS1015 12 bit ADC 4 Channel w Prog Gain | 0x48 - 0x4B (jumpers) | |
2 | PiBorg | Thunderborg | 0x10 / 0x11 | |
1 | PiBorg | Ultraborg | 0x36 | |
1 | Pimoroni | ICM20948 9-DOF Motion Sensor | 0x68 / 0x69 | |
1 | Adafruit | BNO055 IMU Sensor | 0x28 / 0x29 | |
0 | Adafruit | VCNL4010 Proximity Sensor | 0x13 | |
0 | Adafruit | LSM9DS1 Accel Gyro Mag Temp 9-DOF | 0x1C / 0x1E Accel, 0x6A / 0x6B for Gyro | |
0 | Adafruit | VL53L0X Time of Flight Distance Sensor | 0x29 | range 50-1200mm (2m on long range) |
"Stock" is how many Murray has in his robot laboratory as part of exploratory design and development of the KR01 robot.