아두이노용 RGB LCD Shield 조립 및 퀵 스타트 가이드

여기서 설명할 제품은 아두이노용 RGB LCD 쉴드입니다. 16x2 character LCD를 탑재하고 있습니다.

보통 LCD는 마이크로컨트롤러와 연결할때 마이크로컨트롤러의 많은 핀을 필요로 하게 되어 다른 주변 장치를 연결하기 곤란하게 만드는 경우가 많습니다. 16x2 character LCD의 경우 LCD를 제어하기 위해 6개의 디지털 핀과, RGB 백라이트를 제어하기 위해 추가로 3개의 디지털 핀이 필요해서 총 9개의 핀이 필요합니다. 9개는 아두이노의 핀의 절반에 해당하는 숫자죠.

purple.jpeg
그래서 디자인된 제품이 본 제품인데 16x2 character LCD, 3개의 백라이트 핀, 5개의 키패트 핀을 단 두개의 아두이노 I2C 핀을 이용하여 제어할 수 있게 하여 줍니다. I2C방식이기 때문에 LCD를 I2C에 연결하였다고 다른 I2C장치를 못 연결하는 것이 아니기 때문에 LCD를 연결할 때 많이들 고민하는 문제를 싹 해결하여 주게 됩니다.

bluewhiteshield.jpeg
또 4개의 방향 버튼과 한개의 선택버튼이 있어 아두이노와 결합하여 한개의 독립적인 장치로 진행하는 프로젝트에 좋은 제품입니다. 이 제품은 아두이노 UNO와 같이 사용되게 디자인되었으며, 아두이노상의 아날로그 4, 5번상의 I2C핀을 사용합니다. 아두이노 Mega R3와도 완벽히 동작합니다.

제품 구성품

제품의 구성품을 살펴보겠습니다.
parts_list.jpg

1) 저항

키트안에는 5개의 저항이 들어 있습니다. 각각의 저항을 설치 위치는 PCB에는 R1, R2라고 표시되어 있습니다. 이 저항은 1/4W 5% 4.7K 저항(노랑, 보라, 빨강, 금색)입니다. PCB에 RED와 BLUE라고 표시된 부분에 위치해야 할 저항은 1/4W 5% 220오옴 저항(빨강, 빨강, 갈색, 금색)입니다. GREEN이라고 표기된 부분에 위치해야할 저항은 1/4W 5% 330오옴 저항(오렌지, 오렌지, 갈색, 금색)입니다.



2) 포텐셔미터

키트안에는 한개의 10K trim 포텐셔미터가 들어 있습니다. 이 부품은 LCD의 명암을 조절하기 위한 것으로 PCB의 contrast부분에 설치 되게 됩니다. 리셋버튼 옆에 있습니다.



3) 푸쉬버튼

6mm 푸쉬버튼이 6개가 들어 있습니다. 이 푸쉬버튼은 PCB상의 UP, DOWN, LEFT, RIGHT, SELECT, RESET위치에 설치되게 됩니다.



4) i2c Port Expander Chip

MCP23017 I2C (16 input/output) port expander chip칩이 키트안에 포함되어 있습니다. 이 칩때문에 단 두개의 아두이노의 핀을 이용하여 전체 LCD와 버튼의 사용이 가능하게 되죠. 칩에 대한 자세한 내용은 다음 링크를 참고 하십시오. Click here for more info on this chip.

5) male타입 헤더 핀

키트에는 male 타입 헤더핀이 포함되어 있어 아두이노와 본 쉴드를 연결하는데 사용할 수 있습니다.



6) PCB

위의 그림과 같은 PCB기판이 포함되어 있습니다.



162rgblcdnegpurple.jpeg

7) LCD

LCD는 구매하시는 제품에 따라 포함되어 있는 제품도 있고 포함되어 있지 않는 제품도 있습니다.

조립방법

parts.jpeg





제품을 조립을 위해 부품을 확인합니다.



pcb.jpeg


납땜을 위해 PCB를 고정합니다.


r1place.jpeg

R1 저항부터 납땜을 시작하도록 하겠습니다. R1저항은 노랑, 보라, 빨강, 금색 밴드로 표시가 되어 있습니다. 이 저항은 아두이노와 LCD를 제어하는 포트 익트텐터 사이 인터페이스의 한 부분입니다.

저항의 다리를 구부려 R1이라고 표시된 부분에 꼽아 넣습니다. 저항은 극성이 없기 때문에 아무 방향으로 넣어도 상관이 없습니다.



r1flip.jpeg

저항의 다리를 PCB 기판쪽으로 구부려 뒤집어도 떨어지지 않게 한 후 납땜을 합니다.



r1solder.jpeg



r1clip.jpeg

납땜이 다 되면 저항의 다리를 깨끗히 잘라 냅니다.



resplace.jpeg

나머지 저항도 동일하게 납땜을 합니다. R2는 4.7K 저항(노랑, 보라, 빨강, 금색)입니다. RED, BLUE에 오는 저항은 220오옴 저항입니다. 330오옴 저항과 비슷하니 잘 확인하고 납땜을 하여야 합니다. GREEN위치는 330오옴 저항입니다. RED, BLUE, GREEN의 저항은 RGB LCD백라이트 용 저항인데 GREEN LED가 RED, BLUE LED보다 밝아 좀더 높은 저항을 사용하여 세가지 색의 밝기를 맞추어 줍니다.



