Сканирование шины i2c arduino

I2C — это протокол, который позволяет различным устройствам взаимодействовать друг с другом используя одну шину данных SDA и SCL (всего два проводника), так же, для каждого устройства присваивается свой уникальный адрес. Максимально на одной шине может находиться 127 устройств. Как правило адрес i2c в устройстве вшит в микросхему с завода и его изменить нельзя, кроме тех случаев, когда это предусмотренно изготовителем и то обычно возможно поменять адрес только в небольшом диапазоне.
Иногда либо лень искать документацию на устройство или же ее не получается найти или вообще в документации один адрес указан, а у нас модуль с браком и адрес у него другой, для этого и пишу эту коротенькую статью.

Статья будет своего рода шпаргалкой, для того чтоб быстро узнать I2c адрес устройства. Я приведу два примера, один для того чтоб узнать адрес при помощи arduino, а второй способ будет, чтоб найти адрес устройства через raspberry pi.

Итак чтоб узнать i2c адрес на arduino нужно подключить устройство к пинам SDA и SCL они у arduino находятся A4(SDA) и A5(SCL).

Скетч выглядит следующим образом:

Собственно после загрузки скетча в ардуино и подключения устройства, откроем монитор порта и должны увидеть, какой адрес у устройства при сканировании. Выглядит это таким образом:

Сканирование шины i2c arduino

Со сканером i2c на ардуино мы я думаю разобрались, теперь давайте бегло разберемся как отсканировать шину на raspberry pi.

i2c у raspberry pi находится на пинах PIN3 и PIN5

Видео:Установщик адресов Flash-i2cСкачать

Установщик адресов Flash-i2c

I2C сканер на Arduino

Автор: Сергей · Опубликовано 26.10.2017 · Обновлено 27.09.2019

В этой статье расскажу как с помощью Arduino сделать I2C сканер, в качестве примера определю адрес LCD1602 дисплей, работающего по интерфейсу I2C.

Сканирование шины i2c arduino

I2C сканер на Arduino

Немного теории, I2C — это протокол, который позволяет различным устройствам взаимодействовать друг с другом используя одну шину данных SDA и SCL (всего два проводника), так же, для каждого устройства присваивается свой уникальный адрес (максим 127 устройств). Поменять адрес устройства нельзя, он намертво вшит в микросхему, но некоторые производитель предоставил возможность изменять адрес в небольшом диапазоне, это дает возможность подключить несколько одинаковых устройств (с одинаковым чипом) к одной шине.
Иногда, нет возможности найти документацию на микросхему или микросхема не имеет адрес схожий от документации (такое то же бывало), тогда поможет данный скетч. В примере используется Arduino UNO и LCD модуль I2C (который имеет брак и другой адрес, не 0x27), так-же, интерфейс I2C работает только на определенные выводах (в arduino UNO это A4 и A5), приведу таблицу подключения для различных платформ Arduino.

Сканирование шины i2c arduino

Собираем принципиальную схему

Сканирование шины i2c arduino

Открываем среду разработки IDE Arduino, копируем скетч и загружаем его в платформу Arduino.

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

В этой статье я расскажу как можно просканировать шину I2C на Arduino и узнать адреса всех подключенных I2C устройств.

Сканирование шины i2c arduino

I2C — это протокол, который позволяет различным устройствам взаимодействовать друг с другом используя одну шину данных SDA и SCL (всего два проводника). Для каждого устройства присваивается свой уникальный адрес, максимум 127 устройств на шине. Поменять адрес устройства нельзя, он намертво вшит в микросхему.

Читайте также: Шины для honda legend

Но некоторые производители предоставили возможность изменять адрес в небольшом диапазоне, это дает возможность подключить несколько одинаковых устройств (с одинаковым чипом) к одной шине.

Иногда, нет возможности найти документацию на микросхему или у микросхемы не тот адрес, который указан в документации (такое то же бывало), тогда поможет данный скетч.

Что бы было более наглядно, предлагаю собрать тестовое устройство по схеме ниже. В примере используется Arduino UNO и LCD модуль, подключаемый по шине I2C. При подключении, купленный не AliExpress LCD модуль, по стандартному адресу 0X27 не определялся. Вот тут и помог скетч сканирования шины I2C.

Сканирование шины i2c arduino

Выводы LCD модуля подключается к Arduino UNO по следующей схеме:

  • GND модуля к GND на arduino
  • VCC модуля к 5V на arduino
  • SDA модуля к A4 на arduino
  • SCL модуля к A5 на arduino

Загрузите данный код в устройство Arduino и нажмите выполнить. В мониторе портов отобразятся все найденные устройства.

Видео:Шина I2C.Скачать

Шина I2C.

Подключить несколько устройств i2c на Arduino

IIC Arduino (I2C – Inter-Integrated Circuits, межмикросхемное соединение) — это последовательный протокол обмена данными по двум двунаправленным линиям связи. Эти линии называют также: SDA (Serial Data) — шина последовательных данных и SCL (Serial Clock) — шина тактирования. Шины SDA и SCL Arduino подтягиваются к шине питания через резисторы. Рассмотрим подробнее, что это такое шина i2c arduino.

Видео:Урок 24. Узнаём адреса устройств на шине I2CСкачать

Урок 24. Узнаём адреса устройств на шине I2C

Шина I2C Ардуино описание

Микроконтроллеры Arduino используют два пина для работы по интерфейсу I2C. В Arduino Uno и Nano линии SDA соответствует аналоговый порт A4, а SCL соответствует аналоговый порт A5. На Ardunio Mega SDA — 20 пин, SCL — 21 пин. Для облегчения работы с шиной I2C и обмена данными между устройствами для Arduino IDE написана стандартная библиотека Wire (скачивать и устанавливать ее не надо).

Для каждого устройства, при подключении к микроконтроллеру, присваивается уникальный адрес (максимум можно подключить 127 устройств). Поменять адрес устройства на шине нельзя, так как он вшит в микросхему. Часто производители предоставляют возможность поменять адрес устройства в небольшом диапазоне, что дает возможность подключить к шине IIC Ардуино несколько одинаковых устройств.

Видео:Сканер I2C шиныСкачать

Сканер I2C шины

Сканер I2C интерфейса (шины) Ардуино

Для этого занятия нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • макетная плата;
  • два текстовых дисплея 1602 I2C;
  • любое устройство с I2C интерфейсом;
  • провода «папа-папа», «папа-мама».

Перед тем, как управлять несколькими объектами, подключенных к IIC шине, необходимо узнать их адреса. Для этого используется программа — сканер I2C Arduino, которая позволяет узнать адреса всех устройств, подключенных в данный момент к шине. Соберите схему из двух текстовых экранов с IIC модулем (можно подключить только одно устройство), подключенных к Ардуино Уно, и загрузите следующий скетч.

Скетч. Сканер шины i2c для Arduino

Пояснения к коду:

  1. данный код позволяет узнать все адреса устройств, подключенных к шине IIC. Если устройство не было подключено или подключено неправильно — на мониторе порта будет выходить сообщение, что устройства не найдены;
  2. ниже, на скриншоте монитора порта Arduino IDE, выводится адрес LCD 1602.

Читайте также: Автомобильные шины yokohama iceguard studless ig50

Сканер шины i2c для Arduino с LCD дисплеем

Видео:Лекция 308. Шина I2CСкачать

Лекция 308.  Шина I2C

Как подключить нескольких устройств по I2C Arduino

В следующем примере к шине IIC Arduino будет подключено сразу три устройства — текстовый дисплей 1602, датчик давления bmp180 и RTC модуль часов. После сборки схемы можно сделать предварительное сканирование шины, но адреса у всех устройств разные и изменить адрес можно только у дисплея. У других устройств адреса «вшиты» производителем и используются в библиотеках по умолчанию.

Скетч. Подключение нескольких устройств к шине i2c

После сборки схемы, убедитесь, что у вас установлены необходимые библиотеки для работы с устройствами по IIC протоколу, и загрузите следующий пример кода в микроконтроллер. Данная программа будет выводить на текстовый экран текущую дату и время суток (устанавливаются в процедуре void setup и время можно поменять), а также данные о температуре воздуха и атмосферном давлении.

Пояснения к коду:

  1. обновление информации на текстовом экране происходит каждую секунду, данный интервал можно увеличить по своему желанию;
  2. время выводится с секундами, формат вывода времени и даты также можно изменить в строчке LCD.print(time.gettime(«H:i:s — d.m»));

Заключение. Мы рассмотрели возможность подключения нескольких устройств по протоколу IIC к плате Arduino, что будет полезно знать при проектировании различных DIY поделок своими руками, например метеостанции на Ардуино с датчиком давления. Если у вас остались вопросы по сканеру IIC интерфейсной шины или подключении устройств по данному протоколу — смело оставляйте их в комментариях к этой записи.

Видео:Arduino I2C связь между контроллерамиСкачать

Arduino I2C связь между контроллерами

Как узнать I2C адрес устройства?

I2C — это такая шина данных, широко используемая в микроэлектронике. С помощью I2C можно подключить к Ардуино много разных полезных модулей, включая датчики, дисплеи, АЦП и даже другие платы Ардуино.

Шина является адресной, так что каждое подключаемое устройство имеет свой адрес в диапазоне от 8 до 127. На одной шине не может быть два устройства с одинаковыми адресами.

В этой короткой статье мы победим одну из частых проблем, которые испытывают самодельщики про покупке неведомого модуля с этим самым I2C интерфейсом. Проблема состоит в том, что производитель может изменить адрес устройства, и стандартные библиотеки перестают работать. Часто с подобной неприятностью можно столкнуться, например, при подключении ЖК дисплея с интерфейсом I2C.

Видео:Подключение нескольких устройств, датчиков по I2C (АйТуСи) шинеСкачать

Подключение нескольких устройств, датчиков по I2C (АйТуСи) шине

Программа для сканирования I2C шины

Чтобы понять, какой всё-таки адрес у модуля, подключаемого к плате Ардуино, нужно просто «постучаться» по каждому из 119 возможных адресов. Если кто-то ответит, значит адрес рабочий!

Загружаем программу на Ардуино Уно, подключаем тестируемое устройство к I2C шине и открываем монитор последовательного порта. Если все подключено правильно, то появится примерно такой отчет:

Сканирование шины i2c arduino

Это значит, что мой дисплей имеет адрес 0x27 в шестнадцатеричной системе счисления. Теперь можно смело подключить библиотеку для работы с такими дисплеями и указать в ней данный адрес.

Видео:Введение в шину I2CСкачать

Введение в шину I2C

Как узнать I2C адрес устройства? : 19 комментариев

Очень интересно, но думаю не помешала бы принципиальная схемка подключения I2C устройства к Ардуино. Ну или ссылка на такую процедуру.

Видео:Видеоуроки по Arduino. I2C и processing (7-я серия, ч1)Скачать

Видеоуроки по Arduino. I2C и processing (7-я серия, ч1)

Портативный сканер устройств на шине I2C

Опубликовано 12.02.2016 11:06:00

Автор: Александр Бондаренко

Увлечение платформой Arduino привело меня к устройствам, работающим по шине I2C (сокращение от английских слов Inter-Integrated Circuit) также называемые как «Two-Wire» устройства. Выпускается большое количество микросхем, аппаратно поддерживающих I2C шину. Это и всевозможные датчики, часы реального времени, память, расширители портов и много чего другого. В статье ниже представлена модернизация проекта сканера устройств с шиной I2C на базе Arduino, который описан на странице http://playground.arduino.cc/Main/I2cScanner и пример практической работы с автономным от компьютера прототипом устройства.

Читайте также: Шины диски по моделям авто

Сканирование шины i2c arduino

Помимо вешеперечисленных датчиков и модуей, по I2C шине управляются и тюнеры, которые используют в телевизорах. Как раз один из экземпляров такого устройства попал в руки. Родилась идея поэкспериментировать с ним. Но как узнать, что тюнер хотя бы работает? Начал поиски по интернету. Может кто-нибудь использовал Arduino для управления такими устройствами? К сожалению, таких материалов не нашел, но заинтересовала одна интересная разработка на странице http://playground.arduino.cc/Main/I2cScanner . Это сканер I2C устройств на базе Arduino. Идея этого сканера очень проста — подцепить I2C устройство к пинам аппаратной реализации I2C (для Arduino Uno это A4 A5). Далее запускается сканирование диапазона адресов и при обнаружении устройств в мониторе порта Arduino IDE будет отображены их адреса.

Данный проект отвечал поставленной задаче. Но для меня существенным минусом показалось зависимость от персонального компьютера. Нужно запустить монитор среды разработки Arduino IDE, подключить Arduino через COM порт к ней. Немного поразмыслив, родилась идея сделать автономное от компьютера устройство, способное сканировать и отображать на экране LCD адреса I2C устройств подключенных к шине. Для такой задачи как нельзя лучше подходит LCD Keypad Shield, который был у меня в наличии и с которым я уже успел поработать. Он оборудован HD4478 совместимым LCD дисплеем с обвязкой и шестью кнопками, которые пригодятся для управления процессом сканирования. Его можно напрямую подключить к Arduino Uno и подобным, и получить автономный, законченный модуль для работы с I2C устройствами.

Представленный в статье прототип выполнен на самодельном Arduino-подобном модуле с контроллером ATmega328 (ATmega8).

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

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

Сканирование шины i2c arduino

Затем предлагается начать сканирование нажатием на кнопку «RIGHT».

Сканирование шины i2c arduino

Ход и результаты сканирования отображаются на LCD дисплее.

Сканирование шины i2c arduino

При обнаружении устройства I2C выводится его адрес.

Вот на адресе 30 (0x1E) обнаружен трехосевой цифровой компас GY-271 на базе микросхемы HMC5883L

Сканирование шины i2c arduino

На адресе 119 (0x77) датчик давления и температуры BMP-180

Сканирование шины i2c arduino

На адресе 39 (0x27) I2C расширитель портов на PCF8574T, который используется для подключения LCD дисплея по шине I2C

Сканирование шины i2c arduino

На адресах 80 (0x50) и 104 (0x68) соответсвенно память 24C32 и часы на DS1307

Сканирование шины i2c arduino

Сканирование шины i2c arduino

А вот и тюнер KS-H-140EA на базе микросхемы TUA6020 откликнулся!

Сканирование шины i2c arduino

По окончании сканирования на экран выводится количество обнаруженных устройств.

Сканирование шины i2c arduino

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

Успехов всем увлеченным электроникой и платформой Arduino!

В данный момент еще реализованы не все элементы нашего сообщества. Мы активно работаем над ним и в ближайшее время возможность комментирования статей будет добавлена.

  • Свежие записи
    • Нужно ли менять пружины при замене амортизаторов
    • Скрипят амортизаторы на машине что делать
    • Из чего состоит стойка амортизатора передняя
    • Чем стянуть пружину амортизатора без стяжек
    • Для чего нужны амортизаторы в автомобиле
    • Правообладателям
    • Политика конфиденциальности

    Автоподбор © 2023
    Информация, опубликованная на сайте, носит исключительно ознакомительный характер


    📹 Видео

    Урок 9. Адреса модулей на шине I2C. Arduino (что такое I2C, адресация, как изменить адрес модуля)Скачать

    Урок 9. Адреса модулей на шине I2C. Arduino (что такое I2C, адресация, как изменить адрес модуля)

    Шина данных i2c - декодируем/синхронизируем с помощью осциллографа Lecroy!Скачать

    Шина данных i2c - декодируем/синхронизируем   с помощью осциллографа Lecroy!

    Логический анализатор шины i2cСкачать

    Логический анализатор шины i2c

    FLprog урок №2 шины данных Uart\I2C\ICSP\OneWireСкачать

    FLprog урок №2 шины данных Uart\\I2C\\ICSP\\OneWire

    Подключение нескольких устройств по шине i2cСкачать

    Подключение нескольких устройств по шине i2c

    MCP2515, контроллер CAN шины с интерфейсом SPIСкачать

    MCP2515, контроллер CAN шины с интерфейсом SPI

    FLProg урок внеплановый#7 I2C OneWireСкачать

    FLProg урок внеплановый#7 I2C OneWire

    STM32. CMSIS. Урок#06: I2C. Теория. Сканер I2C адресов. Отправка и прием данных. MemWrite, MemRead.Скачать

    STM32. CMSIS. Урок#06: I2C. Теория. Сканер I2C адресов. Отправка и прием данных. MemWrite, MemRead.

    Логический LIN пробник, цифровой тестер лин, к лайн шины автомобиля. На Ардуино, OLED I2C, TJA 1020Скачать

    Логический LIN пробник, цифровой тестер лин, к лайн шины автомобиля. На Ардуино, OLED  I2C, TJA 1020

    Arduino I2C Scanner devices | Arduino TutorialСкачать

    Arduino I2C Scanner devices | Arduino Tutorial

    Как подключить несколько I²C с одинаковыми адресами. Железки АмперкиСкачать

    Как подключить несколько I²C с одинаковыми адресами. Железки Амперки
Поделиться или сохранить к себе:
Технарь знаток