Versi 6.2.0, Data: 29 Januari 2020
Penulis: M. Westenberg ([email protected])
Hak Cipta: M. Westenberg ([email protected])
Semua hak dilindungi undang -undang. Program ini dan materi yang menyertainya tersedia berdasarkan ketentuan lisensi MIT yang menyertai distribusi ini, dan tersedia di https://opensource.org/licenses/mit-license.php
Program ini didistribusikan dengan harapan akan bermanfaat, tetapi tanpa jaminan apa pun; bahkan tanpa jaminan tersirat dari dapat diperjualbelikan atau kebugaran untuk tujuan tertentu.
Dipelihara oleh Maarten Westenberg ([email protected])
Pertama -tama: Silakan baca file ini dan dokumentasi itu harus berisi sebagian besar informasi yang Anda butuhkan. Sayangnya saya tidak punya waktu untuk menindaklanjuti semua email, dan karena sebagian besar informasi termasuk pin-out dll. Terkandung di halaman-halaman ini, saya harap Anda punya waktu untuk membacanya dan memposting pertanyaan yang tersisa.
Saya memiliki lebih dari 10 papan mini Wemos D1 berjalan, beberapa saya membangun diri saya sendiri, sekitar 10+ di atas Hallard, 3 di papan persaudaraan dan 4 ESP32. Mereka semua bekerja tanpa masalah pada kode ini. Namun saya menemukan bahwa sambungan solder dan kabel yang baik membuat semua perbedaan, jadi jika Anda mendapatkan reset/kesalahan yang tidak dapat Anda jelaskan, silakan lihat kabel Anda yang kedua.
Repositori ini berisi implementasi bukti-konsep dari satu saluran Lorawan Gateway untuk ESP8266. Mulai versi 5.2 Juga ESP32 dari TTGO (dan lainnya) didukung. Perangkat lunak ini mengimplementasikan Lora Gateway standar dengan pengecualian dan perubahan berikut:
Gateway Lora ini bukan gateway penuh tetapi hanya mengimplementasikan gateway satu saluran/satu frekuensi. Jumlah minimum frekuensi yang didukung oleh gateway penuh adalah 3, sebagian besar dukungan 9 atau lebih frekuensi. Perangkat lunak ini dimulai sebagai bukti konsep untuk membuktikan bahwa satu chip RRFM95 berbiaya rendah yang ada di hampir setiap node Lora di Eropa dapat digunakan sebagai alternatif murah untuk gateway penuh yang jauh lebih mahal yang memanfaatkan chip SX1301.
Karena perangkat lunak gateway ini akan sering digunakan selama fase pengembangan proyek atau dalam situasi demo, perangkat lunak ini fleksibel dan dapat dengan mudah dikonfigurasi sesuai dengan kebutuhan lingkungan atau pelanggan. Ada dua cara untuk berinteraksi dengan perangkat lunak:
Dokumentasi lengkap dari gateway saluran tunggal ditemukan di Things4u.github.io, silakan lihat panduan perangkat keras di bawah bab gateway.
Gateway saluran tunggal telah diuji di gateway dengan Wemos D1 Mini, menggunakan transceiver hoperf RFM95W. Tes dilakukan pada 868 versi LORA dan beberapa pengujian pada 433 MHz. Node Lora diuji lagi di gateway ini adalah:
Kode ini telah diuji pada setidaknya 8 papan gateway terpisah baik berdasarkan Hallard dan papan persaudaraan. Saya masih mengerjakan pin-out dan fungsi ESP32 (diharapkan segera).
Disarankan untuk mengkompilasi dan memulai gateway saluran tunggal dengan modifikasi sesedikit mungkin. Ini berarti bahwa Anda harus menggunakan pengaturan default di 2 file konfigurasi sebanyak mungkin dan hanya mengubah SSID/kata sandi untuk pengaturan wifi Anda dan pin ESP8266 Anda yang Anda gunakan di loramodem.h. Bagian ini menjelaskan konfigurasi minimum yang diperlukan untuk mendapatkan gateway yang berfungsi yang dapat dikonfigurasi lebih lanjut menggunakan halaman web.
Melalui Manajer Perpustakaan:
Sekarang gerbang Anda harus berjalan. Gunakan halaman web untuk menetapkan "debug" ke 1 dan Anda harus dapat melihat paket masuk pada monitor serial.
Ada dua cara untuk mengubah konfigurasi gateway saluran tunggal:
Di mana Anda memiliki pilihan, opsi 2 jauh lebih ramah dan bermanfaat.
File configgway.h berisi pengaturan gateway yang dapat dikonfigurasi pengguna. Semua memiliki definisi yang ditetapkan melalui pernyataan #Define. Secara umum, mengatur #define ke 1 akan memungkinkan fungsi dan mengaturnya ke 0 akan menonaktifkannya.
Juga, beberapa pengaturan dapat diinisialisasi dengan menetapkan nilainya dengan #define tetapi dapat diubah saat runtime di antarmuka web. Untuk beberapa pengaturan, menonaktifkan fungsi dengan #Define akan menghapus fungsi dari server web juga.
Catatan tentang penggunaan memori: ESP8266 memiliki sejumlah besar memori yang tersedia untuk ruang program dan sistem file spiff. Namun memori yang tersedia untuk tumpukan dan variabel terbatas pada sekitar 80k byte (untuk ESP-32 ini lebih tinggi). Pengguna disarankan untuk mematikan fungsi yang tidak digunakan untuk menghemat penggunaan memori. Jika tumpukan turun di bawah 18 kbytes beberapa fungsi mungkin tidak berperilaku seperti yang diharapkan (dalam kasus ekstrem program mungkin macet).
File Confignode.h digunakan untuk mengatur titik akses wifi dan struktur sensor yang diketahui ke gateway 1-channel. Mengatur titik akses WiFi yang diketahui (SSID dan kata sandi) harus dilakukan pada waktu kompilasi.
Ketika gateway tidak hanya digunakan sebagai gateway tetapi juga untuk tujuan debugging, yang digunakan dapat menentukan tidak hanya nama node sensor tetapi juga mendekripsi node tertentu.
Pengguna dapat menentukan apakah konsol USB digunakan untuk pesan output atau tidak. Saat mengatur _dusb ke 0 semua output berdasarkan serial dinonaktifkan (sebenarnya pernyataan serial tidak termasuk dalam kode).
#define _dusb 1
Tentukan kelas operasi yang didukung oleh gateway. Kelas A didukung dan berisi operasi dasar untuk sensor baterai.
Kelas B berisi mode operasi suar/baterai. Gateway akan mengirim suar ke sensor yang terhubung yang memungkinkan mereka untuk menyinkronkan downlink messagaging.
Mode operasi kelas C (kontinu) berisi dukungan untuk perangkat yang mungkin tidak dioperasikan dengan baterai dan akan mendengarkan jaringan setiap saat. Akibatnya latensi perangkat ini juga lebih pendek dari perangkat Kelas A. Perangkat Kelas C tidak bergantung pada daya baterai dan akan memperluas jendela terima hingga jendela transmisi berikutnya. Bahkan, hanya transmisi yang akan membuat perangkat membatalkan mendengarkan selama penolakan ini berlangsung. Perangkat Kelas C tidak dapat melakukan operasi Kelas B.
#define _class "a"
Semua perangkat akan dimulai sebagai perangkat Kelas A, dan dapat memutuskan untuk "meningkatkan" ke Kelas B atau C. Juga gateway mungkin atau mungkin tidak mendukung Kelas B, yang merupakan superset dari Kelas A. Catatan: Hanya Kelas A yang didukung
Kami mendukung dua konfigurasi pin-out di luar kotak: Hallard dan Compresult. Jika Anda menggunakan salah satu dari keduanya, cukup atur parameter ke nilai yang tepat. Jika definisi pin Anda berbeda, perbarui file loramodem.h untuk mencerminkan pengaturan ini. 1: Hallard 2: persahabatan pin out 3: esp32 pin out 4: lainnya, tentukan sendiri di loramodem.h
#define _pin_out 1
Parameter berikut harus diatur ke 0 dalam keadaan normal. Ini memungkinkan sistem untuk memformat sistem file spiffs.
#define spiff_format 0
Atur faktor _spreading ke nilai SF7, SF8 - SF12 yang diinginkan. Harap dicatat bahwa nilai ini terkait erat dengan nilai yang digunakan untuk _cad. Jika _CAD diaktifkan, nilai _spreading tidak digunakan oleh gateway karena memiliki semua faktor sreading yang diaktifkan.
#define _spreading sf9
Harap dicatat bahwa frekuensi default yang digunakan adalah 868.1 MHz yang dapat diubah dalam file loramodem.h. Pengguna disarankan untuk tidak mengubah eTting ini dan hanya menggunakan frekuensi default 868.1 MHz.
Deteksi Aktivitas Saluran (CAD) adalah fungsi dari chip LORA RFM95 untuk mendeteksi pesan yang masuk (aktivitas). Pesan-pesan yang masuk ini mungkin tiba di salah satu faktor penyebaran yang diketahui sumur SF7-SF12. Dengan mengaktifkan CAD, gerbang dapat menerima pesan dari salah satu faktor penyebaran.
Sebenarnya digunakan dalam operasi normal untuk memberi tahu penerima bahwa sinyal lain sudah menggunakan saluran.
Fungsionalitas CAD datang dengan harga (sedikit): chip tidak akan dapat menerima sinyal yang sangat lemah karena fungsi CAD akan menggunakan pengaturan register RSSI dari chip untuk menentukan apakah ia menerima sinyal (atau hanya noise). Akibatnya, sinyal yang sangat lemah tidak diterima yang berarti bahwa kisaran gateway akan berkurang dalam mode CAD.
#define _cad 1
Dari versi 4.0.6 Gateway memungkinkan pembaruan udara jika pengaturan A_OTA menyala. Perangkat lunak Over the Air membutuhkan pengaturan versi 4.0.6 melalui USB ke gateway, setelah itu perangkat lunak (default) diaktifkan untuk digunakan.
Rilis pertama hanya mendukung fungsi OTA menggunakan IDE yang dalam praktiknya berarti IDE harus berada di segmen jaringan yang sama dengan gateway.
Catatan: Anda harus menggunakan Bonjour Software (Apple) di jaringan Anda di suatu tempat. Versi tersedia untuk sebagian besar platform (dikirim dengan iTunes untuk Windows misalnya). Perangkat lunak Bonjour memungkinkan gateway untuk menggunakan MDNS untuk menyelesaikan ID gateway yang ditetapkan oleh OTA setelah itu port unduhan muncul di IDE.
TODO: Perangkat lunak OTA belum diuji bersamaan dengan perangkat lunak Wifimanager.
#define a_ota 1
Pengaturan ini memungkinkan server web. Meskipun server web itu sendiri membutuhkan banyak memori, sangat membantu untuk mengonfigurasi run-time gatewayat dan memeriksa perilakunya. Ini juga menyediakan statistik pesan terakhir yang diterima. Parameter A_Refresh menentukan apakah server web harus memperbarui setiap detik x.
#define a_server 1 // tentukan server web lokal hanya jika define ini diatur
#define a_refresh 1 // Apakah server web diaktifkan untuk menyegarkan ya/tidak? (ya ok) #define a_serverport 80 // port webserver lokal
#define a_maxbufsize 192 // harus lebih besar dari 128, tetapi cukup kecil untuk bekerja
Parameter A_Refresh mendefinisikan apakah kita dapat mengatur pengaturan Refresh YA/TIDAK di WebBrowser. Pengaturan di webbrowser biasanya diletakkan di "no" sebagai default, tetapi kita dapat meninggalkan definisi pada "1" untuk mengaktifkan pengaturan itu di webbrowser.
Untuk meminta gerbang mengirim pesan downlink pada faktor penyebaran yang telah ditetapkan sebelumnya dan pada frekuensi default, Anda harus mengatur parameter _strict_1ch ke 1. Perhatikan bahwa ketika tidak diatur ke 1, gateway akan menanggapi permintaan downlink dengan frekuensi dan faktor penyebaran yang ditetapkan oleh server backend. Dan pada saat ini TTN menanggapi pesan downlink untuk SF9-SF12 di RX2 Timeslot dan dengan frekuensi 869.525MHz dan pada SF12 (sesuai dengan standar LORA saat mengirim dalam slot rx2).
#define _strict_1ch 0
Anda disarankan untuk tidak mengubah pengaturan default parameter ini.
Dengan mengatur OLED, Anda mengkonfigurasi sistem untuk bekerja dengan panel OLED di atas I2C. Beberapa panel bekerja oleh SPI dan I2C di mana I2C adalah Solwer. Namun, karena SPI digunakan untuk komunikasi transceiver RFM95, Anda secara stron discouvared menggunakan salah satunya karena mereka tidak akan bekerja dengan perangkat lunak ini. Alih -alih memilih solusi OLED yang berfungsi lebih dari I2C.
#define OLED 1
Nilai -nilai berikut didefinisikan untuk OLED:
Ketika ini didefinisikan (== 1) kami akan mengumpulkan statistik setiap pesan dan mengeluarkannya ke sistem file spiff. Kami memastikan bahwa kami menggunakan sejumlah file dengan masing -masing jumlah catatan tetap untuk statistik. Nomor REC memberi tahu kami berapa banyak catatan yang diizinkan dalam setiap file statistik. Segera setelah nomor REC lebih tinggi dari jumlah catatan yang diizinkan, kami membuka file baru. Setelah jumlah file melebihi jumlah jumlah file statistik, kami menghapus file oldeest dan membuka file baru. Saat memilih tombol "Log" di atas layar GUI, semua file log adalah Oteptu ke perangkat serial USB. Dengan cara ini, kita dapat memeriksa lebih banyak catatan daripada menyesuaikan layar GUI atau output serial.
#define stat_log 1
Mengatur pin I2C SDA/SCL dilakukan di file configgway.h tepat setelah #Define OLED. Standar ESP8266 menggunakan pin D1 dan D2 untuk jalur I2C Bus SCL dan SDA tetapi ini dapat diubah oleh pengguna. Biasanya ini tidak perlu. Fungsi OLED ditemukan dalam file _loramodem.ino, dan dapat disesuaikan untuk menunjukkan bidang lain. Fungsi dipanggil ketika pesan diterima (!) Dan karenanya berpotensi ini akan menambah ketidakstabilan ESP karena fungsi -fungsi ini mungkin memerlukan lebih banyak waktu dari yang diharapkan. Jika demikian, swithc dari fungsi OLED atau bangun dalam fungsi di loop utama () yang ditampilkan dalam waktu pengguna (tidak mengganggu).
Gateway memungkinkan untuk terhubung ke 2 server secara bersamaan (seperti kebanyakan gateway Lora melakukan BTW). Anda harus terhubung ke setidaknya satu router LORA standar, jika Anda menggunakan jaringan Things (TTN) daripada memastikan bahwa Anda mengatur:
#define _ttnServer "router.eu.thethings.network"
#define _ttnport 1700
Jika Anda mengatur server Anda sendiri, Anda dapat menentukan sebagai berikut menggunakan URL router Anda sendiri dan port Anda sendiri:
#define _thingserver "your_server.com" // URL server dari program server lora udp.js
#define _thingport 1701 // server UDP Anda harus mendengarkan port ini
Atur parameter identitas untuk gateway Anda:
#define _description "ESP-GATEWAY"
#define _email "[email protected]"
#define _platform "ESP8266"
#define _lat 52.00
#define _lon 5.00
#define _alt 0
Dimungkinkan untuk menggunakan gateway sebagai node. Dengan cara ini, nilai sensor lokal/internal dilaporkan. Ini adalah CPU dan fungsi intensif memori karena membuat pesan sensor melibatkan fungsi EAS dan CMAC.
#define gatewaynode 0
Lebih jauh di bawah ini di file konfigurasi Conficignode.h, dimungkinkan untuk mengatur alamat dan informasi LORA lainnya dari node gateway.
Cara termudah untuk mengonfigurasi gateway pada wifi adalah dengan menggunakan fungsi wifimanager. Fungsi ini bekerja di luar kotak. Wifimanager akan menempatkan gateway dalam mode AccessPoint sehingga Anda dapat menghubungkannya sebagai WiFi AccessPoint.
#define _wifimanager 0
Jika WiFi Manager diaktifkan, pastikan untuk menentukan nama AccessPoint jika gateway dalam mode AccessPoint dan kata sandi.
#define ap_name "esp8266-gway-things4u"
#define ap_passwd "ttnautopw"
Nama titik akses standar yang digunakan oleh gateway adalah "ESP8266 GWAY" dan kata sandinya adalah "Ttnautopw". Setelah mengikat ke titik akses dengan ponsel atau komputer Anda, buka htp: //192.168.4.1 di browser dan beri tahu gerbang yang Anda inginkan untuk terhubung, dan tentukan kata sandi.
Gateway kemudian akan mengatur ulang dan mengikat ke jaringan yang diberikan. Jika semuanya berjalan dengan baik, Anda sekarang ditetapkan dan ESP8266 akan mengingat jaringan yang harus dihubungkannya. Catatan: Selama titik akses yang diikat gerbang, gateway tidak akan lagi berfungsi dengan daftar WPA dari titik akses yang diketahui. Jika perlu, Anda dapat menghapus titik akses saat ini di server web dan siklus daya gerbang untuk memaksanya untuk membaca array WPA lagi.
#jika gatewaynode == 1
#define _devaddr {0x26, 0x01, 0x15, 0x3d}
#define _appskey {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
#define _nwkskey {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
#define _sensor_interval 300
#endif
Server web built-in dapat digunakan untuk menampilkan status dan men-debug informasi. Juga server web memungkinkan pengguna untuk mengubah pengaturan tertentu saat run-time seperti level debug atau menghidupkan dan mematikan fungsi CAD. Ini dapat diakses dengan URL berikut: http: //: 80 Di mana IP yang diberikan oleh router ke ESP8266 saat startup. Mungkin sekitar 192.168.1.xx Webserver menunjukkan berbagai pengaturan konfigurasi serta menyediakan fungsi untuk mengatur parameter.
Parameter berikut dapat diatur menggunakan server web.
Perangkat lunak ini bergantung pada beberapa perangkat lunak, IDE Arduino untuk ESP8266 menjadi yang paling penting. Beberapa perpustakaan lain juga digunakan oleh program ini, pastikan Anda menginstal perpustakaan tersebut dengan IDE:
Untuk kenyamanan, perpustakaan juga ditemukan di repositori GitHub ini di direktori perpustakaan. Harap dicatat bahwa mereka bukan bagian dari ESP 1 Channel Gateway dan mungkin memiliki lisensi sendiri. Namun, perpustakaan ini bukan bagian dari perangkat lunak gateway saluran tunggal.
Lihat http://things4u.github.io di bagian perangkat keras untuk membangun dan instruksi koneksi.
Ketergantungan berikut ini berlaku untuk gateway saluran tunggal:
Hal -hal berikut masih ada di daftar keinginan saya untuk membuat ke gateway saluran tunggal:
File sumber sketsa gateway di repositori ini tersedia di bawah lisensi MIT. Perpustakaan yang termasuk dalam repositori ini disertakan hanya untuk kenyamanan dan semua memiliki lisensi sendiri, dan bukan bagian dari kode Gateway ESP 1CH.