본문으로 이동

오차막대: 두 판 사이의 차이

학교의 모든 지식. SMwiki
 
16번째 줄: 16번째 줄:
OPT 점퍼캡은 아두이노와 모터 쉴드 사이를 연결하는 일종의 연결 다리 역할을 한다. 따라서 OPT 점퍼캡이 장착된 상태에서는 아두이노의 5V 전압이 모터 쉴드에도 전달된다. 이 경우 별도의 외부 전원 없이도 모터를 구동할 수 있다. 그러나 외부 전원이 필요한 상황에서는 반드시 OPT 점퍼캡을 제거한 뒤 외부 전원을 연결해야 한다. 점퍼캡이 연결된 상태에서 모터 쉴드에 높은 외부 전압을 인가하면, 그 전압이 그대로 아두이노로 전달되어 아두이노가 손상될 수 있기 때문이다. 한편, 점퍼캡을 제거한 상태에서도 블루투스와 같은 아두이노의 기본 기능은 정상적으로 사용할 수 있다.
OPT 점퍼캡은 아두이노와 모터 쉴드 사이를 연결하는 일종의 연결 다리 역할을 한다. 따라서 OPT 점퍼캡이 장착된 상태에서는 아두이노의 5V 전압이 모터 쉴드에도 전달된다. 이 경우 별도의 외부 전원 없이도 모터를 구동할 수 있다. 그러나 외부 전원이 필요한 상황에서는 반드시 OPT 점퍼캡을 제거한 뒤 외부 전원을 연결해야 한다. 점퍼캡이 연결된 상태에서 모터 쉴드에 높은 외부 전압을 인가하면, 그 전압이 그대로 아두이노로 전달되어 아두이노가 손상될 수 있기 때문이다. 한편, 점퍼캡을 제거한 상태에서도 블루투스와 같은 아두이노의 기본 기능은 정상적으로 사용할 수 있다.


=== ③ DC & 스태핑 모터 연결 ===
=== ③ DC 모터 연결 ===
모터 연결부에는 총 4개의 연결부가 존재하며, 이 연결부는 2개씩 A와 B로 구분된다. 모터를 사용하기 위해서는 A 혹은 B 중 하나를 선택하여 해당 연결부에만 선을 연결해야 한다. A에 하나, B에 하나씩 선을 연결할 경우 모터는 작동하지 않는다. 따라서 모터 A와 모터 B, 총 2개의 모터를 연결할 수 있다. 각 모터의 핀 배치는 다음과 같다. A의 속도 조절은 10번, A의 방향 조절은 12번이며, B의 경우 속도 조절은 11번, 방향 조절은 13번이다.
모터 연결부에는 총 4개의 연결부가 존재하며, 이 연결부는 2개씩 A와 B로 구분된다. DC 모터를 사용하기 위해서는 A 혹은 B 중 하나를 선택하여 해당 연결부에만 선을 연결해야 한다. A에 하나, B에 하나씩 선을 연결할 경우 모터는 작동하지 않는다. 따라서 모터 A와 모터 B, 총 2개의 모터를 연결할 수 있다. 각 연결부의 핀 배치는 다음과 같다. A의 속도 조절은 10번, A의 방향 조절은 12번이며, B의 경우 속도 조절은 11번, 방향 조절은 13번이다.(스태핑 모터 또한 사용할 수 있다)


아래는 모터를 A에 연결했을 때의 코드 예제이다.
아래는 모터를 A에 연결했을 때의 코드 예제이다.<syntaxhighlight lang="arduino" line="1">
int E1 = 10; //속도 조절 핀
int E1 = 10;//속도 조절 핀  
int M1 = 12; //방향 조절 핀
int M1 = 12; //방향 조절 핀
void setup()
void setup()
{  
{
    pinMode(M1, OUTPUT); //12번핀으로 방향 조절
  pinMode(M1, OUTPUT); //12번핀으로 방향 조절
}  
}
void loop()  
{  
void loop()
    digitalWrite(M1,HIGH); //HIGH에서 LOW로 바꾸면 반대 방향으로 회전  
{
    analogWrite(E1, 255); //0~255로 모터의 속도 조절이 가능하다.  
  digitalWrite(M1,HIGH); //HIGH에서 LOW로 바꾸면 반대 방향으로 회전
    delay(30);
  analogWrite(E1, 255); //0~255로 모터의 속도 조절이 가능하다.
}
   delay(30);
</syntaxhighlight>실행 결과: A에 연결된 모터를 최대 속도로 작동시킴
  }
 
