[아두이노] 커스텀 아두이노 제작해보기#1


안녕하세요 대짜이찐입니다.
이번에는 아두이노를 직접 DIY하여 제작해보겠습니다.

회로도

아래는 아두이노 우노의 회로도 입니다.


회로도를 보면 오른쪽 위쪽에는 레귤레이터와
전원관련 회로가 있어서 입력 전압을 +5V로 유지시켜주고,
왼쪽에는 USB to Serial 통신을 위해 Atmega16U2 칩과 회로가 있습니다.
그리고 오른쪽 아래에는 아두이노의 메인칩인 Atmega328P칩이 있습니다.


아두이노 우노 회로에서 Atmega328P칩 회로만 남기고 모두 삭제한 회로입니다.

회로를 간단하고 작게 만들기 위해 아두이노 프로미니처럼
코드 업로드에는 FTDI USB to Serial 통신 컨버터 모듈을 사용하여 
Arduino IDE에서 프로그래밍한 코드를 업로드할 수 있습니다.

소스코드를 업로드 할때 오토리셋 기능을 위해서
Reset 핀쪽에 100nF 캐패시터를 하나 추가하였습니다.

아두이노는 코드를 업로드하는 통신 과정에서 업로드 직전에
Reset이 한번 동작합니다. 만약 이 100nF의 캐패시터가 없을 경우
타이밍에 맞춰서 수동으로 리셋을 시켜줘야 합니다.
(위 회로도에서는 리셋 스위치도 없기 때문에 점퍼선을 그라운드로 옮겼다가,
다시 +5V로 옮겨야하는 불상사를 막기 위해 꼭 필요합니다.)

아래는 Atmega328P-PU칩의 핀맵입니다.

우선 브레드 보드에 회로를 구성하여 연결 해보겠습니다.



우선 아두이노 부트로더를 다운받기 위해
다른선들은 연결 하지않고
외부 클럭 16Mhz 크리스탈과 22pF 캐패시터
그리고 Reset 저항 10kΩ을 연결했습니다.

부트로더

이제 칩에 아두이노 부트로더를 업로드해야 합니다.
부트로더(BootLoader)란 PC에서 OS라고 생각하시면 됩니다.
이 부트로더를 업로드해야 Arduino IDE에서 프로그래밍한
소스코드대로 동작 시킬 수 있습니다.

부트로더를 업로드하는 방법은 두가지가 있습니다.
직접적으로 AVR ISP와 AVR Stuidio를 사용해 업로드하는 방법과
기존 아두이노 보드를 사용해서 업로드하는 방법입니다.

저는 기존 아두이노 보드를 사용해서 업로드 해보겠습니다.
먼저 기존 아두이노 IDE를 실행합니다.


메뉴바--파일-예제-11.ArduinoISP-ArduinoISP를 열어주세요.


그리고 아두이노 보드에 업로드 시켜줍니다.


 메뉴바-툴에서 보드와 프로세서를 선택해줍니다.

Atmega328P는 Uno와 Nano에서 공통으로 사용되는 보드이므로,
Arduino/Genuino Uno를 선택해줍니다.
Nano를 선택할 경우 프로세서는 Atmega328P를 선택합니다.

 만약 다른 보드와 다른 프로세서라면,선택에 맞춰서 설정해줘야합니다.

        

이후 메뉴바-툴-프로그래머에서 Arduino as ISP를 선택해 줍니다.
아두이노르 ISP로 사용하겠다는 뜻입니다.
기존에는 AVRISP mkII로 되어있습니다. 
이때 ArduinoISP가 아닌 Arduino as ISP입니다.
실수 할 수 있으니 주의해야 합니다.

이제 이전에 구성한 회로와 아두이노 보드를 연결합니다.




부트로더시에 오류가 날 확률이 있으므로 잠시 
19번핀(D13, PB5)과 led에 연결된 선은
잠시 제거 하고 업로드 하도록 하겠습니다.

UNO
Atmega328P
D10(SS)
RESET
D11(MOSI)
MOSI
D12(MISO)
MISO
D13(SCK)
SCK


메뉴바-툴-부트로더 굽기를 클릭해줍니다.



문제가 없다면 수초후에 부트로더 굽기 완료가 됩니다.
만약 오류가 발생한다면 회로에서 뭔가 잘못연결 되어있거나,
빠져있을 수 있으니 확인해주세요.

자 이제 Atmega328P칩이 아두이노가 되었습니다.

만약 위 회로를 구성하는게 귀찮으시다면,
아두이노 AVR ISP 업로드 쉴드를 구매하셔서 사용하시면 됩니다.


http://www.devicemart.co.kr/goods/view?no=1383025

혹은 아두이노 부트로더가 이미 업로드 되어있는
Atmega328P칩을 구매하셔도 됩니다.


http://www.devicemart.co.kr/goods/view?no=1064877


프로그램 업로드

그럼 아두이노 칩에 소스코드를 업로드해보겠습니다. 
업로드는 아두이노 프로미니에 업로드하는 법과 같습니다.


http://www.devicemart.co.kr/goods/view?no=1362010

이때 DTR핀이있는 FTDI USB to Serial 모듈을 사용해 줍니다.
점퍼선으로 선택하는 VCC은 +5V로 해주세요.

그리고 mini USB 케이블을 사용해서 PC에 연결해줍니다.



PC에서 장치 관리자에 들어가보시면, USB Serial Converter로 잡히는것이 보입니다.
알 수 없는 USB 장치로 표시된다면
아래링크에서 FTDI FT232RL 드라이버를 찾아서 설치해야합니다.



https://www.ftdichip.com/Drivers/VCP.htm

USB to Serial 컨버터 모듈을 뽑았다가 다시 PC에 연결하면
포트 번호가 잡히는걸 볼 수 있습니다.



저는 COM5로 연결이 되었네요.

이제 FTDI USB to Serial 컨버터와 브레드 보드에
구성한 아두이노를 연결해보겠습니다.






동작여부만 확인하기 위해 다른 디지털 핀들은 연결 하지않고,
19번핀(D13, PB5)에 LED와 저항 220Ω을 연결하고
오토리셋기능을 통한 소스코드 업로드를 위해 Reset에
100nF 캐패시터를 추가로 연결하였습니다.

 물론 100nF은 FTDI USB to Serial 컨버터 모듈의
DTR(Data Terminal Ready)핀에 연결해야합니다.

FDTI module
Atmega328P
DTR
100nF CAP
RX
TX
TX
RX
VCC
VCC
CTS
-
GND
GND



Arduino IDE 메뉴바-툴에서
보드는 Arduino/Genuino Uno로,
포트는 FTDI에 연결된 포트로(제 경우엔 COM5),
프로그래머는 AVRISP mkII로 설정한후
메뉴바-파일-예제-01.Basics-Blink를 업로드를 해줍니다.



제대로 동작하네요!
다음 시간에는 좀더 소형화를 시키기 위해서
ATMEGA328P-AU SMD타입 제품을 사용해서 보여드리겠습니다.

본 포스팅에 사용한 제품은 모두 디바이스마트에서 구매하실 수 있습니다.

감사합니다. 

댓글 쓰기

0 댓글