Клон дисплея Adafruit, экономим выводы микропроцессорных устройств.

Всем привет! Сегодня я расскажу как мне удалось сэкономить порты своей Raspberry Pi. Давно хотел подключить строчный дисплей к этому одноплатному компьютеру, и даже попробовал это сделать используя библиотеку wiringpi, но уж очень много выводов занимает такое подключение. Первое, что пришло в голову, было использование сдвиговых регистров, но все же я решил посмотреть в сторону шины I2C или SPI. Почитав топики в интернете нашел классное решение — RGB LCD SHIELD KIT W/ 16X2 CHARACTER DISPLAY — ONLY 2 PINS USED!. На плате используется всего два пина для управления SDL и SCK по шине I2C, плюс еще места хватило для пяти тактовых кнопок. В данном устройстве скорость не так сильно важна, поэтому шина I2C мне вполне подошла. «Сердцем» платы является микросхема компании Microchip, расширитель портов MCP23017.



Читать дальше
  • +2
  • 27 декабря 2016, 15:55
  • Jman
  • 2

Подключение esp8266 к счетчику электричества


Данные (импульсы) снимаются со счетчика электроэнергии посредством подключения либо телеметрическому (импульсному) выходу или на светодиод счетчика навешивается фототранзистор.
Данные отправляются на облачный сервер и записываются во FRAM память, для защиты от пропадания питания.
Память можно использовать с интерфейсом I2C или SPI.
Если SPI, то используется режим overlap — память припаивается поверх флеша с прошивкой на модуле esp.
Про SPI overlap режим расскажу ниже подробней.
Отображение информации, графики — через веб.



Читать дальше
  • +7
  • 25 мая 2016, 17:37
  • vad7

I2C расширитель портов PCF8574

PCF8574 на макетной платеРасширители портов на сдвиговых регистрах — решение известное, простое в понимании и использовании, дешевое и многократно описанное (например вот, вот и вот).

Но есть у него и определенные недостатки.

Во-первых, как и все SPI-устройства, сдвиговый регистр требует для себя отдельной линии «chip select» (CS), и это при том, что шина как таковая и так занимает три свободных порта ввода/вывода (MOSI, MISO, SCK).

Во-вторых, сдвиговый регистр может увеличивать либо входы, либо выходы, но не то и другое стразу. А если нужны и входы, и выходы — то нужно ставить два регистра и выделять два пина CS. Обидно.

Ну и в-третьих, при разработке тянуть четыре дорожки через всю плату несколько достает. И их еще и перекручивать всегда приходится каким-нибудь странным образом.

А тут мне на глаза попался расширитель портов PCF8574 (даташит TI, даташит NXP) на базе шины I2C.

Читать дальше

Программатор памяти 24CXX EEPROM (I2C Bus) на PonyProg

Простейший программатор микросхем памяти EEPROM серии 24CXX (с последовательным интерфейсом I2C Bus), основан на PonyProg. Это самые распространённые EEPROM в современной бытовой технике (телевизорах). Требуется для ремонта. Нет смысла покупать дорогой и сложный профессиональный программатор. Лучше его сделать…

Обзор (в изометрии)

Далее, будет несколько фоток (все кликабельны и ведут на полноразмерное изображение)...

Читать дальше

Easy_I2C AVR ASM практикум PCF8591 & DS1307

AVR
PCF8591 это микросхема в которой 4 АЦП и 1 ЦАП на скорости до 100кГц по i2c
Вот я добрался до неё. Она, как мне казалось, не самая простая микросхема однако сложного в ней по сути ничего нет.

Читать дальше
  • +1
  • 02 февраля 2014, 22:14
  • deses
  • 1

Последовательный 4-разрядный семисегментный LED индикатор с I2C драйвером TM1637

Выбирая индикатор для будущей поделки обратил внимание на вариант чуть дороже, но с меньшим числом проводов. Быстро погуглил, нашел библиотеку для Arduino и понял: надо брать.



Вобщем ничего особенного, просто проводов меньше. Может кому пригодится. На DX есть нечто подобное, но 8-разрядное: раз и два с кнопками.

UPD: Этот TM1637 обычный I2C. PDF на китайском

Easy_I2C AVR ASM практикум PCF8574 и немного мыслей о жк дисплеях + I2C-GPIO

AVR
Отредактировано 23.12.2013
PCF8574 это 8-битный расширитель ввода – вывода. Другими словами у нас появляется еще 8 ног

Читать дальше
  • +1
  • 19 декабря 2013, 12:57
  • deses
  • 1

Easy_I2C AVR ASM практикум начало

AVR
ОТРЕДАКТИРОВАНО 22.12.2013 благодаря комментариям.
I2C это достаточно важный раздел который я не изучил в AVR Mega на ASMе. Вот и решил восполнить этот пробел. В этом посте не будет прикольных графиков, фоток, схем зато будет много унылого кода на ASMe. Врать не буду но времени ушло на изучение больше 2-х месяцев. Причин много — это и работа, и работа, и работа, и (ремонт на кухне)*100500, и изготовление отладочной платы с PCF8574+PCF8574+MCP23016+DS1307+AT24C512+AT24C512+PCF8591

Читать дальше
  • +1
  • 16 декабря 2013, 23:23
  • deses

Схема переходника I2C для LCD HD44780

Меня всегда напрягал неудобный интерфейс LCD с контроллером HD44780. Для восьмиразрядного подключения с управлением подсветкой требуется 12 интерфейсных линий, и даже для четырехразрядного не менее 8 линий. В то же время для Arduino широко рекламируется модуль переходник для подключения LCD HD44780 через интерфейс I2C всего по 2 линиям (еще 2 питание). Захотел попробовать и заказал парочку в Китае. Модули пришли, маркировка GY-IICLCD. Полазил по интернету в поиске адреса модуля на шине и распиновке побитного подключения индикатора. Нашел два разных адреса и две разных распиновки. Поэтому решил просто срисовать схему с печатки, надеюсь еще кому пригодится.


Читать дальше

i2c (slave) расширитель на ATMega

AVR
Потребовалось тут из основной задачи на ARM-e под Linux дрыгоножество неспешное, а ног под GPIO сконфигурировано всего 3 шт! Разумеется, можно пересобрать ядро соответствующим образом, но поскольку в данном вопросе пока слаб, решил поставить расширитель i2c. Когда понял, что в городе я микросхем не найду, и посмотрел цены — понял, что ATMega весьма неплохое решение в данном случае! Попутно выяснил параметры для AVRDUDE, чтобы шить через Arduino бутлоадер.
Очень сильно помог этот материал в разборках с TWI, он же «квадратная шина» i2c.
Возникла заминка — как получить доступ не только регистрам PORTB, но и к остальным, а в идеале — ко всей периферии? Если делать в лоб — сравнивать адрес, потом обратиться к нужному регистру — много кода, ненаглядно, и никакой гибкости. Подумал, поспрашивал на форумах — на местном камрады почти готовое решение дали — используем указатель, значение которого вычисляется, и уже через него читаем-пишем в нужный порт.
В общем, кому надо — пользуйтесь. Мега прикидывается 24cXX, адресация начинается с PINB, дальше — по даташиту. Кому хочется адресации по даташиту — поправьте строку
#define BASEPORT PORTB-2

на такую:
#define BASEPORT PORTB-5

В этом случае адреса будут соответствовать описанию от Atmel.
Ещё момент — не уверен, что будет доступна периферия в верхних адресах, например — UART.
Скриншот терминала с проверкой ниже.

i2c-tools
  • 0
  • 20 августа 2013, 06:47
  • Hoksmur
  • 1