Шина 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 с использованием Arduino из данного урока, поможет определить адреса подключенных устройств и использовать их в дальнейшей работе.
Теперь, когда мы понимаем, что мы будем делать и почему это важно, давайте перейдем к написанию кода и выполнению урока!
Шаг 1: Подготовка оборудования
Перед тем, как начать, вам понадобятся следующие компоненты:
- Arduino (любая модель, совместимая с библиотекой Wire).
- Компьютер с установленной Arduino IDE.
- Устройства, у которых вы хотите узнать адресс на шине I2C. Убедитесь, что они поддерживают протокол I2C.
Подключите ваш Arduino к компьютеру с помощью USB-кабеля. Затем подключите устройства к шине I2C на Arduino. Обычно, пины A4 и A5 используются в качестве пинов SDA и SCL соответственно.
Шаг 2: Загрузка (обновить) библиотеку Wire.
В большинстве случаев, библиотека Wire уже поставляется вместе с платами 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.
- Нажмите кнопку "Загрузить" (Upload) для загрузки кода на Arduino.
- Откройте монитор порта (Serial Monitor) в Arduino IDE, чтобы просмотреть результаты сканирования.
После загрузки кода, Arduino будет сканировать шину I2C и отображать найденные устройства в мониторе порта. Если устройства обнаружены, их адреса будут выводиться на мониторе порта.
Этот урок позволяет определить, какие устройства подключены к шине I2C и узнать их адреса. Это полезно для последующей работы с устройствами на шине I2C.
Удачи в вашем эксперименте с шиной I2C и Arduino!
Мы рады объявить о нашем присутствии на Boosty! Arduino-Tex приглашает всех наших друзей и последователей поддержать нас на этой замечательной платформе. Здесь вы найдете эксклюзивный контент, уникальные проекты и возможность стать частью нашей творческой команды. Присоединяйтесь к нам на Boosty и вместе мы сделаем мир Arduino еще удивительнее!
Понравился урок. Сканирование устройств на шине I2C с помощью Arduino? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Спасибо за внимание!
Технологии начинаются с простого!
Фотографии к статье
Файлы для скачивания
|
Скетч сканирование устройств на шине I2C .ino | 1 Kb | 413 |
Скачать
Вы можете скачать файл.
|
Комментарии