Main Content

Read Data from I2C Sensors Using LEGO MINDSTORMS EV3 Hardware

This example shows how to read data from I2C-based third-party sensors using the LEGO® MINDSTORMS® EV3 hardware.

Introduction

In the master read operation in the I2C serial data communication protocol, the master device requests data from the I2C slave device or slave device registers using a unique 8-bit address. Both, the master and the slave device must be connected over the same I2C network to establish a successful communication. In this workflow, the EV3 brick acts as the master device, and any one of the I2C-based third-party sensors connected over the I2C network act as the slave device.

Prerequisites

Required Hardware

  • LEGO MINDSTORMS EV3 brick

  • I2C slave device

  • EV3 brick connector

Hardware Setup

Connect the slave device to the input port of the EV3 brick.

You can connect any I2C-based sensor as a slave to the EV3 brick. Determine the following parameters in the sensor datasheet to correctly configure the I2C Register Read block parameters:

  • I2C slave address

  • I2C slave register address that holds the input data

  • Data type

  • Data size

  • Endianness of the I2C data transfer

  • Number of bytes

Simulink Model for HiTechnic Color Sensor

This example uses a preconfigured model from the Simulink Support Package for LEGO MINDSTORMS EV3 Hardware. In this model, the EV3 brick acts as the master and the HiTechnic color sensor acts as the slave. The EV3 brick reads the R-G-B data from the color sensor. You can use this data to drive an algorithm on the Arduino hardware depending on the type of application.

Open the ev3_i2cread_hitechnic_colorsensor Simulink model.

Configure I2C Register Read Block Parameters for HiTechnic Color Sensor

This table describes the parameters configured on the I2C Register Read block using the HiTechnic color sensor datasheet. With these set parameters, the EV3 brick would read data from three registers (corresponding to R-G-B values) starting from the configured slave register address.

       Parameter Name        |                              Parameter Description                                  | Preconfigured Parameter Values
---------------------------------------------------------------------------------------------------------------------------------------------------------
 EV3 brick input port number | EV3 brick input port connected to the color sensor                                  | 1
 Slave address               | Color sensor address on which the EV3 hardware performs the read operation          | 1
 Slave register address      | Color sensor register address on which the EV3 hardware performs the read operation | 1
 Data type                   | Data type of the color sensor                                                       | uint8
 Data size (N)               | Data size to be read by the EV3 hardware                                            | 3
 Output error status         | Status of the read operation                                                        | Clear
 Sample time                 | EV3 hardware read operation sampling time on the color sensor                       | 0.1 seconds

Run Model

On the Hardware tab of the Simulink model, click Monitor & Tune to run the model on the LEGO MINDSTORMS EV3 Hardware.