как узнать адрес i2c
Сканирование шины 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 — это такая шина данных, широко используемая в микроэлектронике. С помощью I2C можно подключить к Ардуино много разных полезных модулей, включая датчики, дисплеи, АЦП и даже другие платы Ардуино.
Шина является адресной, так что каждое подключаемое устройство имеет свой адрес в диапазоне от 8 до 127. На одной шине не может быть два устройства с одинаковыми адресами.
В этой короткой статье мы победим одну из частых проблем, которые испытывают самодельщики про покупке неведомого модуля с этим самым I2C интерфейсом. Проблема состоит в том, что производитель может изменить адрес устройства, и стандартные библиотеки перестают работать. Часто с подобной неприятностью можно столкнуться, например, при подключении ЖК дисплея с интерфейсом I2C.
Программа для сканирования I2C шины
Чтобы понять, какой всё-таки адрес у модуля, подключаемого к плате Ардуино, нужно просто «постучаться» по каждому из 119 возможных адресов. Если кто-то ответит, значит адрес рабочий!
Загружаем программу на Ардуино Уно, подключаем тестируемое устройство к I2C шине и открываем монитор последовательного порта. Если все подключено правильно, то появится примерно такой отчет:
Это значит, что мой дисплей имеет адрес 0x27 в шестнадцатеричной системе счисления. Теперь можно смело подключить библиотеку для работы с такими дисплеями и указать в ней данный адрес.
Как узнать I2C адрес устройства? : 18 комментариев
Очень интересно, но думаю не помешала бы принципиальная схемка подключения I2C устройства к Ардуино. Ну или ссылка на такую процедуру.
SDA к SDA, SCL к SCL, Питание и земля…
и резисторы 10кОм с «+» на SDA(А4) и SCL(А5),
резисторы нужны обязательно, если подключено более 2х устройств, если одно, то необязательно
на китайце с али работает! адрес-0x3F
на двух lcd экранах 1602 — один адрес 0x27
на двух lcd экранах 2004 — один адрес 0x3F
Как узнать адрес i2c
I2C — это такая шина данных, широко используемая в микроэлектронике. С помощью I2C можно подключить к Ардуино много разных полезных модулей, включая датчики, дисплеи, АЦП и даже другие платы Ардуино. Шина является адресной, так что каждое подключаемое устройство имеет свой адрес в диапазоне от 8 до 127.
1. Программа для сканирования I2C шины
Чтобы понять, какой всё-таки адрес у модуля, подключаемого к плате Ардуино, нужно просто «постучаться» по каждому из 119 возможных адресов. Если кто-то ответит, значит адрес рабочий!
void setup() <
Wire.begin();
Serial.begin(9600);
while (!Serial);
Serial.println(«\nI2C Scanner»);
>
void loop() <
byte error, address;
int nDevices;
nDevices = 0;
for(address = 8; address
Загружаем программу на Ардуино Уно, подключаем тестируемое устройство к I2C шине и открываем монитор последовательного порта. Если все подключено правильно, то появится примерно такой отчет:
Сканер I2C шины на Ардуино Это значит, что дисплей имеет адрес 0x27 в шестнадцатеричной системе счисления. Теперь можно смело начинать работать!
Подробный видеоурок: Как узнать I2C адрес устройства?
Книжные pdf новинки от ArduBlock!
Arduino.ru
I2C адресация. Чайниковский вопрос.
Пока почта России на медленных улитках везет Ардуино Уно, решил почитать теорию и остались вопросы по аппаратной адресации датчиков I2C.
1. Итак, в видео-лекциях на амперке.ру говорится «возьмет термодатчик, аппаратный адрес у него 72, подключим и считаем данные». Как мы узнали, что у него адрес 72, а не другой?
2. Датчики I2C подключаются «параллельно» на 2 провода. В моем проекте будет 10 термодатчиков. Не получится ли так, что купив пригоршню термодатчиков, они все окажутся с одинаковым прошитым адресом? Как этого избежать? Или я что-то не понимаю?
Термодатчики, по крайней мере DS18B20 имеют иникальный номер во всей линейке и выпусках. В самом серийнике записан также его тип. Так что с этим проблем не будет.
И тут у меня самого возникает вопрос. Когда я расставлю датчики на местах, каждый серийник будет закреплен за конкретным местом. Потом, в случае необходимости один дачик меняем (или меняем их местами) и надо обновить схему в «голове» МС.
Существуют ли устоявшиеся готовые решения для этих случаев?
1. Итак, в видео-лекциях на амперке.ру говорится «возьмет термодатчик, аппаратный адрес у него 72, подключим и считаем данные». Как мы узнали, что у него адрес 72, а не другой?
Взгляните на типичную схему подключения типичного I2C-устройства:
В реальной жизни схема адресации может быть и посложнее, но, освоившись с ее простейшим (и самым распространенным) вариантом, в случае необходимости вы сможете дополнить свои знания и более сложными вариантами.
В моем проекте будет 10 термодатчиков
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.