Дисплей покупця, індикатор покупця, індикатор клієнта, назв багато, але суть одна - це саме той "ламповий" дисплейчик який в багатьох магазинах відображає для Вас багато інформації, на кшталт решти, суми до сплати, позиції яку Ви купуєте, і тд. Через оновлення обладнання, банкрутство магазинів, і ще купу різних причин, такі дисплейчики дуже часто опиняються на смітниках, в гіршому для нас випадку, або на вторинному ринку, і це, як не дивно, кращий для нас випадок, так як по перше не зростає кількість електронних відходів, а по друге - дає можливість нам купити такий дисплейчик, і, наприклад, зробити з нього годинник :)
Подібні теми мабуть нетипові для данного сайту, тому в данній статті я пропоную лише познайомитись з одним з таких дисплеїв. До речі, українського виробництва! А якщо комусь подібна тема буде цікава, то я з радістью поділюсь усім необхідним для того щоб повторити такий проект(наразі він нажаль дуже сирий та заточений саме під мене).
ІКС-Л-2х20
Як нам каже сам виробник (ТОВ "ІКС-Техно"):
Індикатор "ІКС-Л-2х20" (IKC-L-2-20) призначений для роботи у складі блокових реєстраторів розрахункових операцій будь-якого призначення. Індикатор виконує функцію прийняття та відображення інформації та є пасивним пристроєм щодо РРО, у складі якого працює.
Він живиться від 9В до 27В, та сприймає команди по протоколу RS232. Коли ми чуємо RS232, то в голові одразу виникає образ COM або Serial порту, але в цьому дисплеї замість нього - RJ11.
Пропоную поглянути, що нас чекає всередині!
А всередині нас чекає дуууже великий(особливо після дисплеїв типу 1602) символьний вакуумно-люмінісцентний індикатор! "Символьні" дисплеї, це такі дисплеї, в котрих заздалегідь обозначено місце під кожний символ. Цей дисплей наприклад має, 2 лінії по 20 символів. Кожен символ являє собою двовимірний масив пікселів. Зазвичай це 5х8, але в нашому випадку - 5х7. Проте не вийде малювати там будь-що (поки що). Є певна таблиця символів, котрі дисплей може виводити. І в цьому криється ще один плюс конкретно цього, українського дисплею, адже так як він був розроблений для українського ринку, він вміє виводити українські літери! Так, в китайських дисплейчиках типу 1602 це можна зустріти доволі нечасто. Символьну таблицю для цього дисплею ви можете побачити в паспорті цього дисплею за ЦИМ ПОСИЛАННЯМ, або нижче:
Так, це всі символи які може вивести цей дисплей. Насправді можна ще програмувати свої, але судячи з всього, в цьому дисплеї цього не реалізували, а свою прошивку я ще не написав(але планую!).
Дисплеєм полюбовались, тепер подивимось що там позаду нього.
А позаду нас чекає ціла купа мікросхем! Потикавши в них мультиметром, і пошукавши даташити пару десяток хвилин, я зрозумів що є що, тому зараз розповім і вам.
PT6314LQ-009
Це драйвер, який і керує самим дисплеєм. Якщо подивитись на фотографіях вище, можно помітити, що від самого дисплею на плату йде дуже багато виводів/контактів. І от щоб керувати дисплеєм з великою кількістю контактів, потрібна мікросхема з великою кількістю контактів :D
PT6314LQ це назва самої мікросхеми, а от 009 - це вже номер модифікації, від якої залежить та сама символьна таблиця, наприклад якщо б тут було 001, то символи були б зовсім інші, а саме англійські + японські. Але цікаво що про 009 в даташиті на цю мікросхему немає жодної інформації, як і будь де. Можливо це було якесь приватне замовлення лише для подібних дисплеїв від цього виробника, хто зна. Тому єдина інформація про символьну таблицю є в паспорті до цього дисплею. Ну і тепер також тут :)
Atmega8A
Це мікроконтролер. Це такий собі мікро комп'ютер, сюди залили певний код, і він виконує певні функції. А саме - обробка команд які приходять по RS232, і комунікація з драйвером, щоб драйвер виводив на дисплей саме те що нам потрібно. Саме цю мікросхему треба замінити на інший мікроконтролер, з іншим кодом, і тоді можливо на дисплей можна буде виводити нові символи, і робити ще низку прикольних речей. Можливо мікроконтролер можна і не міняти, адже на платі навіть є виводи для програмування мікроконтролеру.
Але це може не спрацювати якщо на мікроконтролері стоїть захист від запису/читання. Або якщо в решті решт не вийде написати код, то для відновлення роботи дисплею знадобиться дуже багато зусиль. Тому краще експериментувати на окремому мікроконтролері, щоб в разі невдачі, просто впаяти на місце старий.
ST232C
Задача цієї мікросхеми одна - вона є сполучною ланкою між RS232 та мікроконтролером. Справа просто в тому, що щоб не вбити мікроконтролер, на нього слід подавати не більше 5В. А в RS232 часто гуляє напруга набагато(по міркам мікроконтролеру) вища, тому ST232C перетворює "високовольтні" команди на звичні для мікроконтролеру.
063AC
Ну і сама нецікава, але не менш важлива мікросхема. Вона займається перетворенням напруги. Справа в тому, що якщо подати 9В на цей дисплейчик, то цього буде забагато для мікроконтролеру, але замало для самого дисплею. Тому тут на платі 2 такі мікросхеми, та що зліва на загальному фото(DC-DC Step Down) - понижує напругу до напруги живлення мікроконтролеру, а та що справа(DC-DC Step Up) - підвищує напругу для дисплею.
Виводимо дані!
З мікросхемами розібрались, але як же тепер на нього вивести хоч щось? Тут є 2 шляхи. Перший - просто підключити його до Serial порту(якщо він у вас ще є звісно) за допомогою дроту RS232-RJ11. Порт в мене є а от дроту немає, тому я пішов другим шляхом - випаяти ST232C.
Після таких манипуляцій ми зможемо напряму підключитись до ліній RX/TX мікроконтролеру, і посилати на нього дані, наприклад за допомогою іншого мікроконтролеру або USB-UART перехіднику. Адже вони вже не будуть посилати "високовольтних" команд, це будуть або 3.3В, або 5В.
Ну а інформація щодо вигляду самих даних, є вже у паспорті дисплею:
Кожной символ ASCII передається:
- – 1-м стартовим бітом;
- – 8-ма інформаційними бітами;
- – 1-м стоповим бітом;
- – без контролю парності
Якщо Ви програмуєте мікроконтролер в середовищі Arduino IDE, або наприклад PlatformIO, то для англійських і багатьох інших символів це просто Serial.print(); Baud Rate, або швидкість Serial-у, кому як зручно, повинна бути 9600. З українськими символами вже складніше, тут нам допоможе таблиця символів про яку ми говорили раніше. Давайте наприклад знайдемо там символ У. Це стовбець 9, і рядок 3. Тому щоб вивести символ У, нам треба зробити Serial.write(0x93); А для символу Ї наприклад це буде Serial.write(0xF4); І тд.
Після виводу хоча б декількох символів, ви скоріш за все зіткнетеся з необхідністю перемістити курсор. Наприклад щоб перекрити раніше написані дані, або ще для чогось. Команда на пересування курсору зазначена в паспорті на цей дисплей:
Для цього я реалізував таку просту функцію. Звісно можна було ще заморочитись щоб вона приймала не байт, а інт, але мені і так годиться.
// byte place from 0x31 to 0x58 (1-40)
void setCursorVFD(byte place)
{
// EOT SOH P ETB
byte cursor_position[] = {0x04, 0x01, 0x50, place, 0x17};
Serial.write(cursor_position, sizeof(cursor_position));
}
І нажаль це все. Більше ніяких команд в паспорті не зазначено! Навіть команди для очищення дисплею! Для цього довелося городити ось такий жах:
void clearVFD()
{
setCursorVFD(0x31);
Serial.print(" ");
setCursorVFD(0x31);
}
Це звісно і є основним приводом для того щоб переписати код в мікроконтролері дисплею. Все таки драйвер підтримує очищення, і очистити дисплей буде набагато швидше і доречніше ніж друкувати 40 разів ' '! Перш ніж робити такі висновки, що команди немає, я звісно багато чого перепробував - і команди від аналогічних японських дисплеїв, і команди іншого дисплею від "ІКС-Техно", але всюди мене чекала невдача. Я навіть написав онлайн листа до "ІКС-Техно", з проханням надати можливо якийсь більш детальний паспорт чи типу того, але відповіді поки що не було. Єдине що я знайшов, це команду на перевірку дисплею. Коли на дисплей будуть виводитись різноманітні символи, щоб переконатись що дисплей справний, і горять лише ті пікселі, які повинні горіти. Але то не цікаво.
Годинник!
Але, не зважаючи на все це, дисплеєм можна користуватись! Повертаючись до того, з чого ми починали - годинник.
Реалізацій можна придумати безліч, і навіть додати відображення погоди! Якщо мікроконтролер підтримує технологію Wi-Fi.
Але як я і казав, проект дуже сирий, і заточений під мене, так як я використовував там бракований RTC модуль, щоб його не викидати. Але якщо ця тема Вам буде цікава, я залюбки напишу дуже докладний гайд виду "Купив, спаяв, запрограмував", щоб кожен бажаючий міг зробити собі такий годинник, або ще щось! Все таки тут вже є корпус, і коштує це щастя на ОЛХ не дуже багато. Я наприклад купував за 375 грн.
Але якщо хтось хоче прямо зараз цим зайнятись, не чекаючи поки я зроблю гайд, то при винекнинні будь яких питань - можете писати мені, я залюбки вам допоможу чим зможу!
Не тільки годинник!
Але не лише для годинника можна використовувати цей дисплей. Все таки це після наших манипуляцій майже звичайний символьний дисплей. Тому і робити з ним можна все, що зазвичай роблять з китайськими символьними LCD дисплеями. Головне щоб символів вистачало ;)
Кімнатний термометр, годинник, погодна станція, вольтметр, амперметр, відображувач навантаження ОЗП, ЦП, Відеокарти і тд.
Навіть лічильник підпсників для ютуб каналу зробити можна :D
(Історична фотографія, коли на каналі "Твій Семпай" ще немає мільйонів підписників)
Топ коментарі (4)
Дуже мила штука
а, можна весь код купив 3 таких ындикатора
Доброго дня! Вибачаюсь за пізну відповідь. Ось код. Одразу попереджаю що я не програміст, тому може виглядати так собі. Але працює! В змінні ssid та password треба підставити дані від своєї WiFi мережі. Або можна переробити код так, щоб воно працювало і без інтернету.
Гарний матеріал, дякую.