2013년 4월 4일 목요일

0. 하드웨어 생초보 아두이노를 접하다 !!

공돌이긴 하지만 소프트웨어에 친숙해 왔던 환경 때문에 하드웨어에 대한 일종의 두려움이 있었다. PC에 주변 장치 만들어 시리얼로 데이터 받는것을 많이 보기는 했지만 진작 나 자신은 어떻게 하는지 먼 영역의 일이었다..

실제로 접근하기 힘들었던게..

   private void button1_Click(object sender, EventArgs e)
        .......

만 보고 다루다가 

  0xFF ..
  PORTD1 ..

와 같은 텍스트롤 보기엔 우선 짜증 부터 난다. 위에 것은 언어에 비교적 가깝다. 버튼이 클릭되는것이 어찌 된다는 얘기다.. 그러나 밑에것은. 암호 그 자체다. 

그렇지만 주변환경이 나를 찝적거린다. 직업상 어찌 하다보니 c# USB 시리얼 통신부분 소스를 보게 되었다. 아주 일부분만 소게하자면... 

        public GADC24()
        {
            ready = false;
            usbDevices = new USBDeviceList(CyConst.DEVICES_CYUSB);
            myDevice = usbDevices[0x04B4, 0x2000] as CyUSBDevice;
            if (myDevice == null)
            {
                //Text = "No device found";
                return;
            }
       
            controlEP = myDevice.EndPointOf(0x00) as CyControlEndPoint;
            commandEP = myDevice.EndPointOf(0x06) as CyBulkEndPoint;
            dataEP = myDevice.EndPointOf(0x82) as CyBulkEndPoint;
            if (controlEP == null || commandEP == null || dataEP == null)
            {
                 return;
            }
            foreach (USBDevice dev in usbDevices)
             CheckFPGADone();
            ResetDAQ();
   
        } 


첫 줄 보고 질린다.. 대충 이야기는 여기서 부터 시작된다. 같은 사무실에 라즈베리파이 (사실 그땐 그것이 무엇인지 전혀 몰랐다)로 3D프린터를 집에서 취미생활로 만드는 고수가 있다. 그 사람과 커피 한잔 하면서 이런저런 얘기하다가 그사람의 추천으로 아두이노를 접하게 된다. 일단 그림 부터


대충 이리 생긴 물건이다.. 칩이 있고 구멍이 있는걸 보니 저기다 멀 꽂으면 칩이 어찌저치 주기도/받기도 하게 생겼다.. 실제 또 그렇다.. 그런데 그런 건 많지 않는가.. 정작 내가 놀란건 저놈과 대화하는 언어였다.. 시리얼을 하기위해서 딱 필요한건.. http://arduino.cc/ 에서 개발환경을 다운받고 적절한 곳에 압축을 풀고.. 다음 화면과 같이




void setup() {
  Serial.begin(9600);
}

void loop() {
    Serial.println("Hello !!"); 
}

놀랍겠지만 이게 다다. 컴파일하고 업로드 하면 작동이 된다. 이게 문명히 C 같은데 main() 이 안보인다. 난 이게 아두이노의 성공 요인이라고 본다 main()은 사실 있다. 감추어 놓았을뿐 대충 구조는

main() {
   setup();
   for (;;) loop();
}

와 같이 구성되어 있다. 두 가지 면에서 놀랐다.

  • 사람이 보고 직감할 수 있다. 아 시리얼을 하는구나 대충 9600의 속도로.. 아 "Hello" 라고 인사를 하는구나
  • 기나긴 디바이스 셋업 과정을 한줄로 끝내는구나.. (사실 이게 최고의 매력임 !!)

모든게 그렇듯 그 안에서 일어나는 일은 어찌저찌 해볼 수 있는데, 모든게 진입장벽을 지나고 나서의 일이다. 
아두이노!!  하드웨어로의 진입장벽을 뚫을 수 있는 너무나 좋은 물건이다


이에 힘입어 첫번째 프로젝트..
장난감자동차+아두이노+블루투스 를 연결 휴대폰으로 조종!!


댓글 없음: