搜尋程式碼

13英里20公里冇WiFi?LoRa點樣將電壓傳到癲咗嘅距離!(Heltec WiFi LoRa 32 V3)

呢一課係……嘅一部分: WiFi LoRa简介

13英里20公里冇WiFi?LoRa點樣將電壓傳到癲咗嘅距離!(Heltec WiFi LoRa 32 V3)

用LoRa同ESP32整一個13英里離網電壓監測器

你有冇試過要喺幾英里之外監測一個偏遠嘅電源,好似小木屋嘅太陽能板、船上嘅電池組,或者大型農場嘅設備?呢個項目指南會帶你逐步整一個長距離、離網嘅電壓監測器,可以傳輸數據去到驚人嘅13英里(或者21公里),唔使畀訂閱費,亦都唔使靠Wi-Fi或者流動網絡。

我哋會用兩個Heltec WiFi LoRa 32模組,每個都裝喺一個堅固嘅Meshnology N32外殼入面,配一個3000mAh電池,嚟整一個發射器同一個接收器。發射器會用一個簡單嘅分壓電路去量度目標電壓(由幾伏特去到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同電池。
實際項目接線嘅相片,有電阻同電線連接。
發射器OLED屏幕顯示30V量度值嘅相片。

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程式庫:你需要下載自訂嘅Robojax_HeltecLoRa32程式庫,佢會以.zip檔案提供。喺IDE入面透過草稿碼 > 匯入程式庫 > 加入.ZIP程式庫嚟安裝。
  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         // 發射功率(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 英里)
请提供需要翻译的文本。

文件📁

Arduino 函式庫 (zip)

其他文件