2012년 3월 18일 일요일
LCD 쉴드 만들기
2011년 7월 10일 일요일
캐릭터 LCD 연결 4bit 모드
캐릭터 LCD를 구동할 때 소개한 연결 방법은 8bit-모드인데,
이보다 선 연결이 간단한 4bit-모드 를 소개합니다.
두 모드의 다른 점은, 데이터를 8bit씩 한 번에 보내느냐, 4 bit씩 두 번에 걸쳐 보내느냐의 차이입니다.
4 bit-모드는, 한번에 보내는 data는 적지만(8 bit-모드에 비해) , 데이터 선 연결이 8개에서 4개로 적어집니다.
Arduino를 사용하는 대부분의 경우에는 속도가 그리 중요하지 않기 때문에
4bit-모드를 사용한는 것이 편하겠지요.
pin map은 아래와 같습니다.
LCD : Arduino
1 : GND
2 : 5V
3 : Contrast (가변저항에 연결)
4 : 12
5 : GND
6 : 11
7 : 연결없음
8 : 연결없음
9 : 연결없음
10 : 연결없음
11 : 5
12 : 4
13 : 3
14 : 2
플러그하우스에서 판매하는 캐릭터 LCD는
16문자를 한줄에 표시하는 것입니다.
Arduino Example에 있는 LiquidCrystal 의 예제들은 16문자 2줄을 나타내는 LCD 기준이라서
코드를 약간 수정해야 합니다.
Plughouse의 16x1 LCD는
내부적으로 8x2, 그러니까 8문자를 2줄에 표현하는 것이라고 생각하면 코딩이 쉽습니다.
HelloWorld_1601.pde의 코드를 살펴보시면 금방 이해가 가실 겁니다.
그럼 다운 받아서 실행해보세요~
2010년 4월 17일 토요일
아두이노에 캐릭터 LCD를 사용해보자
Arduino보드에 LCD를 연결하여 간단히 원하는 문자열을 표현할 수 있습니다.
먼저 어떻게 생겼는지 볼까요?
포장을 벗겨보면 이런 모양이구요.
왼쪽서부터 핀번호가 1번부터 14번까지인 것이 보이네요.
구입할 때 같이 들어있는 핀헤더를 납땜해서 빵판에 꽂으면 편리합니다.
일반적인 1줄짜리 캐릭터 LCD의 핀맵은 이와 같습니다.
우리가 사용할 것은 둘 중에 왼쪽에 있는 것과 같은 형태입니다.
각 LCD 핀에 해당하는 기능들입니다.
1,2번은 전원단이구요.
3번은 LCD 디스플레이의 콘트라스트 조절
4번은 아두이노 pde파일의 DI와 같은 핀입니다.
5번은 말그대로 Read/Write 선택하는 핀이구요.
6번은 데이터 전송을 Enable하는 핀
7~14번은 전송될 데이터0부터 데이터7까지 8개의 핀입니다.
LCD와 Arduino사이에 점퍼와이어를 연결합니다.
LCD : Arduino
1 : GND
2 : 5V
3 : Contrast
4 : 12
5 : 11
6 : 2
7 : 3
~ : ~
14 : 10
* Contrast는 가변저항의 값을 통해 0~5V 사이의 값을 내보냄으로써 조절합니다.
*더 자세한 내용은 generic_lcd_reference 문서를 참고하세요.
* Arduino와 LCD 사이를 연결하는 핀 매칭은, LCD_HolaWorld.pde 라는 LCD 예제 프로그램을 바탕으로 한 것입니다.
LCD_HolaWorld.pde 파일을 아두이노에 uploading해서 실행시켜보시면,
옆의 사진과 같이 LCD에 문자가 찍혀나오는 것을 보실 수 있습니다.
사진에는 "Hello PlugHouse!"라고 되어있는데,
원하는 문자열을 나오게 하시려면,
printLCD() 함수 안의 문자열을 수정하시면 간단히 됩니다.
2010년 3월 21일 일요일
브레드보드 위에 아두이노 만들기- Arduino Breadboard DIY
이 글은 Building an Arduino on a Breadboard Overview의 내용을 기초로, 의도에 맞게 수정하여 만든 것임을 밝혀둡니다.
Originally created David A. Mellis
Updated from the ITP version by Carlyn Maw
Updated October 23, 2008 by Rory Nugent
Updated to Korean March 21, 2010 by Sokoon
이 튜토리얼은 Atmel의 Atmega8/Atmega168/Atmega328 AVR 마이크로컨트롤러와 FTDI FT232 USB어댑터를 이용하여 브레드보드 위에 아두이노 만드는 방법을 보여줍니다.
1. 부품들
다음과 같은 부품들이 필요합니다. 각 부품을 따로 구입할 수도 있고, Plughouse의 "Arduino Breadboard DIY Kit"을 구입하시면 모든 부품들을 한번에 편하게 받아보실 수 있습니다.
1.1 아두이노를 만들기 위한 기본 부품들
- 브레드보드 1개
- 점퍼와이어 22 AWG (와이어를 벗겨낼 스트리퍼는 별도로 준비하셔야 합니다)
- 7805 볼티지 레귤레이터 1개
- LED 2개
- 220 옴 저항 2개
- 10k 옴 저항 1개
- 10 uF 캐패시터 2개
- 22 pF 캐패시터 2개
- 16 MHz 클록 크리스털 1개
- 택트 스위치 1개
1.2 USB to Serial 어댑터
FTDI FT232 칩을 사용하여 USB포트를 통해 RS-232시리얼 통신을 가능하게 해줍니다.
Arduino에 프로그램을 업로딩할 때 꼭 필요하지만, 그냥 구동만 할 때는 없어도 됩니다.
USB Adapter from Plughouse
1.3 Atmega 칩에 부트로더 굽기
아두이노를 만들기 위해서는 Atmega칩에 부트로더를 구워야 하는데, 초보자들에겐 좀 번거로운 과정입니다. 관심있는 분들은 여기를 보시면 됩니다. 이 문서에서는 이미 부트로더가 심어져 있는 Arduino 칩을 사용하는 방법으로 설명할 것입니다.
ATmega328 with Arduino Bootloader from Plughouse
2. 전원을 위한 회로 만들기
양쪽 전원 레일 연결하기
브레드보드의 양쪽 전원레일을 연결할 수 있도록, 아랫쪽에 점퍼와이어를 연결합니다.
전원 LED
브레드보드의 왼쪽 윗편에, LED와 220옴 저항을 연결합니다. 이것은 전원 LED인데, 브레드보드에 전원이 들어와있다는 것을 눈으로 확인할 수 있고, 또한 보드가 쇼트 났는지도 바로 알 수 있게 해주는 유용한 방법입니다.
3. Atmega8/168/328 연결하기
아두이노 핀 맵(Arduino Pin Map )
위 표는 Atmega칩이 Arduino로 사용될 때, 각 핀들이 어떤 역할을 하게되는지를 알 수 있게해주는 중요한 자료입니다. 실제 아두이노 보드에서는 각 핀이 어떤 역할을 하고, 몇번 핀인지 기판에 인쇄되어 있어 그것을 보면 되지만, 지금과 같은 경우에는 핀을 연결할 때마다 위 핀맵을 참고하여 전선을 연결해야 할 것입니다. 물론 외우셔도 좋구요(^^;) Atmega8/168/328에 대해 더 자세한 정보를 알고싶으면 다음 데이터 시트를 살펴보세요.
Atmega 168 (short version) (long version)
Atmega328 (short version) (long version)
supporting 회로 추가하기
Pin 7 - Vcc - Digital Supply Voltage
Pin 8 - GND
Pin 22 - GND
Pin 21 - AREF - Analog reference pin for ADC (VCC를 연결한다.)
Pin 20 - AVcc - ADC 컨버터를 위한 Suppply voltage. ADC가 사용되지 않을 때는 power에 연결하고, 사용될 때는 로우패쓰 필터를 통해 power에 연결합니다.
(로우패쓰 필터는 power소스에서 나오는 노이즈를 줄여주는 회로입니다. 여기서는 로우패쓰 필터는 사용하지 않습니다.)
RESET 스위치 연결하기
RESET핀에 10k옴 풀업 저항을 통해 +5V 에 연결합니다. 이것은 아두이노가 동작중에 스스로 리셋되는 것을 막아줍니다. 리셋 핀은 그라운드(GND)로 풀다운될 때 리셋됩니다.
작은 tactile스위치(택트스위치, 택트 버튼 등으로도 불린다.)를 추가하여, 새 프로그램을 업로딩할 때나 또는 필요할 때 리셋을 할 수 있도록 합니다. 이 스위치를 짧게 한번 눌러주면, 필요할 때마다 리셋을 할 수 있습니다. 위 사진처럼 리셋 스위치를 아두이노 칩 위에 브레드보드 골짜기를 가로질러 꽂습니다. 그 다음 스위치의 왼쪽 아래다리를 Atmega칩의 리셋 핀에 점퍼와이어로 연결합니다. 스위치의 왼쪽 위 다리는 GND에 전선으로 연결합니다.
캐패시터와 클록을 연결한다
9번핀과 10번핀에 16MHz 외부 클럭(크리스털)을 연결합니다. 그리고 이 두 핀과 그라운드를 연결하는 22pF 캐패시터를 추가합니다.
Arduino pin 13에 LED 연결하기
지금 사용하고 있는 메인칩에는 blink_led 프로그램이 이미 심어져 있습니다(이 blink_led 프로그램은 아두이노 소프트웨어 example에서 찾아볼 수 있습니다). blink_led 프로그램은 아두이노의 13번핀을 깜빡이게 하는데, 기억해야 할 것은 아두이노의 13번 핀은 ATMEGA8/168/328 의 13번 핀이 아니라는 것입니다. 이 아두이노의 13번 핀은 Atmega칩에서는 실제로 19번 핀입니다. 전선을 올바로 꼽았는지 확인하기 위해서는 핀 맵핑을 참고하세요.
마지막으로 LED를 연결합니다. 긴 다리쪽(cathod)는 붉은 전선에 연결하고, 짧은 다리쪽(anode)은 220옴 저항에 연결합니다. 이 저항의 다른 쪽은 ground에 연결됩니다.
여기까지 아두이노 연결의 기본이 완성되었습니다.
다음에는 아두이노에 프로그램을 심거나, 전원을 공급하는 것을 다룰 것입니다.
4. USB to Serial 보드 연결하기
USB 어댑터 연결하기
이제 USB to Serial 보드를 연결합니다. 앞으로 이것을 간단히 USB어댑터라고 부르기로 하지요.
이 USB 어댑터는 아두이노에 전원을 공급하는 용도로도 사용됩니다. USB케이블에 연결된 컴퓨터에서 전원을 공급 받는 것이지요. 더 중요한 것은 이 USB어댑터가 있어야 PC(또는 Mac)에서 짠 아두이노 프로그램을 아두이노 칩에 전송할 수 있다는 것입니다. 달리 말하면, 아두이노를 단지 실행만 할 경우에는 이 어댑터가 필요하지는 않다는 것입니다. 전원 공급할 방법만 있으면 말이죠. 외부 전원 공급은 뒷부분에서 다시 다룹니다.
이 USB어댑터를 살펴보면 RX, TX, VCC, GND라고 쓰여있는 쪽에 기다란 핀 네개가 삐죽 나와있는 것이 보일 것입니다.
현재까지의 브레드보드 연결 상태.
전원 공급 및 RX와 TX 연결하기
먼저 USB어댑터로부터 전원을 연결합니다. VCC는 USB의 5V전원을 보드로 공급하는 핀입니다. 이 VCC를 브레드보드의 power(붉은선 쪽)에 연결하고, GND를 ground(파란선 쪽)에 연결합니다.
이제 우리가 새로 만든 아두이노에 USB어댑터를 이용하여 말을 걸어줄(?) 차례입니다. Atmega칩의 RX(2번핀)을 USB어댑터의 RX와 연결합니다. 그리고 Atmega칩의 TX(3번 핀)을 USB어댑터의 TX에 연결합니다.
USB to Serial 보드에 따라 TX-RX, RX-TX이렇게 크로스로 연결해주어야 하는 경우도 있습니다. 원래 개념상으로는 이것이 맞는데, 우리가 쓰는 이 USB어댑터에는 'Arduino의 RX를 여기에 연결하시오'라는 의미로 핀이름 자체를 RX로 적어 놓았습니다. TX도 마찬가지이고요. 그러니 RX는 RX에, TX는 TX에 연결하면 됩니다.
USB 케이블 연결하기
USB어댑터에 USB케이블을 꼽고 컴퓨터에 꼽아준다면, 위와 같이 LED가 깜빡이는 장면을 볼 수 있습니다. 와우~
5. 외부 전원을 위한 회로 만들기
만약 이전에 마이크로컨트롤러를 가지고 작업을 해본 적이 있다면 이미 주로 사용하는 외부 전원공급 연결 방법이 있을 것입니다. 그렇다면 그 방법으로 연결하면 됩니다.
다음에 오는 내용은 5V로 레귤레이트된 전원을 사용하는 방법입니다.
오른쪽 상단의 전원선 연결
볼티지 레귤레이터가 위치할 자리에 power선과 ground선을 연결한다.
7805와 디커플링 캐패시터 연결
브레드보드에 7805 레귤레이터를 위 그림과 같이 꼽습니다. 이 레귤레이터는 TO-220 패키지 타입인데, 외부전원으로부터 오는 입력은 왼쪽 핀에 연결하고, ground는 가운데 핀에 연결하고, 5V출력은 오른쪽 핀에서 나갑니다(레귤레이터의 앞면을 바라보았을 경우).
그리고 오른쪽 레일의 power와 ground 사이에 10uF 캐패시터를 연결합니다. 마찬가지로 레귤레이터의 input과 ground사이에도 10uF 캐패시터를 연결합니다. 캐패시터 옆면의 은색 띠가 ground쪽 다리임을 나타냅니다.
외부 전원 입력
레귤레이터 왼쪽에 붉은 선과 검은 선이, 외부 전원이 연결될 부분입니다. 붉은 선이 POWER이고, 검은 선은 GROUND입니다. 이 전원은 7~16V 사이만 허용된다는 것을 명심하세요. 이보다 더 낮으면 레귤레이터에서 5V를 뽑아낼 수 없고, 더 높으면 레귤레이터가 망가질 수 있습니다. 9V 건전지나, 9V DC전원 또는 12V DC전원이 적당합니다.
12V Adapter for Arduino from Plughouse
9V건전지를 사용하여, blink_led 예제를 실행하고 있습니다. 아두이노는 이렇게 컴퓨터와의 연결없이, 혼자서도 작동할 수 있습니다.