싱글콥터 만들기를 진행할 때까지는 3D 프린터도 없어서 온갖 잡동사니를 사다가 자르고 붙이고 하면서 참 고생도 많이 했다. 물론 3D 프린터를 마련한 후에도 모자라는 모델링 실력에 사실상 직접 출력해서 쓴 것보다 출력 대행을 맡긴 것이 더 많긴 하지만…ㅠ.ㅠ
아무튼 이렇게 진행한 프로젝트들이 비록 그 끝은 보지 못했지만 아마도 이제 시작할 인생 프로젝트의 밑거름이 되려고 존재했던 것이 아닌 가 하는 생각이 든다. 바로 그런 실패를 통해 오늘부터 시작할 이 프로젝트의 아이디어가 탄생한 것이나 다름 없으니 말이다(매우 강한 아전인수인가…-.-)
물론 이제 시작할 이 프로젝트의 컨셉이나 아이디어가 전혀 새로운 것은 아니다. 하지만 몇몇 측면에서는 분명 조금은 새로운 시도라 할 수 있을 것 같다(진정한 판단은 이 글을 읽는 분들이 해주시길…^^).
프로젝트의 명칭 - MORS
이 프로젝트의 명칭은 MORS이다. MOdular Robot System의 약어이다. 뭔가 그럴듯한 명칭을 생각하고자 했지만 약어를 만들고 보니…Mors란 영어권에서는 “죽음”, “죽음의 신”, 라틴어로는 “죽음”, ”시체”, “끝”, “파멸” 등 굉장히 불길한 의미를 지니고 있었다. 그나마 독일어에서는 “신화”라는 의미가 있으며 라틴어 숙어인 Mors sola는 “죽음이 갈라놓을 때까지”라는 조금은 애절한 의미가 있었다. 이 중 쓸만한 것은 역시 독일어의 “신화”가 아닐까. “신화가 될 프로젝트”라…나름 괜찮네…
하지만 역시 중요한 것은 풀네임이 의미하는 바이다. 바로 “모듈형 로봇 시스템”이라는 개념 말이다.
Concept
핵심 컨셉은 바로 모듈의 “사용자화”와 “공유”이다. 즉, 사용자가 모듈을 직접 만들고 이 것을 오픈소스화 하는 것이다.
사실 “모듈형”이라는 개념은 하나도 새로울 것이 없다. 이미 많은 로봇들이 모듈형으로 제작되고 있다. 특히나 교육용 로봇들의 다수가 모듈형으로 만들어지고 있다. 따라서 “모듈형”이란 개념은 어찌보면 오히려 상투적인 개념에 더 가깝게 느껴지기까지 한다.
다양한 모듈형 로봇들
하지만 이런 로봇들은 대체로 모듈들이 ready-made로 이미 생산 당시 각 모듈에 부여된 기능을 활용하는 정도로 확장성은 그리 높지 않다는 아쉬움이 있다. MORS는 바로 이점에 착안하여 모듈들을 사용자가 직접 만들어 활용할 수 있도록하고 또 이렇게 만들어진 모듈을 오픈소스화 하는 것이 주 목적이다.
물론 이렇게 할 경우 사용자의 기술적 이해도나 숙련도가 더 높아지는 장애가 발생을 한다. 아두이노에 대한 지식 뿐만 아니라 BASE에서 모듈을 제어하기 위한 프로그래밍도 필요하기 때문에 어느 정도의 프로그래밍 지식도 필요로 하게 될 것이다.
디자인
MORS의 핵심은 라즈베리파이가 장착된 BASE이다. 아래의 그림들은 BASE의 구성도이며 다양한 모듈을 다양한 형태로 연결 가능하도록 하기 위해 8각형의 형태로 만들었다.
이 BASE는 2개의 레이어로 구성이 되어있으며(물론 추후 확장될 수도 있다), 각각의 레이어는 다음과 같이 구성되어있다.
레이어 1
우선 앞서 말한대로 BASE에는 라즈베리파이가 1대 장착되어있고 모듈을 USB로 연결하게 될 경우 기본 4개의 USB 포트를 확장하기 위해 USB 확장 Hat 2개를 배치하였고 모듈을 I2C 방식으로 연결하거나 혹은 모듈에 라즈베리파이를 통해 전원을 공급할 경우를 위해 소형 bread board를 올렸다.
레이어2
두번째 레이어에는 전원과 관련된 부품들이 배치가 되는데 기본적으로 배터리가 장착이 되고 또 모듈쪽 부품들이 다양한 전압을 사용할 수 있도록 2개의 step-down converter를 두어 2종류의 전압(기본은 6V와 12V)을 사용할 수 있게 하고 다수의 모듈에 전원을 공급하기 위해 2개의 배전반을 배치하였다.
Connector
마지막으로 BASE와 모듈간의 통신 및 전원 공급을 위한 커넥터 구성이다. 우선 데이터 통신을 위해서는 USB와 I2C 2가지의 방법을 선택 가능하도록 하여 USB 커넥터를 위한 홀과 I2C를 위한 일반 점퍼선용 홀을 두었다. I2C로 연결을 하는 경우에는 모듈쪽 보드에 별도의 전원 인가가 필요하므로 전원 공급용 점퍼 선도 함께 사용한다. 또 모터 등 직접 별도의 전원을 인가해야 할 경우를 위해 2개의 전원 포트용 홀을 두었다.
Modules
모듈은 전적으로 사용자가 직접 만들게 되므로 고정된 형태가 없다. BASE는 기본적으로 8개의 모듈을 연결할 수 있도록 만들어져 있으나 이 것은 표면적인 형태일 뿐이고 사용하기에 따라서는 작은 모듈 8개를 BASE에 연결하는 형태가 아닌 커다란 모듈에 BASE를 장착하는 형태로 운용할 수도 있다. 모듈은 기본적으로 아두이노 프로 미니 보드를 베이스로 만들 수 있으며 라즈베리파이와 USB 연결이 가능한 보드라면 어떤 것이든 사용이 가능하다.
모듈 제어
라즈베리파이로 아두이노를 제어하는 방법은 일반적으로 2가지를 생각할 수 있다.
첫 번째는 USB로 연결하여 Firmata 라이브러리를 이용하는 방법이다. 이 방법은 라즈베리파이에서 아두이노의 포트를 직접 제어하는 방식으로 USB로 연결하므로 전원 문제가 자동으로 해결되고 또 모듈쪽에 별도의 프로그래밍이 필요 없다는 장점이 있다. 다만 라즈베리파이에서 몇개까지의 아두이노를 USB로 연결하여 제어할 수 있는지는 확인이 필요하다. 일단 8개까지 연결해보려고 계획 중이다.
두 번째는 I2C 방식으로의 연결이다. 이 방식은 BASE의 라즈베리파이에서는 사용자의 원격 조종기 신호만 받아들여 이 신호를 모듈쪽으로 전달만 하고 실제 기능은 각 모듈의 프로그램들이 전달된 신호에 따라 수행 하게 되는 방식이다. 일단 상당히 많은 수의 모듈을 연결할 수 있기는 하지만 모듈쪽에 별도의 전원을 인가 해주어야 하고 또 각각의 모듈에 프로그래밍을 해야 한다는 단점이 있다.
우선은 연결의 편의성과 라즈베리파이에서만 프로그래밍을 하면 된다는 점에서 USB 연결을 우선으로 생각하고 있다.
운용
이미 앞에서 상당부분 언급을 하였지만 MORS는 BASE에 사용자가 직접 만든 모듈을 연결하여 동작을 시키는 방식이다. 모듈은 바퀴가 달린 형태일 수도 있고 로봇 다리의 형태일 수도 있고 드론의 프로펠러가 될 수도 있으며 방수 처리가 된 모듈로 수상용 모듈이 될 수도 있다. 아주 가볍게는 선풍기 모듈 하나 붙여 책상 위에 올릴 수도 있을 것이다^^.
더불어 사용자가 원한다면 본인이 개발한 모듈을 공유할 수 있도록 할 것이다. 3D 프린팅된 모듈용 프레임이 있다면 Thingiverse와 같은 플랫폼을 이용하여, BASE나 모듈의 프로그램들은 GitHub와 같은 플랫폼을 통하여 서로 공유할 수 있도록 하는 것이다.
공유 프로그램의 경우 라즈베리파이에 소형 모니터를 연결한 후 아래 이미지와 같은 사용자 인터페이스를 통해 온라인으로 직접 업데이트 할 수 있도록 개발할 계획이나 이 부분은 시간이 꽤 걸릴 것 같다. 아울러 여력이 된다면 npm같은 플랫폼을 직접 만들어보고 싶기도 하다.
정리
앞서 말했듯이 이 프로젝트는 그동안 진행했던 개인 프로젝트들을 총 집대성한 프로젝트가 될 것이다. 규모 면에서는 상당히 부담이 되지만 그래도 앞서 했던 작업들의 연장선인 만큼 어느 정도 자신감은 있다. 하지만 어디 세상 일이란 것이 그렇게 단순하기만 하던가. 중간에 어떤 문제가 어떻게 닥쳐올 지는 아무도 모르는 일…-.-
당장에 BASE 프레임을 3D 출력해야 하는데 내가 가지고 있는 3D 프린터는 너무 사이즈가 작아 출력이 어렵고(분할하기도 쉽지 않은 형태라) 결국 출력 대행을 해야 하는데 이것 또한 비용이 만만치 않다…ㅠ.ㅠ 그래도 결국은 돈을 쓰고 말겠지만…
우선은 BASE를 빨리 만들고 첫 번째 모듈은 4족 보행 로봇용으로 만들려고 한다. 사실 바퀴가 달린 형태가 구현이 훨씬 쉽겠지만 애초에 4족보행 로봇을 재시도 하려다가 탄생한 프로젝트이다보니 일단은 로봇 쪽으로 시작을 해보려고 한다.
어쟀든 BASE 프레임을 출력 대행 맡기더라도 다음 주 월요일에나 배송이 가능하다니 다음 포스팅은 다음주 주말이나 될 것 같다. 부디 계획대로 잘 진행되길…
한동안 드론 작업을 못했다. 늘 그렇듯 관심사가 사방팔방으로 뻗치는 나로서는 당연하다면 당연한 일…-.-
최근에는 다시 4족 보행 로봇을 준비하고 있어 여러가지 부품도 사모으고 머릿속에서는 어떤 식으로 설계를 할 것인지에 대한 생각이 떠나질 않는다. 게다가 OpenCV 공부도 시작하여 책볼 시간도 할애를 해야 하고 아직 시작은 못했지만 곧 실습도 해봐야 하고…자연스레 진척이 더딘 드론 만들기는 뒷전이 되어 가고 있었다.
그래도 끝은 봐야겠기에 지난 2주동안 프레임도 새로 만들고 로드킬 당한 동물같은 처참한 모양이나마 조립도 하여 테스트를 해보았으나…어마어마한 중량(배터리 포함 무려 170g…ㅠ.ㅠ)으로 실패하고 말았다. 오늘은 간단하게 실패 영상이나 하나 올리고 마치려고 한다…-.-
진행 경과
지난 포스팅에서 일단 헤더핀을 모두 부착하고 점퍼케이블로 연결하여 겨우 모터를 정상적으로 돌리는데 성공을 하였다. 그 후 최초로 만들었던 회로에서 테스트했을 때 잘 안되었는데 계속 만지작대다보니 어느 순간 모터가 돌기 시작했다. 그래서 일단은 최초로 만든 회로를 프레임에 장착하기로 했다.
최초 만들었던 회로
프레임은 프로펠러 가드를 포함한 모양으로 만들었는데 사실 이 부분 때문에 무게가 폭증하였다. 프레임은 123D Design으로 모델링하고 3D 프린터로 출력을 하였는데…출력 소음이 아이들 공부하는데 방해 된다는 클레임이 들어와 울며 겨자먹기로 출력 대행업체에 의뢰를 할 수 밖에 없었다…이 무슨 자린고비 굴비같은 상황인지…ㅠ.ㅠ
123D Design으로 모델링한 프레임
이렇게 우여곡절 끝에 조립을 하였지만 서두에 언급한대로 무게가 무려 170g…보통 미니 드론들이 40~50g 정도인 것을 생각하면 애초에 이녀석이 날 수 있을 것이란 기대는 안드로메다로 날아간 것이다…-,.-
그래도 일단 만들어는 놓았으니 돌려는 봐야겠지 않은가….
하지만 역시나…
추후 계획
일단 현재로싸는 무게가 가장 문제이기에 체중 감량에 중점을 두어 개선을 해야할 것으로 판단된다. 무게의 가장 큰 부분을 차지하는 자작 프레임은 과감하게 쓰레기통으로…ㅠ.ㅠ
그리고 처음 구입했던 Q100 타입의 드론 프레임을 다시 사용해야겠다. 그러려면 회로도 다시 납땜을 해야 한다. 이번에는 조금 더 차분하게 납땜을 해봐야겠다.
차선책으로는 모터를 바꾸는 것도 생각하고 있다. 사실 모터를 바꾸는 쪽이 조금은 더 수월할 것 같다. 아무래도 8520 코어리스 모터보다는 1106나 1406 정도의 BLDC 모터쪽이 추력이 더 강할테니…
물론 그렇게 되면 배터리 셀 수도 늘어나야 해서 배터리 무게와 또 ESC를 사용해야 하니 그 무게도 더해져서 무게가 더 늘어나긴 하겠지만 그정도는 커버할 수 있지 않을까 하는 계산이다(신빙성은 없다…-,.-).
일단은 이 2가지 계획을 순서대로 차근차근 진행해보자~
정리
뭔가 하나에 집중하지 못하는 성인 ADHD 환자같은 성격탓에 이 조그만 드론 하나에 몇달을 보내고 있다…ㅠ.ㅠ 하지만 느려도 황소걸음이라고 문제를 찾고 그 문제를 해결해가는 과정은 착실하게 진행되고 있다는 점에서는 나름 성취감을 느끼고 있다.
아직 원격 조정을 위한 소프트웨어 개발 문제가 남아있지만 일단 뜨는 것이라도 보면 속이 좀 후련하겠다…^^;;; 얼른 요 드론 놀이는 마치고 본격적인 로봇 개발을 시작하고 싶다. 사실 이 로봇 개발도 흔히 사람들이 선택하는 방법이 아니다보니 성공할 수 있을지 많이 불안하다. 하지만 뜻이 있는 곳이 길이 있나니!
한동안 다른 짓거리를 하느라 드론은 손을 못대었다. 콩알만한 것이 금방 될 줄 알았는데 참 여러모로 속을 썪인다…ㅠ.ㅠ 게다가 남은 작업들이 계속 부품들을 교체해가면서 문제의 원인을 찾는 일이다 보니 한번 일을 하려면 맘먹고 시간을 내야하는데 아무래도 좀 더 쉽고 흥미로운 관심사에 우선순위를 뺐기기 일쑤다.
그래도 매주 주말이면 잠깐의 짬이라도 내서 조금씩 문제를 해결해 가고는 있지만 아직도 제대로 동작을 안하고 있다. 오늘은 오랫만에 그간의 진행 상황을 정리해보려고 한다.
새로운 회로의 구성
지난번 포스팅에서 언급했던 새로 주문한 모터는 4월 23일경 도착했다. 주문한 날짜는? 2월 19일…-.- 무려 2달 하고도 4일이 더 걸린 것이다. 게다가 레이서스타 8520 모터의 경우 4개씩 2세트를 주문했는데 모터 한 개가 증발하여 총 7개밖에 안왔다…ㅠ.ㅠ
그래도 와준 것이 어딘가 싶어 주섬주섬 브레드보드를 이용하여 새롭게 회로를 구성하고 테스트를 시작 하였다. 가장 먼저 모터 드라이버의 문제가 아닌가 싶어 다른 모터 드라이버를 이용해보았다. 우선은 가지고 있는 모터 드라이버 중 가장 눞은 출력을 가진 L298N 드라이버를 이용하여 모터를 연결하고 테스트를 해보았다.
하지만 여전히 모터까지 전류가 흐르기는 하는 듯 모터에서 찌르르 하는 소리는 들리는데 정작 모터가 돌지 않는다. 일단 모터 드라이버의 문제는 아닌 것 같다.
다시 원래 사용했던 HR8833 기반의 초소형 모터 드라이버로 교체를 하고 여러가지 테스트를 해보았다. 여기서 발견한 것은 일단 모터 드라이버에 모터를 한 개만 연결하면 모터가 잘 돌아갔다. 하지만 하나의 드라이버에 모터를 2개 연결하는 경우에는 모터가 돌지 않았다.
브레드 보드를 이용한 구성
코드의 변경
처음 사용했던 코드는 딜레이 없이 모터 4개를 돌리도록 되어있었다. 하지만 아무리 작은 모터라도 처음 구동시에는 스펙상의 가장 큰 전류가 흐르기 때문에 이 코드로는 무리가 있지 않을까 하는 생각이 들었다. 그래서 코드를 다음과 같이 수정하였다.
처음 구동시 각 모터별로 1초 정도의 딜레이를 주고 순차적으로 돌리기 시작하였다. 반응이 없던 모터들이 제대로 돌기 시작한 것이다. 이로써 적어도 부품이나 회로의 구성 상에는 문제가 없다는 것을 확인할 수 있었다. 그렇다면 기존에 만들어놓은 회로에는 무슨 문제가 있는 것일까?
납땜의 문제
드디어 모터가 제대로 돌기 시작했다는 것은 분명 한발짝 앞으로 나아간 것이긴 하지만 기존에 만들어놓은 회로에서 제대로 동작하지 않는 것은 여전히 의문이었다. 구성 자체는 브레드보드를 이용한 회로와 동일하였으나 다른 점이 있다면 납땜을 하여 회로를 구성했다는 것이 차이라면 차이였다.
이전에 만들었던 회로에서는 전혀 동작을 하지 않는 것을 확인했고 또 이 회로는 너무 복잡하게 납땜을 해서 더이상 손볼 여지가 없었기 때문에 이 프로젝트 처음 시작할 때 만들었던 회로에 추가로 모터 드라이버를 위한 배선과 전원 배선을 납땜하여 테스트 해보기로 하였다.
드론 프레임을 구매해 구성한 회로
최초에 만들었던 회로에 배선을 추가한 구성
하지만 추가로 구성한 회로 역시 문제가 있었다. 프로펠러가 장착되지 않은 상태에서는 모터가 원활하게 구동이 되었으나 프로펠러를 달기만 하면 모터가 제대로 돌아가지 않았다. 단 하나의 프로펠러만 달아도 전체 모터가 구동되지 않았다.
결국 의심할 수 있는 문제라고는 이 회로들을 만들 때 납땜을 잘못했다는 가정 뿐이었다. 아무래도 케이블이 적절한 위치에 붙지 않았거나 납땜한 부분들 중 쇼트가 나는 부분이 있거나 한 것으로 판단된다. 간혹 손으로 조금 건드려 주거나 눌러주면 모터가 정상적으로 돌아가는 경우도 있어 더 상황 판단을 어렵게 만들었다.
점퍼 케이블 버전으로 완성
2번의 시도 모두 납땜에서 문제가 생겼다는 결론을 내린 이상 더이상 나의 납땜 실력을 신뢰할 수 없는 상황이 되었다. 남은 방법은 브레드보드에 구성한 회로를 그대로 사용하는 것 뿐… 그렇다고 그 무거운 브레드보드를 그냥 사용할 수는 없고 1:N으로 연결되는 부분만 브레드보드를 사용하면 되므로 양쪽 전원부만 잘라서 사용하기로 하고 나머지 부품은 점퍼 케이블로 연결을 하였다. 결국 엄청 복잡한 형태가 만들어졌다…ㅠ.ㅠ
최종 구성 - 점퍼 케이블을 이용한 회로 구성
그리고 비록 험악한 몰골을 하고는 있지만 동작은 아주 만족스러웠다.
하지만 이렇게 되면서 숙제가 하나 생겼다. 바로 프레임을 어떻게 할 것이냐는 것이다. 이 모양으로는 일반적인 형태의 드론 프레임은 도저히 사용할 수 없는 상태이다. 사실 회로의 구성 자체에는 문제가 없으니 구매한 프레임에 만든 형태로 다시 차근차근 납땜을 해도 좋겠지만…두 차례 실패를 거듭한 현 상황에서는 엄두가 나질 않는다…ㅠ.ㅠ
결국 3D 프린터의 힘을 빌릴 수밖에 없는 상황이 되었다. 하지만 다룰 줄 아는 모델링 프로그램이라고는 123D Design뿐인데다 그나마 익숙하지 않으니 어느 세월에 프레임을 만들까… 게다가 이렇게 복잡한 모양이 되어 버린 회로를 깔끔하게 담기 위해서는 얼마나 또 머리를 굴려야 할까…ㅠ.ㅠ
한동안 고생 꽤나 하게 생겼다.
정리
이번 작업으로 아주 중요한 교훈을 얻었다. 바로 납땜에 관련된 것…그 전까지는 아주 간단한 부분만 납땜을 해서 잘 몰랐는데, 그냥 땜납으로 붙어있다고 해서 납땜이 된 것이 아니라는 것을 알게 되었다. 앞으로도 다시 시도할 기회가 있겠지만 절대로 마구잡이로 할만한 작업은 아닌 것이다.
결국 차선책으로 아두이노용 점퍼 케이블을 이용하여 제대로 동작하는 버전을 만들기는 하였지만 역시나 흡족한 형태는 아니다. 다만 지금까지 너무 오랜 시간을 끌었기에 이 상태로 진행을 하고자 할 뿐…
당분간은 프레임 설계하고 출력 하느라 또 꽤 오랫동안 시간과 씨름을 해야 할 것 같다. 언제가 될 지는 모르겠지만 드론이 뜨기 전까지는 이 프로젝트는 끝나지 않을 것이다.
아두이노 공식 개발툴을 대체할 수 있는 5가지 방법 중 마지막으로 embedXcode를 소개한다.
사실 마지막 5번째로 CLI(Command Line Interface: 명령 줄 실행 환경)이 있으나 고수들이 아니면 사용이
쉽지 않은 관계로 이번 정리에서는 제외를 하였다.
지난 번 이클립스 관련 포스팅에서 이클립스가 사용하기 무겁다고 하였지만 사실 Xcode에 비하면 이클립스는 양반이라고 할 수 있다. 만일 PC(Mac) 환경이 메모리 8Gb에 HDD를 사용 중이라면 개발은 포기하는 것이 좋을 것이다. 적어도 메모리 16Gb에 디스크는 퓨전 드라이브 정도는 써야 쓸만할 것이다.
어쨌든 Mac을 사용한다면 선택 가능한 툴이니 소개를 해본다.
Xcode + embedXcode
Xcode는 Mac의 App Store를 통해 다운로드 받을 수 있다. 그리고 embedXcode는 다음의 주소에서 다운로드 받으면 된다.
embedXcode의 경우에도 세가지 버전이 있는데 +에디션 버전과 일반 버전이 있다. 일반 버전은 무료이고 +에디션 버전은 유료이며 +에디션의 경우 다시 2가지로 나뉘어 개인용은 29유로, 상용 라이센스는 99유로이다.
우선은 당연히 무료 버전으로 받아 설치를 하면 된다. 다운로드 받을 때 Xcode 10 버전용과 9 이하 버전용이
별도로 링크되어 있으므로 자신의 Xcode 버전에 맞는 embedXdoce를 다운로드 받으면 된다.
설치가 모두 끝났으면 프로젝트를 만들어보자. Xcode를 실행 후 Create a new Xcode project를 선택하여 새 프로젝트를 만든다.
템플릿 선택 창이 뜨면 상단의 플랫폼 선택 메뉴에서 macOS를 선택한 후 화면 가장 하단에 있는 embedXcode를 선택한다.
프로젝트 정보 입력 창에서 가장 위에 있는 프로젝트 이름과 가장 아래의 2개, 프로젝트 scope와 board를 적절하게 선택한다.
생성된 프로젝트 구조는 다음과 같다. 상당히 많은 파일과 디렉토리들이 보이는데 메인 소스는 '프로젝트명.ino’이다. 프로젝트가 처음 생성된 상태에서는 모든 텍스트가 그냥 흰색으로만 보이는데 이 것은 상단 메뉴에서 선택을 해주면된다. 메뉴는 Editor > Syntax Coloring > C++을 선택해주면 된다.
생성된 파일 중 중요한 파일이 하나 있는데 바로 ‘Makefile’이다. 이 것은 embedXcode의 가장 불편한 점 중
하나이기도 한다. Serial Port나 Baud Rate같은 중요 사항을 바로 이 파일에 직접 타이핑하여 설정해야 한다.
이렇게 모든 설정이 끝나고 나서 빌드를 하면 된다. 빌드를 할 때에는 target을 잘 지정해주어야 하는데
앞서 소개한 2가지 툴의 경우 대부분의 OS에서 제약 없이 사용 가능한 툴이었다. 하지만 남은 2가지 툴의 경우 사용 OS에 제약이 있는 툴이다. 이번 포스팅에 소개할 Visual Studio(이하 VS)의 경우 Mac용도 있지만 Mac용 VS에서는 C/C++ 개발이 지원되지 않는다. 따라서 일반적으로 C/C++ 기반으로 개발을 하게 되는 아두이노 개발 역시 Mac에서는 할 수가 없다. 따라서 VS로 아두이노를 개발하기 위해서는 반드시 Windows 환경이 필요하다(애초에 Add-On 설치 프로그램의 확장자가 vsix로 Windows환경에서만 실행된다).
또한가지 특이한 점이라면 공식 Arduino IDE가 설치되어있어야 하고 VS 설정에서 이 경로를 지정해주어야 한다는 점이다.
Visual Studio + Arduino Add-On
Add-On은 VS 환경에 설치 가능한 플러그인이라 생각하면 된다. 당연히 먼저 VS가 설치 되어 있어야 한다.
VS의 community 버전은 무료 라이센스이기 때문에 이 community 버전을 다운로드 받아 설치하면 된다.
다만 VS Add-On의 경우 완전한 무료가 아니며 무료로 사용할 수 있는 조건은 학생이 비상업적 용도로 사용할 경우
하루에 한 번(with once per day nag이라고 되어있는데 정확한 의미를 모르겠음…-.-)무료라고 되어있어
실질적으로는 유료 라이센스라고 보면 될 것 같다.
설치가 모두 끝났으면 새로운 프로젝트를 만들어보자.
새 프로젝트 만들기를 선택하여 진행하면 최초 VS 설치시 선택한 옵션 여부에 따라 매우 다양한 언어 및 플랫폼 관련
프로젝트 템플릿을 선택할 수 있다. 찾기가 쉽지 않을 수 있으니 검색 창에 Arduino를 입력하여 검색하면 아래와 같이 아두이노 관련 프로젝트 목록만을 볼 수 있다.
Arduino Project를 선택하고 진행하면 기본 정보 입력 화면이 나온다.
기본 사항 입력 후 만들기 버튼을 누르면 프로젝트가 생성되고 메인 IDE 환경으로 넘어간다.
주요 설정 버튼들은 상단 툴바에 모여 있다. 먼저 공식 Arduino IDE 경로를 설정해준다.
툴바의 가장 아랫줄 오른쪽 선택 상자에서 보드 종류를 선택해준다.
Add Library 선택박스를 클릭하면 필요한 라이브러리를 추가하거나 라이브러리 관리를 할 수 있다.
툴바의 가장 아랫줄 중앙쪽에 있는 두 개의 버튼은 각각 Build와 Build and Upload 버튼이다. 아래 이미지의 좌측이
Build, 우측이 Build and Upload
지금까지으 설정들을 포함하여 모든 아두이노 프로젝트 관련 기능들은 툴바의 가장 아랫줄 맨 앞에 있는 vMicro 버튼을
클릭하여 설정할 수 있다. Serial monitor는 메뉴 중 View Port Monitor를 선택하면 볼 수 있다.
VS를 실행한 후 처음 빌드를 시도하면 아래와 같이 라이센스 확인 창이 뜬다. 일단 그냥 Close하면 빌드 및 업로드는
진행이 된다.
여기까지 기본적인 설치와 설정 그리고 빌드와 업로드가 모두 끝난 것이다 그런데 빌드를 했더니 오류가 발생을
하는데 아직 원인을 찾지 못했다. 뭔가 null 참조와 관련된 오류인 것 같은데 아무래도 개발 환경이 익숙하지 않다보니
원인을 잘 모르겠다…ㅠ.ㅠ
정리
이렇게 대체 가능한 아두이노 개발 환경 3번째 도구로 VS를 알아보았다. 하지만 VS는 여러모로 제약이 많은 도구였다. 우선 Mac을 쓰고 있는 입장에서는 아두이노 Add-On 자체가 사용 불가능이고, Windows 환경에서 사용한다 하더라도 라이센스 문제라든지 또는 본문 말미에 발생한 오류 등의 문제로 사용하기에는 가장 껄끄러운 툴이었다(물론 윈도우 기반의 개발환경에 익숙한 개발자라면 얘기가 다를 수 있다).
이제 다음 포스팅에서는 마지막으로 Mac 기반의 개발 툴인 Xcode에 대해 살펴보고 전체 시리즈를 마무리 하도록 하겠다.
최근의 Eclipse는 installer 형식으로 배포되어 installer를 실행하면 용도에 맞는 Eclipse를 설치할 수 있다.
어차피 다른 용도의 Eclipse도 플러그인 설치로 다 사용 가능하므로 무난하게 Java 개발용으로 설치하면 된다.
Eclipse 설치가 끝났으면 Help > Eclipse Marketplace…로 이동하여 Arduino로 검색을 하자. 여러개의 목록이 나올텐데 'Eclipse C++ IDE for Arduino 3.0’을 선택하여 설치해주면 된다.
설치가 모두 끝나면 이클립스를 재시작하고, 재시작한 이클립스의 툴바에 보면 새로운 컨트롤들이 생겨난 것을 볼 수 있다.
이제 설치가 모두 끝났으니 프로젝트를 생성해보도록 하자. New Project에서 C/C++을 선택하면 하위 항목에Arduino Project가 있는 것을 확인할 수 있다. 이후 프로젝트 생성 Wizard를 따라 쭉 진행하자.
이렇게 프로젝트를 생성하고 나면 소스 파일 1개로 이루어진 아주 썰렁한 프로젝트가 생성이 된다. 그런데 함수 호출 코드들이 모두 에러 표시가 되어있다. 이 것은 지난 Atom 포스팅에서도 언급한 바와 같이 Eclipse도 확장자가ino가 아닌 cpp로 되어있기 때문이고 “#include <Arduino.h>”를 소스 상단에 추가해주어야 한다.
또한 플러그인 설치 후 생긴 툴바의 도구들에도 뭔가 따로 선택할 수 있는 것들이 없다. 아두이노와 관련된 설정을
아무 것도 찾을 수가 없어 조금 당황할 수도 있을 것이다. 당황하지 말고 메뉴 표시줄의 Help 메뉴로 다시 가보자
Arduino Download Manager라는 못보던 메뉴가 추가되어 있을 것이다.
이 메뉴를 실행하면 팝업이 하나 열리는데 여기서 Platforn과 라이브러리들을 다운로드 받을 수 있다.
이제 필요한 내용들이 설치가 되었으면 새로 생긴 툴바의 on: 옆에 있는 셀렉트 박스를 열고 New Launch Target을 선택해주자. 그러면 새로이 팝업 창이 열리면서 공식 아두이노 IDE의 툴 메뉴에 있는 내용들을 설정할 수 있게 된다.
여기까지 기본적인 설치와 설정은 모두 끝이났다. 이제 툴바에서 Run 버튼을 클릭하면 빌드와 업로드가 연속해서 진행되고 콘솔 창으로 Arduino 공식 IDE와 동일한 내용의 로그가 보여진다.
정리
이렇게 해서 두번째 Arduino IDE 대안으로 Eclipse에 대해 알아보았다. 사실 Eclipse가 무겁다고는 했지만 뒤에 언급할 Xcode에 비한다면 양반이라고 할 수 있다…-.- 어쨌든 무겁다 하더라도 상당히 많은 개발자들이 아직도 Eclipse의 품을 벗어나지 못(안)하고 있고 그 폭넓은 범용성은 단점을 충분히 커버하고도 남기 때문에 훌륭한 대안이 될 수 있으리라 본다.
나머지 2개의 포스팅은 IT 공룡들인 애플과 마이크로소프트의 제품들을 이용하는 방법인데 두 제품 모두 제대로 활용을하려면 비용을 지불해야 한다. 자세한 내용은 해당 제품 포스팅에서 알아보도록 하자.
흘러간 시간에 비해 진척이 없는 것이 좀 안타까운 현실이다. 지난 포스팅까지 새로운 부품을 구해 나름 보기 좋게 드론 프레임에 장착을 하였다. 이제 번거로운 하드웨어 작업이 끝났으니 슬슬 소프트웨어 작업만 시작하면 되겠거니 생각을 했건만…
오늘은 그냥 가볍게 발생한 문제에 대한 의문만 남겨본다.
하드웨어 보완
지난 번 부품을 얼키설키 연결을 시켜놓고 모양 잘나왔다고(?) 자아도취에 빠져 이리 저리 둘러보던 중… 아뿔싸…스위치가 없었다…ㅠ.ㅠ
다행이 예전에 미리 잔뜩 사다놓은 푸시락 버튼이 있어 주섬주섬 찾아다가 드론 프레임의 앞자리, 카메라 장치하는 공간에 끼워봤더니 얼추 잘 어울린다 싶어 연결을 하였다. 이것으로써 정말 하드웨어 조립은 끝을 맺게 되었다. 다만 드론이 구동을 안할 시 그 원인이 하드웨어쪽에 있다면…망한거다…ㅠ.ㅠ
테스트
그리고 이제 스케치 코드를 작성하고 테스트를 해볼 시간이다. 코드는 매우 간단하게 일반적으로 DC모터 드라이버를 사용하는 예제를 가져왔다. 코드는 다음과 같다.
간단하게 모터의 동작만 테스트하는 아주 간단한 코드이다. 원래 MPU9250과 nRF24L01 예제 코드에 추가하여 테스트 하려고 했는데 뭔가 잘 안되는 것 같아 모터만 따로 테스트해보기로 했다.
하지만…그래도 잘 안된다….ㅠ.ㅠ
일단 delay 시간에 맞춰서 모터 드라이버에 LED도 불이 들어오고 전류가 흐르는 소리가 찌르르 나긴 하는데 정작 모터가 돌아가지 않는다. 모터 드라이버가 전류를 잘 공급해주지 못하는 것일까? 아는 것이 없으니 어디를 의심해봐야 할지도 모르겠다…ㅠ.ㅠ 일단 증상은 아래의 영상과 같다.
그리고 실제 부품들과는 다르지만 회로 구성도도 함께 올려본다. 이 회로도는 미니 드론 만들기 작업을 처음 포스팅 할 때 올렸던 그림이다.
정리
오늘은 모터 구동 테스트를 진행해보았다. 하지만 결과는 썩 좋지 않았다. 이제부터의 과제는 과연 무엇이 문제의 원인인지를 찾아내는 것이다. 때문에 다음 주 주말에는 현재 부품이 아닌 다른 부품 (아두이노 프로 미니와 다른 DC모터 드라이버, 그리고 다른 모터들)을 이용하여 회로를 구성하고 정상적으로 구동이 되는지 확인을 해봐야겠다.
사실 현재 드론에 사용중인 Racerstar의 8520 코어리스 모터를 한 달 전에 banggood.com에서 추가로 주문을 해놓았는데 무슨 일인지 배송이 안되다가 겨우 며칠 전에 선적되었다는 것을 확인할 수 있었다. 만일 새로 구성한 회로가 잘 작동을 하고 새 모터가 무사히 도착을 한다면 기존 작업한 것을 버리고 새 회로와 모터 그리고 프레임도 새로 만들어 다시 시작을 해야겠다. (역시 정상 동작을 확인하고 납땜을 했어야 했는데…ㅠ.ㅠ)
조언 감사합니다. 한 번 하는데 까지 해봐야죠^^; 모터 드라이버는 http://vctec.co.kr/front/php/product.php?product_no=10336&NaPm=ct%3Djxn4v49m%7Cci%3Dcheckout%7Ctr%3Dppc%7Ctrx%3D%7Chk%3D1cfc6dde3b26d508d16cb5158c3f7caa40d1c52e
요 제품입니다.