Translate

четверг, 2 августа 2018 г.

Сломанный дисплей Nokia 5110. Как подключать?

Сегодня небольшой пост о том, как я чинил дисплей для Nokia с Али-экспресса. Кому-то может пригодиться, хотя явление неприятное, особенно, если дисплейчик такой приходит первый раз, и понятия не имеешь, что с ним делать. Мне повезло, у меня один уже был, так что неисправность была очевидной. В то же время, если ваш не работает, то не надо сразу впадать в панику и всё разбирать, проблема может быть и в программном коде. А может быть в замыкании или плохо пропаянных ножках, их надо прозвонить в первую очередь, благо, что точек для пайки две для пайки каждой ножки - сверху и снизу платы, надо всё между собой прозвонить - может припаяли плохо? 
Запустить мне свой экранчик, кстати, удалось в своё время далеко не с первой попытки, а всё дело, конечно же, крылось в библиотеках и очень похоже, что моей конкретной версии программы-компиллятора, но обо всём по порядку.

Классика жанра :)

Начало проблемы.


Началось всё с того, что я очень ленивый, и мне было лень отложить дисплейчик в сторону от места, где я работал. В результате я на него всё-таки уронил пинцет, и хоть он лежал экраном вниз, я умудрился поставить на экран пару царапин. Обидно. Вывод: поверхность экранчика очень уязвима к царапкам, лучше её заклеивать специальной плёнкой. Хотя да, защита на него, кстати, была наклеена ещё с завода - она не спасла :) Хотел потереть тряпочкой, думал, удастся отполировать царапины. В результате на середине экрана появилось ещё в добавок потемнение непонятного цвета. Давить эти дисплеи тоже оказалось нельзя :) Дисплей от неубиваемой Нокии сам по себе оказался не таким уж и неубиваемым. Понимая, что я конкретно накосячил, в холодном поту (ладно, утрирую) экстренно втыкаю его в другой свой проект на макетке вместо заведомо исправного дисплея и... тишина. Ничего не работает. Всё. Сломал. 

Решение проблемы.


Ну, неужели так запросто сломал? Неужели вот прямо так сломал, что ни единого пикселя не работает? Это были следующие, уже более более здравые мысли :)
Начал гуглить, кто такой дисплей ломал ещё до меня :) Не нашёл, но нашёл, как его разбирать.

Сначала сзади надо отжать четыре металлические защёлки и выщелкнуть вот эту железку
Разбирается всё достаточно просто. Отщёлкнул эту железку. Вероятно, экранчик останется в ней. Надо аккуратно из неё всё расщёлкать и вытолкать. Я отковыривал прямо ногтем, специально не задействовал отвёртку, чтоб уж точно ничего не отколоть. С моей аккуратностью это вполне вероятно :) Вам тоже советую действовать решительно, но очень деликатно. Можно взять что-то пластиковое для отковыривания, но экран хрупкий.
Внутри оказываются вот такие коннекторы:

И коннекторы эти - фуфло :)
Крайний правый оказался гнутый. Выправить пинцетом не получилось, выгибать с большой силой не стал. Да, панелька эта с зубчиками маленькая, ничем не прикреплена и хорошо вытаскивается, во всяком случае у меня. Если у вас нет - то выдирать ничего не надо.
Под ней оказываются контактные пластинки на самом экранчике. Их-то я и решил почистить. Собственно, лучше этого не делать, но раз я убедился, что экран не работает (пока что я был уверен, что по моей вине) я решил: или доломать его окончательно, или починить. Потому протёр всё спиртом и поскоблил отвёрткой.

Площадки царапаные - это уже я отвёрткой специально постарался :)
С противоположной стороны коннектор соединяет контактную плату с экраном, её я тоже поскрёб отвёрткой.
Контактная плата экрана 5110 для Ардуино - вид изнутри

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

Дальнейшее решение проблемы.


Но всё же, теперь было понятно, что я ничего не ломал, а дело в плохих контактах. В Интернете пишут, что на десяток дисплеев может приходиться один сломанный. Дисплеи классные, но пишут, что их больше не производят, и мы сейчас скупаем старые запасы, которые китайцы приспособили к подключению для Ардуино. В общем, дисплейчики классные, но брак идёт. В моём случае брак оказался в коннекторе. Я ещё помучился, пытаясь прочистить контакты или как-то получше закрепить площадку с коннектором - экран мигал, текст то появлялся, то исчезал. Я плюнул на это дело и решил, что надо решать проблему кардинально, то есть пайкой. Недолго думая, я решил просто соединить проводками соответствующие контактные площадки. Обратите внимание, что пины идут не в той последовательности, в которой расположены площадки! Экранчику вряд ли по душе пайка, но я решил идти до конца. Паяльник, всё же я взял на 25 ватт. Но мне повезло - медные площадки лудились идеально, хватало мгновенного касания жалом. Я не стал их пролуживать качественно по всей поверхности, решил, что главное - ничего не перегреть. Очевидно, где-то внутри к ним подпаяны контакты от самого дисплея, и если они отпаяются от температуры, будет уже ничего не восстановить. А дальше такими же короткими пайками я припаял проводки. Две площадки случайно слил оловом вместе. Чтобы их разъединить - приложил между ними стальную иглу и коснулся жалом. Олово не смачивает сталь без специальных флюсов, так что припой сразу растёкся и площадки разъединились.
В итоге, когда всё спаял и собрал, получилось как-то так:

Просьба: увести от экранов перфекционистов
Проверив, что ничего не коротит, разогнув все проводки, я наконец решил подключить дисплей и... о, чудо: всё заработало! Дисплей работает, и где-то неделю уже с ним проблем нет.
Паять или не паять - это личный выбор каждого :) Думаю, когда всё не работает, как у меня, то рискнуть стоит, если есть какие-то навыки пайки smd и микро-пинцет. Работа небольшая, но требующая аккуратности.

А как же, всё-таки, его запускать?


Думаю, если вы это читаете, это может быть и ваш первый дисплей, так что, если ничего не работает, не надо отчаиваться, может быть проблема и просто в самом коде. Вернее скорее всего - в библиотеках. Библиотеки к дисплеям очень прожорливые, хуже только с прожорливостью (из того что я встретил) у sd.h для работы с картой памяти, но о ней как-нибудь потом. А прожорливость библиотек для Nikia 5110 обусловлена всякими графическими прибамбасами, которые часто нам совсем и не нужны. В библиотеку могут быть вшиты функции графических примитивов, ещё много всякой ерунды, а нам, может, надо всего-навсего данные с датчика вывести.

В общем, для задач вывода текста, экономии памяти Arduino и для тестирования работоспособности по принципу вывода "Hello, world!", я рекомендую библиотеку pcd8544:


Мне её оказалось достаточно для проекта метеостанции, которую я ещё не доделал, но которая из-за кучи датчиков и записи данных на карту оказалась очень прожорливой, так что библиотеки Адафрут оказались непозволительной роскошью.

Итак, для начала соединим всё на макетке. Подозреваю (я только подозреваю, но я не стал рисковать дисплеем (да, я паранойщик :))) - можно всё подключать напрямую и подавать пять вольт, но не надо так! Возможно, это сократит срок службы дисплея.

Мой вариант подключения:

RST - 10 килом;
CE - 1 килом;
DC - 10 килом;
DIN - 10 килом;
CLK - 10 килом;
VCC - +3,3 вольта (на Ардуине должен быть такой пин)
LIGHT - через резистор (лучше подстроечник, 1-10 килом) соединить с землёй, или вообще его пока оставить - это подсветка, только и всего, на первом запуске она не нужна.
GND - общий, земля, минус питания, как его ещё обозвать? :)

На счёт килоомов: строжайше следовать рецепту не так важно. В моём (уже не новом) дозиметре на микроконтроллере PIC - там я подключал аналогичный дисплей через 3,3 килома. В общем, 10 к дано скорее, как наиболее распространённый номинал, и понятно, что речь идёт просто о килоомах, не сотнях ом, не мегомах - вот и всё.

Теперь надо без ошибок подключить пины через эти резисторы к Ардуино. Я думаю, что подключать текстовый дисплей QC1602A было сложнее и тоскливее.

Теперь текст прошивки для библиотеки pcd8544.

#include <PCD8544.h>
//Тут написано какой пин куда тыкать в Ардуино// pin 3 - CLK// pin 4 - DIN// pin 5 - D/C// pin 6 - RST// pin 7 - CEstatic PCD8544 lcd;
// Увы-увы! Библиотека так проста, что в ней нельзя задавать свои пины для дисплея!// Но это ведь не единственная библиотека ;)

void setup()
{
  lcd.begin(84, 48);
// Тут мы инициализировали дисплей и задали его размер в точках, уточните размерность вашего, но скорее всего, она такая же: 84х48.
  delay(1000);
// Я оставлю этот делэй тут - пусть секундочку при включении всё прогреется, установится, напряжения придут в норму, скорее всего, его можно убрать, но лучше давать небольшой интервал технике на раскачку для защиты от сбоев.
 lcd.setCursor(0, 0);
 lcd.print("Hello, world!");
}

void loop()
{
}

Сейчас по-быстрому скомпиллировал этот текст в Ардуину - всё работает. А вот если у вас не работает, то надо думать. Перепроверить все соединения, возможно, всё-таки поискать другие библиотеки, совместимые с вашим компиллятором, а уж если и там всё глухо, то начинать копать сам экран. Всё же, я вижу простейшим решением не мучиться с первым дисплеем -  сразу купить хотя бы пару. Второй пригодится для другого проекта, а может и поможет сэкономить кучу времени по выявлению неисправности первого. Но мой первый оказался целым, не повезло на второй :) 
А на сегодня это всё. Исправных вам деталей и творческих успехов! 


2 комментария:

  1. Достаточно было ластиком потереть контакты на плате и дисплее и всё бы заработало

    ОтветитьУдалить