RSS блога
Подписка
Текстовый дисплей 20х4 с I2C входом. Собираем монитор системной информации
- Цена: 8,99(5,99 на момент заказа)
- Перейти в магазин
LCD дисплеи на контроллере HD44780 и его аналогах применяются давно.
Они выпускаются с различными разрешениями и легко управляются, но не всегда можно выделить для этого десяток выводов микроконтроллера, и даже полубайтовое управление не всегда помогает.
Для таких случаев есть модули с I2C интерфейсом — им достаточно всего лишь двух линий данных.
Обзор такого модуля и пример применения — под катом.
Поставляется модуль в антистатическом пакете из металлизированной плёнки, завёрнутым в кусок пупырки для защиты от ударов.
Модуль собран на печатной плате размерами 98х60 мм, видимая область для защиты от царапин заклеена плёнкой.
На обратной стороне печатной платы расположены пять микросхем-клякс, управляющих непосредственно сегментами LCD, и через контактную гребёнку припаяна бутербродом плата I2C расширителя портов на основе микросхемы PCF8754.
Если очень задаться целью, её можно отпаять и переставить на другой дисплей(так, как на картинке, подключить можно только типы WEH1602A и 2004A, для типа 1602B модуль придется поворачивать на 180 градусов, а для 2002A/B и 1202/1204 изготавливать переходной кабель.)
Таблица соответствия выводов микросхемы и LCD модуля:
Подадим на этот бутерброд питание 5 вольт согласно надписям у 4-штырькового разъёма:
Без подачи сигналов управления дисплей полностью засвечивает тестовые строки. В двухстрочных дисплеях это первая строка сверху, в четырёхстрочных — первая и третья.
Ну а теперь переходим к практической части.
Соединим дисплей с платой Arduino четырьмя проводами(два управляющих, питание и общий):
Зашьём в Arduino программу сканирования I2C шины:
Запускаем монитор порта и смотрим, как программа рапортует об устройстве, откликнувшемся по адресу 0x27:
Если очень надо — адрес можно поменять установкой перемычек А0-А2.
Немного классики — Hello, world!
Прошиваем и наблюдаем результат:
Думаю, что заставшие расцвет моддинга ПК в нулевых помнят про встраивание в корпус ПК разного, в том числе и таких вот текстовых дисплеев, на которые можно было выводить почти произвольный текст, чтобы разгрузить основной монитор:
Изначально дисплеи от фирмы Matrix Orbital подключались через COM-порт и управлялись проприетарной программой, но потом появилось более доступное решение — кабель для подключения к LPT порту и бесплатное ПО для вывода данных на экран.
LPT порты с тех пор практически исчезли, места на основных мониторах стало больше, но всё же информационный дисплей в некоторых случаях может пригодиться.
Скачать библиотеку для работы с PCF8754 можно тут
Пример вывода системной информации на дисплей:
Его можно упаковать в мыльницу, в распечатанный на 3D принтере корпус или врезать прямо в панель системного блока.
Управляется всё это счастье через программу LCD Smartie, на данный момент последняя стабильная версия — 5.4 и вряд ли уже будут другие. В ней нужно указать размер дисплея:
а так же его тип — matrix, порт, к которому он подключен, и скорость порта (не более 19200 bps, иначе плагин выдаст ошибку и не сможет передавать данные на дисплей):
Программа может создавать до 20 информационных экранов, для каждого из которых можно настроить содержание, время показа, анимацию, эффекты перехода… В динамике выглядит примерно так:
Конечно, с информативностью полноценного монитора такой экран не сравнится, но для вывода основной системной информации он вполне достаточен и почти не нагружает при этом процессор.
Они выпускаются с различными разрешениями и легко управляются, но не всегда можно выделить для этого десяток выводов микроконтроллера, и даже полубайтовое управление не всегда помогает.
Для таких случаев есть модули с I2C интерфейсом — им достаточно всего лишь двух линий данных.
Обзор такого модуля и пример применения — под катом.
Поставляется модуль в антистатическом пакете из металлизированной плёнки, завёрнутым в кусок пупырки для защиты от ударов.
Модуль собран на печатной плате размерами 98х60 мм, видимая область для защиты от царапин заклеена плёнкой.
На обратной стороне печатной платы расположены пять микросхем-клякс, управляющих непосредственно сегментами LCD, и через контактную гребёнку припаяна бутербродом плата I2C расширителя портов на основе микросхемы PCF8754.
Если очень задаться целью, её можно отпаять и переставить на другой дисплей(так, как на картинке, подключить можно только типы WEH1602A и 2004A, для типа 1602B модуль придется поворачивать на 180 градусов, а для 2002A/B и 1202/1204 изготавливать переходной кабель.)
Таблица соответствия выводов микросхемы и LCD модуля:
Подадим на этот бутерброд питание 5 вольт согласно надписям у 4-штырькового разъёма:
Без подачи сигналов управления дисплей полностью засвечивает тестовые строки. В двухстрочных дисплеях это первая строка сверху, в четырёхстрочных — первая и третья.
Ну а теперь переходим к практической части.
Соединим дисплей с платой Arduino четырьмя проводами(два управляющих, питание и общий):
Зашьём в Arduino программу сканирования I2C шины:
Скетч - I2C сканер
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("\nI2C Scanner");
}
void loop() {
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Unknown error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(5000); // wait 5 seconds for next scan
}
}
Запускаем монитор порта и смотрим, как программа рапортует об устройстве, откликнувшемся по адресу 0x27:
Если очень надо — адрес можно поменять установкой перемычек А0-А2.
Немного классики — Hello, world!
Скетч - Hello, world!
LiquidCrystal_I2C lcd(0x27, 20, 4); // set the LCD address to 0x27 for a 20 chars and 4 line display
void setup()
{
lcd.init(); // initialize the lcd
lcd.init();
// Print a message to the LCD.
lcd.backlight();
lcd.setCursor(0,1);
lcd.print("Hello, world!");
}
void loop()
{
}
Прошиваем и наблюдаем результат:
Думаю, что заставшие расцвет моддинга ПК в нулевых помнят про встраивание в корпус ПК разного, в том числе и таких вот текстовых дисплеев, на которые можно было выводить почти произвольный текст, чтобы разгрузить основной монитор:
Изначально дисплеи от фирмы Matrix Orbital подключались через COM-порт и управлялись проприетарной программой, но потом появилось более доступное решение — кабель для подключения к LPT порту и бесплатное ПО для вывода данных на экран.
LPT порты с тех пор практически исчезли, места на основных мониторах стало больше, но всё же информационный дисплей в некоторых случаях может пригодиться.
Скетч - Эмулятор Matrix Orbital
#include <Wire.h>
#include "LiquidCrystal_PCF8574.h"
LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 20 chars and 4 line display
void setup()
{
lcd.init(); // initialize the lcd
lcd.backlight();
Serial.begin(115200);
}
void loop()
{
int row, col;
byte rxbyte;
byte rxByte1;
// when characters arrive over the serial port...
if (Serial.available()) {
// read all the available characters
while (Serial.available() > 0) {
rxbyte = Serial.read();
if (rxbyte == 254) // Matrix Orbital uses 254 prefix for commands
{
while(Serial.available() == 0);
rxByte1 = Serial.read();
switch (rxByte1)
{
case 66: //backlight on (at previously set brightness)
while(Serial.available() == 0);
Serial.read();
lcd.backlight();
break;
case 70: //backlight off
lcd.noBacklight();
break;
case 71: //set cursor position
while(Serial.available() == 0);
col = Serial.read(); //get column byte
while(Serial.available() == 0);
row = Serial.read();
lcd.setCursor(col-1, row-1);
break;
case 72: //cursor home (reset display position)
lcd.setCursor(0, 0);
break;
case 74: //show underline cursor
lcd.cursor();
break;
case 75: //underline cursor off
case 84: //block cursor off
lcd.noCursor();
lcd.blink_off();
break;
case 76: //move cursor left
// lcd.command(16);
break;
case 77: //move cursor right
// lcd.command(20);
break;
case 78: //define custom char
uint8_t charMap[8];
uint8_t temp;
uint8_t charPos;
while(Serial.available() == 0);
charPos = Serial.read();
for (temp = 0; temp < 8; temp++)
{
while(Serial.available() == 0);
charMap[temp] = Serial.read();
}
lcd.createChar(charPos, charMap);
break;
case 83: //show blinking block cursor
lcd.blink_on();
break;
case 86: //GPO OFF
//implement later
break;
case 87: //GPO ON
/*temp = serial_getch();
if (temp == 1)
{
GPO1 = GPO_ON;
}*/
break;
case 88: //clear display, cursor home
lcd.clear();
break;
case 152: //set and remember (doesn't save value, though)
case 153: //set backlight brightness
//not implemented
break;
//these commands ignored (no parameters)
case 35: //read serial number
case 36: //read version number
case 55: //read module type
case 59: //exit flow-control mode
case 65: //auto transmit keypresses
case 96: //auto-repeat mode off (keypad)
case 67: //auto line-wrap on
case 68: //auto line-wrap off
case 81: //auto scroll on
case 82: //auto scroll off
case 104: //init horiz bar graph
case 109: //init med size digits
case 115: //init narrow vert bar graph
case 118: //init wide vert bar graph
break;
default:
//all other commands ignored and parameter byte discarded
while(Serial.available() == 0);
Serial.read(); //dump the command code
break;
}
return;
} //END OF COMMAND HANDLER
lcd.write(rxbyte);
return;
}
}
}
Скачать библиотеку для работы с PCF8754 можно тут
Пример вывода системной информации на дисплей:
Его можно упаковать в мыльницу, в распечатанный на 3D принтере корпус или врезать прямо в панель системного блока.
Управляется всё это счастье через программу LCD Smartie, на данный момент последняя стабильная версия — 5.4 и вряд ли уже будут другие. В ней нужно указать размер дисплея:
а так же его тип — matrix, порт, к которому он подключен, и скорость порта (не более 19200 bps, иначе плагин выдаст ошибку и не сможет передавать данные на дисплей):
Программа может создавать до 20 информационных экранов, для каждого из которых можно настроить содержание, время показа, анимацию, эффекты перехода… В динамике выглядит примерно так:
Конечно, с информативностью полноценного монитора такой экран не сравнится, но для вывода основной системной информации он вполне достаточен и почти не нагружает при этом процессор.
Самые обсуждаемые обзоры
+69 |
3287
133
|
+50 |
3523
66
|
+28 |
2487
46
|
+37 |
2797
40
|
+55 |
2022
37
|
https://aliexpress.ru/item/item/32991449983.html
Увы, проблема в том, что сам Гайвер не имеет отношения к софту, а софт довольно кривой и выводит максимум 17 параметров(если повезёт).
Например, работает только с видеокарточками от нвидиа(которые сейчас никто не берёт). С амд проблемы.
Сколько не бился, но корректно температуру проца тоже не хочет выводить.
И обновлений софта тоже можно не ждать.
В итоге выводишь не то, что хочешь, а то, что работает.
Кроме того — там можно купить только I2C модуль для подобных дисплеев, интерфейс один и тот же.
Да и вы только о цену доставки говорие. Меня инересует — сколько стоит товар, дошедший до меня. Вне зависимости — сколько цена и сколько — доставка. Китай же — там два разных продавца имеют очень разные цены — и товара, и доставки.
Софт для прямой работы ардуины и PCF8754 спокойно находится гугляжом. Даташит тоже, не секретный.
Не подходит для передачи «быстрых» данных, т.к. I2C очень медленная шина. Но моргать светодиодами-релюхами и контролировать нажатия кнопок может спокойно.
ЧЯДНТ?
Шина IIC широко используется даже в современных матерях, планшетах и ноутбуках.
А в телевизорах так вообще стандарт.
Софтовая реализация на любом МК работает без проблем. То есть при наличии ног можно организовать любое требуемое количество мастеров и сделать параллельную работу с устройствами.
Так что насчёт светодиодов/реле/кнопок вы явно загнули.
Сейчас берут что то типа nzxt Z серию
Либо берется компактный hdmi дисплей и выводится инфа с aida64 monitor, либо Rainmeter. На выходе можно получить действительно красивые результаты. Дисплей HDMI, так что юзер не ограничен устарелым софтом для его контроля, можно выводить веб / чаты / плееры итд.
Мне нравятся такие дисплеи, так и не придумал правда что с ним делать ) https://aliexpress.ru/item/item/1005002571752569.html
И это замечательно
16:9 удобнее, на самом деле. В правильном корпусе как хай-енд смотрится
По моему мнению (ИМХО!) дисплеи, к которым можно подключить скалер, более гибче в использовании. А специально малиновые в редких случаях используют малиновый разъем для коннекта, в большинстве в комплекте идет скалер для подключения к HDMI, посредством П-образного переходника.
По цветам все там хорошо, по работе именно как стримера — все летает. Разрешение — опять же, это стример, который не смотрят в упор как смарт. Все там хорошо, на самом деле
Как вы будете юзать сенсор «на любом дисплее»?
И вообще, если вы говорите про специальные дисплеи к малине, то основная масса их с HDMI входом, но конструктивно сделаны для простого механического сопряжения с малиной. Но все это удорожает дисплей. Хотя против их ничего не имею. Но представденный выше широкоформатный дисплей очень неплохо вписывается в переднюю панель самодельного медиаустройства. И если вам, и другим такое решения, как минимум не нравится, другому количеству это очень даже ничего ;) Кому нравится пиво, а кому квас). Ктото вообще юзает например медиаплеер на Волумио без экрана, а кому жизненно необходимо видеть что играет, как играет, и чтоб еще стрелочки индикаторные дрыгались.
Там гемморой будет, а не сноровка :) Но да, можно, если куча времени есть
Только возникает вопрос накуа
А зачем температуры вообще знать если нормально настроенный комп с нормальным обдувом так и так работает хорошо и не требует вмешательства?
Загрузка памяти из той же оперы, вместо дисплея за 100$, можно купить 32гб памяти ddr4 И в домашних делах вообще не знать про то что она кончается. Про ддр3 говорить страшно, по цене ардуины и дисплея из поста, можно взять плашку 4-8гб.
Делается это все For fun and science как обычно, просто в дисплее на 2-4 строки нет никакого FUN, как и science нет в припаивании четырех проводов и заливки готовой прошивки.
А писать свой кривой софт для матричного дисплея, зачем? Особенно много FUN в поддержке таких домашних решений…
Под лсд никакие мониторы и матрицы не нужны )
Где моддинг, а где необходимость в нем :) Не смешите. Спектр я тоже люблю посмотреть, ну вот хочется и все. Трек, кстати, тоже показывает
У меня 32гб. И когда в хроме количество закладок за сотню переваливает, оно уже не кажется, что много
А я о чем?
RTSS (riva tuner...) не просто так статистик сервер, хорошие тесты идут на компе, а обработка статистики идет на другом компе.
Странно, браузер + по мелочи запущено, почти 18гб занято и ничего не вылетает, чяднт?
Берём две разномастные планки памяти по 8ГБ.
Настраиваем тайминги по самой быстрой.
Заполняем память до половины.
BSOD!Профит!2 окна, одно +-10 вкладок с одним стримом, второе +-20 вкладок для работы. 5 расширений включая адблок и спонсор блок.
Ну, лень все время пуск-стоп всего хозяйства, запускаю, если не нужен какой-то — ставлю на паузу, не выключая.
Ах, да — 2GB занято рам-диском, где живет своп винды. Больше ей не положено.
Примерно так попробовал мыслить как вы…
В ответ я получил кучу бесполезного флуда который привел к пустым спорам, сам флуд не сильно относился к теме вопроса и заключался в «А ВОТ Я СДЕЛАЛ У МЕНЯ ЛУЧШЕ», при том ничем не лучше =)
ps Про программируемое знакоместо знаю
Проще монитор от нетбука + скалер + виджеты
В мелкую пайку смогут не только лишь все.
а по цене + — одинаково, монитор был, 12в/1а БП — тоже был, купил только скалер — чтото в районе 700р
а по функционалу — в разы информативнее
Если сильнее заморочится, то можно использовать матрицы от планшетов.
и экранов и мониторов килограммы
вот как раз монитор из планшета, на акб, чтоб удобнее с собой таскать
2. датчики перегрева
Вот только, как их теперь найти…
На одно только питание уходит более 500руб и в итоге за поделие цена выше 1000руб.
А такие дешевые бп покупать опасно: mysku.club/blog/ebay/58888.html.
Программа LCDMonitor
Программа LCDHype
Компьютерный монитор
Так что — двух.
Если всё же нет, на что я очень надеюсь, то обратите, пожалуйста, внимание, что я комментировал ваше утверждение о двух линиях данных для I2C…
А там, на самом деле, одна линия данных, и вторая — тактового сигнала.
Да хоть телепатически. :)
Читайте описание I²C, что ли: