아두이노로 모터를 구동시키기

드디어 아두이노로 모터를 구동시켜 보겠습니다. 지금까지 잘 따라 오셨다면 아두이노 나노, 아두이노 나노 확장보드, MG90S를 구매하셨을 것입니다. 그리고 MG90S 서보모터 두 개를 나무 양쪽에 맞게 고정하셨고, 서보모터의 혼을 이용해서 나무 스틱을 혼에 연결했을 것입니다. 모터가 어디를 가리키고 있는지 확실하지 않기 때문에 아직 혼을 서보모터에 연결하지는 않은 상태입니다. 우리는 이제 이 부품들을 조립하고 움직여 보도록 하겠습니다.

하드웨어 연결

어떻게 조립(모터 – 아두이노 연결)하나요?

다음 그림을 보고 따라하시시면 됩니다. 아두이노를 아두이노 확장보드에 꽂습니다. 방향에 주의해야 합니다. 만약 거꾸로 꽂는다면 보드 및 다른 부품에 치명적인 영향을 끼칠 수 있습니다.

모터는 어디에 꽂나요?

모터는 9, 10번 핀에 꽂습니다.

주의해야 할 점은 방향입니다. 서보모터의 극은

위 순서대로 입니다. 아두이노 확장보드에 써 져 있는 순서는 G V S 라고 되어 있습니다. G- Ground, V – VCC (아두이노 나노 확장 보드에서 VCC는 5v 입니다), S – Signal (신호) 입니다. 아두이노에서 나가거나 들어오는 신호를 뜻하는데요, 이 신호가 모터의 Control 선에 연결되어야 합니다.

왜 모터를 그 핀에 꽂는건가요?

서보모터에 제공하는 신호는 PWM 신호입니다. 저 핀들은 PWM 을 내보낼 수 있는 신호이지요.

껐다 켰다 하는 신호가 PWM 이라면서요? 생각보다 간단한 기능 같은데, 다른 핀들은 그렇게 할 수 없나요?

할 수는 있습니다. 정확한 타이밍에 정확하게 신호를 켰다가 껐다가 하면 되는 일이지요. 하지만 우리는 PWM 기능을 갖고 있는 핀들을 이용할 것입니다. 왜냐하면 우리는 그 핀에게 그런 신호를 보내라고 명령만 하면 그 핀이 알아서 그렇게 신호를 보내게 됩니다. 하지만 그런 특정 핀이 아닌 다른 핀에게 그런 신호를 보내라고 명령할 수 없습니다. 유일한 방법은 우리가 프로그램을 통해서 켰다가 껐다가 하는 방법밖에 없습니다. 이 것은 매우 불편한 일입니다. 마치 전기 난로에 강 중 약 스위치를 이용하면 되는데 굳이 전기 코드를 온도계를 보면서 손으로 꽂았다 뽑았다 하는 것과 같은 이치입니다.

그나저나 아두이노에 핀이라고 했는데 핀이란게 대체 뭔가요?

아두이노는 다양한 핀(PIN)을 갖고 있습니다. 아두이노는 두뇌에 해당하는 MCU가 있고 두뇌를 움직이게 도와주는 부가 회도들이 있지요. MCU는 다양한 기능을 갖고 있습니다. 내부적으로는 수학적 연산을 하고, 외부적으로는 외부의 신호를 내보내거나 받아들일 수 있습니다. 그 외부의 신호를 주고 받는 통로가 바로 pin 입니다. 각각의 pin들은 번호가 있습니다. 그 번호에 맞게 우리는 프로그램을 코딩하면 됩니다.

모터와 아두이노를 연결했습니다. 그럼 이제 뭘 하면 되나요?

잘 연결하셨다면 전원을 한 번 켜보시길 바랍니다.

전원은 어떻게 켜나요?

