
BLE di bawah mikroskop (24-52 tautan)
NORDIC telah memproduksi kristal baru dari seri nRF52 selama beberapa tahun. Namun, banyak yang masih menggunakan keluarga nRF24 yang lebih tua. Hari ini saya akan menunjukkan kepada Anda bagaimana mengatur komunikasi dua arah di antara mereka di saluran periklanan. Selain itu, dengan menggunakan kemampuan kristal nRF52 untuk mengukur level RSSI, kami akan memplotnya pada grafik.
Opsi koneksi
Membaca forum Nordik tentang kapabilitas nirkabel antara keluarga lama dan baru, saya melihat bahwa ada dua kemungkinan. Ini adalah protokol ESB (Enhanced Shock Burst) dan tambahan di atasnya - protokol Gazell. Ini memang bagus, tetapi ada sejumlah kesulitan. Di sisi nRF24, ini adalah sumber yang ada di nRFgo_SDK_2.3.0 hanya untuk modul nrf24le1 dan nrf24lu1 (bundel nRF24L01 + mikrokontroler). Namun, di antara amatir radio, modul seperti itu tanpa pengontrol lebih tersebar luas.
Gbr.1
Dari sisi nRF52 tidak semuanya mulus. Dalam SDK, protokol ESB dan Gazell diberikan dalam bentuk modul terkompilasi yang sudah jadi, yang bukan ice. Kami akan menautkannya di level terendah, bekerja dengan register secara langsung. Di artikel ketiganyaSaya telah menjelaskan cara membuat suar menggunakan nRF51822. Menarik juga untuk membaca publikasi ini .
Pertama, beberapa kata tentang sistem yang akan kita bangun. Kami akan menerima dan mengirimkan di saluran iklan dalam format paket BLE. Ini akan memungkinkan penggunaan ponsel dan program NRF Connect ( android dan iOS) lihat paket kami di udara. Ini akan sangat membantu kami dan memungkinkan kami memecah tugas awal menjadi beberapa tahapan. Kami akan memiliki Host dengan saluran radio di nRF24L01 dan Perangkat di m / c nRF52832. Apalagi sejak nRF24L01 hanyalah saluran radio, itu akan membutuhkan pengontrol. Kami akan membuat dua proyek sekaligus pada m / c berbeda dari perusahaan ST. Host akan menyiarkan paket radio beberapa kali per detik. Perangkat akan menerimanya, mengukur tingkat RSSI dan mengirim kembali paket tanggapan, yang akan berisi nilainya. Setelah menerima pesan balasan, Host akan mengeluarkan satu byte dengan level RSSI ke port COM. Untuk melacak perubahan tingkat penerimaan secara visual, saya menulis program grafis kecil .
Host Nrf24L01 + Stm8L152
Jadi, mari kita mulai dengan Host di tautan Nrf24L01 + Stm8L152. Untuk tugas ini, saya mengambil modul Nrf24L01, foto yang diberikan di atas, dan STM8L-DISCOVERY, papan debug berdasarkan STM8L152C6T6. Di bawah ini adalah pinout dari modul nRF24L01.
Gambar 2
Pinout dari STM8L-DISCOVERY
#define LED_PORT GPIOC
#define LED_PIN GPIO_Pin_7
#define IRQ_PORT GPIOE
#define IRQ_PIN GPIO_Pin_0
#define CE_PORT GPIOD
#define CE_PIN GPIO_Pin_1
#define SPI_CLK_PORT GPIOE
#define SPI_CLK_PIN GPIO_Pin_4
#define SPI_MISO_PORT GPIOE
#define SPI_MISO_PIN GPIO_Pin_2
#define SPI_MOSI_PORT GPIOE
#define SPI_MOSI_PIN GPIO_Pin_5
#define SPI_CSN_PORT GPIOD
#define SPI_CSN_PIN GPIO_Pin_0
#define LED_PIN GPIO_Pin_7
#define IRQ_PORT GPIOE
#define IRQ_PIN GPIO_Pin_0
#define CE_PORT GPIOD
#define CE_PIN GPIO_Pin_1
#define SPI_CLK_PORT GPIOE
#define SPI_CLK_PIN GPIO_Pin_4
#define SPI_MISO_PORT GPIOE
#define SPI_MISO_PIN GPIO_Pin_2
#define SPI_MOSI_PORT GPIOE
#define SPI_MOSI_PIN GPIO_Pin_5
#define SPI_CSN_PORT GPIOD
#define SPI_CSN_PIN GPIO_Pin_0
Gbr. 3
Untuk mengeluarkan data ke port COM, adaptor USB ke m / s cp2102 digunakan yang terhubung ke kaki PC2 dan PC3. Anda bisa mendapatkan drivernya di sini. Pada akhirnya, inilah yang terjadi.
Gbr.4
Pada modul nRF24L01 Anda dapat melihat kapasitor elektrolitik yang disolder di antara pin daya. Direkomendasikan untuk mengaturnya agar pengoperasian modul yang stabil. Proyek dan firmware lengkap dapat ditemukan di sini dan di sini... Anda dapat membukanya menggunakan IAR untuk lingkungan pengembangan Stm8. Kami mem-flash m / c dan meluncurkannya. LED biru di papan STM8L-DISCOVERY akan berkedip 2 kali per detik, menandakan paket sudah dikirim. Sekarang saatnya untuk memulai program NRF Connect dan melihat sesuatu seperti gambar yang ditunjukkan pada Gbr.5a. Jika Anda berhasil, selamat, paruh pertama tugas selesai.
Gambar 5a ________________________________ Gambar 5b _______________________________ Gambar 5c ______________________________
Host Nrf24L01 + stm32F103
Agar tidak jauh dari pekerjaan Host, kami akan mengulangi hal yang sama untuk stm32F103 m / c. Untuk melakukan ini, saya mengambil "pil biru" dengan konektor USB terpasang di atasnya. Ini memungkinkan untuk tidak menggunakan adaptor, tetapi untuk mengeluarkan data langsung ke port USB menggunakan driver ini . Saya menyusun proyek untuk stm32F103 di STM32CubeMx.
Pinout dari sisi pil biru
#define SPI_CE_PORT GPIOB
#define SPI_CE_PIN GPIO_PIN_4
#define SPI_IRQ_PORT GPIOB
#define SPI_IRQ_PIN GPIO_PIN_5
#define SPI_MISO_PORT GPIOB
#define SPI_MISO_PIN GPIO_PIN_6
#define SPI_CLK_PORT GPIOB
#define SPI_CLK_PIN GPIO_PIN_7
#define SPI_MOSI_PORT GPIOB
#define SPI_MOSI_PIN GPIO_PIN_8
#define SPI_CSN_PORT GPIOB
#define SPI_CSN_PIN GPIO_PIN_9
#define SPI_CE_PIN GPIO_PIN_4
#define SPI_IRQ_PORT GPIOB
#define SPI_IRQ_PIN GPIO_PIN_5
#define SPI_MISO_PORT GPIOB
#define SPI_MISO_PIN GPIO_PIN_6
#define SPI_CLK_PORT GPIOB
#define SPI_CLK_PIN GPIO_PIN_7
#define SPI_MOSI_PORT GPIOB
#define SPI_MOSI_PIN GPIO_PIN_8
#define SPI_CSN_PORT GPIOB
#define SPI_CSN_PIN GPIO_PIN_9
Gbr.6
Proyek itu sendiri dan firmware dapat diambil di sini dan di sini . Anda dapat membukanya menggunakan IAR untuk lingkungan pengembangan Stm32. Setiap programmer dapat digunakan untuk memprogram STM32F103. Saya menggunakan yang ini.
Gbr. 7 Kami
menghubungkan catu daya dan mencoba melihat paket di saluran iklan. Gambarnya akan sama seperti pada Fig5a. Tidak ada yang berkedip di papan ini, kedua LED menyala terus menerus. Saya tidak dapat menghidupkan kembali LED hijau di kaki PC13. Frekuensi pengiriman lebih tinggi dari pada papan dengan stm8L152 dan 10 Hz. Semua parameter ini dapat dengan mudah diubah dalam proyek.
Perangkat Nrf52832
Jadi, kami akan berasumsi bahwa bagian pertama dari sistem dengan Host berfungsi untuk kami. Sekarang kami akan meluncurkan Perangkat. Hal ini dapat dilakukan pada KIT yang sesuai dari NORDIC PCA10040
Gbr.8
Anda juga dapat menggunakan papan apa pun dengan m / k nRF52832. Saya akan menggunakan papan dari desain lama. Tetapi pada kit PCA10040, saya periksa, itu juga mulai. Proyek dan firmware ada di sini dan di sini . Itu dibangun di lingkungan Keil uVision4 menggunakan SDK12.3.0 lama, yang dapat diambil di sini... Agar proyek dapat dibangun tanpa masalah, foldernya harus ditempatkan di direktori nrf52832_workspace_SDK12 \ example \ peripheral \. Faktanya adalah bahwa proyek apa pun dari NORDIC berisi tautan terkait dalam jumlah besar, sehingga tidak akan dikumpulkan di tempat yang sembarangan. Untuk mem-flash nRF52832, Anda dapat menggunakan program nRFgoStudio atau nRF Connect for Desktop .
Saat meluncurkan proyek Perangkat, saya akan merekomendasikan melakukan ini terlebih dahulu. Karena Perangkat bekerja dalam mode mendengarkan, tidak mengirim paket radio di udara. Ini akan terjadi hanya sebagai tanggapan, setelah menerima paket dari Host. Oleh karena itu, Anda harus terlebih dahulu memeriksa apakah perangkat tersebut hidup. Untuk melakukan ini, Anda perlu mengomentari fungsi BleListen () dalam proyek dan, sebaliknya, menghapus komentar pada BleRadioTransaction (). Seperti gambar dibawah ini.
Dalam hal ini, Perangkat itu sendiri akan mulai menyiarkan paket radio. Mereka bisa dilihat di telepon. Gambar contoh ditunjukkan pada Gbr.5b. Jika semuanya baik-baik saja, kami mengembalikan semuanya dan mengaktifkan perangkat Host dan Perangkat. Di telepon, kita akan melihat keduanya, seperti pada Gambar 5c. Ini berarti Perangkat melihat pesan Host dan mengirimkannya sendiri sebagai tanggapan. Jika Tuan Rumah, pada gilirannya, telah menerima pesan tanggapan dengan tingkat RSSI, kemudian menetapkan nilai ini ke port COM. Sekarang jika kita menjalankan program LevelRssi pada Windows dan memilih port yang benar, kita akan melihat bagaimana level RSSI berubah dengan posisi relatif perangkat yang berbeda.
Kesimpulan
Saya hampir selesai menyiapkan artikel ketika saya mendapat pemikiran lain. Saya memutuskan untuk menggunakan perangkat yang lebih umum sebagai Perangkat, yaitu dongle pca10059 , berdasarkan nRF52840 m / c. Ini fotonya.
Gbr. 9
Untungnya, saya memiliki dua papan seperti itu. Setelah membangun kembali proyek, saya mengalami masalah saat mengunggah firmware ke dalamnya. Saya tahu saya perlu melakukan ini menggunakan nRF Connect for Desktop, tetapi tidak segera mengetahui cara memasukkan dongle ke mode DFU (pembaruan firmware). Begini cara melakukannya. Kami masuk ke mode DFU segera setelah reset. Anda harus mencolokkan dongle terlebih dahulu ke konektor USB, lalu tekan tombol reset (paling jauh dari prosesor), dengan pendorong horizontal. LED merah pada dongle mulai berkedip. Buka program nRF Connect dan tekan tombol "Instal" di bagian Programmer. Saat perangkat lunak yang diperlukan diunduh, klik tombol "Buka".
Gambar 10
Jendela pemrogram akan terbuka di depan Anda.
Gbr. 11
Di kiri atas, pilih port COM yang diinginkan. Anda akan melihat sesuatu seperti gambar berikut.
Gambar 12
Di sisi kiri kita akan melihat apa yang ada di memori pengontrol. Dengan mengklik tombol "Tambahkan file HEX", Anda dapat menambahkan file untuk diisi di sisi kanan. Ada juga beberapa masalah di sini. Tombol "Hapus semua" dan "Hapus & tulis" tidak tersedia untuk kami. Faktanya adalah bahwa dongle tidak memiliki programmer, jadi program tersebut dimuat menggunakan bootloader. Dan kami masuk ke dalamnya melalui bagian MBR. Jika kami menghapus bagian ini, maka firmware melalui mode DFU tidak mungkin dilakukan. Secara teori, Anda hanya perlu menambahkan firmware ke bagian kanan layar dan menekan tombol "Tulis". Semuanya tampak benar, tetapi tidak akan berhasil. Program kami dimulai dari alamat nol di memori FLASH, dan alamat ini sudah ditempati oleh partisi MBR. Cara mengatasinya bisa dibaca di tutorial ini .... Jika Anda membaca lama atau tidak, saya akan menjelaskan dalam gambar menggunakan contoh Keil-a. Berikut adalah gambar proyek dengan alokasi memori mikrokontroler untuk proyek non stack.
Gbr. 13
Diperlukan untuk menggeser FLASH-a pointer ke 0x1000, dan RAM ke 0x20000008 dan mengkompilasi ulang proyek.
Gbr.14
Setelah itu, Anda sudah dapat menggunakan program nRF Connect for Desktop. Mungkin itu saja. Anda dapat melihat apa yang saya lakukan di video di bawah ini.
yadi.sk/i/BGQQnga1HeN50A
yadi.sk/i/d8A9pU82kBcTMw
yadi.sk/i/XGac8xwpksVX7g
Karyawan Caesar Satellite Group of Companies
Vladimir Pecherskikh