B05+B06‎ > ‎

Day 1

-무엇을 만들것인가
아두이노 개조하기!!
Arduino Duemilanove Modification!!
image from arduino.cc

널리 퍼진 arudino 플랫폼에 기능을 추가하고 새로운 의미를 부여하면서 보드를 만드는 워크샵을 진행한다.

참가자들의 논의한 사항들은 다음과 같다.

합체
따로 떨어져 있는 다양한 모양으로 합체하는 아두이노

우드이노
나무케이스에 넣을 수 있는 아두이노
나무 밑판을 기판으로 이용하는 아두이노

봉두이노
봉모양으로 부품을 일렬로 정렬해서 만드는 아두이노

구두이노
구 모양의 아두이노

명함
명함 사이즈 아두이노.
산업계에서 쓰이는 Standard한 사이즈로 아두이노를 만들어 보면 어떨까에서 생각이 시작되었다.

벌리기
아두이노 전원부, 컨트롤러부, USB부등을 나누어 사이에 전선으로 연결해 모양이나 형태를 마음대로 구성할 수 있는 아두이노
나누는 기준은 윳놀이로 정하든 해서 참가자들이 임의로 만들부분을 만들고 합해서 결과를 보는 식의 작업 구상방법도 나왔다.

피자이노
피자를 썰듯이 둥근 기판을 나누어 합할 수 있게 만드는 아두이노

또다른 논의 사항으로
1회용 아두이노
Bombduino by 이준

아두이노 포터블
예1) 전자 촛불

추가되어야할 기능으로
1. 배터리 모듈
2. 컨텍터 바꾸기
3. Dimension을 명함사이즈로

-그것이 무엇을 하나
고민한 결과를 바탕으로 필요한 것들을 생각해보자

우선 처음부터 만들지 말고 arduino 보드를 reference로 삼아서 이야기 해보자
arduino 보드란?

arduino 보드를 이용하면 장점이 무엇인가?

arduino 보드의 친구들을 살펴보자

회로도를 읽어보면 각 부품들이 하는 역할에 대해서 생각해보자

회로도에서 자주 쓰이는 부분을 표시해보면 다음과 같다.
표시된 부분들은 영어 숙어처럼 자연스레 외워지게 된다.
클릭해서 크게 보고 배운걸 써보자!!



파워레귤레이터

USB
USB Cable을 사용해서 컴퓨터와 아두이노가 통신한다.
하지만 엄밀히 말해 USB 규격의 통신을 하는 것은 아니다.
컴퓨터 상에서 아두이노는 serial 장치로 인식이 되고 따라서 통신 속도도 USB와 비교할 수 없을 정도로 느리다.

이와 같은 기능을 수행하기 위해서는 serial to USB 컨트롤러가 필요한데 회로도 왼쪽에 복잡하게 자리 잡은 것들이 이 기능을 수행하는 역할을 한다. 

무슨 기능을 하는 줄만 알면 우리는 그냥 카피해서 쓰면된다.
실제 아두이노 팀도 카피해서 쓰는데 칩을 만드는 회사는 사람들이 널리 쉽게 쓸수 있도록 거의 대부분 Application Note를 제공한다. 

여기서 datasheet를 다운받을 수 있고

datasheet를 보다보면 

이와 같이 어떻게 연결하라고 친절하고 가르쳐 준다.

참고로 위에 첨부된 회로도에서 왼쪽 부분 색이 칠해 지지 않은 것은 아래부분이 FT232R에 대한 설명이고 왼쪽 위는 내가 외부 파워를 쓰거나 USB를 이용해서 보드를 구동시킬 때 자동으로 선택하게 해주는 회로이다.

무슨 기능을 하는지 알았으면 그리고 서로 연결할 줄 안다면 가져다가 쓰도록 하자

마이크로프로세서 / 간단히 경험하는 마이크로 프로세서


고민한 결과와 arduino 보드를 생각해서 우리에게 필요한 것은 무엇인지 구체적으로 살펴보자
크기는?
휴대성은?
ruggedness는?
무게는?
형태는?
확장성은?


-입력 / 처리 / 출력으로 생각하기
좀더 구체적으로 생각하기 위해 위의 결과를 바탕으로 입력 / 처리 / 출력단이 할 일을 생각해보자


