코드 검색

13마일(20km)에 WiFi 없이? LoRa가 어떻게 미친 거리를 가로질러 전압을 보냈는가! (Heltec WiFi LoRa 32 V3)

이 수업은 일부입니다.: WiFi LoRa 소개

13마일(20km)에 WiFi 없이? LoRa가 어떻게 미친 거리를 가로질러 전압을 보냈는가! (Heltec WiFi LoRa 32 V3)

LoRa와 ESP32로 13마일 오프그리드 전압 모니터 구축하기

여러분은 수 마일 떨어진 곳에서 오두막의 태양광 패널, 보트의 배터리 뱅크, 대규모 농장의 장비 같은 원격 전원을 모니터링해야 했던 적이 있나요? 이 프로젝트 가이드는 놀라운 13마일(또는 21킬로미터)까지 데이터를 전송할 수 있는 장거리 오프그리드 전압 모니터를 구축하는 과정을 안내합니다. 구독료나 Wi-Fi 또는 셀룰러 네트워크 의존 없이 말이죠.

우리는 각각 견고한 Meshnology N32 케이스와 3000mAh 배터리에 장착된 두 개의 Heltec WiFi LoRa 32 모듈을 사용하여 송신기와 수신기를 만들 것입니다. 송신기는 간단한 전압 분배기 회로를 사용하여 대상 전압(수 볼트에서 100V 이상까지)을 측정하고 LoRa를 사용하여 판독값을 무선으로 전송합니다. 그러면 수신기가 이 전압을 실시간으로 표시하여 수 마일 떨어진 곳에서도 시스템을 모니터링할 수 있게 해줍니다.


작동 원리: 전압 분배기

이 프로젝트의 핵심은 넓은 범위의 전압을 측정하는 능력입니다. ESP32의 입력 핀은 최대 3.3V까지만 안전하게 측정할 수 있으므로 12V 또는 100V 소스를 직접 연결할 수 없습니다. 이를 해결하기 위해 전압 분배기라는 간단한 회로를 사용하여 마이크로컨트롤러가 읽을 수 있는 안전한 수준으로 전압을 낮춥니다. 이 내용은 12:26의 비디오에서 설명됩니다.

회로는 직렬로 연결된 두 개의 저항(R1 및 R2)을 사용합니다. 고전압 소스(Vin)는 두 저항 모두에 인가되고, ESP32는 R2 저항 양단의 더 낮은 비례 전압(Vout)만 읽습니다. 올바른 저항 값을 사용하면 매우 높은 전압을 정확하게 측정할 수 있습니다.

R1 및 R2 저항이 있는 전압 분배기의 회로도.

저항을 선택할 때 좋은 경험 법칙은 예상되는 최대 전압을 측정할 때에도 출력 전압이 3.3V 한도보다 훨씬 낮게 유지되는 값을 선택하는 것입니다. 최상의 정확도를 위해 멀티미터로 저항의 실제 저항값을 측정하고 코드에서 그 정확한 값을 사용해야 합니다.

전압 분배기 출력 및 입력 전압 계산 공식.

하드웨어 조립 및 배선

조립은 Heltec LoRa 32 모듈과 3000mAh 배터리를 N32 케이스 안에 넣는 것을 포함합니다. 케이스에는 화면과 버튼용 컷아웃이 있고 외부 안테나 마운트용 구멍이 있습니다. 가장 중요한 안전 주의사항 중 하나는 기기에 전원을 켜기 전에 항상 안테나를 연결해야 한다는 것입니다. 안테나 없이 전송하면 LoRa 모듈이 손상될 수 있기 때문입니다.

ESP32 및 배터리에 연결된 전압 분배기를 보여주는 주요 배선도.
저항과 전선이 연결된 실제 프로젝트 배선 사진.
30V 측정값을 표시하는 송신기의 OLED 화면 사진.

Arduino IDE 및 라이브러리 설정

https://resource.heltec.cn/download/package_heltec_esp32_index.json

Heltec 모듈을 프로그래밍하려면 먼저 Arduino IDE를 구성해야 합니다. 이 일회성 설정은 매우 중요하며 비디오의 20:41에서 자세히 설명됩니다.

  1. ESP32 보드 설치: 파일 > 환경설정에서 공식 Espressif ESP32 보드 URL을 추가하고 보드 매니저에서 "esp32" 패키지를 설치합니다. 
  2. Heltec 지원 설치: 환경설정에 Heltec 전용 JSON URL을 추가합니다. 그런 다음 보드 매니저에서 "Heltec ESP32" 패키지를 검색하여 설치합니다.
  3. 필요한 라이브러리 설치: 라이브러리 매니저(스케치 > 라이브러리 포함 > 라이브러리 관리)를 사용하여 다음을 설치합니다:
    • Heltec ESP32 dev boards
    • Adafruit GFX Library (및 해당 종속성)
  4. Robojax 라이브러리 설치: .zip 파일로 제공되는 사용자 정의 Robojax_HeltecLoRa32 라이브러리를 다운로드해야 합니다. 스케치 > 라이브러리 포함 > .ZIP 라이브러리 추가를 통해 IDE에 설치합니다.
  5. 보드 선택: 마지막으로 도구 > 보드로 이동하여 Heltec WiFi LoRa 32 (V3)와 올바른 COM 포트를 선택합니다.

코드 구성 설명

이 프로젝트는 송신기(TX)용과 수신기(RX)용의 두 개의 별도 스케치를 사용합니다. 25:02에서 설명된 대로 작동하려면 송신기 코드에서 몇 가지 주요 설정만 구성하면 됩니다. 수신기 코드에는 일치하는 LoRa 설정이 필요합니다.


#define VOLTAGE_READING_PIN 4  // 전압을 읽는 핀
const int R1 = 39120; // R1의 측정값 (옴 단위)
const int R2 = 3312; // R2의 측정값 (옴 단위)

const float CALIB_FACTOR = 1.007f; // 멀티미터에 맞추기 위한 보정 계수

const char *displayTexttitle = "전압:"; // OLED용 텍스트
const char *displayTexTX = "(TX)";

// 이 보안 키는 TX 및 RX 장치에서 동일해야 합니다
const char *userKey = "YOUR_SECRE8888";

// 이러한 LoRa 설정은 TX 및 RX 장치에서 동일해야 합니다
#define RF_FREQUENCY      915000000 // LoRa 주파수 (Hz)
#define TX_OUTPUT_POWER   2         // TX 전력 (dBm) (2-21)
  • VOLTAGE_READING_PIN: 전압 분배기 출력에 연결한 ESP32의 GPIO 핀입니다.
  • R1R2: 멀티미터로 측정한 두 저항의 정확한 저항값을 입력하세요. 정확성을 위해 매우 중요합니다.
  • CALIB_FACTOR: 표시된 전압이 신뢰할 수 있는 멀티미터와 약간 다르면 이 값을 높이거나 낮추어(예: 1.008 또는 0.995) 판독값을 미세 조정할 수 있습니다. 비활성화하려면 1.0으로 설정하세요.
  • userKey: 이것은 개인 보안 키입니다. 정확히 동일한 키를 가진 장치만 통신할 수 있습니다.
  • RF_FREQUENCY: LoRa의 작동 주파수입니다. 두 장치에서 일치해야 하며 해당 지역에서 합법적이어야 합니다(예: 북미의 경우 915MHz).
  • TX_OUTPUT_POWER: 송신 전력으로, 2(저전력, 단거리)에서 21(고전력, 장거리)까지입니다. 전력이 높을수록 배터리를 더 많이 사용합니다. 13마일 테스트에서는 20 값이 사용되었습니다. 책상에서 테스트할 때는 2로 충분합니다.

수신기 코드에는 송신기 설정과 일치해야 하는 userKeyRF_FREQUENCY에 대한 유사한 설정이 있습니다.


실제 작동 중인 프로젝트

코드가 업로드되면 송신기 장치는 연결된 소스의 전압 측정을 시작하고 자체 OLED 화면에 "(TX)" 표시기와 함께 표시하며 LoRa를 통해 데이터를 브로드캐스트합니다. 수신기 장치는 일치하는 보안 키와 주파수로 프로그래밍되면 신호를 수신합니다. 유효한 전송을 수신하는 즉시 동일한 전압을 "(RX)" 표시기와 함께 화면에 표시합니다.

31:39의 장거리 테스트에서 입증된 것처럼 이 설정은 매우 효과적입니다. 고이득 안테나와 명확한 가시거리로 시스템은 13마일 떨어진 곳에서도 정확한 전압 판독값을 성공적으로 송수신하여 심각한 원격 모니터링 작업을 위한 견고하고 안정적인 솔루션임을 입증했습니다.


비디오 챕터

  • 00:00 - 시작
  • 03:33 - 보드 및 LoRa 소개
  • 05:47 - WiFi LoRa 32용 N32 케이스
  • 12:26 - 최대 150V 측정용 전압 분배기
  • 19:47 - 전압 측정용 와이어 준비
  • 20:41 - WiFi LoRa 32용 라이브러리 설치
  • 25:02 - 송신 코드 설명
  • 27:16 - 수신 코드 설명
  • 28:36 - 전압 판독 데모
  • 31:39 - 실제 거리 범위 테스트(13마일)
코드가 첨부되지 않았습니다.

파일📁

아두이노 라이브러리 (zip)

다른 파일들