Home » 산딸기 가지고 놀기 » 라즈베리파이 GPIO 활용강좌 : 01 Charter LCD(CLCD) 제어

 라즈베리파이 GPIO 활용강좌  : 01. Charter LCD(CLCD) 제어

Created Date: 2013.04.22
Modified Date: 2014.01.02
revision 2

안녕하세요.

오늘은 16*2 Charter LCD 를 산딸기에 연결해 보았습니다.

IMG_1113

Charter LCD 는 이름 그대로 문자를 표시해주는 LCD 이구요,

16*2는 한줄에 16자를 표현하는 2줄짜리 라는 이야기입니다.

제품은 http://www.eleparts.co.kr/EPX33M7X 입니다.

데이타시트 확인 안하고 막 질렀는데 어쩌다 보니 맞는 놈 이었습니다.

http://learn.adafruit.com/drive-a-16×2-lcd-directly-with-a-raspberry-pi/overview

이곳을 참조하였습니다.

 

1. 라즈베리파이 결선도(Hardware wiring).

제가 가지고 있는 제품과 Adafruit의 참조 페이지의 LCD Pinout을 확인해 보았습니다.

100% 동일했습니다. 그래서 그대로 사용했습니다.

Adafruit의 Wiring Diagram을 확인해 보았습니다.

raspberry_pi_pi-char-lcd

 

그림을 정리하면 이렇습니다.

  • LCD Pin #1 <-> GND
  • LCD Pin #2 <-> +5V
  • LCD Pin #3 <-> 가변저항 ( LCD Pin #3은 글자의 밝기를 조절하는 Pin입니다. 가변저항 없이 GND에 연결하니 최대 밝기로 글자가 나타납니다.)
  • LCD Pin #4 <-> GPIO Pin #25
  • LCD Pin #5 <-> GND
  • LCD Pin #6 <-> GPIO Pin #24
  • LCD Pin #7 ~ #10 은 연결하지 않음 ( 8개 Line으로 제어할 때 사용되는 Pin 입니다.)
  • LCD Pin # 11 <-> GPIO Pin #23
  • LCD Pin # 12 <-> GPIO Pin #17
  • LCD Pin # 13 <-> GPIO Pin #21(Rev B. : gpio 27)
  • LCD Pin # 14 <-> GPIO Pin #22
  • LCD Pin # 15 <-> +5V
  • LCD Pin # 16 <-> GND

LCD 불량 확인용으로 LCD Pin #1,2,15,16만 연결하고 전원을 넣으면 LCD가 켜집니다.

 

2. 소프트웨어설치(Software Install)

 

1) 프로그래밍 준비

다음과 같이 파이썬 및 산딸기 GPIO 관련 패키지를 설치합니다.

$ sudo apt-get install python-dev
$ sudo apt-get install python-setuptools
$ sudo easy_install -U distribute
$ sudo apt-get install python-pip
$ sudo pip install rpi.gpio

 

2) Adafruit의 Character LCD 제어 파이썬 프로그램 받기

$ sudo apt-get install git
$ git clone git://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git 
$ cd Adafruit-Raspberry-Pi-Python-Code 
$ cd Adafruit_CharLCD

 

3) Character LCD Pin 확인

Git으로 받은 Source Code는 Raspberry Pi Type B 의 version 1 용 입니다.

version 2에 맞게, 앞 단계의 GPIO Pin에 맞게 수정해 줍니다.

$ vi ./Adafruit_CharLCD.py

from

def __init__(self, pin_rs=25, pin_e=24, pins_db=[23, 17, 21, 22], GPIO = None):

to

def __init__(self, pin_rs=25, pin_e=24, pins_db=[23, 17, 27, 22], GPIO = None):

수정한 파일의 권한을 실행속성으로 바꿉니다.

$ chmod +x Adafruit_CharLCD.py

실행해 봅니다.

$ sudo ./Adafruit_CharLCD.py

IMG_1115

 

4) LCD에 IP Address 표시하기

Adafruit에서 가져온 Sample Source를 살펴보겠습니다.

#!/usr/bin/python

from Adafruit_CharLCD import Adafruit_CharLCD
from subprocess import *
from time import sleep, strftime
from datetime import datetime

lcd = Adafruit_CharLCD()

cmd = "ip addr show eth0 | grep inet | awk '{print $2}' | cut -d/ -f1"

lcd.begin(16,1)

def run_cmd(cmd):
        p = Popen(cmd, shell=True, stdout=PIPE)
        output = p.communicate()[0]
        return output

while 1:
        lcd.clear()
        ipaddr = run_cmd(cmd)
        lcd.message(datetime.now().strftime('%b %d  %H:%M:%Sn'))
        lcd.message('IP %s' % ( ipaddr ) )
        sleep(2)
  • Line 3 ~ 6 : Adafruit_CharLCD.py 에서 GPIO설정을 가져오고, 기타 필요한 library를 첨부합니다.
  • Line 8 : Adafruit_CharLCD class를 lcd로 정의합니다.
  • Line 10 : IP Address를 확인하기 위한 Shell 명령어 입니다.
  • Line 12 : LCD를 초기화 하기 위한 명령어 입니다. LCD의 DataSheet에 복잡하게 나와있는 Initialize Command를 정리해 둔 것이라고 보면 됩니다.
  • Line 14 ~ 17 : cmd를 실행하여 IP Address를 돌려받기 위한 함수입니다.
  • Line 19 ~ 24 : 2초에 한번씩 IP Address를 확인하고 화면을 Refresh 하는 무한루프 입니다.

Sample을 실행시켜 보겠습니다.

$ sudo ./Adafruit_CharLCD_IPclock_example.py

IMG_1118

8 Replies to “라즈베리파이 GPIO 활용강좌 : 01 Charter LCD(CLCD) 제어”

  1. 팬더골드 댓글:

    LCD 오른쪽 바로 위의 녹색 센서는 온습도계입니다. 다음 포스팅에 사용할 건데 찍혀버렸습니다.

    1. 나무꾼 댓글:

      헙… 그럼 다음 강의내용은 공개된건가요 ㅋ

      1. 팬더골드 댓글:

        강의는 아니구요..ㅎㅎ 제가 온도계가 필요해서 만드는 중입니다.

  2. @_@ 댓글:

    혹시 한글 출력은 테스트 해보셨나요?

    1. 팬더골드 댓글:

      아직 안해봤습니다.마이컴에서도 되는데 안될리가 있겠습니까?? ㅋㅋ
      테스트해보고 추가토록 하겠습니다..

      1. 팬더골드 댓글:

        한글 안됩니다. ㅠㅠ. 제가 말한 마이컴에서도 되는것은 한글용LCD라고 따로 있네요..
        음…그래서 한글용을 하나 사야되는건가요? ㅠㅠ

        1. @_@ 댓글:

          답변감사합니다…한글을 위해서는 별도 비용이 필요한것이었군요…^^;

        2. 나무꾼 댓글:

          팬더님 한글 지원되는 조고 한번 개발해 보시죠…
          도움을 드릴 수 있을꺼 같습니다.

Comments are closed.

산딸기마을 포스트 검색

공동제작 공동프로젝트 무상후원 기관

산딸기마을 기부하기

산딸기마을 방문자 현황

Flags Countries Visits Page views
South Korea 626063 1845660
United States 10882 26091
Japan 5011 13204
Germany 2755 5151
India 1897 2902
Canada 1729 4640
United Kingdom 1596 2642
Australia 1240 2901
Russia 1219 1677
China 1077 2239
Total Pageviews: 1936700