Daftar Isi:

BLE Daya Sangat Rendah Mudah di Arduino Bagian 3 - Penggantian Nano V2 - Rev 3: 7 Langkah (dengan Gambar)
BLE Daya Sangat Rendah Mudah di Arduino Bagian 3 - Penggantian Nano V2 - Rev 3: 7 Langkah (dengan Gambar)

Video: BLE Daya Sangat Rendah Mudah di Arduino Bagian 3 - Penggantian Nano V2 - Rev 3: 7 Langkah (dengan Gambar)

Video: BLE Daya Sangat Rendah Mudah di Arduino Bagian 3 - Penggantian Nano V2 - Rev 3: 7 Langkah (dengan Gambar)
Video: SULTAN MEDAN INDRAKENZ NAIK JET PRIBADI KE PULAU PRIBADI!! 2024, November
Anonim
BLE Daya Sangat Rendah Mudah di Arduino Bagian 3 - Penggantian Nano V2 - Rev 3
BLE Daya Sangat Rendah Mudah di Arduino Bagian 3 - Penggantian Nano V2 - Rev 3
BLE Daya Sangat Rendah Mudah di Arduino Bagian 3 - Penggantian Nano V2 - Rev 3
BLE Daya Sangat Rendah Mudah di Arduino Bagian 3 - Penggantian Nano V2 - Rev 3
BLE Daya Sangat Rendah Mudah di Arduino Bagian 3 - Penggantian Nano V2 - Rev 3
BLE Daya Sangat Rendah Mudah di Arduino Bagian 3 - Penggantian Nano V2 - Rev 3

Pembaruan: 7 April 2019 – Rev 3 dari lp_BLE_TempHumidity, menambahkan plot Tanggal/Waktu, menggunakan pfodApp V3.0.362+, dan pembatasan otomatis saat mengirim dataPembaruan: 24 Maret 2019 – Rev 2 dari lp_BLE_TempHumidity, menambahkan lebih banyak opsi plot dan i2c_ClearBus, menambahkan dukungan GT832E_01

>

>

pengantar

Tutorial ini, Penggantian Redbear Nano V2, adalah Bagian 3 dari 3. Ini adalah Revisi 2 dari proyek ini. Revisi 2 PCB mencakup pemasangan untuk sel koin dan sensor, menyederhanakan konstruksi dan meningkatkan aliran udara di sekitar sensor sekaligus melindunginya dari sinar matahari langsung. Revisi 1 di sini.

Bagian 1 – Membuat Perangkat BLE Berdaya Sangat Rendah menjadi Mudah dengan Arduino mencakup penyiapan Arduino untuk mengkodekan perangkat berdaya rendah nRF52, modul pemrograman, dan mengukur arus suplai. Ini juga mencakup timer dan komparator daya rendah khusus dan input debounce dan menggunakan pfodApp untuk terhubung ke dan mengontrol perangkat nRF52.

Bagian 2 – Monitor Kelembaban Suhu Daya Sangat Rendah mencakup penggunaan modul Redbear Nano V2 dan sensor suhu/kelembaban Si7021 untuk membuat baterai berdaya rendah/monitor surya. Ini juga mencakup memodifikasi perpustakaan Si7021 menjadi daya rendah, menyetel perangkat BLE untuk mengurangi konsumsi arusnya hingga <29uA dan merancang tampilan suhu/kelembaban khusus untuk ponsel Anda.

Bagian 3 – Penggantian Redbear Nano V2, yang satu ini, mencakup penggunaan modul berbasis nRF52 lain, bukan Nano V2. Ini mencakup pemilihan komponen suplai, konstruksi, melepas perlindungan pemrograman chip nRF52, menggunakan pin NFC sebagai GPIO biasa, dan mendefinisikan papan nRF52 baru di Arduino.

Instruksi ini adalah aplikasi praktis Bagian 1 Membangun perangkat BLE Daya Sangat Rendah yang dibuat Mudah dengan Arduino dengan membangun Monitor Suhu dan Kelembaban BLE Daya Sangat Rendah menggunakan papan SKYLAB SBK369 sebagai pengganti Nano V2. Tutorial ini mencakup cara membuat definisi papan baru dan cara menghapus pelindung pemrograman nRF52 agar dapat diprogram ulang. Tutorial ini menggunakan sketsa yang sama seperti Bagian 2 dengan parameter BLE yang disetel sama untuk konsumsi daya rendah dan dapat ditenagai dari baterai ATAU baterai + solar ATAU surya saja. Penyetelan parameter BLE untuk daya rendah dibahas di Bagian 2

