Зачем это нужно?

В первую очередь, возможно не очевидно, но перепрошивать I2C адрес устройства нужно для того, чтобы имея даже 2 одинаковых устройства, можно было общаться с обоими, а не только с одним. В этой статье я постараюсь объяснить на двух пальцах как перепрошить I2C адрес датчиков TOF10120.

Введение

Менять I2C адрес мы будем через UART, это пины TX и RX, которые мы зададим ниже.

Подключение

TOF10120

Arduino UNO

Красный провод 3-5В

5V

Чёрный провод GND

GND

Жёлтый провод RX

2

Белый провод TX

3

Синий провод SDA

-

Зелёный провод SCL

-

Программа

Сначала задаём библиотеку для работы с UART

#include <SoftwareSerial.h>

Инициализируем наш датчик и указываем пины

Serial.begin(9600); // Скорость монитора порта
TOF.begin(9600); // Скорость связи с TOF10120 НЕ МЕНЯТЬ 9600 указано в datasheed

Задаём скорости передачи данных в void setup ().
ВАЖНО! Скорость передачи данных для датчика в случае с TOF10120 менять нельзя! Эта скорость общения фиксированная в 9600 бод.

Serial.begin(9600); // Скорость монитора порта
TOF.begin(9600); // Скорость связи с TOF10120 НЕ МЕНЯТЬ 9600 указано в datasheed

И наконец вводим команду прошивки I2C адреса! Команда типа s7-000#, где 000 это I2C адрес в формате int, значения от 0-255.

TOF.write("s7-48#"); // АТ команда прошивки адреса I2C где "48" это адрес I2C. Значение от (0-255)

В основном цикле мы считываем данные с датчика и выводим в монитор порта и наоборот.

void loop() {
  if (TOF.available()) { // Считывание с датчика
    Serial.write(TOF.read()); // Отправка в монитор порта
  }
  if (Serial.available()) { // Считывание монитора порта
    TOF.write(Serial.read()); // Отправка на датчик
  }
}

В случае если у вас что-то не получилось, попробуйте поменять RX и TX местами

Заключение

В данной статье я старался максимально сжато и понятно объяснить как прошить I2C адрес датчику TOF10120.

Основную программу вы можете найти на моём GitHub