LoRaMessenger
LoRaMessenger adalah obrolan off-grid antara node ESP32 yang dilengkapi LoRa dengan antarmuka web nirkabel sederhana.
ESP32 menghosting jaringan Wi-Fi yang akan menyediakan antarmuka seperti obrolan sederhana yang akan menampilkan node online, pesan yang diterima dan dikirim, dan beberapa kotak teks untuk mengatur nama node, node tujuan, dan pesan.
Karena protokol komunikasi LoRa digunakan untuk mengirim dan menerima pesan, dua atau lebih modul dapat diatur untuk mengirim dan menerima pesan hingga jarak beberapa kilometer.
Sebagian besar modul ESP32 LoRa, seperti TTGO LoRa32 atau Heltec Wifi LoRa 32, dilengkapi dengan layar, sehingga Anda dapat menggunakannya secara mandiri untuk menerima pesan seperti pager.
Sebuah node dapat dengan mudah dipasang di dalam kotak kecil berisi baterai, sehingga menciptakan sistem komunikasi yang dapat berkomunikasi bahkan di area yang tidak ada sinyal telepon.
Antarmuka web
Setelah ESP32 dimulai, jaringan Wi-Fi baru bernama LoRaMessenger [number] dibuat.
Ketika perangkat terhubung ke jaringan, antarmuka web akan terbuka secara otomatis, jika tidak terjadi apa-apa, antarmuka dapat diakses dengan membuka browser web dan menavigasi ke IP ESP32, yang secara default adalah 1.1.1.1.
Di android, halaman login wifi yang berisi antarmuka web dibuka setelah terhubung ke jaringan Wi-Fi. Dengan cara ini, koneksi jaringan 4g latar belakang tetap terjaga bahkan saat menggunakan LoRaMessenger . Notifikasi yang menyatakan login ke jaringan harus tetap berada di panel notifikasi dan dapat dibuka kapan saja untuk menampilkan antarmuka lagi.
Antarmuka web sekarang disajikan di browser Anda, obrolan memiliki beberapa fitur berikut:
- Di bagian atas halaman dapat dimasukkan nama node agar penerima mengetahui siapa yang menulis. Setelah menekan perbarui, nama tersebut disimpan dan dikirim ke semua node yang dapat dijangkau.
- Bagian online menunjukkan semua node yang tersedia terdeteksi, dengan beberapa informasi tambahan seperti node relai yang digunakan oleh node penerima jika ada, RSSI penerima, jumlah hop antar relai, dan waktu yang telah berlalu sejak kontak terakhir.
- Bagian pesan memperlihatkan 5 pesan terakhir (secara default, dapat diatur pengguna) yang dikirim dan diterima dalam urutan kronologis. Nama semua node yang telah menerima pesan dengan benar ditunjukkan di bawah setiap pesan.
- Di bagian bawah halaman terdapat dua kotak teks, yang pertama digunakan untuk mengatur node tujuan dan yang kedua untuk menulis pesan.
Bidang tujuan berisi nilai Siaran secara default. Dengan cara ini pesan dikirim ke semua node yang tersedia. Anda juga dapat menulis nama node persis seperti yang dilaporkan di bagian online untuk mengirim pesan hanya ke penerima tertentu.
Perhatikan bahwa saat ini penyegaran halaman diperlukan untuk memperbarui pesan yang diterima dan tanda terima telah dibaca.
Protokol LoRa
LoRaMessenger menggunakan protokol komunikasi khusus, setiap paket yang dikirim terdiri dari header dan payload.
Header memberikan informasi yang dibutuhkan agar jaringan dan routing paket dapat bekerja dengan baik, parameter yang terdapat pada header adalah sebagai berikut:
- NETID: ID Jaringan, ditentukan di config.h. Hal ini memungkinkan terciptanya beberapa jaringan independen.
- TTL: Waktu aktif paket, ditentukan di config.h. Nilai ini digunakan untuk mengetahui berapa hop yang telah dilakukan suatu paket dan dibutuhkan oleh algoritma routing.
- PENERIMA: Nomor simpul penerima.
- PENGIRIM: Nomor simpul pengirim.
- NODE TERAKHIR: Nomor node pengirim atau node terakhir yang menyampaikan paket.
- NODE BERIKUTNYA: Nomor node penerima atau node berikutnya diperlukan untuk menyampaikan paket ke node penerima.
- ID: ID Paket, setiap paket yang dikirim dari node yang sama memiliki ID unik sepanjang 4 byte. Ini diperlukan untuk membuang paket yang sudah diterima dan untuk mengirimkan pengakuan yang diterima.
- JENIS PAYLOAD: Jenis muatan, digunakan untuk menafsirkan muatan dengan benar. Jenis muatan yang mungkin adalah: Pesan, Pengakuan, dan Pengumuman.
Muatan pesan:
- UKURAN PESAN: Ukuran pesan dalam byte, diperlukan untuk membaca pesan.
- PESAN: Isi pesan. Ini dikirim dalam teks biasa untuk saat ini!
Muatan pengakuan:
- ID PAKET YANG DITERIMA: ID dari paket pesan yang diterima. Ini dikirim kembali ke pengirim untuk memberi tahu dia bahwa paket telah diterima.
Umumkan muatan:
- UKURAN NAMA: Ukuran nama node dalam byte, diperlukan untuk membaca nama.
- NAMA NODE: Nama simpul. Ini ditampilkan di setiap antarmuka web node dan dapat ditulis di kolom tujuan untuk mengirim pesan hanya ke node tertentu.
Penyaluran dan perutean paket
LoRaMessenger membuat jaringan node yang mampu meneruskan pesan ke node yang tidak dapat dijangkau langsung oleh pengirim.
Untuk melakukan hal ini, setiap node menggunakan tabel routing otomatis yang berisi node tujuan dan rute terbaik untuk mencapainya. Tabel diperbarui melalui paket pengumuman yang dikirim secara berkala atau setelah perubahan nama oleh semua node.
Algoritme perutean saat ini sangat sederhana dan lebih memilih jumlah hop yang lebih rendah, dalam kasus dua rute dengan jumlah hop yang sama, rute dengan koneksi ke node terkuat berikutnya akan dipilih.
Instalasi
Program ini dapat diinstal dengan mudah dengan mengimpor proyek di platformio, memperbarui pengaturan, dan mengunggahnya ke papan.
Konfigurasi
Ke dalam folder include, ada file konfigurasi bernama config.h. File ini berisi semua pengaturan yang diperlukan agar LoRaMessenger berfungsi.
Konfigurasi LoRa:
- LORABAND: Frekuensi chip LoRa. Frekuensinya tergantung pada board Anda dan frekuensi lokal yang diizinkan, pastikan untuk hanya menggunakan frekuensi yang diizinkan di negara Anda, info lebih lanjut di sini.
Nilai yang mungkin: 433E6, 866E6, 915E6. - FAKTOR PENYEBARAN: Faktor penyebaran LoRa. Berhati-hatilah saat menggunakan nilai yang lebih tinggi dari 7 karena LoRaMessenger menghormati siklus tugas transmisi. Nilai yang tinggi sangat memperlambat waktu tunggu antar transmisi dan dapat mempengaruhi pengoperasian yang benar, penyesuaian lain seperti waktu antitabrakan mungkin diperlukan. Nilai yang mungkin: 7 - 12.
- TXDBM: Kekuatan transmisi chip LoRa.
Nilai yang mungkin: 1 - 20 - LORADUTY: Siklus kerja transmisi. Pastikan untuk hanya menggunakan nilai yang diizinkan di negara Anda. Nilai yang mungkin: 1 - 99.
- NETID: ID jaringan LoRaMessenger . Hal ini memungkinkan terciptanya beberapa jaringan independen.
Nilai yang mungkin: 0 - 255.
Konfigurasi L1:
- L1BUFFER: Antrian paket transmisi. Meningkat jika menggunakan jaringan node yang besar atau menggunakan faktor penyebaran yang tinggi.
- TTL: Waktu paket untuk hidup. Menetapkan jumlah hop maksimum yang dapat dilakukan suatu paket sebelum masa berlakunya habis.
Nilai yang mungkin: 1 (hanya pesan langsung, tidak ada penyampaian), >1. - BROADCASTADDR: Nomor alamat siaran.
Konfigurasi L3:
- NODENUMBER: Nomor simpul lokal. Setiap node memerlukan nomor node yang berbeda! Anda dapat menganggap ini setara dengan alamat IP untuk jaringan biasa.
Nilai yang mungkin: 1 - 255. Hati-hati jangan menggunakan alamat BROADCASTADDR yang sama! - MAXNODES: Jumlah maksimum node yang diharapkan dalam jaringan.
- PENGUMUMAN: Pengumuman kehadiran node dan pembaruan nama. Pesan ini diperlukan untuk menginformasikan semua node tentang keberadaan semua node lainnya. Intervalnya dapat ditingkatkan untuk mencegah spam jika menggunakan node statis, faktor penyebaran tinggi, atau jaringan besar.
- INACTIVEMINS: Waktu tidak aktif yang diperlukan agar sebuah node dianggap offline. Perhatian untuk menggunakan setidaknya 2-3 kali nilai PENGUMUMAN atau bahkan lebih besar jika penerimaannya buruk.
- INACTIVESECONDSREMOVECHECK: Interval untuk memeriksa penghapusan node offline.
Konfigurasi pesan:
- SHOWNMESSAGES: Jumlah pesan yang akan ditampilkan pada antarmuka web.
- KEEPNMESSAGES: Jumlah pesan yang disimpan dalam memori.
Konfigurasi tampilan:
- DISPLAYSTBYSECS: Jumlah detik setelah tampilan dimatikan.
Konfigurasi jaringan:
- WIFI DIAKTIFKAN: Wi-Fi diaktifkan. Hal ini dapat digunakan untuk mengurangi daya yang digunakan jika node hanya digunakan untuk menyampaikan pesan.
- NODENAMEOVERRIDEEN: Pengaktifan penggantian nama node. Digunakan untuk mengganti nama node default (Node [angka]) ke string yang ditentukan dalam NODENAMEOVERRIDE.
- NODENAMEOVERRIDE: Penggantian nama nama. Ini dapat digunakan untuk mengatur nama node tanpa mengubahnya pada antarmuka web. Berguna saat menyiapkan node relai saja.
- WIFISSID: awalan nama jaringan Wi-Fi ( LoRaMessenger [angka])
- DNSPORT: port DNS.
Pinout:
- SCK: jam SPI.
- MISO: SPI MISO.
- MOSI: SPI MOSI.
- SS: Pilih budak SPI.
- Pertama: penyetelan ulang chip LoRa.
- DI0: LoRa menerima panggilan balik.
- I2CSCL: jam I2C.
- I2CSDA: data I2C.
- Penyetelan Ulang LCD: penyetelan ulang LCD.
Definisi pin mungkin perlu diedit jika papan lain digunakan (Definisi pin didasarkan pada TTGO LoRa32 V2).
Perbaikan/perbaikan di masa depan
Fitur lain yang direncanakan untuk masa depan adalah:
- Enkripsi pesan, pada hakikatnya semua pesan dikirim tidak terenkripsi.
- Penyegaran pesan otomatis.
- Pengujian dan peningkatan algoritma routing.
Lisensi
lisensi MIT.