최근에 아두이노를 구입했다. 사실 '진짜' 아두이노는 아니다. 흔히 '짭두이노' 라고 부르는 호환보드. 친구가 추천해준 모델을 구입 했다. 아두이노 우노 보드에 Esp8266이 결합되어 있는 모델이다. 구매링크
문득 임베디드 시스템에 관심이 생겨서. 이것저것 장난도 좀 쳐보고 싶고.
문제는 입문하는 주제에 이 '호환보드'를 구입함으로써 수많은 고난들이 시작되는데...
1. 작은 고난
보드를 처음 컴퓨터에 연결했을 때, 아두이노 IDE에서 인식을 하지 못했다. 그래서 나는 '이 케이블은 충전용이구나!' 하며 다음 날 이마트에서 데이터 전송 가능 5핀 케이블을 사왔다. 그럼에도 불구, 인식하지 못한 나는 그대로 멘붕.
검색을 해보니, 호환보드는 인식을 위해서 별도의 드라이버가 필요하다고 한다.
사진에 보이듯, 내가 구매한 보드는 CH340G 라는 드라이버를 채용했으므로 그에 맞는 드라이버를 다운 받았다.
다운로드 링크 (윈도우용): www.wch.cn/download/CH341SER_ZIP.html
다운로드 링크 (OSX 10.9 이상):www.wch.cn/download/CH341SER_MAC_ZIP.html
매우 직관적으로 구성 되어있으므로 방법은 따로 설명하지 않겠다.
이로써, 첫번째 고난이 해결 되었다.
2. 큰 고난
이제 IDE에서 보드를 인식한다. 그래서 여러 강의 영상을 통해 Blink 예제를 컴파일 해보았다.
불이 들어오지 않았다.
나는 '호환보드라서 온보드 LED가 없구나!'라고 생각해서, 보드와 함께 구매한 LED를 꽂아보았다.
사실 여기서도 꽤 힘들었는데, 일반적으로 처음 쓰는 2핀 LED와 달리 3색 LED(4핀)였기 때문이었다. 아무 LED나 샀더니 강의영상들과 다르게 핀이 4개였고, 덕분에 바로 브레드보드와 3색 LED 사용법을 알게 되었다.
스프링이 2개인 시스템을 가르쳐준 뒤, 스프링이 4개인 시스템을 풀어보라는 공대식 과제폭격이 생각났다.
???????????????????????????????????????
그럼에도 불구하고 불이 켜지지 않는다.
???????????????????????????????????????
분명 컴파일은 아무 이상 없이 되었는데...
그래서 난 뭐라도 해보자는 생각으로 컴파일 대신 업로드를 눌러 보았다.
그러자,
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xba
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xba
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xba
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xba
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xba
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xba
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xba
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xba
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xba
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xba
avrdude: stk500_recv(): programmer is not responding
에러가 뜨는 것을 확인, 구글에 검색했다.
일반적인 대답으로는 '부트로더에 문제가 있다.'
또는 '오토리셋이 작동하지 않아, 기존의 코드가 무한히 실행 중이어서 업로드가 되지 않는다.'
(부트로더는 쉽게 말해 OS를 실행시키기 위해 제일 먼저 시작되는 프로그램이다. 이후에 관련 글을 쓰도록 하겠다.)
후자의 경우, 해결법이 Reset 핀과 DTR 핀에 커패시터를 꽂는 것이었는데, 나는 커패시터를 당장 가지고 있진 않았다.
그래서 전자의 해결법을 찾아보았다.
하지만 아두이노는 해당 보드 제외 하나의 보드가 더 있어야 부트로더를 초기화할 수 있다.
유일하게 본 단독보드 초기화 글은 정품 아두이노가 아니여서 실패했다. 파일을 찾을 수 없었기 때문.
(링크 : robodream.tistory.com/59 - Kim's Programming)
그래서 Stackoverflow 등등 여러 사이트를 뒤져가며 온갖 방법들은 다 해보았는데 답이 보이지 않았다.
그러던 와중에, 구매처 상세페이지를 보는데
"이 표는 뭐지...?"
하며 보드를 유심히 살펴보니
이 부분의 필름을 떼니 8개의 스위치가 보였고, 저 표에 맞게 스위치를 켜고 끄니
컴파일이 너무도 잘되었다.
굉장히 허무했다.
3. 결과물과 새로운 과제
결과적으로 저항을 제거 했을 때 LED는 잘 켜졌으나, 기존처럼 저항이 연결된 경우엔 불이 들어오지 않았다.
전류와 전압, 저항의 관계에 대해 공부하여 그 이유를 추측해보고 싶어졌다.
4. 그냥 생각나서 씀
나중에 알게된 사실인데, 컴파일에서는 안뜨던 메세지들이 업로드에서 떴던 이유가 있었다. 그건 내가 아두이노 IDE를 초기에 설정할 당시, 강의들을 무작정 따라했는데,
다음 동작 중 자세한 출력 보이기에서 업로드에 체크를 해놓아서 그런 것이었다.