메이커 Maker

AI로 IoT 코딩하기(2)

지구빵집 2024. 5. 2. 07:50
반응형

AI로 IoT 코딩하기(2)

(질문)

RAK3172과 ESP32 Dev를 연결한 테스트 코드를 짜주세요.

(대답)

1. Gemini

RAK3172와 ESP32 Dev를 연결한 테스트 코드
참고:
이 코드는 RAK3172 LoRa 모듈과 ESP32 DevKitC 개발 보드를 연결하는 기본적인 예시입니다.
사용하기 전에 RAK3172와 ESP32 DevKitC의 연결 설정을 확인하십시오.
코드를 수정하여 원하는 기능을 구현할 수 있습니다.

라이브러리 설치:
Arduino IDE에서 라이브러리 관리자를 엽니다.
검색 필드에 LoRa를 입력하고 **LoRaWAN_RAKwireless_RAK3172` 라이브러리를 설치합니다.
검색 필드에 SSD1306를 입력하고 **Adafruit SSD1306` 라이브러리를 설치합니다.
코드:

#include <LoRaWAN_RAKwireless_RAK3172.h>
#include <Wire.h>
#include <Adafruit_SSD1306.h>

#define OLED_SDA 4
#define OLED_SCL 15

// LoRaWAN 설정
#define LORA_REGION EU868
#define LORA_DEVICE_EUI "0000000000000000"
#define LORA_APP_EUI "0000000000000000"
#define LORA_APP_KEY "00000000000000000000000000000000"

// OLED 디스플레이
Adafruit_SSD1306 display(OLED_SDA, OLED_SCL);

void setup() {
  Serial.begin(115200);
  while (!Serial);

  // LoRaWAN 초기화
  LoRaWAN.init(LORA_REGION, LORA_DEVICE_EUI, LORA_APP_EUI, LORA_APP_KEY);

  // OLED 디스플레이 초기화
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.print("RAK3172 테스트");

  // LoRaWAN 송신 시작
  LoRaWAN.send();
}

void loop() {
  // LoRaWAN 수신 확인
  LoRaWAN.receive();

  // OLED 디스플레이 업데이트
  display.setCursor(0, 10);
  display.print("RSSI: ");
  display.print(LoRaWAN.getRSSI());

  delay(1000);
}

코드를 사용할 때는 주의가 필요합니다.

설명:
setup() 함수는 LoRaWAN과 OLED 디스플레이를 초기화합니다.
loop() 함수는 LoRaWAN 패킷을 송수신하고 OLED 디스플레이에 RSSI를 표시합니다.

사용 방법:
코드를 Arduino IDE에 복사합니다.
보드 메뉴에서 ESP32 DevKitC를 선택합니다.
포트 메뉴에서 ESP32 DevKitC의 포트를 선택합니다.
업로드 버튼을 클릭하여 코드를 ESP32 DevKitC에 업로드합니다.

주의:
LoRaWAN 설정을 사용자 환경에 맞게 변경해야 합니다.
코드를 수정하기 전에 LoRaWAN_RAKwireless_RAK3172 라이브러리와 Adafruit_SSD1306 라이브러리 문서를 참조하십시오.

소스
info
ksummersill.medium.com/setting-up-the-iic-oled-ssd1306-by-using-the-esp32-and-arduino-ied-b6ef24aeacc7https://ksummersill.medium.com/setting-up-the-iic-oled-ssd1306-by-using-the-esp32-and-arduino-ied-b6ef24aeacc7" target="_blank" rel="noopener" data-mce-href=" https://ksummersill.medium.com/setting-up-the-iic-oled-ssd1306-by-using-the-esp32-and-arduino-ied-b6ef24aeacc7"> 
https://ksummersill.medium.com/setting-up-the-iic-oled-ssd1306-by-using-the-esp32-and-arduino-ied-b6ef24aeacc7


...

2. Copilot

안녕하세요, Copilot입니다. RAK3172과 ESP32 Dev를 연결한 테스트 코드를 작성하는 것을 도와드리겠습니다. 😊

RAK3172은 LoRaWAN / LoRa P2P 모듈로, UART 인터페이스를 통해 ESP32와 통신할 수 있습니다. ESP32는 Arduino IDE나 ESP-IDF를 사용하여 프로그래밍할 수 있습니다.

아래는 ESP32 Dev와 RAK3172을 연결하고 LoRaWAN 네트워크에 가입하는 예제 코드입니다.

ESP32 Dev의 GPIO 16번 핀과 RAK3172의 TX 핀, ESP32 Dev의 GPIO 17번 핀과 RAK3172의 RX 핀을 연결해야 합니다. 또한, LoRaWAN 네트워크의 주파수 밴드, 장치 EUI, 애플리케이션 EUI, 애플리케이션 키를 설정해야 합니다.

#include <Arduino.h>
#include <HardwareSerial.h>
#include <RAK3172.h>

// LoRaWAN network settings
#define REGION AS923 // Change this to your region
#define DEV_EUI "0000000000000000" // Change this to your device EUI
#define APP_EUI "0000000000000000" // Change this to your application EUI
#define APP_KEY "00000000000000000000000000000000" // Change this to your application key

// Serial port for RAK3172
#define RAK3172_RX 16
#define RAK3172_TX 17
HardwareSerial RAKSerial(2);

// RAK3172 instance
RAK3172 rak(RAKSerial);

// LoRaWAN join status
bool joined = false;

void setup() {
  // Initialize serial monitor
  Serial.begin(115200);
  Serial.println("ESP32-RAK3172 LoRaWAN Test");

  // Initialize RAK3172 serial port
  RAKSerial.begin(115200, SERIAL_8N1, RAK3172_RX, RAK3172_TX);

  // Initialize RAK3172 module
  if (rak.init()) {
    Serial.println("RAK3172 initialized successfully");
  } else {
    Serial.println("RAK3172 initialization failed");
    while (1); // Stop the program
  }

  // Set LoRaWAN region
  if (rak.setRegion(REGION)) {
    Serial.println("LoRaWAN region set successfully");
  } else {
    Serial.println("LoRaWAN region set failed");
    while (1); // Stop the program
  }

  // Set LoRaWAN device EUI
  if (rak.setDevEUI(DEV_EUI)) {
    Serial.println("LoRaWAN device EUI set successfully");
  } else {
    Serial.println("LoRaWAN device EUI set failed");
    while (1); // Stop the program
  }

  // Set LoRaWAN application EUI
  if (rak.setAppEUI(APP_EUI)) {
    Serial.println("LoRaWAN application EUI set successfully");
  } else {
    Serial.println("LoRaWAN application EUI set failed");
    while (1); // Stop the program
  }

  // Set LoRaWAN application key
  if (rak.setAppKey(APP_KEY)) {
    Serial.println("LoRaWAN application key set successfully");
  } else {
    Serial.println("LoRaWAN application key set failed");
    while (1); // Stop the program
  }

  // Join LoRaWAN network using OTAA
  if (rak.joinOTAA()) {
    Serial.println("LoRaWAN network joined successfully");
    joined = true;
  } else {
    Serial.println("LoRaWAN network join failed");
    while (1); // Stop the program
  }
}

void loop() {
  // Check if joined
  if (joined) {
    // Send a test message to LoRaWAN network
    String message = "Hello from ESP32-RAK3172";
    if (rak.send(message)) {
      Serial.println("Message sent successfully: " + message);
    } else {
      Serial.println("Message send failed");
    }

    // Wait for 10 seconds
    delay(10000);
  }
}

이 코드는 ESP32-RAK3172 라이브러리를 사용하였습니다. 이 라이브러리는 에서 다운로드하거나 PlatformIO를 사용하여 설치할 수 있습니다.

이 코드는 LoRaWAN 네트워크에 가입하고 테스트 메시지를 보내는 기능만 구현하였습니다.

LoRaWAN 네트워크에서 수신한 메시지를 처리하거나 LoRa P2P 모드를 사용하려면 추가적인 코드를 작성해야 합니다.

이 코드는 참고용으로 제공되며, 실제로 동작하는지는 테스트하지 않았습니다. 이 코드를 사용하기 전에 주석에 적힌 내용을 확인하고 수정하시기 바랍니다.
도움이 되었으면 좋겠습니다. 😊
....

3.ChatGPT

다음은 RAK3172 LoRa 모듈과 ESP32 개발 보드를 연결하여 기본적인 LoRa 통신을 테스트하는 간단한 코드입니다. 이 코드는 Arduino IDE에서 작성하고 실행할 수 있습니다.

```cpp
#include <LoRa.h>

#define SS_PIN 18
#define RST_PIN 14
#define DI0_PIN 26

void setup() {
  Serial.begin(115200);
  while (!Serial);

  Serial.println("LoRa Sender");

  if (!LoRa.begin(868E6)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
}

void loop() {
  Serial.println("Sending packet...");

  // send packet
  LoRa.beginPacket();
  LoRa.print("Hello World");
  LoRa.endPacket();

  delay(2000);
}
```

위의 코드는 LoRa 라이브러리를 사용하여 먼저 LoRa 모듈을 초기화하고, 그런 다음 매 루프마다 "Hello World" 메시지를 전송합니다. 물론 이 코드를 ESP32 개발 보드에 업로드하기 전에 해당 라이브러리가 설치되어 있는지 확인해야 합니다.

이 코드를 사용하려면 `LoRa` 라이브러리가 필요합니다. Arduino IDE에서 라이브러리 관리자를 사용하여 `LoRa`를 검색하고 설치할 수 있습니다.

 

 

 

반응형