=== ④ 서보 모터 포트 ===
기존 아두이노 우노에 서보모터를 연결하려면 별도의 선을 연결해야 하는 번거로움이 있지만, 모터 쉴드를 사용하면 서보모터를 매우 간편하게 연결할 수 있다. 서보모터에는 총 3개의 선이 순서대로 붙어 있으며, 모터 쉴드에도 이에 대응하는 3개의 연결부가 존재한다. 이때 (–)에 해당하는 검은색(또는 갈색) 선이 연결부 G에 연결되도록 꽂으면 된다. 이렇게 연결한 서보모터의 핀 번호는 9번이다. (추가 서보모터를 설치하고 싶다면 ⑧&⑨ 참고)
 
아래는 서보모터를 연결했을 때의 코드 예제이다.<syntaxhighlight lang="arduino" line="1">
#include<Servo.h> //서보 사용
Servo s1; // 서보 모터의 이름을 s1으로 설정
void setup()
{   s1.attach(9); //s1의 연결된 핀은 9번
    s1.write(90); //초기 각도 설정(90도)
}void loop()
{    s1.write(180);
    delay(100);
    s1.write(90);
    delay(100);
}
</syntaxhighlight>실행 결과: 서보 모터가 90도 사이를 180도를 반복해서 이동
 
=== ⑤ 블루투스 포트 ===
블루투스 역시 서보모터와 마찬가지로 기존 아두이노 우노에 직접 연결하려면 별도의 선을 연결해야 하는 번거로움이 있지만, 모터 쉴드를 사용하면 매우 간편하게 연결할 수 있다. 사용 가능한 블루투스 모듈에는 여러 종류가 있으나, 여기서는 HC-06을 예시로 설명하겠다. (다른 모듈도 연결 방식은 유사하다.) 블루투스 모듈에는 4개의 연결부가 있으며, 모터 쉴드에도 이에 대응하는 4개의 연결부가 존재한다. 이때 HC-06 기준으로 모듈의 LED가 부저를 바라보는 방향으로 꽂아 연결하면 된다. 정상적으로 연결되면 LED에 빨간색 불이 깜빡인다.(전원 연결을 해야 불이 들어온다) 기본 코드는 다음과 같다.<syntaxhighlight lang="arduino" line="1">
#include <SoftwareSerial.h> //시리얼 통신 라이브러리 호출
int blueRx=1;  //Rx (받는핀 설정)
int blueTx=0;  //Tx (보내는핀 설정)
void setup()
{    Serial.begin(9600);
    btSerial.begin(9600); //블루투스 시리얼 개방
}void loop()
{    while(btSerial.available()) // 블루투스에서 신호가 오는 동안 실행
    {
    char myChar = (char)btSerial.read(); //블루투스를 통해 받은 값을 char 형식으로 변환
    Serial.println(myChar); // 시리얼 모니터에 받은 문자 출력
    delay(5);          //수신 문자열 끊김 방지
    }
}
</syntaxhighlight>실행 결과: 휴대전화 블루투스를 통해 전송한 문자가 시리얼 모니터에 전송, 출력
 
블루투스 모듈은 휴대전화에 특정 앱을 다운로드하면 다양한 방식으로 활용할 수 있다. 휴대전화와 블루투스 모듈을 처음 연결할 때는 비밀번호가 필요한데, 일반적으로 초기 설정 값은 0000 또는 1234이다. (이 비밀번호는 이후 설정을 통해 변경할 수 있다.) 이때 휴대전화에 블루투스가 정상적으로 연결되면 깜빡이던 불빛이 계속 켜진 상태로 유지된다. 또한 아두이노에 코드를 업로드할 때 블루투스 모듈이 연결된 상태에서는 업로드가 원활하지 않을 수 있으므로, 코드 다운로드가 완료된 후 블루투스 모듈을 연결하는 것이 바람직하며 블루투스 모듈 제거 시 꼭 휴대전화의 연결을 끊고 제거해야 한다. 이 외에도 설정 항목이나 시리얼 번호 등 다양한 사항이 존재하지만, 본 문서에서 모두 다루기에는 분량이 많아 별도로 찾아보기를 권한다.
 
=== ⑥ 초음파 센서 포트 ===
초음파 센서 역시 모터 쉴드를 사용하면 비교적 간단하게 연결할 수 있다. 다만 이 경우에는 단순히 꽂는 방식으로는 연결할 수 없으며, 별도의 선 연결이 필요하다. 핀 배치는 Echo 핀(R)이 8번, Trigger 핀(T)이 7번이다. 초음파 센서의 구체적인 연결 방법과 코드 예제는 별도로 찾아보기를 바란다.
 
=== ⑦ 부저 ===
모터 쉴드에는 능동 부저가 내장되어 있다. 능동 부저는 음계를 표현하기는 어렵고, 켜기, 끄기를 통해서만 구동되기 때문에 주로 경고음 용도로 사용된다. 부저의 핀 번호는 4번이다. 사용 코드는 아래와 같다.<syntaxhighlight lang="arduino" line="1">
void setup()
{    pinMode(4, OUTPUT); //능동부저가 연결된 4번 핀을 출력으로 설정
}void loop()
{    tone(4, HIGH); //능동부저 소리 켬
    delay(1000);
    digitalWrite(4, LOW); //능동부저 소리 끔
    delay(1000);
}
</syntaxhighlight>실행 결과: 부저에 소리가 1초 간격으로 켜젔다 꺼지기를 반복
 
=== ⑧&⑨ 디지털 핀, 아날로그 핀, 전원 공급 핀 확장 ===
⑧, ⑨핀은 기존 아두이노 우노의 디지털 핀, 아날로그 핀, 전원 공급 핀을 모터 쉴드 위로 그대로 확장해 사용할 수 있도록 해주는 역할을 하며, 기능은 기존 아두이노의 핀과 완전히 동일하다. 따라서 추가 서보모터나 추가 센서를 설치할 경우에도 기존 아두이노와 동일한 방식으로 연결하면 된다.

2025년 12월 18일 (목) 15:44 기준 최신판


이 문서는 아두이노의 모터 쉴드 중 L298P 다기능 모터쉴드(아두이노 L298P 모터 드라이버 H브리지 쉴드)의 사용법과 활용법에 대해 다룬다.

모터 드라이버(모터 쉴드)란?

[편집 | 원본 편집]

모터 드라이버란 아두이노 같은 마이크로컨트롤러의 약한 신호를 증폭해 여러 모터를 제어하는 장치이다. 모터 쉴드란 모터 드라이버의 일종으로 컨트롤러 보드에 직접 꽂아 여러 장치를 쉽게 제어할 수 있게 해주는 확장 보드이다.

아두이노 L298P 모터 드라이버 H브리지 쉴드

[편집 | 원본 편집]

① 외부 전원 공급

[편집 | 원본 편집]

아두이노는 기본적으로 5V로 작동한다. 따라서 모터 쉴드를 부착하더라도 외부 전원을 연결하지 않으면 모터에는 최대 5V까지만 인가할 수 있다. 반면, 외부 전원을 연결하면 최대 12V까지 전압을 공급할 수 있다. 이때 외부 전원을 사용할 경우에는 반드시 OPT 점퍼캡을 제거해야 한다. 따라서 출력이 큰 모터를 구동할 때는 외부 전원을 반드시 연결해야 한다. (허용 전류는 2A이다.) 외부전원의 (-)극은 GND, (+)극은 VMS에 연결한다.

② OPT 점퍼캡

[편집 | 원본 편집]