전원은 아두이노 나노에 달린 USB 포트에 USB 케이블을 연결하고, 그 USB 케이블을 컴퓨터의 USB 포트나 USB 충전기에 꽂으면 됩니다. 처음부터 컴퓨터에 꽂는 것보다 USB 충전기에 꽂는 것이 컴퓨터를 보호하기에 좋습니다. 만약 아두이노 회로가 쇼트가 났거나 모터가 불량이라서 내부적으로 쇼트가 나 있다면 컴퓨터에 무리가 될 수 있습니다. 보통 컴퓨터는 보호 회로를 갖고 있지만 그래도 조심하는 것이 좋겠지요. USB 충전기에 아두이노를 연결해서 아두이노의 전원 LED (보통 빨간색)이 잘 켜졌다면, 그리고 어디서 탄 냄새가 나지 않는다면 회로는 무사 통과입니다!

쇼트라는게 뭐죠?

전원 선과 Ground 선이 만나는 것을 뜻합니다. 이 경우, 전기적 에너지를 제공하는 장치 혹은 건전지는 자신이 출력할 수 있는 최대한의 전기를 출력합니다. 하지만 쇼트가 날 경우, 그 전력을 소비할 곳이 없습니다. 그래서 그 전기는 다시 자기 자신에게 들어가서 열을 발생시킵니다. 결국 화재가 발생할 수도 있는 것이지요. 조심해서 나쁠 것은 없습니다. 항상 안전에 주의하세요!

소프트웨어

이제 드디어 모터를 구동시킬 준비가 되었습니다. 하지만 지금은 모터가 움직이지 않습니다. 아직 신호를 보낼 수 없기 때문이지요

그럼 이제 뭘 해야하나요?

이제 소프트웨어 차근 차근 따라오시면 됩니다. 급하신 분들은 다음 순서에 맞춰서 클릭 / 복사 / 붙여넣기를 하시면 됩니다.

본 순서대로 따라하셨다면 모터는 모터의 초기 중간 위치로 이동해서 멈출 것입니다.

아두이노 IDE 다운로드
아두이노 IDE 가 뭔가요?

아두이노 IDE (Integrated development environment)는 아두이노를 위한 프로그램입니다. 이 IDE 를 사용해서 아두이노에 우리가 코딩한 프로그램을 넣을 수도 있고, 아두이노의 신호를 주고 받거나 아두이노의 상태를 체크할 수 있습니다. 또한 여러 가지 라이브러리를 다운받고 실행할 수 있는 아주 편리한 도구입니다. 어떠면 아두이노의 핵심이라고 할 수 있습니다. 아두이노가 생기기 전에는 임베디드 소프트웨어 개발자만이 회로에 생명을 불어넣는 일을 할 수 있었습니다. 그만큼 어려웠지요. 준비해야 할 보드나 장비, 소프트웨어가 워낙 많았고 제반 지식들도 풍부했어야 했습니다. LED 에 불을 하나 깜빡이기 위해서 아주 많은 양의 지식을 미리 배워놓고 있을 필요가 있었지요. 하지만 아두이노는 이러한 과정들을 모두 건너뛸 수 있도록 미리 사전에 준비를 해 두었습니다. 하드웨어는 아두이노 보드를 만들었고, 소프트웨어는 아두이노 IDE 를 만들었습니다. 우리는 그저 쉽게 코딩만 하고 버튼 하나만 누르면 알아서 프로그램이 보드로 넘어가게 됩니다. 이 것은 예전에는 꿈도 꿀 수 없는 일이었습니다.

어디서 다운받나요?
링크 바로가기

링크에 들어가서 자신의 컴퓨터에 맞는 소프트웨어 다운받습니다. 윈도우 PC 를 쓰고 있다면 윈도우를, 맥이라면 맥용 소프트웨어를 클릭합니다.

 또는 

클릭을 한다면 다음 페이지가 한 번 더 뜹니다. 얼마를 기부할 것인지 물어보는 페이지입니다. 아두이노는 오픈소스 프로그램이기 때문에 자발적 기부를 해 주길 원하는 것 같습니다.

여유가 있으시다면 기부 하셔도 되고, 그냥 다운받으실 분들은 [JUST DOWNLOAD] 버튼을 누르시면 되겠습니다.

윈도우 PC 를 갖고 계신분들은 이런 화면으로 넘어갈 것입니다.

Get it now 버튼을 누르시면 자동으로 설치가 될 것입니다. 요즘 윈도우 PC는안드로이드처럼 앱 마켓에서 다운받는 식이 되어서 편하게 설치할 수 있습니다.

아두이노 IDE 를 받긴 했는데 어떻게 실행하나요?

윈도우 PC라면 시작 버튼을 누르시고 A 주변에 보면 Arduino 라고 앱이 준비되어 있을 것입니다.

클릭을 하면 아두이노 IDE 가 실행됩니다.

아두이노 보드 지정하기

아두이노 IDE 의 [Tools – Board:]를 보시면 아두이노 나노 [Arduino Nano] 라고 선택할 수 있습니다. 클릭을 해 줍니다.

아두이노 포트 지정하기

아두이노가 어떤 포트를 통해서 통신을 할 것인지 정해줄 필요가 있습니다. 이 포트 번호는 언제든 바뀔 수 있기 때문에 아두이노를 뽑았다가 꽂았다면 꼭 확인을 해 줄 필요가 있습니다.

아두이노를 USB 에 연결합니다. 컴퓨터의 스피커가 켜 져 있었다면 띵동~ 하면서 새로운 디바이스를 꽂았을 때 나는 소리가 날 것입니다. 그리고 나서 컴퓨터의 [ 제어판 – 장치 ]에 들어가 보시면 CH340 이라는 장비가 보일 것입니다. 그리고 옆에 괄호가 쳐져 있고 COM이라는 글자와 함께 옆에 숫자가 써 져 있습니다. 바로 그 숫자가 이번에 아두이노가 컴퓨터에 연결된 번호입니다. 컴퓨터를 공항이라고 생각해 보면 저 숫자는 공항의 6번 터미널 쯤 될 것입니다. 아두이노 IDE 는 정품 아두이노 보드가 꽂혀지면 자동으로 찾지만 이렇게 카피버전의 아두이노 보드를 사용한다면 수동으로 잡아 주어야 합니다.

제어판 – 장치는 어떻게 들어가요?

시작 버튼을 누르시고 “제어판”이라고 한글로 입력하시고 엔터를 치시면 제어판 창이 뜹니다. 그리고 나서 저 네모 부분을 클릭하시면 됩니다.

서보모터 테스트 소스코드 복사하기

이 소스코드를 복사해서 붙여넣으세요

#include <Servo.h>

Servo myservo1;  // 첫 번째 서보모터 (왼쪽 모터)
Servo myservo2;  // 두 번째 서보모터 (오른쪽 모터)

void setup() {
  myservo1.attach(9);   // 9번 핀을 서보1번이라는 이름으로 컨트롤 하겠음 (왼쪽 모터)
  myservo2.attach(10);  // 9번 핀을 서보2번이라는 이름으로 컨트롤 하겠음 (오른쪽 모터)
}

void loop() {
  myservo1.write(90); // 서보 1번에게 90도로 이동하라고 명령 (왼쪽 모터)
  myservo2.write(90); // 서보 1번에게 90도로 이동하라고 명령 (오른쪽 모터)
}

업로드 버튼 누르기

업로드 버튼을 누르면 10~20초 정도 뒤에 모터가 움직임을 느낄 수 있습니다. 여기까지 오셨다면 무난하게 성공했습니다. 축하합니다.

움직이지 않는다면 의심해 볼 것들

포트 번호, 소스코드의 오류, 케이블 잘 안꽂혀 있음, 아두이노 보드가 망가짐, 아두이노에 가위나 칼 같은 전도성 물체가 달라 붙어 있어서 쇼트가 나서 제대로 보드가 동작 안하고 있음 등등의 원인이 있을 수 있습니다.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *