LoRaMessenger
LoRaMessenger เป็นการแชทนอกตารางระหว่างโหนด ESP32 ที่ติดตั้ง LoRa พร้อมเว็บอินเทอร์เฟซไร้สายที่เรียบง่าย
ESP32 โฮสต์เครือข่าย Wi-Fi ที่จะจัดให้มีอินเทอร์เฟซเหมือนการแชทที่เรียบง่ายซึ่งจะแสดงโหนดออนไลน์ ข้อความที่ได้รับและที่ส่ง และกล่องข้อความบางกล่องสำหรับตั้งชื่อโหนด โหนดปลายทาง และข้อความ
เนื่องจากโปรโตคอลการสื่อสาร LoRa ใช้ในการส่งและรับข้อความ จึงเป็นไปได้ที่จะตั้งค่าโมดูลตั้งแต่สองโมดูลขึ้นไปเพื่อส่งและรับข้อความในระยะทางไม่กี่กิโลเมตร
โมดูล LoRa ของ ESP32 ส่วนใหญ่ เช่น TTGO LoRa32 หรือ Heltec Wifi LoRa 32 มีจอแสดงผล คุณจึงสามารถใช้โมดูลเหล่านี้แยกกันเพื่อรับข้อความ เช่น เพจเจอร์ได้
โหนดสามารถติดตั้งได้อย่างง่ายดายภายในกล่องขนาดเล็กที่มีแบตเตอรี่ จึงสร้างระบบการสื่อสารที่สามารถสื่อสารได้แม้ในพื้นที่ที่ไม่มีสัญญาณโทรศัพท์
เว็บอินเตอร์เฟส
หลังจากสตาร์ท ESP32 แล้ว เครือข่าย Wi-Fi ใหม่ชื่อ LoRaMessenger [หมายเลข] จะถูกสร้างขึ้น
เมื่ออุปกรณ์เชื่อมต่อกับเครือข่าย เว็บอินเทอร์เฟซควรเปิดขึ้นโดยอัตโนมัติ หากไม่มีสิ่งใดเกิดขึ้น คุณสามารถเข้าถึงอินเทอร์เฟซได้โดยการเปิดเว็บเบราว์เซอร์และไปที่ ESP32 IP ซึ่งเป็นค่าเริ่มต้น 1.1.1.1
บน Android หน้าเข้าสู่ระบบ wifi ที่มีเว็บอินเตอร์เฟสจะเปิดขึ้นหลังจากเชื่อมต่อกับเครือข่าย Wi-Fi ด้วยวิธีนี้ การเชื่อมต่อเครือข่าย 4g พื้นหลังจะยังคงอยู่แม้ว่าจะใช้ LoRaMessenger ก็ตาม การแจ้งเตือนที่ระบุว่าการเข้าสู่ระบบเครือข่ายควรอยู่ในแผงการแจ้งเตือนและสามารถเปิดได้ตลอดเวลาเพื่อแสดงอินเทอร์เฟซอีกครั้ง
ขณะนี้เว็บอินเตอร์เฟสปรากฏบนเบราว์เซอร์ของคุณแล้ว การแชทมีคุณสมบัติดังต่อไปนี้:
- ที่ด้านบนของหน้า คุณสามารถป้อนชื่อโหนดเพื่อให้ผู้รับรู้ว่าใครกำลังเขียน หลังจากกดอัปเดต ชื่อจะถูกบันทึกและส่งไปยังโหนดที่เข้าถึงได้ทั้งหมด
- ส่วนออนไลน์จะแสดงโหนดที่มีอยู่ทั้งหมดที่ตรวจพบ พร้อมด้วยข้อมูลเพิ่มเติมบางอย่าง เช่น โหนดรีเลย์ที่โหนดรับใช้ (ถ้ามี) RSSI ที่ได้รับ จำนวนการกระโดดระหว่างรีเลย์ และเวลาที่ผ่านไปนับตั้งแต่การติดต่อครั้งล่าสุด
- ส่วนข้อความจะแสดงข้อความที่ส่งและรับ 5 รายการล่าสุด (โดยค่าเริ่มต้น ผู้ใช้สามารถตั้งค่าได้) ตามลำดับเวลา ชื่อของโหนดทั้งหมดที่ได้รับข้อความอย่างถูกต้องจะถูกระบุไว้ใต้แต่ละข้อความ
- ที่ด้านล่างของหน้าจะมีกล่องข้อความสองกล่อง กล่องแรกใช้สำหรับตั้งค่าโหนดปลายทาง และกล่องที่สองสำหรับเขียนข้อความ
ฟิลด์ปลายทางมีค่า Broadcast ตามค่าเริ่มต้น วิธีนี้ข้อความจะถูกส่งไปยังโหนดที่มีอยู่ทั้งหมด คุณยังสามารถเขียนชื่อของโหนดตามที่รายงานไว้ในส่วนออนไลน์ทุกประการเพื่อส่งข้อความถึงผู้รับที่ระบุเท่านั้น
โปรดทราบว่า ณ ขณะนี้จำเป็นต้องรีเฟรชหน้าเพื่ออัปเดตข้อความที่ได้รับและใบตอบรับการอ่าน
โปรโตคอล LoRa
LoRaMessenger ใช้โปรโตคอลการสื่อสารแบบกำหนดเอง แต่ละแพ็กเก็ตที่ส่งประกอบด้วยส่วนหัวและเพย์โหลด
ส่วนหัวให้ข้อมูลที่จำเป็นสำหรับเครือข่ายและการกำหนดเส้นทางแพ็กเก็ตเพื่อให้ทำงานได้อย่างถูกต้อง พารามิเตอร์ที่อยู่ในส่วนหัวมีดังนี้:
- NETID: รหัสเครือข่าย ระบุใน config.h ซึ่งช่วยให้สามารถสร้างเครือข่ายอิสระหลายเครือข่ายได้
- TTL: Packet time to live ระบุใน config.h ค่านี้ใช้เพื่อทราบว่าแพ็กเก็ตได้ดำเนินการไปแล้วกี่ฮอพ และจำเป็นต้องใช้โดยอัลกอริธึมการกำหนดเส้นทาง
- RECEIVER: หมายเลขโหนดตัวรับ
- ผู้ส่ง: หมายเลขโหนดผู้ส่ง
- LAST NODE: หมายเลขโหนดของผู้ส่งหรือโหนดสุดท้ายที่ถ่ายทอดแพ็กเก็ต
- NEXT NODE: หมายเลขโหนดตัวรับหรือโหนดถัดไปที่จำเป็นในการถ่ายทอดแพ็กเก็ตไปยังโหนดตัวรับ
- ID: Packet ID แต่ละแพ็คเก็ตที่ส่งจากโหนดเดียวกันจะมี ID ยาว 4 ไบต์ที่ไม่ซ้ำกัน นี่เป็นสิ่งจำเป็นในการละทิ้งแพ็กเก็ตที่ได้รับแล้วและเพื่อส่งการตอบรับที่ได้รับ
- ประเภทเพย์โหลด: ประเภทเพย์โหลด ใช้สำหรับการตีความเพย์โหลดอย่างถูกต้อง ประเภทเพย์โหลดที่เป็นไปได้ ได้แก่ ข้อความ การรับทราบ และการประกาศ
เพย์โหลดข้อความ:
- ขนาดข้อความ: ขนาดข้อความเป็นไบต์ จำเป็นสำหรับการอ่านข้อความ
- ข้อความ: เนื้อหาข้อความ ตอนนี้ส่งเป็นข้อความธรรมดาแล้ว!
เพย์โหลดการรับทราบ:
- RECEIVED PACKET ID: ID จากแพ็กเก็ตข้อความที่ได้รับ สิ่งนี้จะถูกส่งกลับไปยังผู้ส่งเพื่อแจ้งให้ทราบว่าได้รับแพ็กเก็ตแล้ว
ประกาศเพย์โหลด:
- ขนาดชื่อ: ขนาดชื่อโหนดเป็นไบต์ จำเป็นสำหรับการอ่านชื่อ
- ชื่อโหนด: ชื่อโหนด สิ่งนี้จะแสดงบนเว็บอินเตอร์เฟสทุกโหนดและสามารถเขียนลงในฟิลด์ปลายทางเพื่อส่งข้อความไปยังโหนดที่ระบุเท่านั้น
การถ่ายทอดและการกำหนดเส้นทางแพ็คเก็ต
LoRaMessenger สร้างเครือข่ายโหนดที่สามารถส่งต่อข้อความไปยังโหนดที่ผู้ส่งไม่สามารถเข้าถึงได้โดยตรง
ในการดำเนินการนี้ แต่ละโหนดจะใช้ตารางเส้นทางอัตโนมัติที่มีโหนดปลายทางและเส้นทางที่ดีที่สุดในการเข้าถึงโหนดเหล่านั้น ตารางได้รับการอัปเดตผ่านแพ็กเก็ตประกาศที่ถูกส่งเป็นระยะหรือเมื่อมีการเปลี่ยนชื่อโดยโหนดทั้งหมด
อัลกอริธึมการกำหนดเส้นทางปัจจุบันนั้นง่ายมาก และชอบจำนวนฮ็อพที่น้อยกว่า ในกรณีที่มีสองเส้นทางที่มีจำนวนฮ็อพเท่ากัน เส้นทางหนึ่งที่มีการเชื่อมต่อกับโหนดที่แข็งแกร่งที่สุดถัดไปจะถูกเลือก
การติดตั้ง
โปรแกรมนี้สามารถติดตั้งได้อย่างง่ายดายโดยการนำเข้าโปรเจ็กต์ใน Platformio อัปเดตการตั้งค่า และอัปโหลดไปยังบอร์ด
การกำหนดค่า
ในโฟลเดอร์รวม จะมีไฟล์การกำหนดค่าชื่อ config.h ปรากฏอยู่ ไฟล์นี้มีการตั้งค่าทั้งหมดที่จำเป็นสำหรับ LoRaMessenger ในการทำงาน
การกำหนดค่า LoRa:
- LORABAND: ความถี่ชิป LoRa ความถี่ขึ้นอยู่กับบอร์ดของคุณและความถี่ที่อนุญาตในท้องถิ่น โปรดแน่ใจว่าใช้เฉพาะความถี่ที่อนุญาตในประเทศของคุณ ข้อมูลเพิ่มเติมที่นี่
ค่าที่เป็นไปได้: 433E6, 866E6, 915E6 - ปัจจัยการแพร่กระจาย: ปัจจัยการแพร่กระจาย LoRa โปรดใช้ความระมัดระวังเมื่อใช้ค่าที่สูงกว่า 7 เนื่องจาก LoRaMessenger เคารพรอบหน้าที่การส่งสัญญาณ ค่าที่สูงจะทำให้ระยะเวลารอคอยระหว่างการส่งสัญญาณช้าลงอย่างมาก และอาจส่งผลต่อการทำงานที่ถูกต้อง อาจจำเป็นต้องมีการปรับเปลี่ยนอื่นๆ เช่น เวลาป้องกันการชนกัน ค่าที่เป็นไปได้: 7 - 12
- TXDBM: กำลังส่งของชิป LoRa
ค่าที่เป็นไปได้: 1 - 20 - LORADUTY: วงจรการทำงานของระบบส่งกำลัง อย่าลืมใช้เฉพาะค่าที่อนุญาตในประเทศของคุณ ค่าที่เป็นไปได้: 1 - 99
- NETID: รหัสเครือข่าย LoRaMessenger ซึ่งช่วยให้สามารถสร้างเครือข่ายอิสระหลายเครือข่ายได้
ค่าที่เป็นไปได้: 0 - 255
การกำหนดค่า L1:
- L1BUFFER: คิวแพ็กเก็ตการส่ง เพิ่มขึ้นหากใช้เครือข่ายโหนดขนาดใหญ่หรือใช้ปัจจัยการแพร่กระจายสูง
- TTL: เวลาแพ็กเก็ตที่จะถ่ายทอดสด ตั้งค่าจำนวนฮ็อพสูงสุดที่แพ็กเก็ตสามารถทำได้ก่อนหมดอายุ
ค่าที่เป็นไปได้: 1 (เฉพาะข้อความส่วนตัว ไม่มีการส่งต่อ) >1 - BROADCASTADDR: หมายเลขที่อยู่ออกอากาศ
การกำหนดค่า L3:
- NODENUMBER: หมายเลขโหนดในเครื่อง แต่ละโหนดต้องการหมายเลขโหนดที่แตกต่างกัน! คุณสามารถคิดได้ว่าสิ่งนี้เทียบเท่ากับที่อยู่ IP สำหรับเครือข่ายปกติ
ค่าที่เป็นไปได้: 1 - 255 ข้อควรระวังอย่าใช้ที่อยู่เดียวกันของ BROADCASTADDR! - MAXNODES: จำนวนโหนดสูงสุดที่คาดหวังในเครือข่าย
- ประกาศ: ประกาศสถานะโหนดและอัปเดตชื่อ ข้อความนี้จำเป็นเพื่อแจ้งให้โหนดทั้งหมดทราบถึงการมีอยู่ของโหนดอื่นๆ ทั้งหมด สามารถเพิ่มช่วงเวลาเพื่อป้องกันสแปมได้หากใช้โหนดแบบคงที่ ปัจจัยการแพร่กระจายสูง หรือเครือข่ายขนาดใหญ่
- INACTIVEMINS: เวลาที่ไม่มีการใช้งานที่จำเป็นสำหรับโหนดที่จะพิจารณาว่าออฟไลน์ ข้อควรระวังในการใช้มูลค่าอย่างน้อย 2-3 เท่าของ ANNOUNCEMINS หรืออาจมากกว่านั้นหากการรับสัญญาณไม่ดี
- INACTIVESECONDSREMOVECHECK: ช่วงเวลาสำหรับการตรวจสอบการลบโหนดออฟไลน์
การกำหนดค่าข้อความ:
- SHOWNMESSAGES: จำนวนข้อความที่จะแสดงบนเว็บอินเตอร์เฟส
- KEEPNMESSAGES: จำนวนข้อความที่จะเก็บไว้ในหน่วยความจำ
การกำหนดค่าการแสดงผล:
- DISPLAYSTBYSECS: จำนวนวินาทีหลังจากปิดจอแสดงผล
การกำหนดค่าเครือข่าย:
- เปิดใช้งาน WiFi: เปิดใช้งาน Wi-Fi สามารถใช้เพื่อลดพลังงานที่ใช้ในกรณีที่ปรับใช้โหนดเพื่อการถ่ายทอดข้อความเท่านั้น
- NODENAMEOVERRIDEEN: เปิดใช้งานการแทนที่ชื่อโหนด ใช้เพื่อแทนที่ชื่อโหนดเริ่มต้น (โหนด [หมายเลข]) เป็นสตริงที่ระบุใน NODENAMEOVERRIDE
- NODENAMEOVERRIDE: การแทนที่ชื่อ Nome สามารถใช้สำหรับตั้งชื่อโหนดโดยไม่ต้องแก้ไขบนเว็บอินเทอร์เฟซ มีประโยชน์เมื่อตั้งค่าโหนดรีเลย์เท่านั้น
- WIFISSID: คำนำหน้าชื่อเครือข่าย Wi-Fi ( LoRaMessenger [หมายเลข])
- DNSPORT: พอร์ต DNS
พินเอาท์:
- SCK: นาฬิกา SPI
- มิโซะ: SPI มิโซะ
- โมซี่: SPI โมซี่.
- SS: เลือกทาส SPI
- RST: รีเซ็ตชิป LoRa
- DI0: LoRa รับการติดต่อกลับ
- I2CSCL: นาฬิกา I2C
- I2CSDA: ข้อมูล I2C
- LCDRESET: รีเซ็ตจอ LCD
อาจจำเป็นต้องแก้ไขคำจำกัดความของพินในกรณีที่มีการใช้บอร์ดอื่น (คำจำกัดความของพินจะขึ้นอยู่กับ TTGO LoRa32 V2)
การปรับปรุง/แก้ไขในอนาคต
คุณสมบัติอื่นๆ ที่วางแผนไว้สำหรับอนาคต ได้แก่:
- การเข้ารหัสข้อความ ข้อความทั้งหมดจะถูกส่งโดยไม่มีการเข้ารหัส
- รีเฟรชข้อความอัตโนมัติ
- การทดสอบและปรับปรุงอัลกอริธึมการกำหนดเส้นทาง
ใบอนุญาต
ใบอนุญาตเอ็มไอที