LCD Keypad Shield - лудим, паяем, шилды починяем...


Здравствуйте! Мой обзор будет коротким, на этом ресурсе уже есть подробный обзор на эту «железку» от товарища Brother_Thief.
Для одного проекта мне понадобился LCD Keypad Shield, он же дисплей 1602A с кнопками. Заказал у одного продавца сразу комплект Shield и Arduino UNO R3. Доставка заняла 20 дней с момента оплаты товара.
Скрин заказа:

Ни с одной платы не был смыт флюс, да и ладно, не в первый раз, наверное на это уже внимание никто не обращает. Сразу решил проверить — прошил, собрал, включил…
Скетч которым прошил

#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins 
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() { 
  // set up the LCD’s number of columns and rows: 
  lcd.begin(16, 2); 
  // Print a message to the LCD. 
  lcd.setCursor(0,0); 
  lcd.print("LCD Key Shield"); 
  lcd.setCursor(0,1); 
  lcd.print("Press Key:"); 
}

void loop() { 
  int x; 
  x = analogRead (0); 
  lcd.setCursor(10,1); 
  if (x < 60) { 
    lcd.print ("Right "); 
  } 
  else if (x < 200) { 
    lcd.print ("Up    "); 
  } 
  else if (x < 400){ 
    lcd.print ("Down  "); 
  } 
  else if (x < 600){ 
    lcd.print ("Left  "); 
  } 
  else if (x < 800){ 
    lcd.print ("Select"); 
  } 
}


Модуль не реагировал на нажатия кнопок, вот что было на дисплее:

При отключенном шилде от Arduino и подаче только лишь питания модуль вёл себя вполне адекватно — чистый экран. Если покрутить переменный резистор контрастности (он один на плате), то появлялись в верхней строке полноценные тестовые квадраты. Видимо Arduino — «труп». На всякий случай решил залить прошивку от сигнализации из этого обзора и посмотреть на поведение платы. На моё удивление плата вела себя вполне адекватно. На просторах интернета был найден тестовый скетч для проверки выходов Arduino.
Скетч для тестирования выходов Arduino

#define FIRST_PIN 0 // первый вывод
#define LAST_PIN 19 // последний вывод

void Test1(byte pin)
{
  if(pin < 10) Serial.print(" PIN:  ");
  else Serial.print(" PIN: ");
  Serial.print(pin);
  pinMode(pin, OUTPUT);
  digitalWrite(pin, 0);
  Serial.print("    LOW: ");
  if(!digitalRead(pin)) Serial.print("OK  ");
  else Serial.print("FAIL");
  digitalWrite(pin, 1);
  Serial.print("  HIGH: ");
  if(digitalRead(pin)) Serial.print("OK  "); 
  else Serial.print("FAIL");
  pinMode(pin, INPUT);
  Serial.print("  PULL UP: ");
  if(digitalRead(pin)) Serial.print("OK  ");
  else Serial.print("FAIL");
  digitalWrite(pin, 0);
}

void Test2(byte pin)
{
  Serial.print("     ");
  pinMode(pin, OUTPUT);
  digitalWrite(pin, 1);
  delay(5);
  if(!digitalRead(pin))Serial.println("SHORT");
  else Serial.println("OK");
  pinMode(pin, INPUT); 
  digitalWrite(pin, 0);

}

void setup() {
  Serial.begin(9600); 

  Serial.println("Test of short circuit on GND or VCC and between pins:");
  Serial.println();
  for(byte i = FIRST_PIN; i <= LAST_PIN; i++) 
  {
    for(byte j = FIRST_PIN; j <= LAST_PIN; j++) 
    {
      pinMode(j, INPUT);
      digitalWrite(j, 0);
    }
    Test1(i);

    for(byte j = FIRST_PIN; j <= LAST_PIN; j++) 
    {
      pinMode(j, OUTPUT);
      digitalWrite(j, 0);
    }
    Test2(i);
  }

  for(byte j = FIRST_PIN; j <= LAST_PIN; j++) 
  {
    pinMode(j, INPUT);
    digitalWrite(j, 0);
  }
}

void loop() {}


Результат нормального тестирования:
Test of short circuit on GND or VCC and between pins:

 PIN:  0    LOW: FAIL  HIGH: OK    PULL UP: OK       OK
 PIN:  1    LOW: OK    HIGH: FAIL  PULL UP: FAIL     SHORT
 PIN:  2    LOW: OK    HIGH: OK    PULL UP: OK       OK
 PIN:  3    LOW: OK    HIGH: OK    PULL UP: OK       OK
 PIN:  4    LOW: OK    HIGH: OK    PULL UP: OK       OK
 PIN:  5    LOW: OK    HIGH: OK    PULL UP: OK       OK
 PIN:  6    LOW: OK    HIGH: OK    PULL UP: OK       OK
 PIN:  7    LOW: OK    HIGH: OK    PULL UP: OK       OK
 PIN:  8    LOW: OK    HIGH: OK    PULL UP: OK       OK
 PIN:  9    LOW: OK    HIGH: OK    PULL UP: OK       OK
 PIN: 10    LOW: OK    HIGH: OK    PULL UP: OK       OK
 PIN: 11    LOW: OK    HIGH: OK    PULL UP: OK       OK
 PIN: 12    LOW: OK    HIGH: OK    PULL UP: OK       OK
 PIN: 13    LOW: OK    HIGH: OK    PULL UP: OK       OK
 PIN: 14    LOW: OK    HIGH: OK    PULL UP: OK       OK
 PIN: 15    LOW: OK    HIGH: OK    PULL UP: OK       OK
 PIN: 16    LOW: OK    HIGH: OK    PULL UP: OK       OK
 PIN: 17    LOW: OK    HIGH: OK    PULL UP: OK       OK
 PIN: 18    LOW: OK    HIGH: OK    PULL UP: OK       OK
 PIN: 19    LOW: OK    HIGH: OK    PULL UP: OK       OK


С Arduino всё хорошо, начал проверять шилд тестером и на моё удивление между выводами D5, D6, D7 было короткое замыкание. Как позже выяснилось все эти выводы были замкнуты с выводом GND. Просмотрел плату на наличие оловянных «соплей» — их нет, всё отлично. Значит сдох сам дисплей 1602A — ну что же, ждать ещё 20 дней нового модуля не было никакого желания, решил выпаивать. Выпаял, проверяю дисплей — он рабочий, как так-то?!
Беру плату с кнопками и проверяю её тестером — короткое замыкание на плате. Опять просматриваю плату — всё идеально, в голове уже закралась мысль что это многослойный текстолит, выпаял контактные «штырьки» проверил на наличие соплей — их нет, а КЗ есть.
На моё счастье из-за перегрева отвалилась одна контактная площадка и было решено убрать всю дорожку, пинцетом зацепил и начал тянуть, почти в конце пути дорожка «не захотела» легко отставать от текстолита и в этом месте было короткое замыкание, плата оказалась не до фрезерована (не до травлена). На всех трёх дорожках был этот недостаток. На фото это место выделено. Плату я не щадил, все дорожки были удалены и заменены проводом МГТФ.


Проверяем… Бинго!

Всё работает, всё хорошо за исключением внешнего вида :)
Итог: шилд очень интересный и удобный для разных устройств, к покупке рекомендую. Скорее всего у продавца начнутся проблемы с возвратами, хоть это и не его вина, но «попадает» именно он. Предположу что «кривая» вся партия. В свою очередь я спор открыл, и скорее всего покажу ему этот обзор, чтобы проверяли платы перед отправкой.
Всем добра! Возможно эта информация кому-то пригодится, спасибо за внимание.
Планирую купить +26 Добавить в избранное +37 +68
+
avatar
  • abyrwalg
  • 17 августа 2017, 01:16
+9
редкий за последнее время случай, когда дело доведено до конца, а не просто описан некий феномен!
+
avatar
+1
Цветные маски — зло. Очень трудно проверять платы на замыкание.
С непротравом у китайцев встречался редко. Было дело на кастомных платах. Но там и дизайн был специфичный.
+
avatar
+1
можно тестировать же, автоматически или каждое изделие… это не цветные платы, а китайцы делают дешевое ещё дешевле)

а зеленая маска хуже бы продавалась — без корпуса ж) черная дорого-богато)
+
avatar
  • ploop
  • 17 августа 2017, 10:32
+5
можно тестировать же, автоматически или каждое изделие…
Автоматически И каждое изделие. Электоротест называется, добавляет немного к стоимости платы. При больших объёмах и низкой себестоимости плат этот электротест увеличит цену чуть ли не вдвое.
+
avatar
  • Aslan54
  • 17 августа 2017, 07:03
-3
Для одного проекта мне понадобился LCD Keypad Shield, он же дисплей 1602A с кнопками.
Тоже озаботился, автономным ЧПУ контролером, правда дисплей и кнопки раздельно.
здесь


Что то долго идут. Хочется уже опробовать.
+
avatar
  • Kostja
  • 17 августа 2017, 08:14
+1
Понимаю, что тупой вопрос. А где эту штуку можно использовать.
+
avatar
  • kvolk
  • 17 августа 2017, 08:35
+2
Например там где нужно мониторить какие — либо показатели и управлять устройством.
+
avatar
  • alex9972
  • 17 августа 2017, 10:26
+1
Самое элементарное, часы с будильником, чтоб можно было время выставлять кнопками а дальше насколько фантазии хватит.
+
avatar
  • voron82
  • 17 августа 2017, 09:43
0
Спасибо за информацию. Я купил такой же дисплейный модуль, он у меня так же не заработал. Обхожусь пока без него, но приду домой и проверю
+
avatar
  • kvolk
  • 17 августа 2017, 09:49
0
Проверьте, возможно достаточно будет дорезать дорожки.
+
avatar
  • voron82
  • 16 ноября 2017, 22:50
0
Проверил контакты, у меня все нормально КЗ нет. Протестировал ардуино — все хорошо. Но при подключении экрана он просто светится и никакой информации не выводит. Крутил подстроечный резистор — яркость не меняется. Может подскажете что еще можно сделать?
+
avatar
  • kvolk
  • 17 ноября 2017, 10:57
0
Снимите PCF-модуль, распаяйте напрямую на ардуину пины дисплея, проверьте по отдельности пцфку и дисплей.
+
avatar
  • demonk
  • 17 ноября 2017, 11:16
0
Подстроечник на всю шкалу крутили? Там нормальное изображение на очень узком участке на самом краю шкалы. Проверьте мультиметром что напряжение на входе контрастности меняется.
+
avatar
  • kvolk
  • 17 ноября 2017, 11:24
0
Подстроечник на всю шкалу крутили?
Да, по-моему на всю верхнюю полосу.
+
avatar
0
Давно ищу такой-же, но с экраном 20х4. Пришлось самому делать.
+
avatar
  • demonk
  • 17 августа 2017, 10:41
+2
Мне вот интересно, как народ использует такие шилды в конечных устройствах, в корпусе? Я так и не нашел в продаже подходящих толкателей для кнопок. Неужели у всех 3D принтеры или никто дальше настольных экспериментов не продвигался?
Сначала вышел из положения перепаяв все кнопки на другие с длинным штоком и нахлобучив на них колпачки для удобства пальцев.
Потом решил «нахрена мне шилды, которые еще переделывать надо» и стал сам собирать аналоги с уже высокими кнопками.
+
avatar
  • iLink
  • 17 августа 2017, 12:09
+3
Такие штуки очень напоминают
+
avatar
  • Tosha
  • 06 декабря 2017, 14:00
0
о, легендарная моторолка
+
avatar
  • Ammo1
  • 17 августа 2017, 14:05
0
Этажерка из Ардуины и этого шилда — очень удобна для множества устройств. Удивительно, что китайцы не делают готовых корпусов для такой этажерки. Пришлось самому делать.
+
avatar
0
Брал такой. Не разобрался почему (но не только у меня), шилд вешает АЦП ардуинки.