Rev 3 dari lp_BLE_TempHumidity memplot data terhadap tanggal dan waktu hanya dengan menggunakan Arduino millis(). Lihat Tanggal dan Waktu Arduino menggunakan millis() dan pfodApp menggunakan pfodApp versi terbaru (V3.0.362+).

Rev 4 dari pfod_lp_nrf52.zip juga mendukung modul GT832E_01 dan tutorial ini mencakup penggunaan pin NFC nRF52 sebagai GPIO standar.

Monitor yang dibangun di sini akan berjalan selama bertahun-tahun dengan sel koin atau baterai 2 x AAA, bahkan lebih lama dengan bantuan tenaga surya. Selain menampilkan suhu dan kelembaban saat ini, monitor menyimpan pembacaan 36 Jam terakhir dari 10 menit dan 10 hari terakhir dari pembacaan per jam. Ini dapat dipetakan di ponsel Android Anda dan nilainya disimpan ke file log. Tidak diperlukan Pemrograman Android, pfodApp menangani semua itu. Tampilan dan grafik Android sepenuhnya dikontrol oleh sketsa Arduino Anda sehingga Anda dapat menyesuaikannya sesuai kebutuhan.

Bagian 2 menggunakan papan Redbear Nano V2 untuk komponen BLE nRF52832. Proyek ini menggantikannya dengan papan SKYLAB SKB369 yang lebih murah. Seperti pada Bagian 2, papan breakout Sparkfun Si7021 digunakan untuk Sensor Suhu / Kelembaban. Pustaka daya rendah yang dimodifikasi digunakan dengan Si7021.

Langkah 1: Mengapa Penggantian Nano V2?

i) Nano V2 tidak diproduksi selama beberapa bulan dan tampaknya tidak cocok dengan jajaran Particle.io sehingga tidak jelas berapa lama akan tersedia.

ii) Nano V2 lebih mahal. Namun juga memiliki fitur tambahan. Lihat di bawah.

iii) Nano V2 memiliki komponen di kedua sisi yang memberikan profil lebih tinggi dan membuatnya lebih sulit untuk dipasang.

iv) Nano V2 memiliki pin I/O terbatas yang tersedia dan menggunakan D6 hingga D10 membutuhkan lead terbang.

Meskipun papan Nano V2 lebih mahal daripada papan SKYLAB SKB369, ~US17 versus ~US5, Nano V2 memang memiliki lebih banyak fitur. Nano V2 mencakup regulator 3.3V dan kapasitor suplai, komponen tambahan untuk menggunakan opsi konverter DC/DC nRF52, antena chip, dan konektor antena SMT uFL.

Alternatif lain adalah modul GT832E_01 yang digunakan oleh www.homesmartmesh.com. Rev 4 dari pfod_lp_nrf52.zip juga mendukung pemrograman modul GT832E_01. SKYLAB SKB369 dan GT832E_01 tersedia dari

Redbear (Particle.io) juga memiliki modul kosong tanpa regulator 3V3, komponen DC/DC atau komponen kristal 32Khz.

Garis besar

Proyek ini memiliki 4 bagian independen relatif: -

Pemilihan dan Konstruksi Komponen Menghapus flag perlindungan pengkodean nRF52 dan memprogram sketsa Membuat Papan Arduino nRF52 Definisi Baru Mengonfigurasi ulang pin NFC nRF52 sebagai GPIO

Langkah 2: Pemilihan dan Konstruksi Komponen

Pemilihan Komponen

Selain komponen nRF52832 dan Si7021 yang dipilih di Bagian 2, proyek ini menambahkan regulator 3.3V dan kapasitor suplai.

Komponen Pengatur Tegangan

Regulator yang digunakan disini adalah MC87LC33-NRT. Ini dapat menangani input hingga 12V dan memiliki arus diam <3.6uA, biasanya 1.1uA. Nano V2 menggunakan regulator TLV704 memiliki arus diam yang sedikit lebih tinggi, biasanya 3.4uA dan dapat menangani tegangan input yang lebih tinggi, hingga 24V. MC87LC33-NRT dipilih sebagai gantinya karena lembar datanya menentukan bagaimana responsnya saat tegangan input turun di bawah 3.3V sedangkan lembar data TLV704 tidak.

TLV704 menentukan tegangan input minimum 2.5V dan tidak jelas dari lembar data apa yang akan terjadi di bawah itu. nRF52832 akan turun ke 1.7V dan Si7023 akan turun ke 1.9V. MC87LC33-NRT di sisi lain menentukan perbedaan tegangan input/output hingga 0V untuk arus rendah (Gbr 18 dari datasheet). Jadi mengingat pilihan komponen, MC87LC33-NRT dipilih karena memiliki kinerja yang ditentukan.

