️ Perangkat lunak ini default untuk mentransmisikan legal band ISM 915MHz di Amerika Serikat. Mentransmisikan pada band ini mungkin tidak legal di negara Anda.
Cara mengkompilasi
$ git clone --recurse-submodules https://github.com/jpaximadas/YeeNet.git
$ cd YeeNet
$ git config core.hooksPath git-hooks # Only necessary if you plan on contributing
$ export YEENET_BOARD=BLUEPILL_F103
$ make -C libopencm3
$ make -C src
Jika Anda memiliki git yang lebih tua, atau mendahului diri Anda dan melewatkan --recurse-submodules Anda dapat memperbaiki hal-hal dengan menjalankan git submodule update --init (ini hanya diperlukan sekali)
Jika Anda menargetkan papan pengembangan selain STM32 "Blue Pill", ubah yeenet_board. Untuk daftar papan yang didukung, lihat papan yang didukung
Perubahan selanjutnya pada file sumber hanya membutuhkan make -C src
Cara mengunggah
Repositori ini menggunakan alat pemrograman STM32 MCU Open Source: https://github.com/stlink-org/stlink
- Pastikan boot0 tidak diatur sedemikian rupa sehingga papan akan menghapus memori setelah reset
- Pastikan SWDIO, SWCLK, dan GND terhubung ke MCU (hanya menghubungkan 3.3V jika Anda berniat memberi daya papan dari programmer)
- Program chip:
OpenOCD adalah alternatif untuk Stlink tetapi tidak didukung oleh make upload .
Cara men -debug
Setelah biner telah diunggah menjalankan yang berikut di direktori SRC:
- Mulai server GDB
- Di terminal lain-masih di SRC-mulai GDB dan konfigurasikan
$ gdb yeenet_router_firmware.elf
$ set processor armv7
$ target remote localhost:4242
$ load yeenet_router_firmware.elf
GDB lebih lanjut pada pembacaan STM:
https://www.st.com/resource/en/user_manual/dm00613038-stm32cubeide-stlink-gdb-server-stmicroelectronics.pdf
Perhatikan bahwa PDF ini menggunakan server STMCube GDB, bukan Open Source Stlink. Namun, dari perspektif klien GDB, tidak ada perbedaan. Halaman 6/15 dari PDF menunjukkan cara menggunakan breakpoint dan titik jam tangan.
Cara menggunakan antarmuka serial
Ada driver serial dalam pengembangan di sini: https://github.com/jpaximadas/yeenet-router-driver-python
Direktori
- SRC berisi program
- Dibagikan berisi file bersama dari libopencm3
Papan yang didukung
Yeenet bertujuan untuk menargetkan papan pengembangan STM32 yang tersedia dan berbiaya rendah. Lihat di bawah untuk tabel target yang didukung dan nilai Yeenet_board yang sesuai.
| Papan | Yeenet_board |
|---|
| Blue Pill STM32F103 | Bluepill_f103 |
| Pil Hitam STM32F411 | BlackPill_F411 |
Dukungan untuk papan lain dapat ditambahkan dengan membuat definisi platform yang sesuai di platform/ dan memperbarui yeenet.mk sesuai.
Pengaturan papan tempat memotong papan
Tabel berikut menunjukkan bagaimana pin pada papan pengembangan yang didukung harus dihubungkan ke SX127X dan USB ke UART. Harap baca peringatan di akhir bagian sebelum mencoba papan tempat memotong roti ini.
| Fungsi | Pin pil biru/pil hitam |
|---|
| Serial TX | Pa9 |
| Serial rx | PA10 |
| Irq | Pa0 |
| Mosi | PA7 |
| Miso | Pa6 |
| Sck | PA5 |
| CS/SS | A1 |
| Pertama | B9 |
| Alamat bit 0 | B10 |
| Alamat bit 1 | B11 |
- Serial TX/RX harus terhubung ke chip USB/UART.
- IRQ harus terhubung ke DIO0 pada SX127X. (Dapat disebut D0 atau G0 di papan pelarian)
- Mosi, Miso, SCK, dan SS harus terhubung dari papan dev ke pin yang sesuai pada breakout SX127X.
- RST harus terhubung dari papan dev ke pin yang sesuai pada breakout SX1276X.
- Bit alamat 0 dan 1 harus berjalan dari papan dev ke 3.3V atau ground.
️ Jangan menyalakan papan dari lebih dari satu sumber tegangan. Ini akan merusak regulator di PCB.
️ Daya Papan SX127X atau SX127X Dev dengan 3,3 volt saja. Tata letak pin di atas menandakan sinyal dari SX127X ke dalam pin bluepill yang tidak 5 volt toleran. Pelarian ADAFRUIT SX127X akan memancarkan sinyal logika 5 volt dan merusak bluepill jika ditenagai dari 5 volt.
Cara merekomendasikan untuk memberi daya pada papan
- Kekuatan bluepill dari 5 volt dari USB ke UART. Bluepill akan mengatur ini hingga 3,3 volt untuk penggunaannya sendiri. Atau, bluepill dapat ditenagai dengan 3,3 volt dari regulator di USB ke UART.
- Titik SX127X dari regulator 3,3 volt yang layak. Regulator 3,3 volt Bluepill tidak cukup baik untuk tugas tersebut. Gunakan yang ada di USB Anda ke UART jika ada.
- Tinggalkan 3,3 volt pada programmer ST-Link terputus.
Todo
- Bekerja di packet handler
- Tingkatkan mode kegagalan saat ACK datang terlambat
- Bagaimana ACKS mempengaruhi packet handler saat bekerja dengan paket yang tidak tertekan
- Apakah fitur TX Snooze berfungsi?
- Cegah packet_handler dari dereferencing tx_pkt null pointer segera setelah diatur saat rx'ing a nack?
- Berikan fungsi lapisan yang lebih tinggi untuk memindahkan lokasi penunjuk RX_PKT di Packet_Handler
- Tulis router paket
- Menerapkan USB dan mempertahankan fungsionalitas UART
- Tuliskan dokumentasi
- Tingkatkan backoff_rng di packet_handler sehingga tidak menghabiskan kumpulan entropi dengan cepat
- Tingkatkan Organisasi Pengaturan Perangkat Keras
- Mulai Repo untuk Antarmuka Pengguna (Gunakan iMGUI yang terhormat)
- Tambahkan fungsionalitas SX127X FSK ke MODEM_XL.C
Memperoleh papan pelarian
Papan pelarian Adafruit dapat menempati terlalu banyak ruang untuk mengakses semua pin dan bisa mahal. Anda bisa mendapatkan papan pelarian telanjang di sini:
Modul radio RFM95 dapat diperoleh dari AliExpress atau Banggood dengan harga di bawah lima dolar.
Catatan
Catatan SX127X
- Pin reset pada papan pelarian Adafruit harus ditahan rendah agar perangkat berfungsi, bertentangan dengan instruksi di situs web Adafruit.
- Pin reset harus ditarik rendah sejenak untuk mengatur ulang perangkat saat MCU reboot. Register jaminan ini diatur ulang ke negara aslinya. Gagal melakukan ini dapat menyebabkan perilaku aneh.
- Untuk menghapus register bendera IRQ, nol harus ditulis dua kali atas SPI. Ini adalah bug perangkat keras.
- Saat menempatkan SX127X ke mode Lora, itu harus dimasukkan ke dalam mode tidur terlebih dahulu. Tidak siaga atau mode lain.
- Master SPI mungkin tidak menulis ke FIFO di luar mode siaga
- FIFO tidak selalu dihapus selama perubahan mode. Jangan pernah berasumsi FIFO secara otomatis dihapus
- Mode header eksplisit di SF = 6 tidak berfungsi. Fungsi konfigurasi modulasi otomatis dalam perangkat lunak ini tidak akan menolak konfigurasi modulasi itu.
- Kode ini tidak menyentuh byte "Sync Word" yang memungkinkan Loras menolak paket secara otomatis.
Catatan papan dev bluepill
- LED PC13 pada papan dev "Bluepill" memiliki anoda yang diikat ke 3,3 volt dan katoda itu terkait dengan PC13 (untuk beberapa alasan). Ini berarti PC13 harus ditarik rendah untuk menyalakan LED.
- Jangan mencoba memberi daya pada SX127X dari pasokan 3,3 volt Bluepill. Regulator on-board tidak dapat menyelesaikan tugas selama RX atau TX. SX127X Anda akan keluar dan mengatur ulang.
USB ke UART Notes
- Menggunakan papan Arduino dengan CH430 USB ke UART chip sebagai perangkat USB ke UART Anda, bukanlah tugas yang sederhana. Apa yang diberi label sebagai TX pada PCB (tetapi sebenarnya RX dari perspektif Arduino) dapat dimasukkan ke dalam pin TX 5 volt toleran dari papan dev Anda. Inilah bagian yang sulit. Apa yang ditulis sebagai RX di PCB (sebenarnya TX dari perspektif Arduino) tidak akan berfungsi jika Anda hanya mencolokkannya ke pin RX dari papan dev Anda. Anda perlu menyolder langsung ke chip CH430. Konsultasikan dengan lembar data untuk menemukan di mana pin TX CH430 berada. Surat di akhir "CH430" sangat penting.
Yee: https://youtu.be/Iepv31_e__4
