본문 바로가기
아두이노 통신

[통신모듈/HC-12] 저렴하고 긴 거리 통신이 가능한 HC-12

by 작동미학 2020. 8. 22.
반응형

중거리 통신이 가능한 HC-12 통신 모듈에 대해 알아보자

 

▶ 이 가이드를 따라하면

- 블루투스나 433Mhz보다 더 긴 거리를 커버하면서, 사용법도 간단한 HC-12를 활용할 수 있다.

 

▶ 기존 읽어보면 좋을 강의

- 동일한 시리얼 통신 방식으로 작동하는 APC-220 : https://bbangpan.tistory.com/27

 

▶ 부품 설명 및 회로 구성

 그동안 몇가지 통신 모듈을 소개했었는데, 이보다 더 마음에 드는 모듈이 없었다. 저렴한 가격에 먼거리 통신이 가능했기 때문이다. 대부분 블루투스나 433Mhz통신 모듈이 방이나 옆방정도까지가 가능하다면, HC-12는 집 전체와 집 밖도 어느정도 커버할 수 있다. 통신 속도를 낮추면 야외에서는 최대 1.8km거리까지 도달한다고 알려져있다. 단순한 2개의 핀으로 통신할 수 있는 것도 장점이다. SI4463칩 기반으로 작동한다.

[HC-12 모듈 앞면, 안테나를 납땜했다]
[HC-12  모듈   뒷면 ]

 

송수신을 테스트하기 위해서는 역시 Arduino 보드는 2개가 필요하다. 연결은 매우 단순해서, VCC->5V, GND->GND, TXD->D2(RX), RXD->D3(TX) 연결하면 시리얼통신으로 보낸 내용을 곧바로 송신하여 수신부에서 Serial.read() 읽어올 있다. 별도 라이브러리 설치도 필요없다.

[송수신을 위한 모듈 2개 구성]

다만, HC시리즈의 다른 블루투스 모듈과 유사하게 모듈 셋팅을 먼저 필요가 있다. 셋팅 작업에서는 속도나 통신 옵션 등을 정의하는데, 디폴트로 쓴다면 별도의 모듈 셋팅을 하지 않아도 되긴 하다. 대략 9600bps, 1번채널 등이 디폴트 모드이다. 따라서 모듈 통신 시험만 하고 싶다면 다음으로 넘어가고, 셋팅을 조절할 필요가 있다면 아래를 참고하자. 셋팅 작업시는 모듈의 SET 아두이노 보드의 GND 연결해 두어야 한다. 실제 통신시에는 제거한다.

 

Github 링크 : HC-12 셋팅 : https://github.com/bbangpan/bbangpan.com/blob/master/neibc_hc12_cmd.ino

 #include <SoftwareSerial.h>

 

SoftwareSerial HC12(2,3); // HC-12 TX Pin D2(RX), HC-12 RX Pin D3(TX)

 

void setup() {

  Serial.begin(9600);             // 시리얼 모니터 속도 정의

  HC12.begin(9600);               // HC12 시리얼 통신 속도 정의

}

 

void loop() {

  while (HC12.available()) {        // HC-12 수신 데이터가 존재하는 경우

    Serial.write(HC12.read());      // HC-12 모듈의 출력 내용을 읽어 시리얼 모니터로 전송

  }

  while (Serial.available()) {      // 시리얼 모니터의 입력 내용이 존재하면

    HC12.write(Serial.read());      // 읽어서 HC-12 모듈로 전송

  }

}

[HC-12 의 SET핀을 아두이노의 GND에 연결해야 모듈 셋팅이 가능하다]

 

 

상기 소스 코드를 컴파일해서 올리면 시리얼 모니터 창에서 아래와 같이 여러가지 작동이 가능하다. 실행 후 시리얼 모니터를 띄우고, 전송 창에 AT를 입력하고 전송을 누르면 OK가 출력되는 것이 정상 상태이다. 이후에 아래 명령으로 모듈 셋팅을 변경할 수 있으며 AT+RX명령으로 셋팅된 전체 내역을 확인할 수 있다.

 