Kapasitor Pasokan

Regulator MC87LC33-NRT membutuhkan beberapa kapasitor suplai untuk stabilitas dan respons. Kapasitor keluaran > 0.1uF direkomendasikan pada lembar data. SKYLAB SBK369 juga menentukan kapasitor 10uF/0.1uF pada suplai yang dekat dengan papan. Kapasitor yang lebih besar membantu dalam memasok lonjakan arus nRF52 TX. Di sini kapasitor keramik 4 x 22uF 25V dan 3 x 0,1uF 50V digunakan. Satu kapasitor 22uF dan 0,1uF ditempatkan dekat SKYLAB SBK369, 0,1uF ditempatkan dekat dengan output MC87LC33-NRT untuk memastikan stabilitas dan 22uF dan 0,1uF ditempatkan pada input ke MC87LC33-NRT dan sebuah kapasitor 2 x 22uF lebih lanjut di mana disolder melintasi pin Vin / GND sebagai reservoir arus lebih lanjut. Sebagai perbandingan, papan NanoV2 memiliki 22uF / 0,1uF pada input ke regulator TLV704 dan 0,1uF pada outputnya.

Kapasitor reservoir arus ekstra dipasang pada input ke regulator 3.3V sehingga mereka akan mengisi daya ke tegangan yang lebih tinggi saat dijalankan dengan sel surya. Mengisi ke tegangan yang lebih tinggi sama dengan menyimpan lebih banyak arus untuk memasok lonjakan Tx.

Kapasitor keramik X5R digunakan karena memiliki resistansi seri yang rendah dan arus bocor yang rendah. Resistansi biasanya 100.000MΩ atau 1000MΩ – F mana yang lebih kecil. Jadi untuk 22uF kami memiliki 22000MΩ, yaitu kebocoran 0,15nA pada 3,3V atau 0,6nA untuk empat kapasitor 22uF. Itu diabaikan. Sebagai perbandingan Low ESR, Low Leakage Panasonic Electrolytic kapasitor memiliki arus bocor <0,01CV. Jadi untuk kapasitor 22uF 16V kebocorannya <10uA. Catatan: Ini adalah kebocoran pada tegangan pengenal, 16V dalam kasus ini. Kebocoran lebih rendah pada tegangan yang lebih rendah, yaitu <2.2uA pada 3.3V.

Daftar Suku Cadang

Perkiraan biaya per unit pada Des 2018, ~US$61, tidak termasuk pengiriman dan programmer dari Bagian 1

  • SKYLAB SKB369 ~US$5 misalnya Aliexpress
  • Papan breakout Sparkfun Si7021 ~US$8
  • 2 x 53mm x 30mm 0.15W 5V sel surya mis. Melayang ~US$1,10
  • 1 x PCB SKYLAB_TempHumiditySensor_R2.zip ~US$25 untuk diskon 5 www.pcbcart.com
  • 1 x MC78LC33 3.3V regulator, mis. Digikey MC78LC33NTRGOSCT-ND ~US$1
  • 2 x 0.1uF 50V keramik C1608X5R1H104K080A mis. Digikey 445-7456-1-ND ~US$0,3
  • 4 x 22uF 16V keramik GRM21BR61C226ME44L mis. Digikey 490-10747-1-ND ~US$2
  • 1 x BAT54CW, mis. Digikey 497-12749-1-ND ~US$0,5
  • 1 x 470R 0.5W 1% resistor mis. Digikey 541-470TCT-ND ~US$0,25
  • 1 x 10V 1W zener SMAZ10-13-F mis. Digikey SMAZ10-FDICT-ND ~US$0,5
  • Sekrup nilon 3mm x 12mm, mis. Jaycar HP0140 ~AUD$3
  • Kacang nilon 3mm x 12mm, mis. Jaycar HP0146 ~AUD$3
  • Pita Pemasangan Permanen Scotch Cat 4010 mis. dari Amazon ~US$6,6
  • Tempat baterai CR2032, mis. HU2032-LF ~US$1,5
  • Baterai CR2032 ~US$1
  • Lembar Perspex, 3.5mm dan 8mm
  • pfodApp ~US$10
  • Pasta Solder mis. Jaycar NS-3046 ~AUD$13

Langkah 3: Konstruksi

Konstruksi
Konstruksi
Konstruksi
Konstruksi
Konstruksi
Konstruksi

Proyek ini dibangun di atas PCB kecil. PCB dibuat oleh pcbcart.com dari file Gerber ini, SKYLAB_TempHumiditySensor_R2.zip PCB meniru pin Nano V2 dan cukup umum digunakan untuk proyek BLE lainnya.

Ini adalah skema (versi pdf)

Pertama-tama solder komponen SMD, lalu pasang papan SKYLAB SKB369

Hampir semua komponen adalah perangkat pemasangan permukaan (SMD). Kapasitor dan IC bisa sulit disolder dengan tangan. Metode yang disarankan adalah dengan memegang PCB di wakil dan menerapkan sedikit pasta solder ke bantalan dan menempatkan komponen SMD, kecuali papan SKB369 pada PCB. Kemudian dengan menggunakan heat gun, panaskan bagian bawah PCB sampai pasta solder meleleh dan kemudian lakukan gerakan cepat melewati bagian atas papan dengan hati-hati agar komponen tidak terlepas. Terakhir, sentuh komponen dengan besi solder ujung kecil. Hati-hati dengan kapasitor dan resistor karena mudah melelehkan kedua ujungnya dan membuat komponen lepas saat menyolder salah satu ujungnya.

Revisi ini menambahkan kapasitor keramik 22uF 16V ekstra. Kapasitor ekstra ini mengurangi lonjakan arus yang diambil dari baterai dan juga mengurangi penurunan tegangan saat diberi daya dari sel surya. Selama tegangan dari sel surya tetap di atas tegangan baterai maka tidak ada arus yang ditarik dari baterai.

Setelah komponen SMD terpasang, Anda dapat menyolder di papan SKYLAB SKB369. Ada dua lubang titik uji di satu sisi tab SKB369. Gunakan dua pin pada alas karton untuk menempatkan papan SKB369 dan luruskan pin dengan hati-hati. (Lihat contoh foto di atas menggunakan PCB Revisi 1) Kemudian solder satu pin dari sisi yang berlawanan untuk menahan papan di tempatnya sebelum menyolder pin lainnya.

Perhatikan kabel tautan Gnd dari CLK ke GND di bagian yang sudah jadi. Ini diinstal SETELAH pemrograman untuk mencegah noise pada input CLK memicu chip nRF52 ke mode debug arus tinggi

Kasus pemasangan

Kasing pemasangan terbuat dari dua potong perspex, 110mm x 35mm, tebal 3mm. Potongan 3,5 mm di bawah sel surya disadap untuk mengambil sekrup nilon 3 mm. Konstruksi yang direvisi ini lebih sederhana daripada Rev 1 dan meningkatkan aliran udara di sekitar sensor. Lubang tambahan di setiap ujungnya adalah untuk pemasangan, misalnya menggunakan pengikat kabel.

Langkah 4: Menghapus Bendera Perlindungan Pengkodean NRF52

Menghapus Bendera Perlindungan Pengkodean NRF52
Menghapus Bendera Perlindungan Pengkodean NRF52
Menghapus Bendera Perlindungan Pengkodean NRF52
Menghapus Bendera Perlindungan Pengkodean NRF52
Menghapus Bendera Perlindungan Pengkodean NRF52
Menghapus Bendera Perlindungan Pengkodean NRF52

Hubungkan papan Temperatur/Kelembaban ke Programmer yang dijelaskan di Bagian 1 seperti yang ditunjukkan di atas.

Dengan sel surya dan baterai dicabut, Vin dan Gnd terhubung ke Vdd dan Gnd programmer (lead Kuning dan Hijau) dan SWCLK dan SWDIO terhubung ke Clk dan SIO papan header programmer (lead Putih dan Abu-abu)

Menghapus perlindungan program nRF52

Dari Nordic Semi – Debug dan Lacak halaman DAP – Debug Access Port. Debugger eksternal dapat mengakses perangkat melalui DAP. DAP menerapkan standar ARM® CoreSight™ Serial Wire Debug Port (SW-DP). SW-DP mengimplementasikan protokol Serial Wire Debug (SWD) yang merupakan antarmuka serial dua pin, SWDCLK dan SWDIO

Penting: Saluran SWDIO memiliki resistor pull-up internal. Garis SWDCLK memiliki resistor pull-down internal.

CTRL-AP - Kontrol Akses Port. Control Access Port (CTRL-AP) adalah port akses kustom yang memungkinkan kontrol perangkat bahkan jika port akses lain di DAP dinonaktifkan oleh proteksi port akses. Perlindungan port akses memblokir debugger dari akses baca dan tulis ke semua register CPU dan alamat yang dipetakan memori. Nonaktifkan perlindungan port akses. Perlindungan port akses hanya dapat dinonaktifkan dengan mengeluarkan perintah ERASEALL melalui CTRL-AP. Perintah ini akan menghapus Flash, UICR, dan RAM.

Pilih CMSIS-DAP sebagai programmer untuk Particle's Debugger dan pilih nRF5 Flash SoftDevice

Jika flash berfungsi, maka tidak apa-apa, tetapi seringkali modul telah dilindungi dari pemrograman ulang dan Anda akan mendapatkan output kesalahan ini di jendela Arduino

Buka On-Chip Debugger 0.10.0-dev-00254-g696fc0a (2016-04-10-10:13)Berlisensi di bawah GNU GPL v2 Untuk laporan bug, baca https://openocd.org/doc/doxygen/bugs.html debug_level: 2 Info: hanya satu pilihan transport; autoselect 'swd' adapter speed: 10000 kHz cortex_m reset_config sysresetreq Info: CMSIS-DAP: SWD Supported Info: CMSIS-DAP: Interface Initialised (SWD) Info: CMSIS-DAP: FW Version = 1.10 Info: SWCLK/TCK = 1 SWDIO/ TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Info: CMSIS-DAP: Antarmuka siap Info: kurangi permintaan kecepatan: maksimum 10000kHz hingga 5000kHz Info: kecepatan clock 10000 kHz Info: SWD IDCODE 0x2ba01477 Kesalahan: Tidak dapat menemukan MEM -AP untuk mengontrol inti Kesalahan: Target belum diperiksa Kesalahan saat mem-flash SoftDevice.

Dalam hal ini Anda perlu mengatur register perintah ERASEALL di nRF52 untuk mengosongkan memori dan membuat perangkat dapat diprogram kembali. Versi openOCD yang disertakan dengan sandeepmistry nRF52 tidak menyertakan perintah apreg yang diperlukan untuk menulis ke register perintah ERASEALL sehingga Anda perlu menginstal versi yang lebih baru.

Instal OpenOCD versi OpenOCD-20181130 atau lebih tinggi. Versi pra-kompilasi Windows tersedia dari https://gnutoolchains.com/arm-eabi/openocd/ Kode terbaru tersedia dari

Buka prompt perintah dan ubah dir ke direktori instal OpenOCD dan masukkan perintah

bin\openocd.exe -d2 -f antarmuka/cmsis-dap.cfg -f target/nrf52.cfg

Responnya adalah

Buka On-Chip Debugger 0.10.0 (2018-11-30) [https://github.com/sysprogs/openocd]Berlisensi di bawah GNU GPL v2 Untuk laporan bug, baca https://openocd.org/doc/doxygen/ bugs.html debug_level: 2 Info: memilih secara otomatis transportasi sesi pertama yang tersedia "swd". Untuk menimpa gunakan 'transport pilih'. kecepatan adaptor: 1000 kHz cortex_m reset_config sysresetreq Info: Mendengarkan pada port 6666 untuk koneksi tcl Info: Mendengarkan pada port 4444 untuk koneksi telnet Info: CMSIS-DAP: SWD Supported Info: CMSIS-DAP: FW Versi = 1.10 Info: CMSIS-DAP: Interface Inisialisasi (SWD) Info: SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Info: CMSIS-DAP: Interface ready Info: clock speed 1000 kHz Info: SWD DPIDR 0x2ba01477 Error: Tidak dapat menemukan MEM-AP untuk mengontrol inti Info: Mendengarkan pada port 3333 untuk koneksi gdb

Kemudian buka jendela terminal mis. TeraTerm (Windows) atau CoolTerm (Mac) dan sambungkan ke 127.0.0.1 port 4444

Jendela telnet akan menampilkan > dan command prompt akan menampilkan Info: menerima koneksi 'telnet' pada tcp/4444

Di jendela telnet (yaitu TeraTerm) ketik nrf52.dap apreg 1 0x04ini mengembalikan 0x00000000 yang menunjukkan chip dilindungi. Kemudian ketik nrf52.dap apreg 1 0x04 0x01dan kemudian nrf52.dap apreg 1 0x04ini mengembalikan 0x00000001 yang menunjukkan bahwa chip sekarang diatur ke ERASEALL pada restart berikutnya.

Tutup koneksi telnet dan juga gunakan Ctrl-C untuk keluar dari program openOCD di command prompt dan kemudian nyalakan modul nRF52 dan sekarang akan siap untuk diprogram.

Sekarang coba lagi mem-flash perangkat lunak.

Anda sekarang dapat memprogram modul nRF52 dari Arduino.

Langkah 5: Memprogram SKYLAB SKB369

Memprogram SKYLAB SKB369
Memprogram SKYLAB SKB369
Memprogram SKYLAB SKB369
Memprogram SKYLAB SKB369
Memprogram SKYLAB SKB369
Memprogram SKYLAB SKB369

Tutup Arduino dan instal ulang versi terbaru dukungan pfod_lp_nrf52 dengan mengikuti petunjuk Instal petunjuk dukungan perangkat keras pfod_lp_nrf52. Pfod_lp_nrf52 terbaru termasuk papan pengganti SKYLAB SKB369 Nano2. Pilih itu sebagai papan dan Anda kemudian dapat memprogramnya dengan Revisi 3 dari lp_BLE_TempHumidity, lp_BLE_TempHumidity_R3.zip, seperti yang dijelaskan di Bagian 2.

Jika pemrograman gagal. Tutup semua jendela Arduino, lepaskan kabel USB, restart Arduino dan pasang kembali kabel USB programmer dan pasang kembali suplai USB modul nRF52 dan coba lagi.

Kemudian hubungkan melalui pfodApp untuk menampilkan suhu dan kelembaban saat ini dan historis. Setelah Anda menampilkan plot historis, pembacaan, dengan stempel waktu milidetik, disimpan ke file log di ponsel Anda dan juga tersedia di layar data mentah.

File log juga berisi data tambahan yang diperlukan untuk membuat ulang plot tanggal dan waktu dalam spreadsheet. Lihat Tanggal dan Waktu Arduino menggunakan milis() dan pfodApp untuk detailnya

Langkah 6: Membuat Definisi Papan Arduino NRF52 Baru

Membuat Definisi Papan Arduino NRF52 Baru
Membuat Definisi Papan Arduino NRF52 Baru
Membuat Definisi Papan Arduino NRF52 Baru
Membuat Definisi Papan Arduino NRF52 Baru
Membuat Definisi Papan Arduino NRF52 Baru
Membuat Definisi Papan Arduino NRF52 Baru
Membuat Definisi Papan Arduino NRF52 Baru
Membuat Definisi Papan Arduino NRF52 Baru

Untuk mendukung papan nRF52 baru Anda perlu a) menambahkan direktori baru di bawah direktori varian dengan file papan dan b) mengedit file boards.txt untuk menambahkan papan baru ke Arduino.

Menambahkan varian papan nRF52 baru

Seperti dijelaskan di Bagian 1, Menginstal dukungan perangkat keras pfod_lp_nrf52, temukan sub-direktori perangkat keras dari paket sandeepmistry yang telah Anda perbarui dengan dukungan pfod_lp_nrf52. Buka sub-direktori \hardware\nRF5\0.6.0\variants dan buat direktori baru untuk papan baru Anda, misalnyaSKYLAB_SKB369_Nano2replacement Di direktori \hardware\nRF5\0.6.0\variants\SKYLAB_SKB369_Nano2replacement baru, buat tiga file varian.h, varian.cpp dan pins_arduino.h Anda dapat menyalinnya dari direktori varian papan lainnya. Untuk penggantian SKYLAB_SKB369_Nano2, saya awalnya menyalin file dari varian RedBear_BLENano2.

file pins_arduino.h

File pins_arduino.h tidak perlu diubah. Itu hanya termasuk file varian.h

varian.h file

Edit file varian.h untuk menentukan jumlah total pin yang akan dimiliki papan Anda, PINS_COUNT

CATATAN: Dalam paket sandeepmistry, pengaturan NUM_DIGITAL_PINS, NUM_ANALOG_INPUTS dan NUM_ANALOG_OUTPUTS diabaikan

Jika board Anda menyediakan lebih banyak atau lebih sedikit pin analog, perbarui bagian /* Pin Analog */ dari file variants.h.

CATATAN: Untuk papan NanoV2 dan SKYLAB, pin Analog dipetakan ke pin Digital A0 == D0 dll

Ini tidak penting. Anda dapat menetapkan Input Analog ke pin Arduino apa pun yang nyaman. Lihat file blue/variant.h dan blue/variant.cpp sebagai contoh.

Chip nRF52832 memiliki 8 pin input analog, tetapi papan pengganti SKYLAB_SKB369_Nano2 hanya menyediakan 6 pin untuk mencocokkan Nano2.