-적당한 부품 찾기
앞에서 논의된 모든 요구사항을 만족시키는 부품을 찾아나서보자
어디서 살 수 있는지도 알아보자
BOM의 초반 버젼을 만들어보자

1.컨넥터
MOLEX 5268

MOLEX 5264

2. 배터리 모듈

USB로 충전되면서 과충전 방지되는 회로를 추가해주세요!!

시간이 없으니 우선은 컨텍터만 달아놓으면 어떨까요?

확장가능성을 고려해서 말이죠

또다른 이야기로는 1.5V 배터리를 이용해서 5V 를 만들어 내는 회로를 달자는 의견이 나옴

참고 가능한 회로는 다음과 같다

Lilypad 파워회로들
1.5V - 5V

리튬 폴리머 충전 모듈 파워

NCP1400 datasheet


Li-Polymer 아두이노 실드

USB-li-Polymer datasheet

Microchip USB 충전 컨트롤러

-부품 설명서(Datasheet) 읽기
선정된 부품중에서 datasheet의 어떤 부분만 읽으면 될지 알아보자
1. Feature 
Datasheet 의 첫 페이지에 위치하며 이 칩이 무엇을 하는 지 요약 페이지

2. Pin Descriptions
칩에는 핀이 달려 나와 있다. 이 핀들이 무슨 기능을 하는지 어떻게 연결하는지 나와있다.

3. Packaging Information
같은 칩이라 할지라도 크기 (Dimension) 가 다르고 칩모양도 다른 종류가 존재하는데 이 러한 정보를 제공하는 페이지이다. 이 정보를 알아야 내가 만들고 싶은 사이즈로 회로를 만들 수 있고 eagle을 이용해 캐드파일을 만들 수 있다.

4. DC characteristics
또 하나 중요한것이 칩이 얼마나 파워를 소모하나, 몇 볼트 동작을 하나, 핀마다 얼마의 전류를 끌어 쓸수 있는 가이다. 이러한 페이지는 이페이지에 나와있다.

왜 핀 당 허용전류가 중요한가?
보통 마이크로컨트롤러는 대략 핀당 20mA 를 흘릴 수 있는데 이걸 보면 핀에 모터를 바로 달 수 없다는 것을 알 수 있다. 모터는 대략 수백 mA 에서 수 A 를 요구하기 때문이다. 대신 LED 같은 경우에는 전류 소모가 약 20mA 정도 되기 때문에 핀에 저항만 연결해놓고 바로 사용할 수 있는 것이다.

*마지막으로 예습 목적으로 eagle 을 깔아보고 간단한 사용법을 알아보자
참가자들은 31일에 놀지 말고 충분히 예습한다. 외롭지 않아 좋다
photo by 순구


B05+B06 workshop Day 1

photos by anteater

패시자자적적이이ㅇㅇㅇㅇㅇㄷㄷ의 ㄷ도 마마이크로 프로세서는 CPU이다
그럼 arduino는 컴퓨터야?
    다양한 마이크로프로세서 알아보기
ipod touch BOM 보고 datasheet 찾아보기
부품 교과서는 카탈로그다!
전자상가의 아저씨 / 아줌마 들과 대화하기
rugged Arduino의 미래


실시간 다큐멘팅
 
4일간 어떤 것을 배울 것인가

Step 3. 보드파일에 부품 이름을 보드파일에 부품 이름을 넣거나 넣지 않거나 둘 다 가능하다.
과연 글씨는 어디서 쓰는 걸까?

Step 4. 한샘 디지텍이라는 곳에 파일을 보내면 이틀 안에 온다.
샘플 PCB의 경우에는 8개에 4~5만원 정도밖에 안한다. 우리나라가 싼 편이다.

Step 5. 사놓은 부품으로 납땜을 하고 테스트를 한다. 이렇게 했는데도 고장이 나면 어떻게 할까?
이 때 할 수 있는 것이 하드웨어 디버깅인데,  잘못된 선이 연결되었을 경우 기판의 선을 끊고 얇은 전선으로 다시 납땝을 하는 등의 방법을 거친다.

앞으로 하게 될 일 - 전원부면 전원부, 프로세서부면 프로세서부 등의 부품 라이브러리를 만들어 그때 그때 가져가 쓸 수 있게 하면 좋다. Eagle 상에서 할 수 있다.


아두이노의 장점

기존 AVR칩은 ISP라는 부트로더(프로그래머)를 이용하여 직접 칩에 구워주는 제품을 따로 이용해야 했으나 Arduino는 USB를 이용해 그냥 프로그램을 업로드 할 수 있게 해놓았다. 부트로더 영역과 사용자 프로그램 영역을 따로 나누어 놓은 것이다.

또한 아두이노는 이와 함께 소프트웨어 부분을 완벽하게 오픈소스화 했기때문에 쉽게 갖다 쓸 수 있다,그리하여 아두이노 패밀리는 아두이노의 오픈 소프트웨어 포맷을 이용해 다양한 플랫폼을 만들어 놓았다. 아두이노의 플랫폼을 이용하게 되면 컴파일러와 프로그래머를 따로 구매할 필요가 없기 때문에 많은 사람들이 호환제품을 만들어 놓았다.



http://arduino.cc 의 하드웨어 파트
http://arduino.cc/en/Main/Hardware
공통점 - AVR 칩을 공통으로 사용하고 있다.

왜 컴파일러는 회사 칩마다 다를까?
칩의 아키텍처가 다르기 때문이다. 예를 들어 C로 소스를 짜서 컴파일을 하게 되더라도 CPU 아키텍처에 따라 pic냐, 인텔이냐, avr이냐에 따라 컴파일러가 다르게 되게 된다..

아두이노 정책

공식 아두이노를 만들고 싶다. 결론적으로 team과 협력을 해야 한다. 똑같이 만들어도 arduino라는 이름을 붙일 수가 없다. 대강 만들어서 아두이노 이름을 붙이면 관리에 어려움이 따르기 때문이다.  아루이노 빼고 아무 이름이나 붙일 수 있다.


마이크로 프로세서의 구조
덩어리로 외운다. 전원부의 경우에는 매일 쓰는 것이다.

컨셉을 잘 잡아서 하면 공식 모델로도 데뷔 가능하다.




5분 휴식

이글 사용법 맛보기

오픈소스 하드웨어의 경우에는 EAGLE 등의 캐드 파일을 올려놓게 된다. 요즘의 오픈소스 하드웨어는 거의 다 이글을 쓰고 있다. Boraduino의 경우에는? 역시 EAGLE 파일로 되어 있다.
라이브러리 만들기 -> 부품명이 생긴다. 자기만의 라이브러리를 가질 수 있다.
gerber 파일로 만들고 공장에 보내면 알아서 아두이노 같은 모양으로 해서 보내주게 된다.



아두이노는 어떻게 구성되어 있고, 부품은 어떠한 역할을 하는가?

회로도 읽기 의 원칙

1. 이름이 같은 것들은 모두 붙어 있다고 보면 된다. 회로도 상으로 떨어져 있다고 하더라도. 이름 같은것들은 보드파일을 만들때 전부 연결한다.

2. 선이 겹칠 경우에는 ● 표시를 해놓는다. 끝!!

3. 라이브러리에서 심볼을 끌어다 쓸 때 (eg, 5v 라이브러리) 이름이 비슷한 게 있으니 주의해야 한다.
이름이 정확하게 똑같아야 한다. 똑같은 심볼 같은 경우에는 카피하여 쓰는 것이 실수를 줄일 수 있다.
눈깔 툴을 이용하면 연결된 모든 것을 보여주기 때문에 디버깅 할 때 유용하다.

4.  회로도 심볼
지그재그 혹은 네모 : 저항
C : 캐패시터.
D : 다이오드
삼각형과 직선 하나 : LED
S1 : 스위치
IC : 칩
LM358D : 연산증폭기. 다양한 기능으로 쓰인다.전압을 뻥튀기하거나..
GND : 그라운드
NDT : 트랜지스터

본격적인 설명

