Devices for I2C bus communication

The Inter-integrated Circuit (I2C) Protocol is a protocol intended to allow multiple “slave” digital integrated circuits (“chips”) to communicate with one or more “master” chips. Like the Serial Peripheral Interface (SPI), it is only intended for short distance communications within a single device. Like Asynchronous Serial Interfaces (such as RS-232 or UARTs), it only requires two signal wires to exchange information.

A wide range of low-cost integrated devices have become available - that can be simply interfaced to micro controllers via the I2C protocol. These devices provide useful functions for a wide range of applications. XOD provides a library of nodes with low level functions (https://xod.io/libs/xod/i2c/) that can be used to create custom interfaces for these devices. Additional documentation for XOD can be found at https://xod.io/docs/

Update: Check out Victor Nakoryakov’s guide to I2C communication basics at: https://xod.io/docs/guide/i2c/ (13Dec2018)

Sparkfun guide to I2C communication protocol: https://learn.sparkfun.com/tutorials/i2c

I2C communication basics: https://www.electronicshub.org/basics-i2c-communication/

I2C primer: https://www.i2c-bus.org

Seeed Studio wiki Arduino Software I2C user guide: http://wiki.seeedstudio.com/Arduino_Software_I2C_user_guide/


Making I2C peripherals

i2cdisplay.gif
i2cdisplay.jpg

How to build your own I2C peripherals: http://www.technoblogy.com/show?1G29

Building a multi-sensor device based on GY-80 chip: https://howtomechatronics.com/tutorials/arduino/how-i2c-communication-works-and-how-to-use-it-with-arduino/

Sparkfun have developed a modular connector system for I2C, and have a ecosystem of components and devices that can be used to build slave devices, with a wide variety of sensors, actuators and displays: https://www.sparkfun.com/qwiic. There are a number of ways that the modular I2C connectors can be integrated into custom circuits, with adapters, Arduino/RasPi shields and cable adapters. This allows access to a number of sophisticated sensor boards, or could be used as a physical interface to bespoke slave devices.

14495-01.jpg
qwiic_action.jpg
Qwiic_ESP32_Shield_04.jpg

I2C modules

Hardware suppliers are providing access to a growing nmber of I2C devices, which provide a wide range of interesting functions - with a unified electrical interface and can be daisy-chained. Examples are shown below - and a these types of devices on breakout boards can be found online, through eBay, AliExpress, DHgate, etc.

0J8684.1200.jpg

I2C Laser time-of-flight distance sensors

Fully integrated miniature module, Emitter: 940 nm invisible laser (Class1), SPAD (single photon avalanche diode) receiving array with integrated lens, Low-power microcontroller running advanced digital firmware, Fast and accurate long distance ranging, Up to 60cm, 200cm or 400 cm distance measurements with different devices, Up to 50 Hz ranging frequency, Typical full field-of-view (FoV): 27 °, Programmable region-of-interest (ROI) size on the receiving array, allowing the sensor FoV to be reduced, Programmable ROI position on the receiving array, providing multizone operation control from the host.

Details, including spec sheets:

VL6180X: measures up to 0.6m
https://www.st.com/content/st_com/en/products/imaging-and-photonics-solutions/proximity-sensors/vl6180x.html

VL53L1X: measures up to 2m
https://www.st.com/content/st_com/en/products/imaging-and-photonics-solutions/proximity-sensors/vl53l0x.html

VL53L1X: measures up to 4m
https://www.st.com/content/st_com/en/products/imaging-and-photonics-solutions/proximity-sensors/vl53l1x.html

VL53L0X: data sheets and Arduino support

https://www.st.com/en/embedded-software/stsw-img007.html

https://learn.sparkfun.com/tutorials/qwiic-distance-sensor-vl53l1x-hookup-guide

https://learn.adafruit.com/adafruit-vl53l0x-micro-lidar-distance-sensor-breakout/overview
https://learn.adafruit.com/adafruit-vl53l0x-micro-lidar-distance-sensor-breakout/downloads

Details of Arduino drivers architecture:

https://www.robot-r-us.com/vmchk/sensor-laser/vl53l0x-mini-lidar-time-of-flight-distance-sensor-carrier-w/ - excellent collection of information used to build a standard Arduino IDE driver library.

https://github.com/pololu/vl53l0x-arduino