본문 바로가기

아두이노우노 R4

Lora 모듈: 15km 거리에서 릴레이 켜기

반응형

 

Lora 모듈: 15km 거리에서 릴레이 켜기

 

Akhil Satheesh2025년 1월 27일 전자 프로젝트

 

이 이미지는 LoRa 기술을 사용하여 장거리에서 릴레이를 활성화하는 무선 통신 시스템을 보여줍니다. 왼쪽에는 Arduino Nano 마이크로컨트롤러, LoRa 통신 모듈, 버튼으로 구성된 'LoRa 버튼'이라는 모듈이 있습니다.

 

버튼을 누르면 LoRa를 통해 신호가 전송됩니다. 오른쪽은 'LoRa 릴레이'로, Arduino 마이크로컨트롤러(아마도 Arduino Uno일 것입니다), 신호를 수신하는 LoRa 모듈, 신호 상태가 변경되면 활성화되는 릴레이가 포함되어 있습니다.

 

이미지는 최대 15km 거리까지 통신이 가능하다는 것을 나타냅니다. 릴레이 상태는 송신기에서 수신한 신호에 따라 0에서 1까지 변경됩니다. 요약하면, 이 시스템은 LoRa 통신을 사용하여 릴레이를 원격으로 활성화할 수 있으므로 자동화, 농업 또는 넓은 지역의 원격 제어 시스템에서 유용하게 사용할 수 있습니다. 

 

 

 

 

안녕하세요, 여러분. 오늘은 최대 15km 범위의 Lora 모듈을 사용하여 릴레이를 제어하는 ​​방법을 보여드리겠습니다. 여기서는 LoRa 모듈에 연결된 송신기와 수신기 장치를 사용하고 있습니다.

 

내용

 

송신기에 버튼을 연결했습니다. 송신기를 눌러 릴레이를 제어할 수 있습니다. 같은 버튼을 사용하여 수신기 장치의 릴레이를 켜거나 끕니다. 두 장치 간의 원활한 통신을 보장하기 위해 LED 상태가 송신기에 연결됩니다.

 

수신기는 3초의 정기적인 간격으로 릴레이 상태를 송신기로 지속적으로 다시 보냅니다.

 

송신기 측에 연결된 LED가 수신기 장치에서 릴레이 상태를 수신하고 있음을 지속적으로 나타내는 것을 알 수 있습니다. 이 동기화 프로세스를 통해 두 장치가 동시에 동일한 릴레이 상태를 갖습니다.

 

이 프로세스는 데이터 전송 중에 발생할 수 있는 모든 데이터 손실을 처리하는 데 필요합니다.

 

구성 요소 필요

  • 릴레이 모듈
  • Arduino nano
  • Arduino Uno
  • RYLR406 LoRa 모듈
  • 푸시 버튼
  • LED
  • 1K 및 2K 저항

 

LoRa 모듈 송신기 회로 및 연결

 

LoRa 버튼 구성 요소

 

 

LoRa 모듈은 3.3V 장치이므로 Arduino의 3.3V 핀을 사용하여 전원을 공급하고 Lora 모듈의 RX 핀에 전압 분배기를 연결하여 5V 신호를 Lora 모듈과 호환되는 3.3V로 변환했습니다.

 

RYLR406 기반 LoRa 모듈 송신기 회로도

 

LoRa 모듈 송신기 회로

 

LoRa 릴레이 회로(수신기) 및 연결

 

여기에 제공된 수신기 장치의 다이어그램의 배선을 살펴보겠습니다. 하드웨어가 손상되지 않도록 모든 연결을 다시 확인하십시오. Arduino Uno PIN 3에서 LoRa 모듈의 Rx 핀에 연결하고 TX 핀에서 Arduino의 PIN 2로 연결합니다. 릴레이 제어 신호는 Arduino PIN 6에서 가져옵니다.

 

LoRa 모듈 수신기 회로

 

LoRa Remote 및 Reciever용 프로그래밍 파일 다운로드

 

LoRa Remote Arduino nano 프로그래밍 코드

 

/*************************************************************************************************
 *  Created By: Tauseef Ahmad
 *  Created On: 20 July, 2023
 *  
 *  YouTube Video: https://youtu.be/390JbyaBIjg
 *  My Channel: https://www.youtube.com/@AhmadLogs
 ***********************************************************************************************/

#include <SoftwareSerial.h>
SoftwareSerial lora_serial(2, 3); // RX, TX

String FREQUENCY_BAND = "433000000";
String NETWORK_ID = "7";
String THIS_DEVICE = "1";
String OTHER_DEVICE = "2";

const int buttonPin = 6;
const int ledPin = 12;

bool relayState = false;

void setup() {
  Serial.begin(115200); 
  delay(1000);
  lora_serial.begin(115200); 
  delay(1000);

  pinMode(buttonPin, INPUT_PULLUP);
  pinMode(ledPin, OUTPUT);

  lora_serial.println("AT+BAND="+ FREQUENCY_BAND);
  delay(1000);
  lora_serial.println("AT+NETWORKID="+ NETWORK_ID); 
  delay(1000);
  lora_serial.println("AT+ADDRESS="+ THIS_DEVICE); 
  delay(1000); 
}

void loop() {
  if (digitalRead(buttonPin) == LOW){ 
    relayState = !relayState;
    String command = (relayState == true) ? "a1" : "a0";
    lora_serial.println(
      "AT+SEND="+ OTHER_DEVICE+",2,"+ command);
    Serial.println(command);
    delay(500); //debounce handling
  }

  while (lora_serial.available()) { 
    String data = lora_serial.readString();
    Serial.println(data);
    if(data.indexOf("a1") > 0) { 
      digitalWrite(ledPin, HIGH);
      relayState = 1;
    } else if(data.indexOf("a0") > 0) { 
      digitalWrite(ledPin, HIGH);
      relayState = 0;
    }
  }

  delay(50);
  digitalWrite(ledPin, LOW);
}

 

LoRa Realay 또는 Reciever 프로그래밍 Arduino Uno 코드 

 

/*************************************************************************************************
 *  Created By: Tauseef Ahmad
 *  Created On: 20 July, 2023
 *  
 *  YouTube Video: https://youtu.be/390JbyaBIjg
 *  My Channel: https://www.youtube.com/@AhmadLogs
 ***********************************************************************************************/

#include <SoftwareSerial.h>
SoftwareSerial lora_serial(2, 3); // RX, TX

String FREQUENCY_BAND = "433000000";
String NETWORK_ID = "7";
String THIS_DEVICE = "2";
String OTHER_DEVICE = "1";

const int relayPin = 6;

bool relayState = false;

void setup() {
  Serial.begin(115200); 
  delay(1000);
  lora_serial.begin(115200); 
  delay(1000);

  pinMode(relayPin, OUTPUT);

  lora_serial.println("AT+BAND="+ FREQUENCY_BAND);
  delay(1000);
  lora_serial.println("AT+NETWORKID="+ NETWORK_ID); 
  delay(1000);
  lora_serial.println("AT+ADDRESS="+ THIS_DEVICE); 
  delay(1000); 
}

void loop() {
  while (lora_serial.available()) { 
    String data = lora_serial.readString();
    Serial.println(data);
    if(data.indexOf("a1") > 0) { 
      digitalWrite(relayPin, HIGH);
      relayState = 1;
    } else if(data.indexOf("a0") > 0) { 
      digitalWrite(relayPin, LOW);
      relayState = 0;
    }
  }

  static unsigned long previousTime = 0;
  if (millis() - previousTime >= 5000) { 
    previousTime = millis();

    String command = (relayState == true) ? "a1" : "a0";
    lora_serial.println(
      "AT+SEND="+ OTHER_DEVICE+",2,"+ command);
  }
}

 

언제나 늘 그렇듯이 위 튜토리얼의 참고 문서로 가려면 이 링크를 따라가세요.

 

반응형

캐어랩 고객 지원

취업, 창업의 막막함, 외주 관리, 제품 부재!

당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약, 아이디어는 있지만 구현할 기술이 없는 막막함.

우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.

이제 고민을 멈추고, 캐어랩을 만나세요!

코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.

제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!

귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.

지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.

카카오 채널 추가하기

카톡 채팅방에서 무엇이든 물어보세요

당신의 성공을 위해 캐어랩과 함께 하세요.

캐어랩 온라인 채널 바로가기

캐어랩