마이크로 콘트롤러(IC1 : MCU(Micro Controller Unit) : 완벽한 입출력창치가 갖추어져 있는 컴퓨터라고 생각하면 된다. 초창기 애플컴퓨터의 경우보다 좋은 사양이다.

RAM과 ROM, Core, IO로 구성되어 있다.

ROM : 예전의 경우에는 One time Program으로 한 번 구우면 더 이상 쓸 수 없는 롬이 있고, 여러번 쓸 수 있는 Flash ROM이 있다.

프로그램을 올린다는 것은 무엇인가?

컴파일러로 우리가 알아듣기 쉬운 언어(C 등)을 컴파일하면.
0010010101010101010 등으로 바뀐다.
그러면 0의 경우에는 0V, 1의 경우에는 AVR 침의 전압인 5V로 작동하도록 되게 된다.
이 데이터는 ROM에 들어가게 된다. 이 과정을 하드웨어 칩 프로그래밍이라고 한다.

C 소스 작성 -> 컴파일하여 바이너리 작성 까지는 자신의 컴퓨터(인텔 칩 등)
바이너리 코드를 AVR ROM에 프로그래밍 -> Cross Development 환경이라고 한다.
칩 이름마다 기계어 순서가 전부 다르다(아키텍처가 다르기 때문). 그렇기 때문에 모델명에 맞는 컴파일러가 필요하다. 그리하여 컴파일러는 HEX 파일을 뱉어내는데, 그 파일을 보면 IC가 돌아가는 법을 알 수 있게 된다.

아두이노가 강력한 점이 한번 다시 언급된다. Back단에서 컴파일 > 업로딩을 해준다. (GNU 라이센스의 AVR-GCC 컴파일러를 이용했다고 생각한다) 또한! USB에서 칩프로그래밍을 하고 있다. 어떻게 이런 일이 가능한가? 부트로더 부분을 이미 프로그래밍하였기 때문에  가능했다. 부트로더에 들어가있는 내용은 "사용자 프로그램 영역부터 데이터를 써라" 라는 프로그램이다. 아두이노 개발자들은 부트로더도 프로그램 해놓았다. 

8비트 칩셋의 경우 5번째 부분에 5V가 나간다는 프로그램을 작성했을 경우
00001000 으로 작동하게 된다.

부트로더의 용량과 프로그램은 어떤 식으로 구성되어 있나요?



ROM을 확대해 보자.

RAM : 간단하게 프로그램 실행 때만 쓰이는 영역이다

CORE : CPU

IO : 입 출력 담당 부분 괄호가 쳐져있는 부분은 여러 목적으로 사용 가능하다.

VCC-GND : 전원을 넣어주는 핀이 따로 있다.  5V.
(아날로그 AVCC-AGND) : 전원공급.

왜 캐패시터를 다나요?

전하를 가지고 있는 것이다. 캐패시터는 임시 배터리다. 5V 배터리의 경우 5V가 5V가 아닌 경우가 생긴다. LED의 경우 5V 0V 하면서 불이 켜지는데, 켜지면서 전류를 소모한다. 전류를 소모하면서 노이즈 신호가 잡히게 된다. 혹은 새 장치를 연결하면서 스파크가 튈 수 있다. 이러한 여러 가지 전류 불안정을 해소하기 위해 캐패시터를 달게 된다. 이러한 바이패스 캐패시터는 칩 옆에 바로 붙임으로써 칩을 보호한다. 캐패시터가 차기 위한 시간이 0.1마이크로패럿 103~104를 쓴다.(전하 용량과 관계가 있음)


PB5 ~ PB0 : D포트
PC0 ~ PC5 : C포트

각 핀은 기능을 가지고 있다 : 데이터시트의 pin description에서 알 수 있다.

Crytstal(Clock) :  1초에 16Mhz의 사이클이 일어나게 하는 장치이다. 실제적으로 명령이 수행된다는 것은? 명령을 가져와서 명령을 해석하고 실행하고 저장할 것이 있으면 저장. 한번씩 실행될 때마다 명령의 단위가 쓰이기 때문에 1/4 정도의 사이클로 실행된다고 생각하면 된다. 인터널 오실레이터가 있는 마이크로프로세서가 있으나 전류를 많이 먹어서 외부에 달아서 쓴다.

XTA-1 , XTA-2 : 크리스탈이 연결되는 곳으로 22p의 캐패시터를 달고 GND를 달면 작동된다.

RESET : 리셋,  칩을 처음부터 다시 실행시키게 한다. ROM의 0번지로 다시 가게 한다. (아두이노의 경우 사용자 프로그램부터). 프로그램이 돌다가 멈추어 버렸을 때 쓴다. 주변의 노이즈가 튀어 데이터가 바뀌었을 경우에도 쓰인다. 혹은 작동하고 있는데 새로운 프로그램을 입력하고 싶을 때도 쓰이는데, 아두이노의 경우에는 프로그램을 올릴 수 있는 USB나 ICSP(in circuit serial programming)이 추가적으로 회로에 연결되어 있다. (한마디로 민감한 설정이 들어왔을 경우에 프로그램이 리셋된다)

RESET 회로의 세팅
5V가 연결되어 있으면 리셋이 되지 않고 있다가 0V가 들어오면 리셋이 된다.

5V --------------|         |--------------------
                        |-------|
0V-----------------------------------------------

0V의 시간이 일정 부분 지속되었을 때 리셋이 된다.



---
아두이노 칩셋인 atmega168의 데이터시트

– Up to 24 MIPS Throughput at 24 MHz

가장 중요한 것
Pin description, Packaging Information
Packaging Information은 실제로 보드파일이 자리잡았을 때 사이즈를 정해놓은 것이다. 내가 원하는 사이즈와 무게가 나오면 부품을 선정! 핀 간격이 중요하다. 그 이유는 이글 상에서 납땜 부분을 실제로 만들게 된다. 그 때 데이터시트의 패키징 정보를 참조해서 설계하게 된다. 기본 간격이 2.54mm이다. 표준 간격으로 빵판 간격도 2.54이다.




전원부 Schematic

MC33269D Voltage Regulator : 노이즈를 잡아주는 캐패시터의 기능 + 입력이 어떻게 되던 5V로 아웃풋을 내겠다는 것이다. Linear Reguator로 이 경우 효율이 조금 떨어질 수 있다. 전원부에 정류기를 달아놓은 경우 5V로 무조건 뽑아주기 때문에 조금 높은 전압을 주어도 상관없다. 부품의 라이브러리를 만드는 경우 심볼과 Soldering Footprint를 정해 주게 되면 되는데, soldering footprint는 데이터시트에 나와있다.전원부는 안정적으로 잘 동작하는 다른 회로도를 참고하는 것이 좋다.

MC33269D의 Pin Description
* 800mA : 한계 전류 소모량으로 서킷 디자인시 이 양을 넘지 않게 해야 한다. 무슨 일이 있어도 정류기 이후 칩, LED 등이 이 전류랑 이상을 사용하면 안된다. 가변 저항의 경우에는 최대 저항값으로 전류량을 계산하여 한계 전류 소모량을 체크할 수 있도록 한다.

Application Note, Application Information

부품이 잘 쓰일 수 있도록 추천 부품 및 서킷을 알려주는 부분이다. 같이 쓸 때 잘 작동하는 부품을 알려준다.

역전압 방지 회로 : 다이오드는 전류를 한 방향으로 흘러주게 함으로써 어댑터를 바꿔 꽂더라도 칩이 타지 않게 한다. 단, 다이오드는 0.6V가 소모된다.

캐패시터는 적당히 큰 걸 달면 된다. 튀는걸 잡아 주는 역할이다.

7805 레귤레이터 : MC33259D와 달리 한계전류값이 1A이다. 아두이노에서는 크기가 커서 MC33259D

* 전압과 전류 : 전압은 일정하게 정해진 값이고 전류는 한계값을 넘지 않으면 상관없는 값이다. V만 맞으면 상관없다.



USB 부분 : FT232R USB UART IC라는 칩을 이용해서 가능하다. 결과적으로는 시리얼 포트이다.


재미있는 회로도 보기 시간 ^_____^
.


다시한번 정리 :

데이터시트는 Application Note, Packaging Information 등을 주의깊게 본다.


배터리 계산법 적어주세요~
하위 페이지 (1): 무엇을 만들 것인가?
Comments