OPT 점퍼캡은 아두이노와 모터 쉴드 사이를 연결하는 일종의 연결 다리 역할을 한다. 따라서 OPT 점퍼캡이 장착된 상태에서는 아두이노의 5V 전압이 모터 쉴드에도 전달된다. 이 경우 별도의 외부 전원 없이도 모터를 구동할 수 있다. 그러나 외부 전원이 필요한 상황에서는 반드시 OPT 점퍼캡을 제거한 뒤 외부 전원을 연결해야 한다. 점퍼캡이 연결된 상태에서 모터 쉴드에 높은 외부 전압을 인가하면, 그 전압이 그대로 아두이노로 전달되어 아두이노가 손상될 수 있기 때문이다. 한편, 점퍼캡을 제거한 상태에서도 블루투스와 같은 아두이노의 기본 기능은 정상적으로 사용할 수 있다.

③ DC 모터 연결

[편집 | 원본 편집]

모터 연결부에는 총 4개의 연결부가 존재하며, 이 연결부는 2개씩 A와 B로 구분된다. DC 모터를 사용하기 위해서는 A 혹은 B 중 하나를 선택하여 해당 연결부에만 선을 연결해야 한다. A에 하나, B에 하나씩 선을 연결할 경우 모터는 작동하지 않는다. 따라서 모터 A와 모터 B, 총 2개의 모터를 연결할 수 있다. 각 연결부의 핀 배치는 다음과 같다. A의 속도 조절은 10번, A의 방향 조절은 12번이며, B의 경우 속도 조절은 11번, 방향 조절은 13번이다.(스태핑 모터 또한 사용할 수 있다)

아래는 모터를 A에 연결했을 때의 코드 예제이다.

int E1 = 10;//속도 조절 핀 
int M1 = 12; //방향 조절 핀
void setup()
{ 
    pinMode(M1, OUTPUT); //12번핀으로 방향 조절
} 
void loop() 
{ 
    digitalWrite(M1,HIGH); //HIGH에서 LOW로 바꾸면 반대 방향으로 회전 
    analogWrite(E1, 255); //0~255로 모터의 속도 조절이 가능하다. 
    delay(30); 
}

실행 결과: A에 연결된 모터를 최대 속도로 작동시킴

④ 서보 모터 포트

[편집 | 원본 편집]

기존 아두이노 우노에 서보모터를 연결하려면 별도의 선을 연결해야 하는 번거로움이 있지만, 모터 쉴드를 사용하면 서보모터를 매우 간편하게 연결할 수 있다. 서보모터에는 총 3개의 선이 순서대로 붙어 있으며, 모터 쉴드에도 이에 대응하는 3개의 연결부가 존재한다. 이때 (–)에 해당하는 검은색(또는 갈색) 선이 연결부 G에 연결되도록 꽂으면 된다. 이렇게 연결한 서보모터의 핀 번호는 9번이다. (추가 서보모터를 설치하고 싶다면 ⑧&⑨ 참고)

아래는 서보모터를 연결했을 때의 코드 예제이다.

#include<Servo.h> //서보 사용
Servo s1; // 서보 모터의 이름을 s1으로 설정
void setup() 
{    s1.attach(9); //s1의 연결된 핀은 9번
    s1.write(90); //초기 각도 설정(90도)
}void loop()
{    s1.write(180);
    delay(100);
    s1.write(90);
    delay(100);
}

실행 결과: 서보 모터가 90도 사이를 180도를 반복해서 이동

⑤ 블루투스 포트

[편집 | 원본 편집]

블루투스 역시 서보모터와 마찬가지로 기존 아두이노 우노에 직접 연결하려면 별도의 선을 연결해야 하는 번거로움이 있지만, 모터 쉴드를 사용하면 매우 간편하게 연결할 수 있다. 사용 가능한 블루투스 모듈에는 여러 종류가 있으나, 여기서는 HC-06을 예시로 설명하겠다. (다른 모듈도 연결 방식은 유사하다.) 블루투스 모듈에는 4개의 연결부가 있으며, 모터 쉴드에도 이에 대응하는 4개의 연결부가 존재한다. 이때 HC-06 기준으로 모듈의 LED가 부저를 바라보는 방향으로 꽂아 연결하면 된다. 정상적으로 연결되면 LED에 빨간색 불이 깜빡인다.(전원 연결을 해야 불이 들어온다) 기본 코드는 다음과 같다.

#include <SoftwareSerial.h> //시리얼 통신 라이브러리 호출
int blueRx=1;   //Rx (받는핀 설정)
int blueTx=0;   //Tx (보내는핀 설정)
void setup() 
{    Serial.begin(9600);
    btSerial.begin(9600); //블루투스 시리얼 개방
}void loop()
{    while(btSerial.available()) // 블루투스에서 신호가 오는 동안 실행
    {
    char myChar = (char)btSerial.read();  //블루투스를 통해 받은 값을 char 형식으로 변환
    Serial.println(myChar); // 시리얼 모니터에 받은 문자 출력
    delay(5);           //수신 문자열 끊김 방지
    }
}

실행 결과: 휴대전화 블루투스를 통해 전송한 문자가 시리얼 모니터에 전송, 출력

블루투스 모듈은 휴대전화에 특정 앱을 다운로드하면 다양한 방식으로 활용할 수 있다. 휴대전화와 블루투스 모듈을 처음 연결할 때는 비밀번호가 필요한데, 일반적으로 초기 설정 값은 0000 또는 1234이다. (이 비밀번호는 이후 설정을 통해 변경할 수 있다.) 이때 휴대전화에 블루투스가 정상적으로 연결되면 깜빡이던 불빛이 계속 켜진 상태로 유지된다. 또한 아두이노에 코드를 업로드할 때 블루투스 모듈이 연결된 상태에서는 업로드가 원활하지 않을 수 있으므로, 코드 다운로드가 완료된 후 블루투스 모듈을 연결하는 것이 바람직하며 블루투스 모듈 제거 시 꼭 휴대전화의 연결을 끊고 제거해야 한다. 이 외에도 설정 항목이나 시리얼 번호 등 다양한 사항이 존재하지만, 본 문서에서 모두 다루기에는 분량이 많아 별도로 찾아보기를 권한다.

⑥ 초음파 센서 포트

[편집 | 원본 편집]

초음파 센서 역시 모터 쉴드를 사용하면 비교적 간단하게 연결할 수 있다. 다만 이 경우에는 단순히 꽂는 방식으로는 연결할 수 없으며, 별도의 선 연결이 필요하다. 핀 배치는 Echo 핀(R)이 8번, Trigger 핀(T)이 7번이다. 초음파 센서의 구체적인 연결 방법과 코드 예제는 별도로 찾아보기를 바란다.

⑦ 부저

[편집 | 원본 편집]

모터 쉴드에는 능동 부저가 내장되어 있다. 능동 부저는 음계를 표현하기는 어렵고, 켜기, 끄기를 통해서만 구동되기 때문에 주로 경고음 용도로 사용된다. 부저의 핀 번호는 4번이다. 사용 코드는 아래와 같다.

void setup()
{    pinMode(4, OUTPUT); //능동부저가 연결된 4번 핀을 출력으로 설정
}void loop()
{    tone(4, HIGH); //능동부저 소리 켬
    delay(1000);
    digitalWrite(4, LOW); //능동부저 소리 끔
    delay(1000);
}

실행 결과: 부저에 소리가 1초 간격으로 켜젔다 꺼지기를 반복

⑧&⑨ 디지털 핀, 아날로그 핀, 전원 공급 핀 확장

[편집 | 원본 편집]

⑧, ⑨핀은 기존 아두이노 우노의 디지털 핀, 아날로그 핀, 전원 공급 핀을 모터 쉴드 위로 그대로 확장해 사용할 수 있도록 해주는 역할을 하며, 기능은 기존 아두이노의 핀과 완전히 동일하다. 따라서 추가 서보모터나 추가 센서를 설치할 경우에도 기존 아두이노와 동일한 방식으로 연결하면 된다.