미친해커

[Arduino] LoRa Step 5 - 아두이노를 활용해 LoRa로 통신하기 본문

Arduino/LoRa

[Arduino] LoRa Step 5 - 아두이노를 활용해 LoRa로 통신하기

미친해커 2021. 12. 31. 11:59
반응형

저번 포스팅에서 아두이노와 로라 모듈을 연결하는 방법에 대해서 설명했으니 이번엔 아두이노를 활용해 로라로 통신을 해보려고 한다. 우선 단방향 통신으로 한쪽 아두이노에서 테이터를 전송하면 그 데이터를 전송받아 출력하는 방식으로 프로그래밍을 해보려고 한다.

 

GitHub - xreef/LoRa_E32_Series_Library: Arduino LoRa EBYTE E32 device library complete and tested with Arduino, esp8266 and esp3

Arduino LoRa EBYTE E32 device library complete and tested with Arduino, esp8266 and esp32. sx1278/sx1276 - GitHub - xreef/LoRa_E32_Series_Library: Arduino LoRa EBYTE E32 device library complete and...

github.com

위 라이브러리를 이용하여 로라 모듈을 사용해보려고 한다. 위 깃헙에서 EBYTE.cpp와 EBYTE.h 파일을 다운로드 받아 아두이노 프로젝트 폴더에 넣어준다.
(현재는 라이브러리가 업데이트 되어 완전 다른 코드가 되었다. 아래에 예제에서 사용하는 라이브러리를 첨부해뒀다)

LoRa_E32_Series_Library.zip
0.01MB

우선 데이터를 전송하는 코드를 먼저 짜보려고 한다. 코드는 시리얼 포트로부터 데이터를 읽어들인 다음 해당 데이터를 로라를 통해 전송한다.

전송 코드

// File name : sender.ino
#include <SoftwareSerial.h>
#include "EBYTE.h"

#define PIN_M0 4 // 로라 모듈의 M0 핀이 연결되어 있는 디지털 핀 번호
#define PIN_M1 5 // 로라 모듈의 M1 핀이 연결되어 있는 디지털 핀 번호
#define PIN_AX 6 // 로라 모듈의 AX 핀이 연결되어 있는 디지털 핀 번호

SoftwareSerial LoRa(2, 3); // 아두이노의 디지털 핀을 시리얼 포트로 사용
EBYTE Transceiver(&LoRa, PIN_M0, PIN_M1, PIN_AX); // 로라 모듈에 설정을 할수 있도록 도와주는 클래스

void setup()
{
    Serial.begin(115200);
    LoRa.begin(9600);
    Transceiver.init();
}

void loop()
{
    if (Serial.available() > 0)
    {
        String msg = Serial.readString();
        LoRa.print(msg);
        Serial.print(msg);
    }
}

이렇게 데이터를 전송하는 코드를 작성해보았다면 이번엔 데이터를 받는 코드를 작성해보자. 코드는 로라 모듈로부터 데이터를 읽어들여 시리얼 포트로 출력하는 코드이다.

수신 코드

// File name : receiver.ino
#include <SoftwareSerial.h>
#include "EBYTE.h"

#define PIN_M0 4
#define PIN_M1 5
#define PIN_AX 6

SoftwareSerial LoRa(2, 3);
EBYTE Transceiver(&LoRa, PIN_M0, PIN_M1, PIN_AX);

void setup()
{
    Serial.begin(115200);
    LoRa.begin(9600);
    Transceiver.init();
}

void loop()
{
    if (LoRa.available() > 0)
    {
        String msg = LoRa.readString();
        Serial.print("Received : ");
        Serial.print(msg);
    }
}

이 각각의 코드를 아두이노에 업로드하고 시리얼 포트로 데이터를 전송하면 다른 한쪽의 아두이노에서 로라로 그 데이터를 잡아 출력하는 것을 볼수 있다.

반응형
Comments