Semua nomor pin, kecuali RESET_PIN, dalam file varian.h adalah nomor pin Arduino. Artinya #define PIN_A0 (0) menyiratkan bahwa D0 pada sketsa arduino adalah pin yang sama dengan A0. RESET_PIN adalah pengecualian. Nomor itu adalah nomor pin chip nRF52823 dan 21 adalah satu-satunya pilihan yang valid. Namun dukungan pfod_lp_nrf52 tidak mengaktifkan pin reset pada nRF52832

varian.cpp file

Hanya ada satu entri dalam file varian.cpp, yaitu array g_ADigitalPinMap yang memetakan nomor pin Arduino ke chip nRF52832 P0..pin

CATATAN: Di papan NanoV2 dan SKYLAB, pin analog Arduino A0, A1 … sama dengan pin digital Arduino D0, D1 … jadi entri pertama di g_ADigitalPinMap HARUS dipetakan ke nomor pin AINx pada chip nRF52832

Untuk Input Analog yang disediakan oleh papan Anda, entri tersebut di g_ADigitalPinMap harus memetakan nomor pin nRF52832 AIN0, AIN1, AIN2, dll. yaitu AIN0 adalah pin chip P0.02, AIN1 adalah pin chip P0.03 dll lihat tata letak pin nRF52832 di atas.

Gunakan (uint32_t)-1 untuk pemetaan yang tidak valid. Misalnya papan pengganti SKYLAB_SKB369_Nano2 tidak memiliki LED bawaan, D13, sehingga posisinya dipetakan ke (uint32_t)-1

Di pfod_lp_nrf52.zip sub-direktori varian Redbear NanoV2, SKYLAB SKB369 dan GT832E_01 memiliki gambar yang menunjukkan pemetaan yang disiapkan oleh varian.cpp. (Lihat gambar di atas)

Dalam kasus SKYLAB SKB369, ada banyak pin untuk dipilih. Hanya cukup yang dipetakan agar sesuai dengan NanoV2. Dalam kasus GT832E_01, semua pin yang tersedia perlu dipetakan. Bahkan kemudian hanya ada tiga (3) input analog yang tersedia, bukan enam (6) pada NanoV2. Selain itu, dua pin NFC, P0.09 dan P0.10, perlu dikonfigurasi ulang sebagai GPIO. Lihat Mengkonfigurasi ulang pin NFC nRF52 sebagai GPIO di bawah ini.

Memperbarui file boards.txt

Berikut adalah entri SKYLAB_SKB369_Nano2replacement di file boards.txt.

## Penggantian SKYLAB_SKB369 Nano2SKYLAB_SKB369_NANO2_REPLACEMENT.name=*Penggantian SKYLAB SKB369 Nano2

SKYLAB_SKB369_NANO2_REPLACEMENT.upload.tool=sandeepmistry:openocd

SKYLAB_SKB369_NANO2_REPLACEMENT.upload.protocol=cmsis-dap SKYLAB_SKB369_NANO2_REPLACEMENT.upload.target=nrf52 SKYLAB_SKB369_NANO2_REPLACEMENT.upload.maximum_size=524288 SKYLAB_SKYLAB_SKB369_NA pilih dupload. SKYLAB_SKB369_NANO2_REPLACEMENT.upload.use_1200bps_touch=false SKYLAB_SKB369_NANO2_REPLACEMENT.upload.wait_for_upload_port=false SKYLAB_SKB369_NANO2_REPLACEMENT.upload.native_usb=false

SKYLAB_SKB369_NANO2_REPLACEMENT.bootloader.tool=sandeepmistry:openocd

SKYLAB_SKB369_NANO2_REPLACEMENT.build.mcu=cortex-m4

SKYLAB_SKB369_NANO2_REPLACEMENT.build.f_cpu = 16.000.000 SKYLAB_SKB369_NANO2_REPLACEMENT.build.board = SKYLAB_SKB369_Nano2replacement SKYLAB_SKB369_NANO2_REPLACEMENT.build.core = nRF5 SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant = SKYLAB_SKB369_Nano2replacement SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant_system_lib = SKYLAB_SKB369_NANO2_REPLACEMENT.build.extra_flags = -DNRF52 SKYLAB_SKB369_NANO2_REPLACEMENT.build.float_flags = -mfloat -abi=keras -mfpu=fpv4-sp-d16 SKYLAB_SKB369_NANO2_REPLACEMENT.build.ldscript=nrf52_xxaa.ld

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags=-DUSE_LFXO

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132=S132

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.softdevice = s132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.softdeviceversion = 2.0.1 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.upload.maximum_size = 409.600 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.extra_flags = - DNRF52 -DS132 -DNRF51_S132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.ldscript=armgcc_s132_nrf52832_xxaa.ld

Pengaturan board.txt

Komentar – baris yang dimulai dengan # adalah komentar.

Awalan – setiap papan membutuhkan awalan yang unik untuk mengidentifikasi nilainya. Di sini awalannya adalahSKYLAB_SKB369_NANO2_REPLACEMENT.

Nama – Baris SKYLAB_SKB369_NANO2_REPLACEMENT.name menentukan nama papan ini untuk ditampilkan di menu papan Arduino.

Alat unggah – Blok SKYLAB_SKB369_NANO2_REPLACEMENT.upload menentukan alat mana yang akan digunakan untuk mengunggah. Jika Anda menggunakan Particle Debugger maka gunakan protocol=cmsis-dap seperti yang ditunjukkan di atas.

Bootloader – Baris ini sama untuk semua papan di boards.txt ini

Build – Hanya dua baris yang perlu diperbarui di blok ini. Baris SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant menentukan nama direktori board ini di sub-direktori varian. SKYLAB_SKB369_NANO2_REPLACEMENT.build.board adalah nilai yang ditambahkan ke ARDUINO_ dan kemudian ditentukan saat mengkompilasi kode. misalnya -DARDUINO_SKYLAB_SKB369_Nano2replacement Ini memungkinkan Anda mengaktifkan/menonaktifkan bagian kode untuk papan tertentu.

Jam Frekuensi Rendah – Baris ini, SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags, menentukan sumber jam frekuensi rendah, yang digunakan untuk lp_timer. Ada tiga opsi, -DUSE_LFXO, -DUSE_LFRC dan -DUSE_LFSYNT. Pilihan terbaik adalah -DUSE_LFXO, jika board memiliki kristal 32Khz eksternal. Jika tidak maka gunakan -DUSE_LFRC, yang menggunakan osilator RC internal dan menarik arus sedikit lebih banyak, ~10uA lebih banyak, dan jauh lebih sedikit kali kurang akurat. Jangan gunakan -DUSE_LFSYNT karena ini membuat chip tetap berjalan sepanjang waktu sehingga menghasilkan penarikan arus mAs.

Perangkat lunak – pfod_lp_nrf52 hanya mendukung chip nRF52 dan perangkat lunak s132 sehingga tidak diperlukan perubahan untuk blok ini, selain awalan.

Mengonfigurasi ulang pin NFC nRF52 sebagai GPIO

Menjadi default pada pin nRF52, P0.09 dan P0.10 dikonfigurasi untuk digunakan sebagai NFC dan diharapkan untuk dihubungkan ke antena NFC. Jika Anda perlu menggunakan ini sebagai pin I/O tujuan umum (GPIO) maka Anda perlu menambahkan definisi, -DCONFIG_NFCT_PINS_AS_GPIOS, ke …menu.softdevice.s132.build.extra_flags papan itu pengaturan kompilasi di file boards.txt.

Misalnya pfod_lp_nrf52.zip, mengkonfigurasi ulang pin GT832E_01 untuk digunakan sebagai I/O. Bagian GT832E_01 untuk papan ini, di file boards.txt, memiliki definisi berikut yang ditambahkan:

GT832E_01.menu.softdevice.s132.build.extra_flags=-DNRF52 -DS132 -DNRF51_S132 -DCONFIG_NFCT_PINS_AS_GPIOS

Skrip linker di pfod_lp_nrf52.zip juga telah dimodifikasi untuk mempertahankan pengaturan ini dan tidak perlu diubah.

Langkah 7: Kesimpulan

Tutorial ini telah menghadirkan pengganti Redbear NanoV2 menggunakan modul SKYLAB SKB369. Baterai/Monitor Kelembaban Suhu bertenaga surya digunakan sebagai contoh proyek BLE berdaya sangat rendah di Arduino untuk modul SKYLAB. Arus suplai ~29uA yang dicapai dengan menyetel parameter koneksi. Ini menghasilkan masa pakai baterai sel koin CR2032 ~ 10 bulan. Lebih lama untuk sel koin dan baterai berkapasitas lebih tinggi. Menambahkan dua sel surya murah dengan mudah memperpanjang masa pakai baterai hingga 50% atau lebih. Lampu ruangan yang terang atau lampu meja sudah cukup untuk menyalakan monitor dari sel surya.

Tutorial ini juga mencakup penghapusan perlindungan chip dari nRF52 yang telah diprogram sebelumnya dan cara mengatur definisi papan baru agar sesuai dengan PCB/sirkuit Anda sendiri.

Tidak diperlukan pemrograman Android. pfodApp menangani semua itu.

Direkomendasikan: