Isi kandungan:

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

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

Video: BLE Daya Mudah Sangat Rendah di Arduino Bahagian 3 - Penggantian Nano V2 - Langkah 3: 7 (dengan Gambar)
Video: How to use up to 10 push button switch with 1 Arduino input pin ANPB-V1 2024, Disember
Anonim
Mudah Daya Sangat Rendah BLE di Arduino Bahagian 3 - Penggantian Nano V2 - Rev 3
Mudah Daya Sangat Rendah BLE di Arduino Bahagian 3 - Penggantian Nano V2 - Rev 3
Mudah Daya Sangat Rendah BLE di Arduino Bahagian 3 - Penggantian Nano V2 - Rev 3
Mudah Daya Sangat Rendah BLE di Arduino Bahagian 3 - Penggantian Nano V2 - Rev 3
Mudah Daya Sangat Rendah BLE di Arduino Bahagian 3 - Penggantian Nano V2 - Rev 3
Mudah Daya Sangat Rendah BLE di Arduino Bahagian 3 - Penggantian Nano V2 - Rev 3

Kemas kini: 7 April 2019 - Rev 3 dari lp_BLE_TempHumidity, menambah plot Tarikh / Masa, menggunakan pfodApp V3.0.362 +, dan pendikit automatik semasa menghantar dataKemas kini: 24 Mac 2019 - Rev 2 dari lp_BLE_TempHumidity, menambah lebih banyak pilihan plot dan i2c_ClearBus, menambah sokongan GT832E_01

>

>

Pengenalan

Tutorial ini, Penggantian Redbear Nano V2, adalah Bahagian 3 dari 3. Ini adalah Semakan 2 projek ini. Revisi 2 PCB merangkumi pemasangan sel koin dan sensor, memudahkan pembinaan dan meningkatkan aliran udara di sekitar sensor sambil melindungi dari cahaya matahari langsung. Semakan 1 ada di sini.

Bahagian 1 - Membangunkan peranti BLE Daya Sangat Rendah yang dipermudah dengan penutup Arduino mengatur Arduino untuk mengkodkan peranti kuasa rendah nRF52, modul pengaturcaraan dan mengukur arus bekalan. Ini juga merangkumi pemasa dan pembanding kuasa rendah khusus dan input yang dilepaskan dan menggunakan pfodApp untuk menyambung ke dan mengawal peranti nRF52.

Bahagian 2 - Monitor Kelembapan Suhu Daya Yang Sangat Rendah meliputi modul Redbear Nano V2 dan sensor suhu / kelembapan Si7021 untuk membina monitor bateri / solar berkuasa rendah. Ini juga meliputi memodifikasi perpustakaan Si7021 menjadi daya rendah, menyesuaikan perangkat BLE untuk mengurangkan penggunaannya sekarang menjadi <29uA dan merancang paparan suhu / kelembapan tersuai untuk telefon bimbit anda.

Bahagian 3 - Penggantian Redbear Nano V2, yang satu ini, meliputi penggunaan modul berasaskan nRF52 lain dan bukannya Nano V2. Ini meliputi pemilihan komponen bekalan, pembinaan, menghapus perlindungan pengaturcaraan cip nRF52, menggunakan pin NFC sebagai GPIO biasa, dan menentukan papan nRF52 baru di Arduino.

Instruksional ini adalah aplikasi praktikal dari Bahagian 1 Membina alat BLE Daya Sangat Rendah yang dipermudah dengan Arduino dengan membina Monitor Suhu dan Kelembapan Daya BLE Sangat Rendah menggunakan papan SKYLAB SBK369 sebagai pengganti Nano V2. Tutorial ini merangkumi bagaimana membuat definisi papan baru dan bagaimana membuang perlindungan pengaturcaraan nRF52 untuk membolehkannya diprogramkan semula. Tutorial ini menggunakan lakaran yang sama dengan Bahagian 2 dengan parameter BLE yang diselaraskan untuk penggunaan kuasa rendah dan boleh dihidupkan dari bateri ATAU bateri + solar ATAU solar sahaja. Penyesuaian parameter BLE untuk daya rendah dibahas dalam Bahagian 2

Rev 3 of lp_BLE_TempHumidity memplot data berdasarkan tarikh dan masa dengan hanya menggunakan Arduino millis (). Lihat Arduino Tarikh dan Waktu menggunakan millis () dan pfodApp menggunakan versi terbaru pfodApp (V3.0.362 +).

Rev 4 dari pfod_lp_nrf52.zip juga menyokong modul GT832E_01 dan tutorial ini merangkumi penggunaan pin NFC nRF52 sebagai GPIO standard.

Monitor yang dibina di sini akan beroperasi selama bertahun-tahun dengan Coin Cell atau 2 x AAA bateri, lebih lama lagi dengan bantuan solar. Serta memaparkan suhu dan kelembapan semasa, monitor menyimpan bacaan 36 Jam 10 minit terakhir dan bacaan 10 jam terakhir setiap jam. Ini dapat dipetakan pada telefon bimbit Android anda dan nilai yang disimpan ke fail log. Tidak diperlukan Pengaturcaraan Android, pfodApp menangani semua itu. Paparan dan grafik Android dikendalikan sepenuhnya oleh lakaran Arduino anda sehingga anda dapat menyesuaikannya mengikut keperluan.

Bahagian 2 menggunakan papan Redbear Nano V2 untuk komponen nRF52832 BLE. Projek ini menggantikannya dengan papan SKYLAB SKB369 yang lebih murah. Seperti di Bahagian 2, papan pelarian Sparkfun Si7021 digunakan untuk Sensor Suhu / Kelembapan. Perpustakaan berkuasa rendah yang diubah suai digunakan dengan Si7021.

Langkah 1: Mengapa Penggantian Nano V2?

i) Nano V2 telah habis produksi selama beberapa bulan dan nampaknya tidak sesuai dengan barisan Particle.io sehingga tidak jelas berapa lama ia akan tersedia.

ii) Nano V2 lebih mahal. Namun ia juga mempunyai ciri tambahan. Lihat di bawah.

iii) Nano V2 mempunyai komponen di kedua sisi yang memberikan profil yang lebih tinggi dan menjadikannya lebih sukar untuk dipasang.

iv) Nano V2 mempunyai pin I / O yang terhad dan menggunakan D6 hingga D10 memerlukan petunjuk terbang.

Walaupun papan Nano V2 lebih mahal daripada papan SKYLAB SKB369, ~ US17 berbanding ~ US5, Nano V2 memang mempunyai lebih banyak ciri. Nano V2 merangkumi pengatur 3.3V dan kapasitor bekalan, komponen tambahan untuk menggunakan pilihan penukar nRF52 DC / DC, antena cip dan penyambung antena uFL SMT.

Alternatif lain ialah modul GT832E_01 yang digunakan oleh www.homesmartmesh.com. Rev 4 dari pfod_lp_nrf52.zip juga menyokong pengaturcaraan modul GT832E_01. SKYLAB SKB369 dan GT832E_01 boleh didapati dari

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

Garis besar

Projek ini mempunyai 4 bahagian yang relatif bebas: -

Pemilihan dan Pembinaan Komponen Melepaskan bendera perlindungan pengkodan nRF52 dan memprogramkan lakaran Membuat Definisi Papan Arduino nRF52 BaruMengkonfigurasi semula pin NFC NRF52 sebagai GPIO

Langkah 2: Pemilihan dan Pembinaan Komponen

Pemilihan Komponen

Sebagai tambahan kepada komponen nRF52832 dan Si7021 yang dipilih dalam Bahagian 2, projek ini menambah pengatur 3.3V dan kapasitor bekalan.

Komponen Pengatur Voltan

Pengatur yang digunakan di sini adalah MC87LC33-NRT. Ia dapat menangani input hingga 12V dan mempunyai arus tenang <3.6uA, biasanya 1.1uA. Nano V2 yang digunakan pengatur TLV704 mempunyai arus tenang yang sedikit lebih tinggi, biasanya 3.4uA dan dapat menangani voltan input yang lebih tinggi, hingga 24V. MC87LC33-NRT dipilih sebagai gantinya kerana datasheetnya menentukan bagaimana ia bertindak balas kerana voltan input turun di bawah 3.3V di mana seperti lembar data TLV704 tidak.

TLV704 menentukan voltan input minimum 2.5V dan tidak jelas dari lembaran data apa yang akan berlaku di bawahnya. NRF52832 akan turun ke 1.7V dan Si7023 akan turun ke 1.9V. MC87LC33-NRT sebaliknya menentukan perbezaan voltan input / output hingga 0V untuk arus rendah (Gambar 18 lembar data). Oleh itu, berdasarkan pilihan komponen, MC87LC33-NRT dipilih kerana mempunyai prestasi yang ditentukan.

Kapasitor Bekalan

Pengatur MC87LC33-NRT memerlukan beberapa kapasitor bekalan untuk kestabilan dan tindak balas. Kapasitor output> 0.1uF disyorkan pada lembaran data. SKYLAB SBK369 juga menentukan kapasitor 10uF / 0.1uF pada bekalan yang berdekatan dengan papan. Kapasitor yang lebih besar membantu membekalkan lonjakan arus nRF52 TX. Kapasitor seramik 4 x 22uF 25V dan 3 x 0.1uF 50V digunakan. Satu kapasitor 22uF dan 0.1uF diletakkan dekat SKYLAB SBK369, 0.1uF diletakkan dekat dengan output MC87LC33-NRT untuk memastikan kestabilan dan 22uF dan 0.1uF diletakkan pada input ke MC87LC33-NRT dan a lebih jauh 2 x 22uF kapasitor di mana disolder melintasi pin Vin / GND sebagai takungan arus lebih jauh. Sebagai perbandingan papan NanoV2 memiliki 22uF / 0.1uF pada input ke pengatur TLV704 dan 0.1uF pada outputnya.

Kapasitor takungan arus tambahan dipasang pada input ke pengatur 3.3V sehingga mereka akan dicas ke voltan yang lebih tinggi ketika berjalan dengan sel suria. Mengecas ke voltan yang lebih tinggi sama dengan menyimpan lebih banyak arus untuk membekalkan lonjakan Tx.

Kapasitor X5R seramik digunakan kerana mempunyai rintangan siri rendah dan arus kebocoran rendah. Rintangan biasanya 100, 000MΩ atau 1000MΩ - µF yang kurang. Jadi untuk 22uF kita mempunyai 22000MΩ, iaitu kebocoran 0.15nA pada 3.3V atau 0.6nA untuk keempat kapasitor 22uF. Itu boleh diabaikan. Sebagai perbandingan Rendah ESR, Kapasitor Elektrolitik Panasonic Bocor Rendah mempunyai arus kebocoran <0.01CV. Jadi untuk kapasitor 22uF 16V kebocoran adalah <10uA. Catatan: Ini adalah kebocoran pada voltan pengenal, 16V dalam kes ini. Kebocoran lebih rendah pada voltan yang lebih rendah, iaitu <2.2uA pada 3.3V.

Senarai Bahagian

Kos per unit anggaran pada Disember 2018, ~ US $ 61, tidak termasuk penghantaran dan pengaturcara dari Bahagian 1

  • SKYLAB SKB369 ~ US $ 5 cth. Aliexpress
  • Papan pelarian Sparkfun Si7021 ~ US $ 8
  • Sel suria 2 x 53mm x 30mm 0.15W 5V cth. Lebihan ~ US $ 1.10
  • 1 x PCB SKYLAB_TempHumiditySensor_R2.zip ~ US $ 25 untuk 5 diskaun www.pcbcart.com
  • 1 x MC78LC33 3.3V pengatur, mis. Digikey MC78LC33NTRGOSCT-ND ~ US $ 1
  • 2 x 0.1uF 50V seramik C1608X5R1H104K080A cth. Digikey 445-7456-1-ND ~ US $ 0.3
  • 4 x 22uF 16V seramik GRM21BR61C226ME44L cth. 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% perintang cth. Digikey 541-470TCT-ND ~ US $ 0.25
  • 1 x 10V 1W zener SMAZ10-13-F cth. Digikey SMAZ10-FDICT-ND ~ US $ 0.5
  • Skru nilon 3mm x 12mm, mis. Jaycar HP0140 ~ AUD $ 3
  • Kacang nilon 3mm x 12mm, mis. Jaycar HP0146 ~ AUD $ 3
  • Cat Tape Pemasangan Tetap Scotch 4010 cth. dari Amazon ~ US $ 6.6
  • Pemegang bateri CR2032, mis. HU2032-LF ~ US $ 1.5
  • Bateri CR2032 ~ US $ 1
  • Lembaran perspex, 3.5mm dan 8mm
  • pfodApp ~ US $ 10
  • Pateri Solder mis. Jaycar NS-3046 ~ AUD $ 13

Langkah 3: Pembinaan

Pembinaan
Pembinaan
Pembinaan
Pembinaan
Pembinaan
Pembinaan

Projek ini dibina menggunakan PCB kecil. PCB dihasilkan oleh pcbcart.com dari fail Gerber ini, SKYLAB_TempHumiditySensor_R2.zip PCB meniru pin Nano V2 keluar dan tujuan umum cukup untuk digunakan untuk projek BLE yang lain.

Ini adalah skema (versi pdf)

Pateri dahulu komponen SMD, kemudian pasangkan papan SKYLAB SKB369

Hampir semua komponen adalah peranti pemasangan permukaan (SMD). Kapasitor dan IC sukar dipateri dengan tangan. Kaedah yang dicadangkan adalah dengan menahan PCB dalam bentuk naib dan meletakkan sebilangan kecil pasta pateri ke pad dan letakkan komponen SMD, kecuali papan SKB369 pada PCB. Kemudian dengan menggunakan senapang api, sapukan haba ke bahagian bawah PCB sehingga pasta solder mencair dan kemudian lulus cepat ke bahagian atas papan dengan berhati-hati agar tidak meletupkan komponen. Akhirnya sentuh komponen dengan besi pemateri hujung kecil. Berhati-hatilah dengan kapasitor dan perintang kerana mudah mencairkan kedua-dua hujungnya dan membiarkan komponennya longgar sambil memateri satu hujungnya.

Semakan ini menambah kapasitor seramik 22uF 16V tambahan. Kapasitor tambahan ini mengurangkan lonjakan arus yang diambil dari bateri dan juga mengurangkan penurunan voltan semasa digerakkan dari sel suria. Selagi voltan dari sel suria kekal di atas voltan bateri maka tidak ada arus yang diambil dari bateri.

Setelah komponen SMD dipasang, anda boleh menyolder di papan SKYLAB SKB369. Terdapat dua lubang titik ujian di satu sisi tab SKB369. Gunakan dua pin ke dasar kadbod untuk meletakkan papan SKB369 dan sejajarkan pin dengan hati-hati. (Lihat contoh gambar di atas menggunakan Revision 1 PCB) Kemudian pateri satu pin dari sisi yang berlawanan untuk menahan papan di tempatnya sebelum menyolder pin yang lain.

Perhatikan wayar pautan Gnd dari CLK ke GND di bahagian siap. Ini dipasang SELEPAS pengaturcaraan untuk mengelakkan bunyi pada input CLK memicu cip nRF52 ke mod debug semasa tinggi

Kes Pemasangan

Sarung pelekap dibuat dari dua kepingan perspex, tebal 110mm x 35mm, 3mm. Potongan 3.5mm di bawah sel suria diketuk untuk mengambil skru nilon 3mm. Pembinaan yang disemak ini lebih ringkas daripada Rev 1 dan meningkatkan aliran udara di sekitar sensor. Lubang tambahan pada setiap hujungnya adalah untuk pemasangan, misalnya menggunakan ikatan kabel.

Langkah 4: Melepaskan Bendera Perlindungan Pengekodan NRF52

Melepaskan Bendera Perlindungan Pengekodan NRF52
Melepaskan Bendera Perlindungan Pengekodan NRF52
Melepaskan Bendera Perlindungan Pengekodan NRF52
Melepaskan Bendera Perlindungan Pengekodan NRF52
Melepaskan Bendera Perlindungan Pengekodan NRF52
Melepaskan Bendera Perlindungan Pengekodan NRF52

Sambungkan papan Suhu / Kelembapan ke Programmer yang dijelaskan dalam Bahagian 1 seperti yang ditunjukkan di atas.

Dengan sel solar dan bateri tidak terpasang, Vin dan Gnd disambungkan ke Vdd dan Gnd pengaturcara (petunjuk Kuning dan Hijau) dan SWCLK dan SWDIO disambungkan ke Clk dan SIO papan tajuk pengaturcara (petunjuk Putih dan Kelabu)

Mengeluarkan perlindungan program nRF52

Dari halaman Semi - Debug dan Jejak Nordic DAP - Port Akses Debug. Debugger luaran boleh mengakses peranti melalui DAP. DAP melaksanakan Port Debug Port Seri ARM® CoreSight ™ (SW-DP) standard. SW-DP menerapkan protokol Serial Wire Debug (SWD) yang merupakan antara muka bersiri dua pin, SWDCLK dan SWDIO

Penting: Garis SWDIO mempunyai perintang penarik dalaman. Garis SWDCLK mempunyai perintang tarik ke bawah.

CTRL-AP - Port Akses Kawalan. Port Akses Akses (CTRL-AP) adalah port akses khusus yang membolehkan kawalan peranti walaupun port akses lain dalam DAP dilumpuhkan oleh perlindungan port akses. Perlindungan port akses menyekat debugger dari akses baca dan tulis ke semua daftar CPU dan alamat yang dipetakan dengan memori. Lumpuhkan perlindungan port akses. Perlindungan port akses hanya dapat dilumpuhkan dengan mengeluarkan perintah ERASEALL melalui CTRL-AP. Perintah ini akan menghapus Flash, UICR, dan RAM.

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

Sekiranya denyar berfungsi, maka tidak mengapa, tetapi selalunya modul akan dilindungi daripada pengaturcaraan semula dan anda akan mendapat output ralat ini di tetingkap Arduino

Buka On-Chip Debugger 0.10.0-dev-00254-g696fc0a (2016-04-10-10: 13) Berlesen di bawah GNU GPL v2 Untuk laporan pepijat, baca https://openocd.org/doc/doxygen/bugs.html debug_level: 2 Info: hanya satu pilihan pengangkutan; automatik pilih kelajuan penyesuai 'swd': 10000 kHz cortex_m reset_config sysresetreq Info: CMSIS-DAP: SWD Info Disokong: CMSIS-DAP: Maklumat Permulaan (SWD): CMSIS-DAP: Versi FW = 1.10 Maklumat: SWCLK / TCK = 1 SWDIO / TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Maklumat: CMSIS-DAP: Maklumat siap antara muka: mengurangkan permintaan kelajuan: 10000kHz hingga 5000kHz Maklumat maksimum: kelajuan jam 10000 kHz Maklumat: SWD IDCODE 0x2ba01477 Ralat: Tidak dapat mencari MEM -AP untuk mengawal inti Ralat: Sasaran belum diperiksa Ralat semasa menyalakan SoftDevice.

Sekiranya anda perlu menetapkan daftar arahan ERASEALL di nRF52 untuk membersihkan memori dan menjadikan peranti dapat diprogramkan semula. Versi openOCD yang dibekalkan dengan sandeepmistry nRF52 tidak termasuk perintah apreg yang diperlukan untuk menulis ke daftar arahan ERASEALL jadi anda perlu memasang versi yang lebih baru.

Pasang versi OpenOCD OpenOCD-20181130 atau lebih tinggi. Versi pra-disusun Windows boleh didapati dari https://gnutoolchains.com/arm-eabi/openocd/ Kod terkini boleh didapati dari

Buka prompt arahan dan ubah dir ke direktori pemasangan OpenOCD dan masukkan perintah

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

Tanggapannya adalah

Buka On-Chip Debugger 0.10.0 (2018-11-30) [https://github.com/sysprogs/openocd]Lisensi di bawah GNU GPL v2 Untuk laporan pepijat, baca https://openocd.org/doc/doxygen/ bugs.html debug_level: 2 Info: memilih sesi pengangkutan pertama yang tersedia secara automatik "swd". Untuk mengatasi penggunaan 'pilih pilih'. kelajuan penyesuai: 1000 kHz cortex_m reset_config sysresetreq Info: Mendengarkan di port 6666 untuk sambungan tcl Maklumat: Mendengarkan di port 4444 untuk sambungan telnet Maklumat Antaramuka (SWD): SWCLK / TCK = 1 SWDIO / TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Info: CMSIS-DAP: Info siap antara muka: kelajuan jam 1000 kHz Maklumat: SWD DPIDR 0x2ba01477 Ralat: Tidak dapat mencari MEM-AP untuk mengawal inti Maklumat: Mendengarkan di port 3333 untuk sambungan gdb

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

Tetingkap telnet akan menunjukkan> dan arahan arahan akan menunjukkan Maklumat: menerima sambungan 'telnet' pada tcp / 4444

Di tetingkap telnet (iaitu TeraTerm) typenrf52.dap apreg 1 0x04 ini mengembalikan 0x00000000 menunjukkan cip dilindungi. Kemudian typenrf52.dap apreg 1 0x04 0x01 dan thennrf52.dap apreg 1 0x04this mengembalikan 0x00000001 menunjukkan cip kini ditetapkan ke ERASEALL pada restart seterusnya.

Tutup sambungan telnet dan juga gunakan Ctrl-C untuk keluar dari program openOCD pada command prompt dan kemudian power kit modul nRF52 dan sekarang akan siap untuk diprogramkan.

Sekarang cuba buat semula perisian ringan.

Anda kini boleh memprogram modul nRF52 dari Arduino.

Langkah 5: Memprogram SKYLAB SKB369

Mengaturcara SKYLAB SKB369
Mengaturcara SKYLAB SKB369
Mengaturcara SKYLAB SKB369
Mengaturcara SKYLAB SKB369
Mengaturcara SKYLAB SKB369
Mengaturcara SKYLAB SKB369

Tutup Arduino dan pasang semula versi terbaru sokongan pfod_lp_nrf52 dengan mengikuti arahan Pasang sokongan perkakasan pfod_lp_nrf52. Pfod_lp_nrf52 terkini merangkumi papan pengganti SKYLAB SKB369 Nano2. Pilih sebagai papan dan anda kemudian boleh memprogramnya dengan Semakan 3 lp_BLE_TempHumidity, lp_BLE_TempHumidity_R3.zip, seperti yang dijelaskan dalam Bahagian 2.

Sekiranya pengaturcaraan gagal. Tutup semua tetingkap Arduino, tanggalkan kabel USB, mulakan semula Arduino dan pasangkan kembali kabel USB pengaturcara dan pasangkan kembali bekalan USB modul nRF52 dan cuba lagi.

Kemudian sambungkan melalui pfodApp untuk memaparkan suhu dan kelembapan semasa dan sejarah. Setelah anda memaparkan plot sejarah, bacaan, dengan cap waktu milisaat, disimpan ke fail log di telefon bimbit anda dan juga tersedia di skrin data mentah.

Fail log juga mengandungi data tambahan yang diperlukan untuk membuat semula plot tarikh dan masa dalam hamparan. Lihat Tarikh dan Waktu Arduino menggunakan millis () dan pfodApp untuk perinciannya

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 menyokong papan nRF52 baru, anda perlu a) menambahkan direktori baru di bawah varian direktori dengan fail papan dan b) mengedit fail boards.txt untuk menambahkan papan baru ke Arduino.

Menambah varian papan nRF52 baru

Seperti yang dijelaskan dalam Bahagian 1, Memasang sokongan perkakasan pfod_lp_nrf52, cari sub-direktori perkakasan pakej sandeepmistry yang telah anda kemas kini dengan sokongan pfod_lp_nrf52. Buka subdirektori varian / hardware / nRF5 / 0.6.0 / dan buat direktori baru untuk papan baru anda, mis. SKYLAB_SKB369_Nano2replacement Dalam varian / hardware / nRF5 / 0.6.0 / baru / SKYLAB_SKB369_Nano2replacement direktori membuat tiga fail varian.h, variant.cpp dan pins_arduino.h Anda boleh menyalinnya dari direktori varian papan lain. Untuk penggantian SKYLAB_SKB369_Nano2, pada mulanya saya menyalin fail dari varian RedBear_BLENano2.

fail pins_arduino.h

Fail pins_arduino.h tidak perlu diubah. Ia hanya merangkumi fail varian.h

fail varian.h

Edit fail variant.h untuk menentukan jumlah pin yang akan dimiliki oleh papan anda, PINS_COUNT

CATATAN: Dalam pakej sandeepmistry, tetapan NUM_DIGITAL_PINS, NUM_ANALOG_INPUTS dan NUM_ANALOG_OUTPUTS diabaikan

Sekiranya papan kenyataan anda menyediakan lebih kurang pin analog, kemas kini bahagian / * Pin Analog * / pada fail varian.h.

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

Ini tidak mustahak. Anda boleh menetapkan Input Analog ke pin Arduino yang sesuai. Lihat kemudian fail biru / varian.h dan biru / varian.cpp sebagai contoh.

Cip nRF52832 mempunyai 8 pin input analog, tetapi papan penggantian SKYLAB_SKB369_Nano2 hanya menjadikan 6 daripadanya tersedia untuk dipadankan dengan Nano2.

Semua nombor pin, kecuali RESET_PIN, dalam varian.h adalah nombor pin Arduino. Itu adalah #define PIN_A0 (0) menunjukkan bahawa D0 dalam lakaran arduino adalah pin yang sama dengan A0. RESET_PIN adalah pengecualian. Nombor itu adalah nombor pin cip nRF52823 dan 21 adalah satu-satunya pilihan yang sah. Namun sokongan pfod_lp_nrf52 tidak mengaktifkan pin reset pada nRF52832

fail varian.cpp

Hanya ada satu entri dalam fail varian.cpp, array g_ADigitalPinMap yang memetakan nombor pin Arduino ke pin cip nRF52832 P0..

CATATAN: Di papan NanoV2 dan SKYLAB, pin analog Arduino A0, A1… sama dengan pin digital Arduino D0, D1… jadi entri pertama dalam g_ADigitalPinMap WAJIB memetakan ke nombor pin AINx pada cip nRF52832

Untuk Input Analog yang disediakan oleh papan anda, penyertaan dalam g_ADigitalPinMap mesti memetakan nombor pin nRF52832 AIN0, AIN1, AIN2, dll. iaitu AIN0 adalah pin chip P0.02, AIN1 adalah pin chip P0.03 dan lain-lain lihat susun atur pin nRF52832 di atas.

Gunakan (uint32_t) -1 untuk pemetaan tidak sah. Contohnya papan penggantian SKYLAB_SKB369_Nano2 tidak mempunyai LED terpasang, D13, jadi posisinya dipetakan ke (uint32_t) -1

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

Bagi SKYLAB SKB369, terdapat banyak pin untuk dipilih. Cukup dipetakan untuk menyamai NanoV2. Dalam kes GT832E_01, semua pin yang ada perlu dipetakan. Walaupun begitu, hanya terdapat tiga (3) input analog dan bukannya enam (6) input di NanoV2. Selain itu, dua pin NFC, P0.09 dan P0.10, perlu dikonfigurasikan semula sebagai GPIO. Lihat Menyusun semula pin NRF52 NFC seperti GPIO di bawah.

Mengemas kini fail boards.txt

Berikut adalah entri penggantian SKYLAB_SKB369_Nano2 dalam fail boards.txt.

## SKYLAB_SKB369 Penggantian 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_Perangkat_Peringkat_Peringkat_Perangkat_Perangkat_Perangkat_Perangkat_Perangkat_Perangkat_Perangkat_Perangkat_Peringkat_Perangkat_Peringkat_Berangkat 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 = korteks-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 = Seksyen 132 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

tetapan board.txt

Komen - baris yang bermula dengan # adalah komen.

Awalan - setiap papan memerlukan awalan unik untuk mengenal pasti nilainya. Di sini awalan adalahSKYLAB_SKB369_NANO2_REPLACEMENT.

Nama - Garis SKYLAB_SKB369_NANO2_REPLACEMENT.name menentukan nama papan ini untuk ditunjukkan dalam menu papan Arduino.

Alat muat naik - Blok muat naik SKYLAB_SKB369_NANO2_REPLACEMENT. menentukan alat yang akan digunakan untuk memuat naik. Sekiranya anda menggunakan Particle Debugger maka gunakan protokol = cmsis-dap seperti gambar di atas.

Bootloader - Garis ini sama untuk semua papan di papan ini.txt

Build - Hanya dua baris yang perlu dikemas kini dalam blok ini. Garis SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant menentukan nama direktori papan ini dalam sub-direktori varian. SKYLAB_SKB369_NANO2_REPLACEMENT.build.board adalah nilai yang ditambahkan pada ARDUINO_ dan kemudian ditentukan semasa menyusun kod. cth. -DARDUINO_SKYLAB_SKB369_Nano2replacement Ini membolehkan anda mengaktifkan / mematikan bahagian kod untuk papan tertentu.

Jam Frekuensi Rendah - Garis ini, SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags, menentukan sumber jam frekuensi rendah, yang digunakan untuk lp_timer. Terdapat tiga pilihan, -DUSE_LFXO, -DUSE_LFRC dan -DUSE_LFSYNT. Pilihan terbaik adalah -DUSE_LFXO, jika papan mempunyai kristal 32Khz luaran. Sekiranya tidak, maka gunakan -DUSE_LFRC, yang menggunakan pengayun RC dalaman dan menarik arus lebih sedikit, ~ 10uA lebih banyak, dan lebih kurang kurang tepat. Jangan gunakan -DUSE_LFSYNT kerana cip ini terus berjalan sepanjang masa sehingga keputusan semasa mAs.

Softdevice - pfod_lp_nrf52 hanya menyokong cip nRF52 dan softdevice s132 sehingga tidak memerlukan perubahan untuk blok ini, selain awalan.

Menyusun semula pin NRF52 NFC sebagai GPIO

Tetap lalai pada pin nRF52, P0.09 dan P0.10 dikonfigurasikan untuk digunakan sebagai NFC dan berharap dapat disambungkan ke antena NFC. Sekiranya anda perlu menggunakannya sebagai pin I / O tujuan umum (GPIO), maka anda perlu menambahkan definisi, -DCONFIG_NFCT_PINS_AS_GPIOS, ke… menu.softdevice.s132.build.extra_flags penyusunan tetapan dalam fail boards.txt.

Contohnya pfod_lp_nrf52.zip, mengkonfigurasi semula pin GT832E_01 untuk digunakan sebagai I / O. Bahagian GT832E_01 untuk papan ini, dalam fail boards.txt, mempunyai definisi berikut ditambahkan

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

Skrip penghubung di pfod_lp_nrf52.zip juga telah diubah untuk mengekalkan tetapan ini dan tidak perlu diubah.

Langkah 7: Kesimpulannya

Tutorial ini telah memberikan pengganti untuk Redbear NanoV2 menggunakan modul SKYLAB SKB369. Monitor Kelembapan Suhu berkuasa bateri / solar digunakan sebagai contoh projek BLE berkuasa rendah di Arduino untuk modul SKYLAB. Arus bekalan ~ 29uA di mana dicapai dengan menyesuaikan parameter sambungan. Ini menghasilkan jangka hayat bateri sel duit syiling CR2032 ~ 10 bulan. Lebih lama untuk sel duit syiling dan bateri berkapasiti lebih tinggi. Menambah dua sel suria yang murah dengan mudah memanjangkan jangka hayat bateri sebanyak 50% atau lebih. Lampu bilik yang terang atau lampu meja cukup untuk menghidupkan monitor dari sel suria.

Tutorial ini juga merangkumi penghapusan perlindungan cip dari nRF52 yang telah diprogramkan dan cara menetapkan definisi papan baru agar sesuai dengan PCB / litar anda sendiri

Tidak diperlukan pengaturcaraan Android. pfodApp menangani semua itu.

Disyorkan: