IIC Arduino (I2C – Inter-Integrated Circuits, межмикросхемное соединение) — это последовательный протокол обмена данными по двум двунаправленным линиям связи. Эти линии называют также: SDA (Serial Data) — шина последовательных данных и SCL (Serial Clock) — шина тактирования. Шины SDA и SCL Arduino подтягиваются к шине питания через резисторы. Рассмотрим подробнее, что это такое шина i2c arduino.
- Шина I2C Ардуино описание
- Сканер I2C интерфейса (шины) Ардуино
- Скетч. Сканер шины i2c для Arduino
- Пояснения к коду:
- Как подключить нескольких устройств по I2C Arduino
- Скетч. Подключение нескольких устройств к шине i2c
- Пояснения к коду:
- Сканирование шины i2c на arduino и raspberry pi
- I2C мобильный сканер
- ТехнарьКто
- Как узнать I2C адрес устройства?
- Программа для сканирования I2C шины
- Как узнать I2C адрес устройства? : 19 комментариев
- I2C сканер на Arduino
- I2C сканер на Arduino
- 📺 Видео
Видео:MCP2515, контроллер CAN шины с интерфейсом SPIСкачать
Шина I2C Ардуино описание
Микроконтроллеры Arduino используют два пина для работы по интерфейсу I2C. В Arduino Uno и Nano линии SDA соответствует аналоговый порт A4, а SCL соответствует аналоговый порт A5. На Ardunio Mega SDA — 20 пин, SCL — 21 пин. Для облегчения работы с шиной I2C и обмена данными между устройствами для Arduino IDE написана стандартная библиотека Wire (скачивать и устанавливать ее не надо).
Для каждого устройства, при подключении к микроконтроллеру, присваивается уникальный адрес (максимум можно подключить 127 устройств). Поменять адрес устройства на шине нельзя, так как он вшит в микросхему. Часто производители предоставляют возможность поменять адрес устройства в небольшом диапазоне, что дает возможность подключить к шине IIC Ардуино несколько одинаковых устройств.
Видео:I2C ScannerСкачать
Сканер I2C интерфейса (шины) Ардуино
Для этого занятия нам потребуется:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- макетная плата;
- два текстовых дисплея 1602 I2C;
- любое устройство с I2C интерфейсом;
- провода «папа-папа», «папа-мама».
Перед тем, как управлять несколькими объектами, подключенных к IIC шине, необходимо узнать их адреса. Для этого используется программа — сканер I2C Arduino, которая позволяет узнать адреса всех устройств, подключенных в данный момент к шине. Соберите схему из двух текстовых экранов с IIC модулем (можно подключить только одно устройство), подключенных к Ардуино Уно, и загрузите следующий скетч.
Скетч. Сканер шины i2c для Arduino
Пояснения к коду:
- данный код позволяет узнать все адреса устройств, подключенных к шине IIC. Если устройство не было подключено или подключено неправильно — на мониторе порта будет выходить сообщение, что устройства не найдены;
- ниже, на скриншоте монитора порта Arduino IDE, выводится адрес LCD 1602.
Сканер шины i2c для Arduino с LCD дисплеем
Видео:Сканер I2C шиныСкачать
Как подключить нескольких устройств по I2C Arduino
В следующем примере к шине IIC Arduino будет подключено сразу три устройства — текстовый дисплей 1602, датчик давления bmp180 и RTC модуль часов. После сборки схемы можно сделать предварительное сканирование шины, но адреса у всех устройств разные и изменить адрес можно только у дисплея. У других устройств адреса «вшиты» производителем и используются в библиотеках по умолчанию.
Скетч. Подключение нескольких устройств к шине i2c
После сборки схемы, убедитесь, что у вас установлены необходимые библиотеки для работы с устройствами по IIC протоколу, и загрузите следующий пример кода в микроконтроллер. Данная программа будет выводить на текстовый экран текущую дату и время суток (устанавливаются в процедуре void setup и время можно поменять), а также данные о температуре воздуха и атмосферном давлении.
Пояснения к коду:
- обновление информации на текстовом экране происходит каждую секунду, данный интервал можно увеличить по своему желанию;
- время выводится с секундами, формат вывода времени и даты также можно изменить в строчке LCD.print(time.gettime(«H:i:s — d.m»));
Читайте также: Из чего состоит бескамерная шина
Заключение. Мы рассмотрели возможность подключения нескольких устройств по протоколу IIC к плате Arduino, что будет полезно знать при проектировании различных DIY поделок своими руками, например метеостанции на Ардуино с датчиком давления. Если у вас остались вопросы по сканеру IIC интерфейсной шины или подключении устройств по данному протоколу — смело оставляйте их в комментариях к этой записи.
Видео:Arduino I2C Scanner devices | Arduino TutorialСкачать
Сканирование шины i2c на arduino и raspberry pi
Начнем пожалуй немного с теории.
I2C — это протокол, который позволяет различным устройствам взаимодействовать друг с другом используя одну шину данных SDA и SCL (всего два проводника), так же, для каждого устройства присваивается свой уникальный адрес. Максимально на одной шине может находиться 127 устройств. Как правило адрес i2c в устройстве вшит в микросхему с завода и его изменить нельзя, кроме тех случаев, когда это предусмотренно изготовителем и то обычно возможно поменять адрес только в небольшом диапазоне.
Иногда либо лень искать документацию на устройство или же ее не получается найти или вообще в документации один адрес указан, а у нас модуль с браком и адрес у него другой, для этого и пишу эту коротенькую статью.
Статья будет своего рода шпаргалкой, для того чтоб быстро узнать I2c адрес устройства. Я приведу два примера, один для того чтоб узнать адрес при помощи arduino, а второй способ будет, чтоб найти адрес устройства через raspberry pi.
Итак чтоб узнать i2c адрес на arduino нужно подключить устройство к пинам SDA и SCL они у arduino находятся A4(SDA) и A5(SCL).
Скетч выглядит следующим образом:
Собственно после загрузки скетча в ардуино и подключения устройства, откроем монитор порта и должны увидеть, какой адрес у устройства при сканировании. Выглядит это таким образом:
Со сканером i2c на ардуино мы я думаю разобрались, теперь давайте бегло разберемся как отсканировать шину на raspberry pi.
i2c у raspberry pi находится на пинах PIN3 и PIN5
Видео:Введение в шину I2CСкачать
I2C мобильный сканер
ТехнарьКто
Сборочный рисунок
После сборки включив кнопку питания и соответственно подав напряжение питания на ардуино и дисплей, надо покрутить подстроечный резистор на 10 килоОм до получения на экране текста. После этого прибор готов к эксплуатации.
На видео старый поисковик 2016 года. На фотографиях далее по тексту уже новый поисковик собранный для проверки на макете с подправленным скетчем 2020 года.
Все описания крайне упрощены для лучшего понимания базовых основ. Знающих прошу воздержаться от комментирования в стиле описания зарезервированных адресов, десяти битной адресации, работы нескольких ведущих и прочих отвлекающих моментов. Остальным, добро пожаловать в мир подключения кучи (хоть штук сто) устройств к ардуино по трем проводам (SDA, SCL, GND).
Inter-Integrated Circuit сокращенно IIC. Еще бывают названия (ай-квадрат-си) и (ай.ту-си). Суть от этого не меняется — это последовательная асимметричная шина для связи между интегральными схемами внутри электронных приборов. В тексте буду писать I2C. Модулем буду называть устройство которое имеет интерфейс I2C для подключения к ардуино с питанием 5V.
Читайте также: Шины для грузовой газели 185 75 r16c
Предупреждение. ВАЖНО! Для подключения к модулям с питанием 3,3V надо использовать преобразователь логических уровней, либо хотя бы токоограничивающие резисторы, а запитывать модуль на 3,3V соответственно можно только от напряжения 3,3V. На видео и фото, подключены модули с питанием 5V.
I2C использует две линии связи SDA и SCL на которые через резисторы в несколько килоОм подано положительное напряжение питания электронной схемы. Резисторы обычно уже установлены в модулях продаваемых китайцами на алиэкспресс. Работает шина относительно линии питания GND. Все SDA соединяют вместе и все SCL соединяют вместе, такое соединение и называют шиной. То что питание плюс и минус надо подавать на все устройства наверное и так должно быть понятно. При внешнем питании модулей, с поисковиком надо обязательно соединить и GND. Для одного модуля с малым потреблением, положительный вывод питания можно использовать от поисковика, чтобы не городить схему с внешним питанием модуля. Каждое устройство, подключённое к шине, может быть программно адресовано по уникальному адресу. Семь бит создают уникальный адрес до 127 устройств на шине. Несколько адресов зарезервировано под расширение функционала поэтому реально на шине можно подключить менее 127 устройств. Восьмой бит означает, устройство будет принимать или передавать данные на следующем байте. Все очень просто. Главное правильно записать адрес устройства в скетч и схема заработает, а куча модулей (хоть сто штук) будет занимать на ардуино всего два пина, без учета питания.
Портативный сканер был собран еще в 2016 году. Недавно мне прислали OLED экранчики с I2C интерфейсом и для подключения в схему мне понадобилось узнать адреса этих дисплеев. Снял с полки старый гаджет и подумал, что можно поделится схемой и скетчем. Для этого пришлось исправить скетч для новой библиотеки и для более свежей ардуино иде.
Одно время меня активно убеждали, что устройство должно быть как кастрюля с кнопкой. Простым и удобным в использовании. Поэтому кроме одной кнопки управления там ничего нет. Подключаете питание к шине с модулями адреса которых хотите проверить. Подключаете SDA, SCL и GND к поисковику. На дисплее написано, что делать. При загрузке сначала показывает служебную информацию и сразу переходит в ожидание запуска.
Нужно для визуального контроля отсутствия косяков. Смотрите, на дисплее надпись есть, значит прибор работает. На модуле при наличии индикатора питания, индикатор горит, значит модуль подключен. Нажимаете кнопку. При переборе адресов, встретив устройство на шине, происходит остановка.
Можете записать найденный адрес.
И так будет останавливаться на каждом найденном устройстве, пока не будет проверено все пространство адресов. В конце напишет сколько устройств найдено
и будет с интервалом в пять секунд показывать номера модулей.
При показе последнего найденного, перейдет к первому и будет показывать с начала. И так пока не выключите. Этот режим нужен для проверки собранного устройства с множеством подключенных модулей.
Читайте также: Шина данных can выключена
В простейшем случае, просто втыкаете модуль прямо в поисковик с питанием от поисковика и выключаете после того как записали найденный адрес на первой остановке поиска.
Видео:Arduino I2C связь между контроллерамиСкачать
Как узнать I2C адрес устройства?
I2C — это такая шина данных, широко используемая в микроэлектронике. С помощью I2C можно подключить к Ардуино много разных полезных модулей, включая датчики, дисплеи, АЦП и даже другие платы Ардуино.
Шина является адресной, так что каждое подключаемое устройство имеет свой адрес в диапазоне от 8 до 127. На одной шине не может быть два устройства с одинаковыми адресами.
В этой короткой статье мы победим одну из частых проблем, которые испытывают самодельщики про покупке неведомого модуля с этим самым I2C интерфейсом. Проблема состоит в том, что производитель может изменить адрес устройства, и стандартные библиотеки перестают работать. Часто с подобной неприятностью можно столкнуться, например, при подключении ЖК дисплея с интерфейсом I2C.
Видео:Установщик адресов Flash-i2cСкачать
Программа для сканирования I2C шины
Чтобы понять, какой всё-таки адрес у модуля, подключаемого к плате Ардуино, нужно просто «постучаться» по каждому из 119 возможных адресов. Если кто-то ответит, значит адрес рабочий!
Загружаем программу на Ардуино Уно, подключаем тестируемое устройство к I2C шине и открываем монитор последовательного порта. Если все подключено правильно, то появится примерно такой отчет:
Это значит, что мой дисплей имеет адрес 0x27 в шестнадцатеричной системе счисления. Теперь можно смело подключить библиотеку для работы с такими дисплеями и указать в ней данный адрес.
Видео:сканер шины i2cСкачать
Как узнать I2C адрес устройства? : 19 комментариев
Очень интересно, но думаю не помешала бы принципиальная схемка подключения I2C устройства к Ардуино. Ну или ссылка на такую процедуру.
Видео:Подключение нескольких устройств, датчиков по I2C (АйТуСи) шинеСкачать
I2C сканер на Arduino
Автор: Сергей · Опубликовано 26.10.2017 · Обновлено 27.09.2019
В этой статье расскажу как с помощью Arduino сделать I2C сканер, в качестве примера определю адрес LCD1602 дисплей, работающего по интерфейсу I2C.
I2C сканер на Arduino
Немного теории, I2C — это протокол, который позволяет различным устройствам взаимодействовать друг с другом используя одну шину данных SDA и SCL (всего два проводника), так же, для каждого устройства присваивается свой уникальный адрес (максим 127 устройств). Поменять адрес устройства нельзя, он намертво вшит в микросхему, но некоторые производитель предоставил возможность изменять адрес в небольшом диапазоне, это дает возможность подключить несколько одинаковых устройств (с одинаковым чипом) к одной шине.
Иногда, нет возможности найти документацию на микросхему или микросхема не имеет адрес схожий от документации (такое то же бывало), тогда поможет данный скетч. В примере используется Arduino UNO и LCD модуль I2C (который имеет брак и другой адрес, не 0x27), так-же, интерфейс I2C работает только на определенные выводах (в arduino UNO это A4 и A5), приведу таблицу подключения для различных платформ Arduino.
Собираем принципиальную схему
Открываем среду разработки IDE Arduino, копируем скетч и загружаем его в платформу Arduino.
- Свежие записи
- Нужно ли менять пружины при замене амортизаторов
- Скрипят амортизаторы на машине что делать
- Из чего состоит стойка амортизатора передняя
- Чем стянуть пружину амортизатора без стяжек
- Для чего нужны амортизаторы в автомобиле
📺 Видео
Урок 9. Адреса модулей на шине I2C. Arduino (что такое I2C, адресация, как изменить адрес модуля)Скачать
Урок 24. Узнаём адреса устройств на шине I2CСкачать
LCD2004+I2C. Arduino. Обзор, подключение, поиск адресаСкачать
Breve descripción de I2C Scanner de ArduinoСкачать
I2C - Сканер адресов - Arduino / ArduBlockСкачать
STM32 Сканер I2C шины, ищем брак от АлиСкачать
Подключение и использование I2C scaner`а для любых устройств.Скачать
Шина I2C.Скачать
Логический LIN пробник, цифровой тестер лин, к лайн шины автомобиля. На Ардуино, OLED I2C, TJA 1020Скачать
Видеоуроки по Arduino. I2C и processing (7-я серия, ч1)Скачать
#63 I2C address Scanner || PR ROBOTICSСкачать