I2c адаптер на arduino

I2c адаптер на arduino

Превращаем программатор USBasp в I2C-USB переходник:

Если Вы уже знакомы с USBasp программатором,то вы знаете,что это очень простое и дешевое устройство для программирования м/к ATmega,но оказывается программатор , используя проект i2c tiny usb можно превратить в полноценный дешевый переходник I2C to USB.

В итоге мы получаем возможность подключать разные устройства I2C к компьютеру всего за 100 рублей (3$).Например мы можем подключить датчик давления BMP085 или микросхемы ввода/вывода MCP23017 для подключения кнопок или управления нагрузкой через реле.

USBasp прошивается стандартно как при обновлении прошивки и прошивается так же через arduino как программатор или используя другой USBasp программатор .Для программирования используются те же выводы SCK,MISO,MOSI ,RESET ,но прошивка идет через утилиту avrdude ,а не из среды Arduino IDE.

Порядок действий для прошивки через arduino:

1. Подключаем выводы SCK,MISO,MOSI ,RESET к Arduino согласно инструкции .

2. Установавливаем перемычку self programming (на фото обозначена как JP2),обычно место для перемычки не распаяно.

3. Качаем скомпилированную прошивку под USBasp тут и кидаем в папку путь_к_папке_ардуины_/hardware/tools/ .

4. Перейдем в консоль (cmd или bash) Вашей операционной системы в папку через команду cd путь_к_папке_ардуины_/hardware/tools/ и далее вводим команды для Windows,не забывем указать верный порт,на котором подключена Arduina:

avrdude -C avrdude.conf -c avrisp -P COM1 -b 19200 -p m8 -v

Программа выдаст сообщение ,где покажет состояние фьюзов и другую информацию.

Если Вы видите такие сообщения- значит подключено все правельно и можно прошивать командой:

avrdude -C avrdude.conf -c avrisp -P COM1 -b 19200 -p m8 -U flash:w:i2c_tiny_usb.hex -U lfuse:w:0x9f:m -U hfuse:w:0xc9:m

Для прошивки из Linux все аналогично, заменяется часть строки:

./avrdude -C avrdude.conf -c avrisp -P /dev/ttyUSB0 .

Порядок действий для прошивки через другую USBasp:

Подключаем выводы SCK,MISO,MOSI ,RESET один в один.Можно просто подключить через шлейф,идущий в комплекте с программатором.

Указываем опцию -c usbasp вместо -c avrisp

После успешной прошивки устройство опознается как i2c-tiny-usb и выводы программатора будут иметь другое назначение: SDA и SDL ,к которым мы можем уже подключать I2C устройства согласно справочной информации.

Работа переходника I2C-USB в Linux:

Драйвера в Linux не требуются ,но по умолчанию модуль i2c-dev не загружен и его необходимо установить в автозагрузку выполнив команду echo «i2c-dev» >>/etc/modules или/и загрузить модуль немедленно командой modprobe i2c-dev .В папке /dev/ Вы увидите возможно несколько устройств вида -i2c-X,наше скорее всего будет последним.Зная номер сейчас можно работать с устройствами подключенные на данной шине согласно примеров и инструкций к устройствам.Рекомдуется установить пакет программ i2c-tools (через управление ПО Вашей операционной системы) -поможет для поиска I2C устройств командой i2cdetect -y Х ,где Х — это номер i2c шины:

На скриншоте мы видим сообщение команды i2cdetect ,где выводит подключенные устройства ,а именно устройство 77 (шестнадцатиричное) — BMP085 ,а так же запуск демо программы датчика давления BMP085 ,которая вывела текущее давление и температуру.

Приложения с данным переходником i2c_tiny_usb могут работать как с USB устройством -в этом случае загрузка модуля i2c-dev не нужна.

Работа переходника I2C-USB в Windows:

Для работы переходника требуются драйвера i2c_tiny_usb .В windows приложения работают только как с USB устройством,а не с шиной I2C.

Источник

Обзор интерфейсного модуля IIC, I2C, TWI для LCD

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

В этой статье расскажу, как использовать интерфейсный модуль I2C для управления LCD дисплеем (2×16 / 20х4) с помощью Arduino. Данный модуль позволяет уменьшить количество используемых выводов контроллера, вместо 8 или 4-битного соединения, требуется только 2 вывода (SDA и SCL).

Технические параметры

► Поддержка дисплеев: LCD 16×02 / 20×04
► Дополнительно: регулировка контрастности
► Напряжение питания. 5В
► Интерфейс: I2C
► Габариты: 54мм x 19мм x 15мм

Общие сведения интерфейсного модуля I2C

Поскольку количество контактов на контроллерах Arduino ограничено и часто при использовании различных датчиков и модулей они заканчиваются, появляется необходимость в их экономии, для этих случай разработан этот модуль, с его помощью можно реализовать передачу по двум контактам (SDA и SCL).

Теперь немного о самом модуле, построен он на микросхеме PCF8574T. Резисторы R8 (4.7кОм) и R9 (4.7кОм) необходимы для подтяжки линий SDA и SCL, в идеале при подключении двух и более устройств по шине I2C необходимо использовать подтяжку только на одном устройств, позже напишу почему. На плате предусмотрены три перемычки (по схеме видно что линии A0, A1, A2 подтянуты к питанию через резисторы R4, R5, R6), необходимы они для смены адресации устройства, всего их 8 вариантов. Изменение адресации дает нам возможность подключения до восьми устройств по шине IC2 c микросхемой PCF8574T, варианты адресов показаны на рисунке (по умолчанию адрес устройства 0x27). Так же модуль оснащен потенциометром R11 с его помощью можно изменить контрастность LCD дисплея.

Для соединения на модуле расположено три группы контактов:

Первая группа:
SCL: линия тактирования (Serial CLock)
► SDA: линия данных (Serial Dфta)
► VCC: «+» питание
► GND: «-» питание

Вторая группа:
► VSS: «-» питание
► VDD: «+» питание
► VO: Вывод управления контрастом
► RS: Выбор регистра
► RW: Чтение/запись ( режим записи при соединении с землей)
► E: Еnable (строб по спаду)
► DB0-DB3: Младшие биты интерфейса
► DB4-DB7: Старшие биты интерфейса
► A: «+» питания подсветки
► K: «-» питания подсветки

Третья группа: (по умолчанию установлена перемычка)
► VCC:
► A от LCD:

Подключение к Arduino

Необходимые детали:
► Arduino UNO R3 x 1 шт.
► LCD-дисплей 1602A (2×16, 5V, Синий) x 1 шт.
► Интерфейсный модуль I2C, IIC, TWI для LCD x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.

Подключение:
Первым делом, припаиваем модуль I2C к LCD дисплею, затем необходимо подключить дисплей к Arduino UNO. Для этого воспользуемся проводками DuPont, подключение осуществляем по таблице ниже.

Для наглядности, приведу еще одну схему.

Для этого эксперимента необходимо скачать и установить библиотеку «LiquidCrystal_I2C». Затем скопируйте и вставьте этот пример кода в окно программы IDE Arduino и загрузите в контроллер.

Источник

FLASH-I2C адаптер для LCD 1602/2004

Общие сведения:

I2C-flash адаптер для LCD дисплеев 1602/2004 — является преобразователем интерфейсов который обеспечивает обмен данными между двумя шинами: параллельной шиной LCD и шиной I2C. Наличие связи между этими шинами позволяет работать с LCD дисплеем по шине I2C.

  • К одной шине LCD можно подключить один LCD дисплей 1602 или 2004.
  • К одной шине I2C можно подключить более 100 адаптеров. Адрес адаптера на шине I2C (по умолчанию 0x09) назначается программно и хранится в его энергонезависимой памяти.

Адаптер применяется для управления LCD дисплеями 1602 или 2004 по шине I2C, что экономит количество выводов используемых для подключения дисплея. Вместо 8 выводов к которым можно подключить всего 1 дисплей, используется 2 вывода к которым можно подключить более 100 дисплеев.

Видео:

Спецификация:

  • Напряжение питания: 3,3 В или 5 В (постоянного тока).
  • Потребляемый ток: до 6 мА.
  • Интерфейс: I2C.
  • Скорость шины I2C: 100 кбит/с.
  • Адрес на шине I2C: устанавливается программно (по умолчанию 0x09).
  • Уровень логической 1 на линиях шины I2C: 3,3 В (толерантны к 5 В).
  • Рабочая температура: от -20 до +70 °С.
  • Габариты: 41,91 х 17,15 мм (1650 x 675 mil).
  • Вес: 6 г.

Подключение:

По умолчанию все модули FLASH-I2C имеют установленный адрес 0х09.

— Перед подключением 1 модуля к шине I2C настоятельно рекомендуется изменить адрес модуля.

— При подключении 2 и более FLASH-I2C модулей к шине необходимо в обязательном порядке предварительно изменить адрес каждого модуля, после чего уже подключать их к шине.

Более подробно о том, как это сделать, а так же о многом другом, что касается работы FLASH-I2C модулей, вы можете прочесть в этой статье.

В верхней части платы расположена колодка шины LCD для подключения дисплея.

  • GND — общий вывод питания.
  • Vcc — вывод питания LCD дисплея 3,3 или 5 В (выбирается перемычками на плате).
  • VO — (Voltage cOntrast) контрастность экрана.
  • RS — (Register Select) линия выбора регистра команд / данных.
  • RW — (Read/Write) линия выбора направления передачи.
  • E — (Enable) линия тактирования по спаду.
  • D0-D7 — (Data) линии данных (адаптер использует только D4-D7).
  • A — (Anode) положительный вывод питания подсветки LCD дисплея.
  • K — (Cathode) отрицательный вывод питания подсветки LCD дисплея.

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

  • SCL — вход/выход линии тактирования шины I2C.
  • SDA — вход/выход линии данных шины I2C.
  • Vcc — вход питания 3,3 или 5 В.
  • GND — общий вывод питания.

По центру платы расположены две перемычки выбора питания LCD дисплея.

  • 5V — установка данной перемычки соединит вывод Vcc шины LCD с выводом Vcc шины I2C.
  • 3V3 — установка данной перемычки подключит вывод Vcc шины LCD к стабилизатору +3,3 В.
  • Не устанавливайте обе перемычки одновременно, это может повредить адаптер и дисплей.

Подключение дисплея к адаптеру:

LCD Дисплей 1602 или 2004 подключается к колодке LCD адаптера. Распиновка колодки адаптера совпадает с распиновкой колодки дисплея. После подключения дисплея к адаптеру нужно настроить контрастность экрана.

Для настройки контрастности экрана установите переключатель режима работы адаптера в положение «ADR» и подайте питание на шину I2C. Плавно поворачивайте отвёрткой крестовину подстроечного резистора (рядом с которым присутствует надпись «КОНТРАСТ») до появления на экране текста с указанием адреса и яркости. После настройки контрастности экрана установите переключатель режима работы адаптера в положение «ON».

Питание:

Входное напряжение питания адаптера зависит от напряжения питания LCD дисплея.

  • Если к адаптеру подключён дисплей требующий питания 5В, то на выводы Vcc и GND колодки I2C подается напряжение 5В постоянного тока, а на плате адаптера замыкается перемычка «5V».
  • Если к адаптеру подключён дисплей требующий питания 3,3В, то на выводы Vcc и GND колодки I2C подается напряжение 3,3В или 5В постоянного тока (поддерживаются оба напряжения), а на плате адаптера замыкается перемычка «3V3».

Подробнее о модуле:

Адаптер построен на базе микроконтроллера STM32F030F4, снабжен собственным стабилизатором напряжения, резистором настройки контрастности дисплея и переключателем режима работы: «ON» и «ADR».

  • Если переключатель установлен в положение «ON», то адаптер находится в основном режиме работы, при котором осуществляется обмен данными между шинами LCD и I2C, что позволяет работать с LCD дисплеем по шине I2C. Работа с LCD дисплеем выполняется так же, как и при использовании конвертера на базе чипа PCF8574, что делает адаптер полностью совместимым с библиотеками разработанными для I2C LCD дисплеев 1602 и 2004.
  • Если переключатель установлен в положение «ADR», то адаптер работает в режиме адресного доступа к своим регистрам, что позволяет управлять настройками адаптера. В этом режиме нельзя работать с LCD дисплеем, на его экране будет отображаться информация о текущем адресе адаптера на шине I2C и о установленной яркости подсветки дисплея в %. Доступ к регистрам адаптера осуществляется по шине I2C.

Адаптер позволяет настроить такие параметры как:

  • Адрес адаптера на шине I2C. При изменении адреса, можно указать, что новый адрес должен сохраниться в flash память модуля, а значит адрес сохранится и после отключения питания.
  • Яркость свечения подсветки дисплея. Значение яркости от 0 до 100% автоматически сохраняется в flash память модуля (сохранится после отключения и включения питания).
  • Подтяжка линий шины I2C (по умолчанию включена). В случае наличия на шине I2C большого количества модулей с подтяжкой линий SDA и SCL, отключение подтяжки некоторых модулей может существенно улучшить связь с микроконтроллером.

Для настройки параметров адаптера не требуются библиотеки.

Для работы с LCD дисплеями 1602 и 2004 по шине I2C предлагаем воспользоваться библиотекой LiquidCrystal_I2C_V112.

Подробнее про установку библиотеки читайте в нашей инструкции.

Примеры:

Вывод данных на LCD дисплей:

Для работы с LCD дисплеем нужно установить переключатель работы адаптера в положение «ON» (режим работы с дисплеем). Работа с дисплеем осуществляется так же как и при использовании конвертера на базе чипа PCF8574.

Вывод текста на дисплей:

Данный пример выводит на дисплей текст «LCD» и «www.iarduino.ru».

Обратите внимание на параметры указанные при объявлении объекта lcd(0x09,16,2); в 3 строке скетча.

  • Первый параметр 0x09 указывает адрес дисплея на шине I2C. Это значение можно увидеть установив переключатель режима работы адаптера в положение «ADR» (не забудьте вернуть переключатель в положение «ON» для работы с дисплеем).
  • Второй параметр 16 указывает количество столбцов на экране дисплея (значение 16 для 1602 и 20 для 2004).
  • Третий параметр 2 указывает количество строк на экране дисплея (значение 2 для 1602 и 4 для 2004).

Другие примеры вывода данных на LCD дисплей:

Для работы с LCD дисплеем нужно установить переключатель работы адаптера в положение «ON» (режим работы с дисплеем). Так как работа с дисплеем осуществляется так же как и при использовании конвертера на базе чипа PCF8574, то все примеры приведённые на странице Wiki — Работа с символьными ЖК дисплеями 1602,2004 I2C, можно использовать без изменений скетча, нужно только изменить адрес 0x27 на адрес Вашего дисплея.

Изменение яркости подсветки экрана:

Яркость подсветки является настройкой адаптера, а значит для её установки необходимо установить переключатель режима работы адаптера в положение «ARD», при этом на экране появится текст информирующий о текущем адресе на шине I2C и яркости подсветки в %.

  • Во второй строке скетча (вместо значения 127 ) нужно указать требуемую яркость подсветки экрана дисплея, это значение в пределах от 0 (нет) до 255 (максимальная яркость).
  • В третьей строке скетча (вместо значения 0x09 ) нужно указать текущий адрес адаптера на шине I2C (он отображается на экране дисплея).

Скетч сохраняет яркость в flash памяти адаптера, это значит что дисплей будет работать с указанной яркостью даже после отключения и подачи питания, до тех пор пока не будет установлена новая яркость. После применения новой яркости её значение отобразится на экране.

После сохранения требуемой яркости подсветки не забудьте вернуть переключатель в положение «ON» для перевода адаптера в режим работы с LCD дисплеем.

Изменение адреса адаптера на шине I2C:

Адрес адаптера является настройкой адаптера, а значит для его установки необходимо установить переключатель режима работы адаптера в положение «ARD», при этом на экране появится текст информирующий о текущем адресе на шине I2C и яркости подсветки в %.

Адаптер позволяет менять свой адрес на шине I2C как временно, так и постоянно.

  • Временный адрес становится адресом адаптера, но не сохраняется в его flash памяти, а значит после отключения питания, у адаптера будет восстановлен прежний адрес.
  • Постоянный адрес становится адресом адаптера который сохранится в его flash памяти, а значит постоянный адрес сохранится и после отключения питания.

В данном примере адаптеру можно присвоить как временный, так и постоянный адрес на шине I2C.

  • Во второй строке скетча (вместо значения 0x09 ) нужно указать текущий адрес адаптера на шине I2C (он отображается на экране дисплея).
  • В третьей строке скетча (вместо значения 0x0A ) нужно указать новый адрес адаптера на шине I2C (допускаются значения: 0x07 0x7F ).
  • В четвертой строке скетча нужно определить, как будет установлен новый адрес адаптера на шине I2C: true — постоянно, false — временно.

Если установлен постоянный адрес, то он появится на экране дисплея, если установлен временный адрес, то на экране дисплея отобразятся два адреса, сначала временный (текущий адрес адаптера), а потом постоянный (адрес который восстановится после отключения питания).

После установки адреса адаптера на шине I2C не забудьте вернуть переключатель в положение «ON» для перевода адаптера в режим работы с LCD дисплеем.

Управление внутренней подтяжкой линий шины I2C:

Внутренняя подтяжка линий шины I2C является настройкой адаптера, а значит для управления ей необходимо установить переключатель режима работы адаптера в положение «ARD», при этом на экране появится текст информирующий о текущем адресе на шине I2C и яркости подсветки в %.

В данном примере можно управлять внутренней подтяжкой линий шины I2C до уровня 3,3 В. На линии I2C допускается устанавливать внешние подтягивающие резисторы и иные модули с подтяжкой до уровня 3,3 В и выше, вне зависимости от состояния внутренней подтяжки адаптера.

Во второй строке скетча нужно определить состояние внутренней подтяжки линий шины I2C: true — включить, false — отключить.

В третьей строке скетча (вместо значения 0x09 ) нужно указать текущий адрес адаптера на шине I2C (он отображается на экране дисплея).

После настройки подтяжек линий шины I2C не забудьте вернуть переключатель в положение «ON» для перевода адаптера в режим работы с LCD дисплеем.

Источник

Adblock
detector