resflat.jpeg

저항을 PCB에 꼽고,



ressolder.jpeg

하나씩 납땜합니다.



resclip.jpeg

저항의 다리를 잘라 냅니다.

저항의 다리를 잘라 냅니다.


selectplace.jpeg

다음으로는 버튼을 조립하겠습니다. 5개의 버튼은 아두이노에게 방향신호와 선택 신호를 보내기 위해 사용이 됩니다. 버튼들은 I2C 포트 익스텐터 칩에 연결이 되어 있어 아두이노의 핀과 직접적인 연결이 필요없습니다. 버튼은 모두 동일하게 생겼습니다. 버튼을 순서대로 PCB에 꼽아 넣습니다.



buttonflip.jpeg

PCB를 뒤집어서,



buttonsolder.jpeg

각각의 다리를 납땜합니다. 서로서로 쇼트나지 않게 주의하여 납땜합니다.



chipplace.jpeg

다음으로는 I2C 포트 확장 칩(MCP23017-E/SP)을 PCB에 꼽아 넣습니다. 이 칩은 I2C버스를 사용하는 16핀 확장칩으로 I2C버스를 이용하여 16개의 디지털핀을 제어 할 수 있게 하여 줍니다. 16개중 5개는 버튼이 사용하며 6개는 LCD제어에 사용되고, 3개는 백라이트에 사용됩니다. 남은 2개는 사용되지 않습니다.

칩은 설치하는 위치가 있으므로 칩의 U자 부분이 PCB의 U자 부분과 같은 방향으로 설치합니다. 칩의 다리를 잘 구부려 PCB에 꼽습니다.

다음으로 10K 포텐셔 미터를 RESET버튼 옆에 설치합니다. 포텐셔미터는 한방향으로만 설치가 됩니다.



chipflip.jpeg

PCB를 뒤집어 납땜합니다.







headercut.jpeg

헤더를 위와 같이 10핀, 8핀, 그리고 6핀 두개로 분리합니다.





headerplce.jpeg

헤더를 아두이노 위에 위치시킵니다. 예전 버전의 아두이노를 가지고 있다며 위의 사진처럼 핀두개가 AREF근처에서 나올 수 있습니다. 아두이노를 업그레이드 할 계획이 있다면 이 두개 핀을 잘라버지리 말고 유지 하는 것이 좋습니다.



shieldplace.jpeg

헤더를 연결한 아두이노 위에 쉴드를 위치 시킵니다.





shieldsolder.jpeg

헤더를 납땜합니다.





charheadplace.jpeg

다음으로 LCD를 연결하겠습니다. LCD연결을 위한 헤더를 꼽습니다. RGB 18핀 디스플레이를 헤더에 연결합니다. 만약 단색의 16핀 LCD를 연결하려고 하면 맨 오른쪽 핀 두개는 남겨 놓고 연결합니다.



charplace.jpeg

PCB에 보면 사각형 모양의 LCD위치가 표시되어 있습니다. 이 위치에 맞게 연결합니다.





charsolder.jpeg

납땜합니다.





charflip.jpeg

뒤집어서 LCD헤더를 납땜합니다.



charclip.jpeg

납땜이 끝났으면 헤더의 다리를 잘 잘라냅니다. 잘라 낼때는 잘라낸 금속이 튀어나가 다칠 우려가 있으므로 몸쪽으로 튀지 않게 잘 잘라 냅니다. 보호안경을 쓰면 더 좋습니다.

조립이 완성 되었습니다.



purple.jpeg

RGB LCD쉴드 사용하기

본 쉴드는 사용하기 쉽게 디자인되었습니다. 쉴드를 아두이노에 연결하고 라이브러리를 github에서 다운 받습니다. 예제는 RGB 백라이트를 어떻게 제어하고 키패드를 어떻게 읽는지를 보여주고 있습니다.

Library 다운로드 하기

LCD와 버튼을 제어하기 위해서는 반드시 아래에 언급하는 라이브러리를 사용해야 합니다. 이 라이브러리는 포트 확장기를 통해 명령을 번역하여 줍니다.



라이브러리는 다음 페이지에서 확인 할 수 있습니다. Github RGB LCD library page.

다음의 라이브러리를 다운 받고 설치합니다. Download the Adafruit RGB LCD Shield Library

라이브러리를 설치한 후 아두이노 IDE를 다시 실행 시킵니다.

라이브러리를 설치하면 다음 경로에서 File->Examples->Adafruit_RGBLCDShield->HelloWorld 예제를 선택할 수 있습니다. 스케치를 업로드 하면 테스트버튼과 LCD 백라이트 제어를 테스트 할 수 있습니다.

밝기 조절하기

쉴드에 장착되어 있는 Character LCD는 포텐셔미터로 밝기를 조절할 수 있습니다. 포텐셔미터를 돌려 보면 글자가 나타났다 흐려졌다 하는 것을 확인 할 수 있습니다.



공유된 핀들

I2C핀들은 보통 다른 용도의 핀들과 공유가 됩니다. 본 쉴드를 연결하려면 I2C로 핀을 사용하여야 하므로 I2C핀에 I2C를 지원하지 않는 장치는 사용될 수 없습니다. 각각의 제품별 I2C핀들입니다.

Uno/Duemilanove/Diecimila - Analog 4Analog 5
Mega 1280 및 2560 - Digital 2021
Leonardo 및 다른 32u4-기반 제품들 - Digital 23

스케치 코드 작성하기

Adafruit_RGBLCDShield 라이브러리는 LiquidCrystal 라이브러리에서 파생된 라이브러입니다. 만약 사용하던 LiquidCrystal 라이브러리 함수가 있다면 그대로 사용하여도 똑같이 동작합니다.

RGB LCD 쉴드 제어를 위해서는 두개의 추가적인 함수가 제공되는데 그중 하나는 lcd.setBacklight(color)함수입니다. 이 함수는 RGB LCD의 백라이트를 제어합니다. 이 함수는 RGB 백라이트에 PWM신호를 주는 것은 아니며 OFF를 포함하여 8개의 다른 색을 선택할 수 있게 합니다. 색을 기억하기 쉽게 하기 위하여 아래와 같은 #define문을 정의하였습니다.

// These #defines make it easy to set the backlight color
#define OFF 0x0
#define RED 0x1
#define YELLOW 0x3
#define GREEN 0x2
#define TEAL 0x6
#define BLUE 0x4
#define VIOLET 0x5
#define WHITE 0x7 

다른 하나의 함수는 lcd.readButtons()함수입니다. 이 함수를 호출하면 4개의 방향 키패드와 선택버튼을 한번에 읽어 오게 됩니다. 함수가 리턴하는 변수에는 각각의 버튼에 대한 비트가 설정되어 있습니다. 함수를 호출하고 리턴되는 변수의 비트값을 검사하여 버튼의 상태를 알수 있습니다.

라이브러리는 버튼 debouncing을 내부적으로 수행하여 주기때문에 코드에서 debouncing시킬 필요는 없습니다.

  1. uint8_t buttons = lcd.readButtons();
  2. if (buttons) {
  3. if (buttons & BUTTON_UP) {
    1. lcd.setBacklight(RED);
  4. }
  5. if (buttons & BUTTON_DOWN) {
  6. lcd.setBacklight(YELLOW);
  7. }
  8. if (buttons & BUTTON_LEFT) {
  9. lcd.setBacklight(GREEN);
  10. }
  11. if (buttons & BUTTON_RIGHT) {
  12. lcd.setBacklight(TEAL);
  13. }
  14. if (buttons & BUTTON_SELECT) {
  15. lcd.setBacklight(VIOLET);
  16. }
  17. }

모토크롬 디스플레이 사용하기

모노크롬 디스플레이 백라이트는 RED핀에 의해 제어됩니다. ON/OFF 제어를 할 수 있습니다.

uint8_t buttons = lcd.readButtons();

  if (buttons) {
    lcd.clear();
    lcd.setCursor(0,0);
    if (buttons & BUTTON_UP) {
      lcd.print("UP ");
      lcd.setBacklight(ON);
    }
    if (buttons & BUTTON_DOWN) {
      lcd.print("DOWN ");
      lcd.setBacklight(OFF);
    }

아두이노에 꼽지 않고 사용하기

쉴드는 아두이노에 헤더에 꼽지 않고 패널 등에 고정하여 사용하거나 다른 타입의 마이크로컨트롤러 보드와 연결하여 사용할 수 있습니다.

5V 전원핀에 5V를 연결하고 그라운드를 GND에 연결한 후 SCL핀을 I2C클럭에 SDA를 I2C data라인에 연결합니다.

  • 아두이노 우노의 경우 SCL은 아날로그 5번핀, SDA는 아날로그 4번핀임
  • 아두이노 메가의 경우 SCL은 디지털21, SDA는 디지털20핀임
  • 아두이노 레오나르도의 경우 SCL은 디지털3번, SDA는 디지털2번 핀임
중요: 아래와 같이 결선 하십시오. GND핀은 5V핀 옆의 것을 사용하지 말고 VIN핀 옆의 GND를 반드시 사용하십시오.
Firmware

Arduino library code is available here at github

다운로드를 위해서 상단 메뉴바의 ZIP버튼을 클릭하고 이름을 Adafruit_RGBLCDShield 바꾸어 폴더에 압축을 풉니다. Adafruit_RGBLCDShield 폴더에 Adafruit_RGBLCDShield.cpp 와 Adafruit_RGBLCDShield.h 파일이 있는지 확인합니다.

Adafruit_RGBLCDShield library 폴더를 아두이노 IDE의 /libraries/ folder 에 카피합니다. library/folder 폴더가 없으면 생성합니다. IDE를 재시작합니다.

PCB File

Schematic and Layout files in Eagle 6 format are here at github

제품정보:  http://vctec.co.kr/front/php/product.php?product_no=879&main_cate_no=161&display_group=1

가치창조기술

Comments