Сканирование устройств на шине I2C с помощью Arduino.

Шина I2C (Inter-Integrated Circuit) - это протокол связи, который позволяет микроконтроллеру взаимодействовать с различными устройствами, подключенными к одной шине. Шина I2C является одной из наиболее распространенных и удобных способов подключения датчиков, дисплеев и других периферийных устройств к Arduino и другим МК.

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

некоторые устройства имеют возможность изменять свои адреса, обычно с помощью перманентных перемычек или специальных команд.

Цель этого урока - научиться сканировать устройства, подключенные к шине I2C, и определять их адреса с помощью Arduino.

На шине I2C можно подключить широкий спектр устройств, включая:

  • Датчики температуры и влажности, такие как датчик BME280 или BMP180.
  • Датчики освещенности, например BH1750.
  • Акселерометры и гироскопы, например MPU-6050.
  • OLED дисплеи (LCD) с контроллером типа SSD1306.
  • Адаптеры расширения портов, такие как MCP23017.
  • Потенциометры и датчики силы нажатия, например ADS1115.
  • Многоканальные аналогово-цифровые преобразователи (ADC), такие как ADS1015.
  • EEPROM-память для хранения данных.
  • Магнитные компасы, например HMC5883L.
  • И многие другие устройства.

На шине I2C можно подключить широкий спектр устройств

Знание адресов подключенных устройств на шине I2C крайне важно для успешного взаимодействия с ними. Каждое устройство на шине I2C имеет уникальный адрес, который необходимо знать, чтобы отправлять и получать данные от него. Пример сканировании шины I2C с использованием Arduino из данного урока, поможет определить адреса подключенных устройств и использовать их в дальнейшей работе.

Теперь, когда мы понимаем, что мы будем делать и почему это важно, давайте перейдем к написанию кода и выполнению урока!

Шаг 1: Подготовка оборудования

Перед тем, как начать, вам понадобятся следующие компоненты:

  • Arduino (любая модель, совместимая с библиотекой Wire).
  • Компьютер с установленной Arduino IDE.
  • Устройства, у которых вы хотите узнать адресс на шине I2C. Убедитесь, что они поддерживают протокол I2C.

Подготовка оборудования

Подключите ваш Arduino к компьютеру с помощью USB-кабеля. Затем подключите устройства к шине I2C на Arduino. Обычно, пины A4 и A5 используются в качестве пинов SDA и SCL соответственно.

Затем подключите устройства к шине I2C на Arduino. Обычно, пины A4 и A5 используются в качестве пинов SDA и SCL соответственно.

Шаг 2: Загрузка (обновить) библиотеку Wire.

В большинстве случаев, библиотека Wire уже поставляется вместе с платами Arduino AVR и должна быть доступна без необходимости дополнительной установки.

Вы можете убедиться, что у вас установлена последняя версия плат Arduino AVR

Вы можете убедиться, что у вас установлена последняя версия плат Arduino AVR, следуя этим шагам:

  • Откройте Arduino IDE на вашем компьютере.
  • Нажмите на меню "Инструменты" (Tools) в верхней части окна Arduino IDE.
  • Наведите курсор на "Плата" (Board) в выпадающем меню.
  • В появившемся подменю выберите "Плата Arduino AVR" (Arduino AVR Boards).

Пожалуйста, обратите внимание, что указанные инструкции предназначены для Arduino IDE и плат Arduino AVR. Если вы используете другую IDE или другие платы Arduino, процесс установки и наличие библиотек могут незначительно отличаться.

Шаг 3: Написание кода

Теперь давайте напишем программу, которая будет сканировать устройства на шине I2C и выводить результаты на монитор порта.

#include <Wire.h> //библиотека Wire. 

void setup() {
  Serial.begin(9600);
  Wire.begin();
  Serial.println("I2C Scanner");
}

void loop() {
  byte error, address;
  int devices = 0;

  Serial.println("Scanning...");

  for (address = 1; address < 127; address++) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0) {
      Serial.print("Device found at address 0x");
      if (address < 16) {
        Serial.print("0");
      }
      Serial.print(address, HEX);
      Serial.println();
      devices++;
    } else if (error == 4) {
      Serial.print("Unknown error at address 0x");
      if (address < 16) {
        Serial.print("0");
      }
      Serial.print(address, HEX);
      Serial.println();
    }
  }

  if (devices == 0) {
    Serial.println("No I2C devices found");
  } else {
    Serial.println("Scan complete");
  }

  delay(5000);  // Пауза в 5 секунд между сканированиями
}

Шаг 4: Загрузка и запуск кода

  • Подключите Arduino к компьютеру с помощью USB-кабеля.
  • Откройте Arduino IDE и убедитесь, что выбран правильный тип платы и порта в меню "Инструменты" (Tools).

Откройте Arduino IDE и убедитесь, что выбран правильный тип платы и порта в меню "Инструменты" (Tools).

  • Скопируйте код выше в окно Arduino IDE.
  • Нажмите кнопку "Загрузить" (Upload) для загрузки кода на Arduino.

Нажмите кнопку "Загрузить" (Upload) для загрузки кода на Arduino.

  • Откройте монитор порта (Serial Monitor) в Arduino IDE, чтобы просмотреть результаты сканирования.

Откройте монитор порта (Serial Monitor) в Arduino IDE, чтобы просмотреть результаты сканирования.

После загрузки кода, Arduino будет сканировать шину I2C и отображать найденные устройства в мониторе порта. Если устройства обнаружены, их адреса будут выводиться на мониторе порта.

Этот урок позволяет определить, какие устройства подключены к шине I2C и узнать их адреса.

Этот урок позволяет определить, какие устройства подключены к шине I2C и узнать их адреса. Это полезно для последующей работы с устройствами на шине I2C.

Удачи в вашем эксперименте с шиной I2C и Arduino!

Мы рады объявить о нашем присутствии на Boosty! Arduino-Tex приглашает всех наших друзей и последователей поддержать нас на этой замечательной платформе. Здесь вы найдете эксклюзивный контент, уникальные проекты и возможность стать частью нашей творческой команды. Присоединяйтесь к нам на Boosty и вместе мы сделаем мир Arduino еще удивительнее!

Понравился урок. Сканирование устройств на шине I2C с помощью Arduino? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.

Спасибо за внимание!

Технологии начинаются с простого!

Фотографии к статье

Файлы для скачивания

Скетч сканирование устройств на шине I2C Скетч сканирование устройств на шине I2C .ino1 Kb 413 Скачать

Комментарии

Ваше Имя*


Разработка проектов