This page (revision-21) was last changed on 2021-11-21 04:33 by Murray Altheim

This page was created on 2019-12-26 08:51 by Murray Altheim

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
21 2021-11-21 04:33 6 KB Murray Altheim to previous

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 1 changed one line
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].
The __Inter-integrated Circuit (I%%sup 2%%​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].
At line 3 changed one line
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):
I2C 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):
At line 5 changed 4 lines
# __3-6V__ (Vcc, red)
# __SDA__ (Serial Data Line, blue)
# __SCL__ (Serial Clock Line, yellow)
# __GND__ (Ground, black)
# __3-6V__ (Vcc)
# __SDA__ (Serial Data Line)
# __SCL__ (Serial Clock Line)
# __GND__ (Ground)
At line 10 changed one line
The colors listed are those used by Adafruit with their line of STEMMA Qt connectors.
The Pimoroni "Breakout Garden" set of I2C sensors also includes an "__{{{INT}}}__" (interrupt) pin, ''AKA'' "{{{GCLK}}}" or "{{{GPIO4}}}".
At line 12 changed one line
The Pimoroni "Breakout Garden" set of I²C sensors also includes an "__{{{INT}}}__" (interrupt) pin, ''AKA'' "{{{GCLK}}}" or "{{{GPIO4}}}".
!! To View the Current I2C Devices
At line 14 removed 2 lines
!! To View the Current I²C Devices
At line 34 changed one line
!! Known I²C Devices
!! Known I2C Devices
At line 36 changed one line
Some well known I²C products (mostly a list of tested devices; there are thousands available). No two I²C may share the same address on an I²C bus, otherwise there will be contention.
Some well known I2C products. No two I2C may share the same address on an I2C bus, otherwise there will be contention.
At line 38 changed 22 lines
|| Stock || Brand || Description || 7 bit address || Notes
| 1 | Pimoroni | [RGB Potentiometer|https://shop.pimoroni.com/products/rgb-potentiometer-breakout] | 0x0E ‡ | uses [Nuvoton MS51|NuvotonMS51]
| 1 | Pimoroni | [RGB Encoder|https://shop.pimoroni.com/products/rgb-encoder-breakout] | 0x0F ‡ | uses [Nuvoton MS51|NuvotonMS51]
| 2 | PiBorg | [Thunderborg|https://www.piborg.org/motor-control-1135/thunderborg] | 0x10 / 0x11 † | dual motor controller
| 0 | Adafruit | [VCNL4010 Proximity Sensor|https://www.adafruit.com/product/466] | 0x13 | infrared, 0-200mm range
| 1 | Pimoroni | [IO Expander|https://shop.pimoroni.com/products/io-expander] | 0x18 ‡ | uses [Nuvoton MS51|NuvotonMS51]
| 2 | Pimoroni | [LSM303D 6DoF Motion Sensor|https://shop.pimoroni.com/products/lsm303d-6dof-motion-sensor-breakout] | 0x1D / 0x1E † |
| 1 | Adafruit | [BH1750 Light Sensor|https://www.adafruit.com/product/4681] | 0x23 / 0x5C | 16-bit Ambient Light Sensor
| 1 | Pimoroni | [LTR-559 Light & Proximity|https://shop.pimoroni.com/products/ltr-559-light-proximity-sensor-breakout] | 0x23 | light detection; 0-50mm range proximity detection
| 3 | Pimoroni | [VL53L1X Time of Flight|https://shop.pimoroni.com/products/vl53l1x-breakout] | 0x29 | range 40mm-4m; 0x29 conflicts with BNO055
| 1 | Adafruit | [BNO055 IMU Sensor|BNO055ImuSensor] | 0x28 / 0x29 † | 0x29 conflicts with VL531X
| 0 | Adafruit | [VL53L0X Time of Flight Distance Sensor|https://www.adafruit.com/product/3317] | 0x29 | range 50-1200mm (2m on long range)
| 1 | Adafruit | [VL6180X Time of Flight Distance Sensor|https://www.adafruit.com/product/3316] | 0x29 | range 5-100mm
| 1 | PiBorg | [Ultraborg|https://www.piborg.org/sensors-1136/ultraborg] | 0x36 |
| 2 | Pimoroni | [HT0740 10A Switch|https://shop.pimoroni.com/products/ht0740-breakout] | 0x38 / 0x39 † |
| 1 | Adafruit | [INA260 Current Sensor|https://www.adafruit.com/product/4226] | 0x40 / 0x41 / 0x44 / 0x45 † | up to 4 devices via 2 jumpers
| 2 | Pimoroni | [ADS1015 +/-24V ADC 3 Channel|Ads1015AnalogDigitalConverter] | 0x48 / 0x49 † |
| 2 | Adafruit | [ADS1015 12 bit ADC 4 Channel w Prog Gain|https://www.adafruit.com/product/1083] | 0x48 - 0x4B † |
| 1 | Adafruit | [9-DOF Orientation IMU Fusion Breakout - BNO085 (BNO080)|https://www.adafruit.com/product/4754] | 0x4A |
| 1 | Pimoroni | [ICM20948 9-DOF Motion Sensor|https://shop.pimoroni.com/products/icm20948] | 0x68 / 0x69 † |
| 2 | Pimoroni | [11x7 LED Matrix|https://shop.pimoroni.com/products/11x7-led-matrix-breakout] | 0x75 / 0x77 † | 77 will be in conflict with 5x5
| 4 | Pimoroni | [5x5 RGB Matrix|https://shop.pimoroni.com/products/5x5-rgb-matrix-breakout] | 0x74 / 0x77 † | 77 will be in conflict with 11x7
|| Stock || Brand || Description || 7 bit address || Notes
| 1 | Pimoroni | LTR-559 Light & Proximity | 0x23 |
| 1 | Pimoroni | VL53L1X Time of Flight (ToF) | 0x29 | range 40mm-4m
| 1 | Adafruit | VL6180X Time of Flight Distance Sensor | 0x29 | range 5-100mm
| 1 | Pimoroni | 11x7 LED Matrix #1 | 0x75 |
| 1 | Pimoroni | 11x7 LED Matrix #2 | 0x77 |
| 1 | Pimoroni | 5x5 RGB Matrix | 0x74 / 0x77 | 77 will be in conflict with 11x7 #2
| 1 | Pimoroni | [ADS1015 +/-24V ADC 3 Channel|Ads1015AnalogDigitalConverter] | 0x48 / 0x49 |
| 2 | Adafruit | ADS1015 12 bit ADC 4 Channel w Prog Gain | 0x48 - 0x4B (jumpers) |
| 1 | PiBorg | Thunderborg | 0x10 / 0x11 |
| 1 | PiBorg | Ultraborg | 0x36 |
| 1 | Pimoroni | ICM20948 9-DOF Motion Sensor | 0x68 / 0x69 |
| 1 | Adafruit | BNO055 Absolute Orientation Sensor | 0x28 / 0x29 |
| 0 | Adafruit | VCNL4010 Proximity Sensor | 0x13 |
At line 61 changed one line
| 1 | Pimoroni | [AS7262 6-channel Spectral Sensor (Spectrometer)|https://shop.pimoroni.com/products/as7262-6-channel-spectral-sensor-spectrometer-breakout] | 0x49 | 6 spectral channels (450, 500, 550, 570, 600, 650nm)
| 0 | Adafruit | VL53L0X Time of Flight Distance Sensor | 0x29 | range 50-1200mm (2m on long range)
At line 63 removed 3 lines
† jumper selectable
‡ software configurable
At line 73 removed one line
* [Adafruit's I2C Address List|https://learn.adafruit.com/i2c-addresses/the-list]
At line 75 removed 3 lines
* [Pi clock-stretching bug|https://www.advamation.com/knowhow/raspberrypi/rpi-i2c-bug.html]
* [Adventures in I2C: clock stretching on the Raspberry Pi|https://www.recantha.co.uk/blog/?p=19880], A good article about the Pi and I2C
* [Raspberry Pi slave library for Arduino|https://github.com/pololu/pololu-rpi-slave-arduino-library], Pololu's library for Pi to Arduino comms via I2c
At line 63 added one line