ค้นหาโค้ด

13 ไมล์ 20 กิโลเมตร โดยไม่มี WiFi? LoRa ส่งแรงดันไฟฟ้าข้ามระยะทางสุดโหดได้อย่างไร! (Heltec WiFi LoRa 32 V3)

บทเรียนนี้เป็นส่วนหนึ่งของ: บทนำสู่ WiFi LoRa

13 ไมล์ 20 กิโลเมตร โดยไม่มี WiFi? LoRa ส่งแรงดันไฟฟ้าข้ามระยะทางสุดโหดได้อย่างไร! (Heltec WiFi LoRa 32 V3)

สร้างระบบตรวจวัดแรงดันไฟฟ้านอกระบบระยะไกล 13 ไมล์ด้วย LoRa และ ESP32

คุณเคยจำเป็นต้องตรวจสอบแหล่งจ่ายไฟระยะไกล เช่น แผงโซลาร์เซลล์ที่กระท่อม ชุดแบตเตอรี่บนเรือ หรืออุปกรณ์ในฟาร์มขนาดใหญ่ จากระยะไกลหลายไมล์หรือไม่? คู่มือโปรเจกต์นี้จะแนะนำคุณในการสร้างระบบตรวจวัดแรงดันไฟฟ้านอกระบบระยะไกลที่สามารถส่งข้อมูลได้ไกลถึง 13 ไมล์ (หรือ 21 กิโลเมตร) โดยไม่มีค่าสมัครสมาชิกหรือพึ่งพาเครือข่าย Wi-Fi หรือเครือข่ายโทรศัพท์มือถือ

เราจะใช้โมดูล Heltec WiFi LoRa 32 สองตัว แต่ละตัวอยู่ในกล่อง Meshnology N32 ที่ทนทานพร้อมแบตเตอรี่ 3000mAh เพื่อสร้างตัวส่งสัญญาณและตัวรับสัญญาณ ตัวส่งสัญญาณจะวัดแรงดันไฟฟ้าเป้าหมาย (จากไม่กี่โวลต์ถึง 100V หรือมากกว่า) โดยใช้วงจรแบ่งแรงดันไฟฟ้าอย่างง่ายและส่งค่าที่อ่านได้แบบไร้สายโดยใช้ LoRa จากนั้นตัวรับสัญญาณจะแสดงแรงดันไฟฟ้านี้แบบเรียลไทม์ ทำให้คุณสามารถตรวจสอบระบบของคุณจากระยะไกลหลายไมล์ได้


หลักการทำงาน: วงจรแบ่งแรงดันไฟฟ้า

หัวใจสำคัญของโปรเจกต์นี้คือความสามารถในการวัดแรงดันไฟฟ้าที่หลากหลาย เนื่องจากพินอินพุตของ ESP32 สามารถวัดแรงดันไฟฟ้าได้อย่างปลอดภัยสูงสุดเพียง 3.3V เท่านั้น เราจึงไม่สามารถเชื่อมต่อแหล่งจ่ายไฟ 12V หรือ 100V ได้โดยตรง เพื่อแก้ปัญหานี้ เราจะใช้วงจรอย่างง่ายที่เรียกว่า วงจรแบ่งแรงดันไฟฟ้า (voltage divider) ซึ่งจะลดแรงดันไฟฟ้าลงให้อยู่ในระดับที่ปลอดภัยสำหรับไมโครคอนโทรลเลอร์ในการอ่านค่า ซึ่งอธิบายไว้ในวิดีโอที่ 12:26

วงจรนี้ใช้ตัวต้านทานสองตัว (R1 และ R2) ต่อแบบอนุกรม แหล่งจ่ายแรงดันสูง (Vin) จะถูกจ่ายคร่อมตัวต้านทานทั้งสองตัว และ ESP32 จะอ่านค่าแรงดันไฟฟ้าที่ต่ำกว่าซึ่งเป็นสัดส่วนกัน (Vout) คร่อมเฉพาะตัวต้านทาน R2 เท่านั้น ด้วยค่าตัวต้านทานที่เหมาะสม คุณสามารถวัดแรงดันไฟฟ้าที่สูงมากได้อย่างแม่นยำ

แผนผังวงจรของวงจรแบ่งแรงดันไฟฟ้าด้วยตัวต้านทาน 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: เพิ่ม URL ของบอร์ด Espressif ESP32 อย่างเป็นทางการใน File > Preferences และติดตั้งแพ็กเกจ "esp32" จาก Boards Manager
  2. ติดตั้งการรองรับ Heltec: เพิ่ม URL JSON เฉพาะของ Heltec ในการตั้งค่าของคุณ จากนั้นใน Boards Manager ค้นหาและติดตั้งแพ็กเกจ "Heltec ESP32"
  3. ติดตั้งไลบรารีที่จำเป็น: ใช้ Library Manager (Sketch > Include Library > Manage Libraries) ติดตั้งสิ่งต่อไปนี้:
    • Heltec ESP32 dev boards
    • Adafruit GFX Library (และไลบรารีที่เกี่ยวข้อง)
  4. ติดตั้งไลบรารี Robojax: คุณจะต้องดาวน์โหลดไลบรารี Robojax_HeltecLoRa32 ที่กำหนดเอง ซึ่งให้มาเป็นไฟล์ .zip ติดตั้งใน IDE ผ่าน Sketch > Include Library > Add .ZIP Library
  5. เลือกบอร์ด: สุดท้าย ไปที่ Tools > Board และเลือก 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 ในหน่วยเฮิรตซ์
#define TX_OUTPUT_POWER   2         // กำลังส่ง TX ในหน่วย dBm (2-21)
  • VOLTAGE_READING_PIN: ขา GPIO บน ESP32 ที่คุณเชื่อมต่อกับเอาต์พุตของวงจรแบ่งแรงดันไฟฟ้า
  • R1 และ R2: ใส่ค่าความต้านทานที่แม่นยำของตัวต้านทานทั้งสองตัวตามที่วัดด้วยมัลติมิเตอร์ ซึ่งสำคัญมากต่อความแม่นยำ
  • CALIB_FACTOR: หากแรงดันไฟฟ้าที่แสดงคลาดเคลื่อนเล็กน้อยจากมัลติมิเตอร์ที่เชื่อถือได้ คุณสามารถปรับค่านี้ขึ้นหรือลงได้ (เช่น 1.008 หรือ 0.995) เพื่อปรับแต่งการอ่านค่าให้ละเอียดขึ้น ตั้งเป็น 1.0 เพื่อปิดการใช้งาน
  • userKey: นี่คือคีย์ความปลอดภัยส่วนตัวของคุณ เฉพาะอุปกรณ์ที่มีคีย์เหมือนกันทุกประการเท่านั้นที่สามารถสื่อสารกันได้
  • RF_FREQUENCY: ความถี่ปฏิบัติการสำหรับ LoRa ซึ่งต้องตรงกันบนอุปกรณ์ทั้งสองตัวและต้องถูกกฎหมายสำหรับภูมิภาคของคุณ (เช่น 915MHz สำหรับอเมริกาเหนือ)
  • TX_OUTPUT_POWER: กำลังส่ง ตั้งแต่ 2 (กำลังต่ำ ระยะใกล้) ถึง 21 (กำลังสูง ระยะไกล) กำลังที่สูงขึ้นใช้แบตเตอรี่มากขึ้น สำหรับการทดสอบระยะ 13 ไมล์ ใช้ค่า 20 สำหรับการทดสอบบนโต๊ะทำงาน ค่า 2 ก็เพียงพอแล้ว

โค้ดของตัวรับมีค่าการตั้งค่าที่คล้ายกันสำหรับ userKey และ RF_FREQUENCY ซึ่งต้องตรงกับการตั้งค่าของตัวส่ง


โปรเจกต์จริงขณะทำงาน

เมื่ออัปโหลดโค้ดแล้ว หน่วยตัวส่งจะเริ่มวัดแรงดันไฟฟ้าจากแหล่งจ่ายที่เชื่อมต่อ แสดงบนจอ OLED ของตัวเองพร้อมตัวบ่งชี้ "(TX)" และส่งข้อมูลผ่าน LoRa หน่วยตัวรับเมื่อตั้งโปรแกรมด้วยคีย์ความปลอดภัยและความถี่ที่ตรงกัน จะคอยฟังสัญญาณ ทันทีที่ได้รับสัญญาณที่ถูกต้อง มันจะแสดงแรงดันไฟฟ้าที่เหมือนกันบนจอพร้อมตัวบ่งชี้ "(RX)"

ดังที่สาธิตในการทดสอบระยะไกลที่ 31:39 การตั้งค่านี้มีประสิทธิภาพอย่างเหลือเชื่อ ด้วยเสาอากาศที่มีอัตราขยายสูงและแนวสายตาที่ชัดเจน ระบบสามารถส่งและรับค่าการอ่านแรงดันไฟฟ้าที่แม่นยำจากระยะทาง 13 ไมล์ได้สำเร็จ พิสูจน์ว่าเป็นโซลูชันที่แข็งแกร่งและเชื่อถือได้สำหรับงานตรวจสอบระยะไกลที่จริงจัง


บทของวิดีโอ

  • 00:00 - เริ่มต้น
  • 03:33 - แนะนำบอร์ดและ LoRa
  • 05:47 - เคส N32 สำหรับ WiFi LoRa 32
  • 12:26 - วงจรแบ่งแรงดันไฟฟ้าเพื่อวัดได้สูงสุด 150V
  • 19:47 - เตรียมสายไฟเพื่อวัดแรงดันไฟฟ้า
  • 20:41 - ติดตั้งไลบรารีสำหรับ WiFi LoRa 32
  • 25:02 - อธิบายโค้ดตัวส่ง
  • 27:16 - อธิบายโค้ดตัวรับ
  • 28:36 - สาธิตการอ่านแรงดันไฟฟ้า
  • 31:39 - ทดสอบระยะทางจริง (13 ไมล์)
ไม่มีรหัสแนบมา

แหล่งข้อมูลและเอกสารอ้างอิง

ไฟล์📁

ไลบรารี Arduino (zip)

ไฟล์อื่น ๆ