아두이노를 처음시작하시는 분들을 위한 참고사항입니다.

입문자분들이 아두이노로 가장 먼저하는것이 LED ON/OFF 제어인데요

이때 주의할 점이 있습니다.

일부 서적이나 안내글에서 LED를 저항도 없이 5V전원이나  아두이노 출력핀에 연결하는 경우가 있습니다.
이는 잠깐이라도 하지 않는것이 좋습니다. (실행은 자유지만, LED는 물론이고 값비싼 아두이노까지 단명할 수 있습니다;; )

물론 AVR 자체 및 전류제한회로등에 의한 보호기능이 약간은 있겠지만, 완전하지 않으며 아두이노 수명단축을 재촉하는 일이 될 수 있으므로  LED연결시엔  꼭 전류제한용 저항을 장착하시기 바랍니다. 
어 떤값의 저항을 사용할지 모르신다면, 보통 2V정도에서 작동하는 LED를 5V전원에서 작동하는 경우 200~330옴 정도를 많이 사용합니다. 이때 전류제한용 저항의 값이 작아지면 더 밝아지고, 커지면 어두워집니다. 너무 큰저항값을 사용하면 LED가 꺼지죠
(정확한 저항값 계산은 관련자료를 찾아보시며 많이 나올겁니다)

아래의 이미지를  참고하시기바랍니다.

[그림1]의 경우 LED는 금방 돌아가십니다.

[그림2]의 경우 특히 많이 인용되는 장면인데요, 이것도 안좋은 예입니다. 
 아두이노 Blink예제 소개 페이지에도 저항이 포함되어있는것을 보실 수 있습니다: http://arduino.cc/en/Tutorial/Blink

 참 고로, 표준아두이노의 경우 디지탈핀13번에는 내부LED용 전류제한저항이 기본으로 내장되어있지만, 외부에 별도로 연결된 LED와는 무관합니다. (싱크방식으로 연결할수는 있긴합니다만 그건 나중에 회로공부를 조금 하신후에 응용하세요^^)
그러므로 13번핀이라도 직결하지 마시기 바랍니다.

아두이노 핀을통해 LED를 직접 구동할 경우엔 항상
[그림3.] 같이 전류제한용 저항을 함께 연결해주시기 바랍니다.



[그림1] LED 5V전원 직결




[그림2] 디지탈 5V출력에 LED 직결




[그림3] 디지털 5V출력에 전류제한용 저항과 LED 직결 (권장)



한가지 더 말씀드리면,  FND나 LED여러개를 구동할때도 역시 LED 하나마다 개별적으로 저항이 들어가는게 원칙입니다.
(다만 동시에 한개만 작동하는경우 회로구성에 따라 저항개수를 줄이수는 있습니다.)
그리고, 여러개의 LED를 구동할때는 전체 전류허용량을 고려해야합니다.

그림4.를 참고하시기 바랍니다.  핀하나에서 흘릴수있는 최대전류량이 40mA입니다. 
즉, LED 구동시 이값을 넘기면 안된다는 얘기입니다. 그래서 각각 저항을 추가해 줘야합니다.
그리고 또한가지 잊지말아야 할것은  전체허용전류량입니다.  
즉, 핀하나당 전류가  40mA이하로 흘러야함과 동시에, 전체적으로 200mA가 넘지않아야 합니다.

부디, 값비싼 아두이노 오래오래 고장없이 사용하시길 바람하는맘으로 이글을 적습니다. 
참고가 되셨기를~


[그림4] Atmega328 전류허용범위



아두이노UNO를 사용하여 새로운 타입의 아두이노 SoftPot(위치감지)센서와 서보모터 연동 사용예입니다.

아두이노 스타터킷 및 아두이노 인벤터킷에 포함된  새로운타입의 센서입니다.


SoftPot센서는 세개의 단자가 있으며 기본 작동법은 가변저항과 같습니다.  전압핀과 GND을 연결하면 나머지 단자를 통해 접촉위치에 해당되는 전압을 측정할 수 있습니다.   아래의 회로도 참조

[그림1. SoftPot센서 단자안내 - 대응 회로도(사용법은 가변저항과 같습니다.)


아두이노 스케치 소스는 아래와 같습니다. 
스케치에서 기본제공하는 서보제어 예제코드를 거의 그대로 사용했습니다.  참 쉽죠잉~!

알림:
스케치제공 서보모터 작동 기본예제 코드는 작동범위를 0~180으로 설정했지만, 실제로 서보모터의 종류에따라 이값의 범위를 지원하지 못하는경우가 있습니다. 이경우 서보모터에 무리가 가게 되므로  제경우 10~170으로 값의 범위를 줄여줬습니다. 항상 사용하려는 기기의 한계범위를 고려해서 프로그래밍을 해줘야 기기를 오래오래 고장없이 사용할 수 있습니다.


#include <Servo.h>
 
Servo myservo;  // 서보모터제어를 위한 객체를 생성합니다
 
int potpin = 0;  // 센서입력을 받은 아날로그핀을 A0로 설정합니다.
int val;    //  센서입력(아날로그)값을 임시저장할 변수입니다
 
void setup()
{
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}
 
void loop()
{
  val = analogRead(potpin);            // A0에 연결된 SoftPot센서의 값을 읽어옵니다.
  val = map(val, 0, 1023, 10, 170);     // 아날로그입력값 0~1023을 서보모터에 맞게 10~170으로 변환합니다.
  myservo.write(val);                  //  서보모터신호를 센서 입력값에 따라 변경합니다
  delay(15);                           // 약간의 지연시간을 줍니다. 
}

//code 뷰어가 오류가 계속되어 그냥 텍스트로 올렸습니다 ;;


봐서 남는것보다 보는시간으로 소비하는 시간이 아까운 경우가 많아서 저는 TV를 거의 보지 않습니다. 따라서 제 집엔 TV가 없고 가끔 부모님집에 가면 봅니다.  오랜만에 보면, 광고만 봐도 재밌습니다.  ㅎㅎㅎㅎ
헌데 문제는 케이블방송이 채널은 많지만 입맛에 맞는 프로그램들은 별로 없다는것.  수십개 채널을 돌리가다 주로 선택을 받는 채널이 바로 디스커버리(Discorvery)입니다.   왠지 보고나면 뭔가 남는게 있을것같은 느낌이 들거든요..
그중에 하나, 현란한 주제들로 제 호기심을 마구 찔러대는 프로그램이 바로 미쓰버스터즈(Mythbusters)입니다.

며칠전 미쓰버스터즈의 인터넷판 or 잡지판 정도되는 녀석을 발견하게되어 몇자 적어봅니다.

바로, Make: Magazine ( Makezine.com )



오라일리(발음 맞나요???) 출판사에서 만든 DIY 자작 전문 잡지 정도 되는 녀석인데요, 그냥 잡지가 아니고 무크지라고 부르나 봅니다. 즉, 정기간행물이아니고, 분기별로 좀더 단행본스러운 완성도를 갖춘형태로 출판되는 단행본+잡지 혼성출판물입니다.
매달 시간에 맞쳐 뚝딱 찍어내고 출판후 1개월후면 과월호라는 무서운 이름을 뒤집어 쓰는 잡지보다는 좀더 주제가 있는 컨텐츠를 담을 수 있으며, 잡지의 1개월이라는 유효기간으로부터도 자유로울 수 있는 형태의 저작물입니다.
오라일리는 한국에선 한빛미디어에서 출간된 많은 번역서들로 알려진 출판사이며, 저도 그럭저럭 오라일리 동물책들을 몇권 키우고 있을정도니 꽤 영향력이 있는 미디어사인것 같습니다. 

실은 저도 아직 잡지 구경은 못해봤지만, 사진 몇장만 봐도  딱~ 마음에 드는걸 봐서는 저와 여러분들께도 꽤 필요한 영양분같은 저작물이 아닐까 생각되네요.  먹고나면 든든한 영양소같아 보입니다. 헌데, 영문잡지란게 아무래도 친해지기 쉽지 않습니다.  서점에 가보면, 영어로된 더불어 몸값 비싼 보기좋은 물건으로 빤짝빤짝 투명비닐에 꼭꼭 감싸여있는 고귀한 녀석들인지라 그냥 무시해버리곤 한답니다. 메니아라도 되면 모를까,,  전 손이 안가네요

어쨌든 좋은소식인가요?   한빛미디어에서 아마도 이 잡지를 한국어판으로 출간할듯한 조짐을 보이고 있습니다.
몇 달전엔 구인광고를 내시더니,  12월24일엔 makezine.co.kr 도메인을 등록하셨네요
지금은 방문해도 아무것도 없는데요, 아마도 몇 달 내로 뜨지 않을까???  예상을 해봅니다.

기사제목으로 한다면, 

Make Magazine. 한국어판 출시임박???  정도 될까요 ^^

뉴스에도 안나온 정보를 정황자료를 바탕으로 미리 예상하고나니  꽤 흥미진진해지네요

부디 나오게 되면,  합리적인 가격, 오리지날을 상회하는 퀄리티(너무 기대가 큰가요? )
그리고 무엇보다도 한국실정에 맡는 컨텐츠 보강이 꼭 이뤄졌으면 하는 생각이 듭니다.

혹시 Make 잡지도 previewer 같은걸 모집한다면, 저도 꼭 참여해보고 싶네요.

이미 비슷한? 주제를 갖는 고전적인 잡지들이 있지만, 아직도 많이 부족하다는 생각이 듭니다.
부디 단순히  "한국어번역본+한국어광고" 잡지가 아닌, 진정한 한국의 Maker들을 위한 Makezine이 탄생하길 기대해봅니다.

아니면,,,  누군가 만들어야겠죠  여러분 or 제가?


무크지:
잡지를 뜻하는 매거진(Magazine)과 단행본을 뜻하는 북(book)이 결합된 합성어로, 잡지와 단행본의 성격을 가진 부정기적인 간행물을 지칭하는 용어. 1971년 런던에서 열린 국제 잡지 협회의 제 18차 회의에서 제출된 보고서에서 처음 사용되었으며 미국에서는 매거북(Magabook), 부커진(bookazine)이라고도 부른단다. (내용출처)


가장작은 32bit ARM 마이크로 컨트롤러입니다.
핀수가 적지만 기본 사양은 11xx시리즈와 거의 대등 합니다.

그 크기가 무려 2x2mm

손톱만큼 작다는 표현이 사라질때인가 왔나봅니다.
눈꼽만큼 작다는 표현을 써야할 시대가 왔나요^^;;
스마트 더스트 시대의 주역은 바로 요녀석들이 되려나 봅니다.



참고로, 핀번호가 2차원 매트릭스 방식을 사용하네요,
 행은 ABCD 열은 1234 이런식으로 표현하여 총 16개 핀번호를 부여합니다.

관련자료: http://www.nxp.com/news/content/file_1701.html
ARM Cortex-M0 코어 LPCXpresso 테스트보드 개발환경을 열어보니 막강한 이클립스 기반 IDE를 보고 감탄을 하는것도 잠깐,,, 예제를 열어보고 소스 분석을 해보려하자 당황스럽네요

더이상 main()이 메인이 아이더군요,  이보다 먼저 SystemInit() 가 수행되어 칩세팅을 하는데, 이 파일은 CMSIS library에 포함되어있습니다. 기타 레지스터 설정이나 장치 제어명령도(LED 한개 On/off하는것 까지도) 모두 전용 함수를 제공하는듯 합니다. (물론 CMSIS Libray 사용할 경우에 얘기겠죠, 마치 안드로이드 프로그래밍 하는 분위기입니다.)

AVR펌웨어를 만들때는 대게 8bit 레지스터에 비트마스킹하여 비트 ON/OFF/Toggle 하는정도로 Peripherals(타이머,UART,ADC etc) 제어하는 방식을 주로 사용했었는데요, LPC는 32bit MCU라서 그런지 효율적? 접근을 위해 2~3단계(매크로까지치면 그이상)는 랩핑된 함수로 Peripherals 설정을 하는것 같습니다.  물론 특정 주소에 직접 값을 기입하는것도 가능하겠지만, 칩제조사(silicon vendor)와 무관하고, 다른 ARM core에서도 호환이 가능한 장치 설정 인터페이스를 이용(표준화)하여, 코드 호환성을 높인다는 전략에 따른듯 합니다.  이를 CMSIS라고 부르더군요.  역시나 8bit MCU와 32bit MCU 사이는  장벽이 있네요.  새로운일을 시도할때는 어렵고 쉽고를 떠나서 평소와 다른 새로운것이 나오면 멈칫 진행이 멈쳐버립니다. 정작 중요한건 이로 인해 지체되는 시간을 보상할 정도의 메리트가 있는지? 아닌가 합니다.

어쨌든 좋은 취지로 만들어진것 같으니 일단 대충이라도 어떤것인지 알고넘어가야 하겠습니다.
근데, 진짜문제는 처음사용자용 안내문 링크에도 비중있게 나와있지않은 내용이라,,  이곳 저곳 다니며 자료를 모아야 했습니다. 관련자료를 모아서 여기에 모아두겠습니다.




1.2008년 11월에 발표를 했나보네요
 발표기사 http://www.arm.com/about/newsroom/23722.php

2. 개발환경에 기본 포함된 CMSIS library 내부 폴더에 도움말 도움문서가 숨어? 있습니다.
(도움문서 분량을 보니, 아직도 개발중이라고 해야할듯 합니다. 버젼마다 폴더명이 좀 다르겠네요 제경우 LPC11xx입니다. )
PC폴더 위치예: lpcxpresso_3.5/Examples/NXP/LPC1000/LPC11xx/CMSISv1p30_LPC11xx/CMSISv1p30_LPC11xx/docs/CMSIS_Core.htm

3. CMSIS 기술소개 동영상 및 문서
http://www.doulos.com/knowhow/arm/CMSIS/index.php
http://www.onarm.com/

4.CodeRed사 LPCXpresso IDE 서포트페이지
http://support.code-red-tech.com/CodeRedWiki/Support4CMSIS


그림2. CMSIS 파트너사

+ Recent posts