테크/예제

[아두이노] 메가2560 블루투스 연결

시그널보내 2021. 6. 23. 01:19

우선 흔히 사용하는 아두이노 우노를 사용하지 않고 왜 메가를 사용할까?

 

그거슨 바로 핀의 개수가 모자라기 때문이다.

 

물론 우노에 다른 모뎀을 연결해서 포트 확장을 하는 방법이 있는 것 같지만 그 또한 제한적이라 시원하게 메가로 바꿔주었다.

 

다른 설정 없이 기본적으로 아두이노 우노는 디지털 핀의 개수를 12개(PWM포함)밖에 사용하지 못하지만

메가2560은 디지털만 약70개를 사용할 수 있다. 

왼) 아두이노 메가                              오) 아두이노 우노

 

간단한 프로젝트를 진행 할 때 3~4개의 모듈사용은 기본인데 7-segment만 해도 디지털포트 8개를 잡아먹는다. 

 

따라서 오픈소스도 많고 배우기 쉬운건 아두이노 우노지만 추후에 확장성을 고려한다면 메가를 피할수 없을 것이다.

 

이 글에서는 메가를 사용하면서 처음으로 어려움을 겪은 블루투스 연결에 관해 적어보려 한다.


아두이노 우노(UNO)

우선 아두이노에서 흔히 사용하는 블루투스 모듈은 HC-06이다.

HC-06 모듈

포트 구성을 보면 위에서부터 RXD, TXD, GND, VCC라고 적혀있다.

 

「포트 연결 구성」

HC-06 아두이노
우노
RXD D7
TXD D8
VCC 5V
GND GND

「소스코드」

#include <SoftwareSerial.h>
SoftwareSerial BTSerial(8, 7); //RX, TX     //그 BTS아님....bluetooth serial약자임....

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

void loop() {
    if (BTSerial.available())             //블루투스 모듈에서 신호가 입력되면
        Serial.write(BTSerial.read());    //아두이노 시리얼로 출력해라
    if (Serial.available())               //아두이노에 신호가 입력되면
        BTSerial.write(Serial.read());    //블루투스 시리얼로 출력해라
}

※주의사항※

HC-06 모듈의 RX, TX와

아두이노 보드의 RX, TX는 반대로 연결해 준다.

즉, 모듈에서 RX단자는 보드의 TX포트로 연결,

모듈의 TX단자는 보드의 RX포트와 연결한다.

 

[결과]

 

아두이노 메가(MEGA) 2560

「포트 연결 구성」

HC-06 아두이노
메가 2560
RXD 18(TX1)
TXD 19(RX1)
GND GND
VCC 5V

메가 보드에서는 친절하게 RX와 TX가 구분되어있어서 우노와 마찬가지로 반대로 연결해 주면 된다.

 

「소스코드」

#include <SoftwareSerial.h>

void setup() {
 Serial.begin(9600);
 Serial1.begin(9600);         //Serial1 == 18 19번핀, Serial2 == 16 17번핀, Serial3 == 14 15번핀
 Serial.println("HELLO!");
}

void loop() {
  if (Serial1.available()) {
    Serial.write(Serial1.read());
  }
  if (Serial.available()) {
    Serial1.write(Serial.read());
  }
}

 

[결과]