Прошивка I2C адреса TOF10120
Зачем это нужно?
В первую очередь, возможно не очевидно, но перепрошивать 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