Repositori ini memberi Anda semua yang perlu Anda bangun dengan mudah (ini adalah proyek DIY!) Gateway Lora-to-MQTT berkualitas tinggi, berdasarkan pada modul Ebyte Lora dan ESP32 dan bekerja baik dengan Wi-Fi atau Ethernet, menjalankan 5V. Ada dua versi gateway yang berbeda, detail tentang versi -versi itu dan yang harus Anda ambil di bawah ini:
Untuk memberikan kemampuan papan Ethernet, saya menggunakan topi Ethernet ESP32 yang berkasel. Tentu saja, wajar jika saya juga harus menggunakan ESP32 yang dikeluarkan, tetapi saya memiliki beberapa devboard ESP32 standar cadangan yang berbaring tanpa digunakan untuk, jadi saya merancang papan di sekitar ini. Tapi yang mengatakan, suatu hari saya mungkin mendesain versi yang sepenuhnya berdasarkan pada ESP32 yang dikelilingi.
Untuk dengan mudah beralih antara Wi-Fi dan Ethernet, ada pelompat di papan untuk melakukan hal itu. Ini bahkan berfungsi dengan dewan bertenaga; Tidak perlu memotong daya.
Sekali lagi, ini adalah proyek DIY! Jadi pertama -tama, Anda memerlukan beberapa keterampilan menyolder dan saya sangat merekomendasikan smd hot plate atau pistol udara panas untuk menyolder modul Ebyte E32. Sangat sulit untuk menyoldernya hanya dengan setrika!
Jadi, Anda ingin mencetak PCB di pabrik prototipe PCB pilihan Anda, seperti JLCPCB atau PCBWay. Saya telah memasukkan file Gerber untuk keduanya di folder REPERNIV. Jika Anda ingin menggunakan penyedia layanan yang berbeda, Anda perlu memeriksa apakah mereka dapat menerima Gerbers ini atau menghasilkannya sendiri.
Saya juga sangat menyarankan agar Anda memesan PCB ini dengan stensil, jika tidak, Anda akan kesulitan menempatkan pasta pada bantalan modul Ebyte!
Setiap folder PCB memiliki file HTML IBOM yang memberi Anda instruksi / ikhtisar solder yang bagus, temukan di folder ibom di setiap folder versi. Ketika Anda telah menyolder papan, cukup kabel dengan sumber daya 5V dan begitulah! Ini mengkonsumsi kurang dari 200mA, sehingga Anda dapat dengan mudah menggunakan pengisi daya telepon 500mA, 1a (atau lebih tinggi) lama untuk itu.
Sumber tersedia di folder src . Unduh Arduino IDE, periksa file config.h dan ganti placeholder dengan pengaturan Anda, kompilasi dan unggah ke ESP32. Itu haruslah dan gateway harus muncul di server MQTT Anda dan mengirim pesan pemeriksaan kesehatan setiap 5 detik.
Bagaimana Anda sekarang dapat memiliki sensor dan papan Anda memiliki pesan LORA yang dikirim ke sana dapat ditemukan di bagian "Kode Sumber / Perangkat Lunak" di bawah ini.
Mana yang harus kamu pilih? Itu cukup mudah dan ditentukan oleh satu faktor:
Anda perlu memilih di antara mereka, karena modul Ebyte yang menggunakan komunikasi serial tidak dapat berkomunikasi dengan modul RFM95, meskipun mereka menggunakan chip Lora Semtech SX1276 yang sama. Itu karena modul yang dioperasikan dengan serial Ebyte juga memiliki litte MCU yang sudah melakukan "barang" / protokol sendiri saat mengirim pesan melalui Lora. Jadi, Anda tidak berbicara langsung dengan chip Semtech, tetapi MCU kecil itu sebagai gantinya. Orang perlu memahami bagaimana tepatnya bekerja untuk membaca pesan -pesan ini dengan modul LORA yang menggunakan komunikasi SPI langsung ke chip Semtech (seperti modul E32 spesifik yang saya gunakan, atau RFM95) untuk membuatnya bekerja satu sama lain.
Versi ini didasarkan pada Ebyte E32-400M20S atau E32-900M20S, yang menawarkan komunikaton serial langsung ke Semtech SX1276. Pada saat penelitian terakhir (mulai tahun 2022), ini adalah satu-satunya modul e-byte yang berfungsi pada PCB ini, jadi Anda tidak dapat menggunakan yang lain yang menggunakan komunikasi serial: mereka tidak akan muat di papan / memiliki pinout yang berbeda! Pilih yang tepat untuk wilayah Anda (TL; DR: 400 untuk AS/Asia, 900 untuk Eropa).
Modul ini tidak ada dalam file BOM CSV, Anda perlu melepaskannya dari AliExpress:
Jika Anda biasanya bekerja di ekosistem Ebyte dengan modul antarmuka serial, papan ini untuk Anda. Namun saya belum melakukan port perangkat lunak berbasis E32 saya untuk papan ini. Dan saya sebenarnya tidak berencana untuk melakukannya, karena saya secara pribadi menggunakan versi E32. Tapi Anda dipersilakan untuk port menggunakan Perpustakaan Renzo Mischiantis Arduino.
Modul ini tidak ada dalam file BOM CSV, Anda perlu melepaskannya dari AliExpress:
Perangkat lunak yang saya kembangkan untuk ini dimaksudkan untuk mudah diperluas tanpa menyentuh logika gateway itu sendiri, tetapi sebaliknya menambahkan sedikit kode ke file terpisah.
Lihatlah lora-ids.h . File ini dimaksudkan untuk dibagikan antara gateway ini dan semua sensor yang Anda kembangkan. Ini memiliki daftar jenis pesan yang berbeda dan Anda dapat dengan mudah menambahkan sendiri. Misalnya, memiliki jenis "kotak surat" yang mendefinisikan beberapa properti yang akan dikirim kotak surat. Ini membuatnya sangat mudah untuk membaca dan memproses pesan ini dan membuat topik di server MQTT Anda yang kemudian dapat Anda dengarkan. Ada juga tipe "khusus" yang pada dasarnya memiliki teks gratis dan mungkin bagus untuk debugging.
Jangan ragu untuk menambahkan tipe Anda sendiri di file ini. Anda perlu menambahkan dua hal:
#define LORA_MESSAGE_ID_CUSTOM 0x0struct LoRaMessageCustom : LoRaBaseSubjek di mana pesan jatuh ke dalam dibangun dari ID gateway, ID perangkat, dan ID pesan. Jadi untuk contoh berikut kami berasumsi bahwa:
0xA dan nama mailbox-sensor telah dikirimLORA_MESSAGE_ID_MAILBOX dan0x1 dan nama lora-gateway-e32 menerimanya. Jadi mari kita ambil jenis pesan mailbox sebagai contoh. Ini mendefinisikan sifat -sifat ini:
Selain itu, ia mendefinisikan namanya sendiri (dan dengan itu: induk untuk properti ini):
String getMqttTopicName() { return "mailbox"; }Jadi setiap kali gerbang akan menerima pesan jenis ini, ia akan membaca properti darinya dan menjatuhkannya ke dalam topik -topik ini:
???/messages/mailbox/duration???/messages/mailbox/distance???/messages/mailbox/humidity???/messages/mailbox/temperature Tapi di mana /messages/ bagian datang formulir dan apa itu ???/ . Itu mudah: perangkat / sensor mudah yang Anda kembangkan juga harus terdaftar di lora-ids.h . Di bagian paling atas, ada daftar perangkat, masing -masing dengan:
Gateway akan mengurutkan semua pesan yang diterimanya berdasarkan perangkat dan awalannya dengan nama perangkat itu, plus mengurutkan semua pesan di bawah topik messages untuk memungkinkan perangkat memiliki topik lain di sebelah pesan yang sebenarnya. Ini memungkinkan Anda untuk mendengarkan bidang/nilai spesifik jenis pesan tertentu dari perangkat tertentu!
Jadi kita sekarang tahu ini:
???/mailbox-sensor/messages/mailbox/duration???/mailbox-sensor/messages/mailbox/distance???/mailbox-sensor/messages/mailbox/humidity???/mailbox-sensor/messages/mailbox/temperatureBagian terakhir yang hilang adalah gateway yang menerima pesan. Ini juga didefinisikan sebagai perangkat, sehingga juga memiliki nama, sehingga kami dapat dengan mudah membuat nama topik lengkap untuk contoh kami:
lora-gateway-e32/devices/mailbox-sensor/messages/mailbox/durationlora-gateway-e32/devices/mailbox-sensor/messages/mailbox/distancelora-gateway-e32/devices/mailbox-sensor/messages/mailbox/humiditylora-gateway-e32/devices/mailbox-sensor/messages/mailbox/temperatureSekarang Anda dapat dengan mudah:
LORA_DEVICE_IDS dengan id dan nama Lihatlah fungsi sendLoRaMessage : bool sendLoRaMessage(byte messageID, LoRaBase *loRaMessage, byte recipientId = 0, byte senderId = 0) ia mengharapkan kami untuk memberikannya:
Kami juga dapat menentukan secara opsional:
LORA_GATEWAY_IDLORA_DEVICE_ID , jika tidak ditentukan Jadi dalam kode Anda, cukup buat instance dari ID pesan yang ingin Anda kirim dan berikan ke sendLoRaMessage :
LoRaMessageMailbox *loRaMessage = new LoRaMessageMailbox;
loRaMessage->duration = duration;
loRaMessage->distance = distance;
loRaMessage->humidity = humidity;
loRaMessage->temperature = temperature;
sendLoRaMessage(LORA_MESSAGE_ID_MAILBOX, loRaMessage);
Dan itu saja :)
Untuk ini kita melihat bagaimana pesan sebenarnya dibangun yang dikirim melalui Lora. Ide dasarnya dicuri dari perpustakaan Arduino-Lora, yang menggunakan byte tunggal untuk mengidentifikasi pengirim, penerima, dll.
Melihat satu pesan:
| . Jadi mengambil contoh pesan mailbox dari atas, nilai untuk pesan bisa terlihat seperti ini: 12345|3.56|44.55|27.4