Первоначально планов написания этой статьи не было, просто предполагалось выложить очередное обновление WebHomePi. Однако во избежание некоторых трудностей, которые могут возникнуть у пользователей при подключении символьного дисплея, было решено написать краткий обзор по данной теме. Особенно это будет полезно тем, кто планирует подключить дисплей к кросс-плате первой версии или непосредственно к Raspberry Pi. Что касается второй версии кросс-платы, то в ней уже все предусмотрено для подключения такого дисплея – выполнено согласование уровней 3.3В и 5В на шине I2C, а так же установлен разъем Р12 для подключения трех кнопок с нормально-разомкнутыми контактами для управления выходными реле и навигации по меню дисплея.
Начнем с аппаратной части - дисплея 1602 с шиной I2C. В принципе, это стандартный индикатор на чипе HD44780 с параллельным (4-х или 8-ми битным вводом информации), в который добавлен преобразователь параллельного интерфейса в шину I2C на микросхеме PCF8574, что позволяет сократить количество управляющих дисплеем выходов контроллера минимум с шести всего до двух. Ранее на нашем сайте публиковались статьи об устройствах на дисплеях с таким управлением, например 6-ти канальный контроллер температуры и влажности, подключаемый к WebHomePiпо интерфейсу RS485. Отличие заключается только в применяемом типе дисплея – там использовался 4-х строчный дисплей на 20 символов в каждой строке. Кстати, вместо 1602 в нашем случае вполне возможно применить и дисплеи 1604 или 2004, имеющие «на борту» шину I2C, немного подкорректировав соответствующий скрипт.
Внешний вид дисплея 1602 с преобразователем параллельного интерфейса в I2C, показан на рис.1
Рис. 1
Дисплей 1602 рассчитан для работы с напряжением 5В, соответственно, такие же уровни будет иметь и его шина I2C. Несмотря на то, что порты RaspberryPi«толерантны» к такому напряжению и все будет работать, но лучше не рисковать и дополнить кросс-плату первой версии преобразователем уровней аналогичным тому, который применен во второй версии кросс-платы и выполнен на элементах Q9, Q10, R4, R5, R36, R37.
Для подключения кнопок управления и навигации в первой версии кросс-платы задействован разъем, который находится под RaspberryPi. Фрагмент кросс-платы с разъемом, а так же схема подключения кнопок показаны рис. 2
Рис. 2
Подтягивающие резисторы R1…R3, подключаемые к входам кнопок можно не устанавливать, т.к. в скрипте включаются внутренние подтягивающие резисторы в GPIORaspberryPi. Однако, на случай программного сбоя, внешние резисторы желательно установить, лишними не будут. Кнопки управления и навигации имеют следующие обозначения: S1 – «Step», S2 – «Cycle»,S3 – «Enter» (рис.3).
Рис. 3
Разобравшись с аппаратной частью, обновляем программное обеспечение и выполняем рестарт системы. Обращаю внимание, что во время загрузки RaspberryPi, никакая информация, кроме засвеченных знакомест (черных квадратов) в верхней строке, на дисплее не отображается. Если нет отображения даже этих квадратов, добейтесь их появления вращением подстроечного резистора на плате преобразователя интерфейса I2Cдисплея. Этим же резистором затем устанавливается требуемый уровень контрастностиизображения.
После загрузки системы на три секунды появляется тестовая заставка (рис. 4, a), после чего на дисплей выводится информация о текущем времени и дате (рис. 4, b), При нажатии и удержании кнопки «Cycle» на дисплей последовательно выводиться информация о температуре и загрузке процессора RaspberryPi(рис. 4, c), показаниях всех датчиков, подключенных к системе (рис. 4, d, g, h, i). Если датчик физически не подключен, но активирован в конфигурации, то выводится сообщение, что такого датчика не существует (рис. 4, j, k). Кроме прочего, такая информация позволит идентифицировать датчик в случае его выхода из строя. Зарезервированные датчики (в случае их активации в меню) также отображаются соответствующим образом (рис. 4, l).
Рис. 4
Отдельно остановимся на контроле входов и управлении релейными выходами. Выбираем кнопкой «Cycle» режим отображения состояния входов и выходов – он выводится после показаний датчика ВМР085 (рис. 4, e). Здесь единицы соответствуют замкнутому входу и включенному реле, а нули – разомкнутому входу и отключенному реле. Для перехода в режим управления необходимо нажать кнопку «Step» на время не менее 1 секунды, после чего на дисплее отображаются только состояние выходов с мигающим курсором на первой позиции (рис. 4, f). С помощью кнопки «Step» выбираем нужный выход (при этом происходит перемещение курсора), а кнопкой «Enter» изменяем состояние выхода на инверсное. Если нажать и удерживать кнопку «Enter», то выбранный выход будет последовательно менять свое состояние (включен/отключен) каждую секунду. Для выхода из режима управления нажимаем кнопку «Cycle».
Подсветка дисплея при включении устройства по умолчанию включена. Для ее отключения (или последующего затем включения) необходимо одновременно нажать и удерживать не менее 1 секунды кнопки «Enter» и «Step». Для работы подсветки должен быть установлен джампер (перемычка, см. рис.1) на преобразователе I2C.
В случае, если после подключения и обновления ПО дисплей не запускается, необходимо проверить, «виден» ли он в системе. Для этого введите в терминальной программе Puttyкоманду:
sudo i2cdetect -y 1
В выведенной после выполнения команды на экран таблице дисплей имеет адрес 0x27 (рис.5) :
Рис. 5
Если адрес 0x27 в таблице присутствует, значит с аппаратной частью все в порядке. Однако вполне вероятна ситуация, что ваш дисплей будет иметь другой адрес. В этом случае необходимо заменить его в скрипте script_lcd.pyна отображаемый в таблице.