AT+Bxxxx (속도정의(bps), 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, default:9600)

AT+Cxxx (채널정의 001~127이지만 100이하만 사용 권고 ß 100Mhz~473.0Mhz까지 400Khz간격으로 주파수를 늘리게 됨, 송수신 모듈 2개가 이 채널이 같아야 통신이 된다.)

AT+Px (전송파워 정의 1~8, 0.8mW~100mW까지 전력 소모를 조절가능)

AT+FUx (모듈 전송 모드 변경 1~4, 숫자가 높을수록 조금더 전송 딜레이를 늦춰 멀리갈 수 있다. FU39600bps/600m 도달, FU4의 경우는 1200bps/1.8km 도달이 가능하다고 한다.)

AT+V (버전출력)

AT+RX (전체 셋팅 현황 출력)

 

세부 내용은 http://www.alselectro.com/files/HC-12_v2.3B_UserManual.pdf 문서를 참조할 있다.

 

아래가 AT, AT+B9600, AT+C001, AT_P8, AT+FU3,AT+V,AT+RX를 차례로 전송하여 출력결과를 본 시리얼 모니터 화면이다.

[ 모듈 세팅을 위한 시리얼 모니터 화면, 윗 전송 창에 명령을 입력하고 전송 버튼을 누른다]

 

셋팅이 끝났으면, 셋팅을 위해 연결한 SETGND연결을 제거하고, 아래 send/recv각 소스를 컴파일하여 두 보드에 각각 탑재시킨 후 recv가 담긴 보드를 들고 다니면, 제대로 신호가 수신될 시 보드의 깜빡이는 불을 볼 수 있다.

(해당 소스는 짧은 간격으로 A를 전송하고, 수신부에서 읽으면 Blink로 깜빡이게 만든 소스이다. 예시에서는 한 방향으로만 전송하지만, 실제로는 양방향으로 통신도 가능하다.)

 

Github : HC-12 송신 소스 링크 : https://github.com/bbangpan/bbangpan.com/blob/master/neibc_hc12_send.ino

#include <SoftwareSerial.h>

SoftwareSerial HC12(2,3); // HC-12 TX Pin, HC-12 RX Pin

 

void setup() {

  HC12.begin(9600);         // Serial port to HC12

}

 

void loop()

{

  HC12.print("A");

  delay(500);

}

 

Github : HC-12 수신 소스 링크 : https://github.com/bbangpan/bbangpan.com/blob/master/neibc_hc12_recv.ino

#include <SoftwareSerial.h>

SoftwareSerial HC12(2,3); // HC-12 TX Pin, HC-12 RX Pin

 

void setup() {

  pinMode(LED_BUILTIN, OUTPUT);

  Serial.begin(9600);        // Serial port to computer

  HC12.begin(9600);         // Serial port to HC12

}

 

void loop()

{

  while(HC12.available()) {

    Serial.print((char)HC12.read());

    digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)

    delay(200);                       // wait for a second

    digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW

  }

  delay(200);

}

 

아래와 같이 별도 전원을 연결하여 들고 다니면서, 주파수 도달 거리를 알 수 있다(노트북/PC에서는 송신부가 USB에 연결되어 작동하고 있는 경우다)

[recv  소스 컴파일하여, 배터리를 연결해 들고 다니면서 보드의 LED가 깜빡이는지 확인한다]

 

상기 소스를 다양하게 변형하여 집 전체에 도달하는 통신기능을 구현할 수 있다.

[주의, 통신 모듈의 경우에는 간단한 실험외에 본격적으로 사용하려면 국내 전파법 위반등을 미리 확인하시고 사용할 필요가 있습니다]

 

▶ 구매 가이드

HC-12 : https://www.aliexpress.com/af/HC-12-wireless-serial.html?d=y&origin=n&SearchText=HC+12+wireless+serial&catId=0&initiative_id=SB_20200821182016 ($3전후)

 

강의 키워드

HC-12, 시리얼 통신 모듈, serial communication, wireless, Arduino, 아두이노

반응형