Isi kandungan:
- Langkah 1: Pemilihan Komponen
- Langkah 2: Pembinaan
- Langkah 3: Kod - Perpustakaan Sensor Daya Rendah, Antara Muka Pengguna dan Sketsa Arduino
- Langkah 4: Mengukur Arus Bekalan
- Langkah 5: Jumlah Arus Bekalan dan Hayat Bateri
- Langkah 6: Alternatif Bekalan - Solar Assist, Battery Only, Solar Only
- Langkah 7: Kesimpulannya
Video: Mudah Daya Sangat Rendah BLE di Arduino Bahagian 2 - Monitor Suhu / Kelembapan - Langkah 3: 7
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:06
Kemas kini: 23 November 2020 - Penggantian pertama 2 x bateri AAA sejak 15 Januari 2019 iaitu 22 bulan untuk 2xAAA Alkaline 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 data
Kemas kini: 24 Mac 2019 - Rev 2 dari lp_BLE_TempHumidity, menambah lebih banyak pilihan plot dan i2c_ClearBus
Petunjuk ini, Monitor Kelembapan Suhu Daya Sangat Rendah, adalah Bahagian 2 dari 3.
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, yang satu ini, meliputi menggunakan modul Redbear Nano V2 dan sensor suhu / kelembapan Si7021 untuk membina bateri / monitor solar berkuasa rendah. Ini juga meliputi memodifikasi perpustakaan Si7021 menjadi daya rendah, menyesuaikan perangkat BLE untuk mengurangkan penggunaannya sekarang <25uA dan merancang paparan suhu / kelembapan tersuai untuk telefon bimbit anda.
Bahagian 3 - Penutup pengganti Redbear Nano V2 menggunakan 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 Membangunkan peranti BLE Power Sangat Rendah yang dipermudah dengan Arduino dengan membina Monitor Suhu dan Kelembapan BLE Daya Sangat Rendah. Monitor akan beroperasi selama bertahun-tahun dengan Coin Cell atau 2 x AAA bateri, lebih lama lagi dengan bantuan solar. Tutorial ini merangkumi penalaan parameter BLE untuk penggunaan tenaga yang rendah dan cara memberi kuasa kepada peranti anda dari bateri ATAU bateri + solar ATAU solar sahaja.
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.
Papan Redbear Nano V2 digunakan untuk komponen BLE nRF52832 dan papan pelarian Sparkfun Si7021 digunakan untuk Sensor Suhu / Kelembapan. Perpustakaan berkuasa rendah yang diubah suai digunakan dengan Si7021. PCB kecil dirancang untuk menahan NanoV2 dan membekalkan komponen. Tetapi kerana tidak ada komponen yang terpasang di permukaan yang digunakan, anda boleh membuatnya dengan mudah di papan vero. Tiga versi bekalan kuasa dilindungi. i) Bateri ditambah Bantuan suria, ii) Bateri Sahaja, iii) Suria Sahaja. Pilihan Solar Only tidak mempunyai simpanan bateri dan hanya akan berfungsi apabila terdapat sedikit cahaya. Lampu bilik yang terang atau lampu meja mencukupi.
Garis besar
Projek ini mempunyai 4 bahagian yang relatif bebas: -
- Pemilihan dan Pembinaan Komponen
- Kod - Perpustakaan Sensor Daya Rendah, Antara Muka Pengguna dan Sketsa Arduino
- Mengukur Arus Bekalan dan Hayat Bateri
- Alternatif Bekalan - Bantuan Suria, Bateri Sahaja, Suria Sahaja
Langkah 1: Pemilihan Komponen
Pemilihan Komponen
Seperti disebutkan di Bahagian 1 - Caranya untuk mendapatkan penyelesaian daya yang sangat rendah adalah dengan tidak melakukan apa-apa sepanjang masa, meminimumkan arus melalui resistor penarik / penarik luaran pada input dan tidak memiliki komponen tambahan. Projek ini akan menggunakan setiap muslihat untuk mendapatkan penyelesaian kuasa rendah.
Komponen nRF52832
Cip nRF52832 boleh berjalan dengan bekalan kuasa antara 1.7V dan 3.6V (voltan maksimum mutlak 3.9V). Ini bermakna anda dapat mengaktifkan cip secara langsung dari sel duit syiling atau 2 bateri AAA. Walau bagaimanapun, adalah wajar untuk menambahkan pengatur voltan untuk melindungi cip daripada voltan yang berlebihan. Komponen tambahan ini dilengkapi dengan kos kuasa, tetapi dalam keadaan NanoV2, pengatur on-board, TLV704, menggunakan kurang dari 5.5uA maksimum, biasanya hanya 3.4uA. Untuk penggunaan kuasa tambahan yang kecil ini, anda mendapat perlindungan untuk input bekalan sehingga 24V.
Komponen Si7021
Sensor Si7021 sendiri biasanya menarik <1uA ketika tidak melakukan pengukuran, iaitu dalam keadaan Siaga, dan hingga 4mA ketika menghantar data melalui I2C. Oleh kerana kami tidak melakukan pengukuran secara berterusan, 4mA bukanlah bahagian penting dari arus bekalan purata. Mengambil bacaan selama 30 saat menambah kurang daripada 1uA pada arus bekalan purata, lihat pengukuran arus bekalan di bawah.
Terdapat dua papan pelarian Si7021 yang tersedia. Satu dari Adafruit dan satu dari Sparkfun. Sekilas melihat dua papan akan memberitahu anda bahawa papan Adafruit mempunyai lebih banyak komponen daripada papan Sparkfun, jadi anda cenderung memilih papan Sparkfun. Melihat skema untuk setiap papan menunjukkan bahawa papan Sparkfun hanyalah sensor telanjang dan dua resisotor tarik 4k7, sementara papan Adafruit mempunyai pengatur on-board, MIC5225, yang biasanya menarik 29uA sepanjang masa. Ini penting apabila arus lebih untuk litar selebihnya adalah <30uA. Oleh kerana kami sudah mempunyai pengatur untuk cip nRF52832, komponen tambahan ini tidak diperlukan dan Si7021 dapat dihidupkan dari bekalan 3.3V itu. Jadi projek ini akan menggunakan papan pelarian Si7021 dari Sparkfun.
meminimumkan arus melalui resistor pull-up / pull-down luaran pada input
Perintang pullup 4K7 I2C tidak terlalu tinggi dan akan menarik 0.7mA apabila ditarik rendah. Ini akan menjadi masalah jika mereka menggunakan input suis yang dibumikan untuk jangka masa yang panjang. Namun dalam projek ini arus melalui perintang ini dapat diminimumkan dengan hanya menggunakan antara muka I2C jarang dan hanya untuk waktu yang singkat. Selalunya garis I2C tidak digunakan dan tinggi / keadaan tri sehingga arus tidak mengalir melalui perintang ini.
Langkah 2: Pembinaan
Projek ini dibina pada PCB kecil, tetapi kerana tidak ada komponen SMD, dapat dibuat dengan mudah menggunakan papan vero. PCB dihasilkan oleh pcbcart.com dari fail Gerber ini, TempHumiditySensor_R1.zip PCB adalah tujuan umum yang cukup untuk digunakan untuk projek BLE lain.
Skema ditunjukkan di atas. Berikut adalah versi pdf.
Senarai Bahagian
Kos per unit anggaran pada Disember 2018, ~ US $ 62, tidak termasuk penghantaran dan pengaturcara dari Bahagian 1
- Redbear NanoV2 ~ US $ 17
- Papan pelarian Sparkfun Si7021 ~ US $ 8
- Sel suria 2 x 53mm x 30mm 0.15W 5V cth. Lebihan ~ US $ 1.10
- 1 x PCB TempHumiditySensor_R1.zip ~ US $ 25 untuk 5 diskaun www.pcbcart.com ATAU Vero board (jalur tembaga) cth. Jaycar HP9540 ~ AUD $ 5
- 2 x 1N5819 diod schottky cth. Digikey 1N5819FSCT-ND ~ US $ 1
- 1 x 470R 0.4W 1% perintang cth. Digikey BC3274CT-ND ~ US $ 0.25
- Pin header lelaki 6 x 6 pin mis. Sparkfun PRT-00116 ~ US $ 1.5
- pelompat wanita ke wanita mis. ID Adafruit: 1950 ~ US $ 2
- 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 AAA x 2, mis. Sparkfun PRT-14219 ~ US $ 1.5
- 2 x bateri alkali AAA 750mA, mis. Sparkfun PRT-09274 ~ US $ 1.0 Bateri ini boleh bertahan> 2 tahun. Energizer Alkaline Battery mempunyai kapasiti yang lebih tinggi
- Kotak Plastik (ABS) 83mm x 54mm x 31mm, mis. Jaycar HB6005 ~ AUD $ 3
- pfodApp ~ US $ 10
- 1 x 22uF 63V Kapasitor ESR Rendah (Pilihan) mis. Jaycar RE-6342 ~ AUD $ 0.5 atau Digikey P5190-ND ~ US $ 0.25
Pembinaannya lurus ke hadapan. Pemegang bateri dan sel surya diikat ke kotak plastik dengan pita dua sisi tugas berat.
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
Langkah 3: Kod - Perpustakaan Sensor Daya Rendah, Antara Muka Pengguna dan Sketsa Arduino
Muat turun kod zip, lp_BLE_TempHumidity_R3.zip, dan buka zip ke direktori Arduino Sketches anda. Anda juga perlu memasang perpustakaan lp_So7021 dari fail zip ini dan juga memasang pustaka pfodParser.
Perpustakaan Sensor Daya Rendah, lp_Si7021
Adafruit dan Sparkfun menyediakan perpustakaan sokongan untuk mengakses sensor Si7021, namun kedua perpustakaan tersebut tidak sesuai untuk penggunaan tenaga yang sangat rendah. Kedua-duanya menggunakan kelewatan (25) dalam kod untuk menunda membaca sensor semasa sedang mengukurnya. Seperti yang dinyatakan dalam Bahagian 1 Kelewatan adalah Jahat. Kelewatan Arduino () menjadikan pemproses mikro tetap menggunakan kuasa sementara menunggu kelewatan tamat. Ini melanggar peraturan pertama BLE kuasa rendah, tidak melakukan apa-apa sepanjang masa. Perpustakaan lp_Si7021 pengganti, menggantikan semua kelewatan dengan lp_timers yang mematikan pemproses mikro sementara menunggu sensor menyelesaikan pengukurannya.
Berapa banyak perbezaan yang dibuat oleh perpustakaan lp_Si7021? Menggunakan perpustakaan sokongan SparkFun Si7021 yang asli dan mengambil satu bacaan sesaat tanpa cetakan Serial, menarik ~ 1.2mA rata-rata. Mengganti perpustakaan Sparkfun dengan perpustakaan lp_Si7021 mengurangkan arus purata hingga ~ 10uA, iaitu 100 kali lebih sedikit. Dalam projek ini, kadar pengukuran terpantas sekali setiap 30 saat ketika telefon bimbit disambungkan, yang menghasilkan arus sensor rata-rata kurang dari 1uA. Apabila tidak ada sambungan BLE, kadar pengukuran adalah sekali setiap 10 minit dan arus bekalan sensor rata-rata boleh diabaikan.
Antaramuka pengguna
Di atas adalah paparan skrin utama dan paparan zoom sejarah 10 jam setiap jam. Petak boleh diperbesar dan disorot ke kedua arah, menggunakan dua jari.
Antara muka pengguna dikodkan dalam sketsa Arduino dan kemudian dihantar ke pfodApp pada sambungan pertama di mana ia disimpan dalam cache untuk penggunaan berulang kali dan kemas kini. Paparan grafik dibina dari lukisan primitif. Lihat Kawalan Arduino Khusus untuk Android untuk tutorial mengenai cara membuat kawalan anda sendiri. Fail Thermometer, RHGauge dan Button mengandungi arahan menggambar untuk item tersebut.
Catatan: Tiada jika paparan ini dimasukkan ke dalam pfodApp. Keseluruhan paparan dikendalikan sepenuhnya oleh kod dalam lakaran Arduino anda
Kaedah sendDrawing_z () dalam lakaran lp_BLE_TempHumidity_R3.ino menentukan antara muka pengguna.
batal sendDrawing_z () {dwgs.start (50, 60, dwgs. WHITE); // latar belakang lalai menjadi PUTIH jika dihilangkan iaitu bermula (50, 60); parser.sendRefreshAndVersion (30000); // minta semula dwg setiap 30 saat. ini diabaikan sekiranya tidak ada versi penghurai yang ditetapkan // sentuh butang di atas untuk memaksa kemas kini paparan dwgs.touchZone (). cmd ('u'). ukuran (50, 39). hantar (); dwgs.pushZero (35, 22, 1.5); // bergerak sifar ke pusat dwg hingga 35, 22 dan skala 1.5 kali rhGauge.draw (); // lukiskan kawalan dwgs.popZero (); dwgs.pushZero (18, 33); // bergerak sifar ke pusat dwg hingga 18, 33 skala adalah 1 (lalai) termometer.draw (); // lukiskan kawalan dwgs.popZero ();
dwgs.pushZero (12.5, 43, 0.7); // bergerak sifar ke pusat dwg hingga 12.5, 43 dan skala 0.7
hrs8PlotButton.draw (); // lukiskan kawalan dwgs.popZero (); dwgs.pushZero (37.5, 43, 0.7); // bergerak sifar ke pusat dwg ke 37.5, 43 dan skala sebanyak 0.7 hari1PlotButton.draw (); // lukiskan kawalan dwgs.popZero ();
dwgs.pushZero (12.5, 54, 0.7); // bergerak sifar ke pusat dwg hingga 12.5, 54 dan skala 0.7
hari3PlotButton.draw (); // lukiskan kawalan dwgs.popZero (); dwgs.pushZero (37.5, 54, 0.7); // bergerak sifar ke pusat dwg ke 37.5, 54 dan skala sebanyak 0.7 hari10PlotButton.draw (); // lukiskan kawalan dwgs.popZero (); dwgs.end (); }
Perintah pushZero mengubah asal dan penskalaan untuk melukis komponen seterusnya. Ini membolehkan anda mengubah ukuran dan kedudukan butang dan alat pengukur dengan mudah.
Pada sambungan pertama paparan awal memerlukan 5 atau 6 saat untuk memuatkan ~ 800 bait yang menentukan paparan. pfodApp cache paparan sehingga kemas kini di masa depan hanya perlu menghantar perubahan, mengukur ukuran dan bacaan. Kemas kini ini hanya memerlukan beberapa saat untuk menghantar 128 bait perlu mengemas kini paparan.
Terdapat lima (5) zon sentuh aktif yang ditentukan dalam paparan. Setiap butang mempunyai satu yang ditentukan dalam kaedah draw (), sehingga anda dapat mengkliknya untuk membuka plot masing-masing, dan separuh bahagian atas layar dikonfigurasikan sebagai zon sentuhan ketiga
dwgs.touchZone (). cmd ('u'). saiz (50, 39). hantar ();
Apabila anda mengklik pada layar di atas butang, perintah dwg 'u' dikirim ke sketsa anda untuk memaksa pengukuran dan pembaruan skrin baru. Biasanya apabila disambungkan, kemas kini hanya berlaku setiap 30 saat. Setiap klik atau muat semula gambar memaksa pengukuran baru. Respons dari lakaran Arduino ke pfodApp ditangguhkan sehingga pengukuran baru selesai (~ 25mS) sehingga nilai terbaru dapat dikirim dalam kemas kini.
Lakaran Arduino
Sketsa Arduino, lp_BLE_TempHumidity_R3.ino, adalah versi sketsa contoh yang dipertingkatkan yang digunakan dalam Bahagian 1. Sketsa lp_BLE_TempHumidity_R3.ino menggantikan menu dengan gambar yang ditunjukkan di atas. Ia juga menambah sokongan sensor lp_Si7021 dan susunan data untuk menyimpan ukuran sejarah 10 min dan setiap jam.
Komplikasi utama dalam lakaran lp_BLE_TempHumidity_R3.ino adalah menangani penghantaran data plot. Semasa pengukuran dibuat readRHResults () mengendalikan mengumpulkan hasil dan menyimpannya ke susunan sejarah. Susunannya panjang 120 tetapi ketika data dihantar 30 titik data pertama adalah pada selang waktu yang lebih baik.
Terdapat beberapa perkara yang perlu diberi perhatian semasa menghantar 200 titik plot ganjil untuk ditunjukkan: -
- Setiap titik data panjangnya ~ 25 bait, dalam format teks CSV. Jadi 150 mata adalah 3750 bait data. Kelas lp_BLESerial mempunyai penyangga 1536 bait, 1024 daripadanya cukup besar untuk mesej pfod terbesar. 512 bait yang lain dikhaskan untuk menghantar data. Setelah data sejarah mengisi 512 bait, penghantaran data selanjutnya ditangguhkan sehingga ada ruang di penyangga.
- Untuk mengelakkan data plot melambatkan kemas kini paparan utama, data plot hanya dihantar semasa skrin plot dipaparkan. Setelah pengguna beralih kembali ke layar utama, pengiriman data plot dijeda. Menghantar data plot disambung semula apabila pengguna mengklik butang plot untuk memaparkan plot semula.
- Plot sejarah bermula dari 0 (sekarang) dan mundur dalam masa. Sekiranya tidak ada pengukuran baru sejak plot terakhir dipaparkan, data sebelumnya yang sudah dimuat akan segera dipaparkan lagi. Sekiranya terdapat pengukuran baru, maka ditambahkan ke data plot sebelumnya.
- Semasa monitor pertama kali dihidupkan, tidak ada bacaan sejarah dan 0 disimpan dalam tatasusunan sebagai bacaan yang tidak sah. Apabila plot dipaparkan, pembacaan tidak sah hanya dilangkau, menghasilkan plot yang lebih pendek.
Celsius dan Fahrenheit
Sketsa lp_BLE_TempHumidity_R3.ino memaparkan dan memplot data dalam Celsius. Untuk menukar hasilnya ke Fahrenheit ganti semua kejadian dari
parser.print (sensor. Temp_RawToFloat (..
dengan
parser.print (sensor. CtoF (sensor. Temp_RawToFloat (…
Dan gantikan simbol degC unicode di Octal / 342 / 204 / 203 dengan simbol degF / 342 / 204 / 211
pfodApp akan memaparkan sebarang Unicode yang boleh dipaparkan oleh telefon bimbit anda.
Lihat Menggunakan watak Bukan ASCII di Arduino untuk maklumat lebih lanjut. Ubah juga tetapan MIN_C, MAX_C di Thermometer.h. Akhirnya laraskan had plot seperti yang anda mahukan mis. ubah | Temp C ~ 32 ~ 8 ~ deg C |
untuk berkata
| Temp F ~ 90 ~ 14 ~ deg F |
Langkah 4: Mengukur Arus Bekalan
Menggunakan perpustakaan lp_Si7021, bahkan mengambil pengukuran suhu / kelembapan setiap 10 saat hanya menyumbang ~ 1uA kepada arus bekalan rata-rata, jadi faktor utama arus bekalan dan oleh itu hayat bateri adalah arus yang digunakan oleh iklan dan sambungan BLE dan penghantaran data.
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 Biru dan Pink)
Anda kini dapat memprogram NanoV2 dan mengukur arus bekalan seperti yang dijelaskan dalam Bahagian 1.
Pasang perpustakaan Si7021 berkuasa rendah dari fail zip ini, lp_Si7021.zip dan pasang pfodParser library dan unzip lp_BLE_TempHumidity_R3.zip ke direktori sketsa Arduino anda dan atur papan Temp / Humditiy dengan lp_BLE_TempHumidity_R3.ino
Seperti yang disebutkan di atas, kontribusi sensor adalah <1uA, rata-rata, pada tingkat pengukuran tertinggi yang digunakan dalam projek ini, jadi parameter pengiklanan dan sambungan BLE adalah faktor penentu jangka hayat bateri.
Parameter pengiklanan dan sambungan BLE yang mempengaruhi penggunaan semasa adalah: -Tx Power, Interval Iklan, Interval Sambungan Max dan Min, dan Slay Latency.
Catatan: Dengan menggunakan sambungan di atas terdapat dua (2) pengatur dalam bekalan, satu di papan NanoV2 melalui Vin dan MAX8881 pada bekalan pengaturcara. Ini bermaksud arus bekalan yang diukur akan ~ 5uA lebih tinggi daripada yang sebenarnya, kerana pengatur kedua. Nilai yang dinyatakan di bawah adalah arus yang diukur tolak 5uA tambahan ini.
Kuasa Tx
Kesan kuasa Tx membekalkan arus semasa disambungkan dan semasa iklan (tidak bersambung). Projek ini menggunakan tetapan kuasa maksimum (+4) dan memberikan jarak dan kekebalan bunyi terbaik untuk sambungan yang paling dipercayai. Anda boleh menggunakan kaedah lp_BLESerial setTxPower () untuk mengubah tetapan kuasa. Nilai yang sah adalah, dalam meningkatkan daya, -40, -30, -20, -16, -12, -8, -4, 0 +4. Anda mesti memanggil kaedah lp_BLESerial begin () SEBELUM anda memanggil setTxPower (). Lihat lakaran lp_BLE_TempHumidity_R3.ino.
Anda boleh bereksperimen dengan mengurangkan Kuasa Tx, tetapi kompromi jaraknya lebih pendek dan putus sambungan kerana gangguan. Dalam projek ini, Kekuatan Tx dibiarkan secara lalai, +4. Seperti yang akan anda lihat di bawah ini, walaupun dengan tetapan ini, arus bekalan yang sangat rendah masih boleh dilakukan.
Selang Iklan
Untuk Kekuatan Tx yang diberikan, apabila tidak ada sambungan, Selang Iklan menetapkan penggunaan semasa semasa. Julat yang disyorkan ialah 500 hingga 1000mS. Di sini 2000mS digunakan. Kompromi adalah bahawa selang pengiklanan yang lebih lama bermakna lebih mudah bagi telefon bimbit anda untuk mencari peranti dan membuat sambungan. Secara dalaman, selang iklan ditetapkan dalam gandaan 0.625mS dalam julat 20mS hingga 10.24sec. Kaedah lp_BLESerial setAdvertisingInterval () mengambil mS sebagai argumen, untuk kemudahan. Untuk selang iklan +4 TxPower dan 2000mS, penggunaan semasa adalah ~ 18uA. Untuk selang iklan 1000mS, ia adalah ~ 29uA. Rev 2 menggunakan selang iklan 2000mS tetapi ini menyebabkan hubungan perlahan. Rev 3 berubah menjadi selang iklan 1000mS untuk membuat sambungan lebih cepat.
Selang Sambungan Max dan Min
Setelah sambungan dibuat, selang sambungan menentukan seberapa kerap telefon bimbit menghubungi peranti. Lp_BLESerial setConnectionInterval () membolehkan anda menetapkan maksimum dan min yang dicadangkan, namun mudah alih mengawal apa sebenarnya selang sambungan. Untuk kemudahan, argumen untuk setConnectionInterval () berada dalam mS, tetapi secara dalaman selang sambungan berada dalam gandaan 1.25mS, dalam julat 7.5mS hingga 4sec.
Tetapan lalai adalah setConnectionInterval (100, 150) iaitu min 100mS hingga maksimum 150mS. Meningkatkan nilai-nilai ini mengurangkan arus bekalan semasa disambungkan, tetapi kompromi adalah penghantaran data yang lebih perlahan. Setiap kemas kini skrin mengambil kira-kira 7 mesej BLE, sementara 36 jam penuh 10 minit pengukuran mengambil kira-kira 170 mesej BLE. Oleh itu, meningkatkan selang sambungan melambatkan kemas kini skrin dan paparan plot.
Kelas lp_BLESerial mempunyai buffer kirim 1536 bait dan hanya menghantar satu blok 20 bait dari penyangga ini, setiap selang sambungan maksimum untuk mengelakkan banjir pautan BLE dengan data. Juga ketika mengirim data plot, sketsa hanya mengirim data hingga 512 bait menunggu untuk dikirim kemudian menunda pengiriman lebih banyak data hingga beberapa data telah dikirim. Ini mengelakkan buffer hantar banjir. Kecepatan pengiriman ini menjadikan penghantaran data ke telefon bimbit dapat diandalkan, tetapi tidak dioptimumkan secara maksimum melalui put.
Dalam projek ini selang sambungan dibiarkan sebagai nilai lalai.
Latensi Hamba
Apabila tidak ada data yang akan dikirim ke telefon bimbit, perangkat secara opsional dapat mengabaikan beberapa pesan sambungan dari telefon bimbit. Ini menjimatkan Kuasa dan bekalan Tx semasa. Tetapan Slence Latency adalah jumlah mesej sambungan yang tidak boleh diabaikan. Lalai adalah 0. Kaedah lp_BLESerial setSlaveLatency () dapat digunakan untuk mengubah tetapan ini.
Slave Latency default 0 memberi ~ 50uA arus bekalan, mengabaikan kemas kini skrin setiap 30 saat, tetapi termasuk mesej keepAlive 5 saat. Menetapkan Slence Latency menjadi 2 memberikan arus bekalan yang bersambung rata-rata ~ 25uA. Tetapan Latensi Slave 4 memberi ~ 20uA. Tetapan yang lebih tinggi nampaknya tidak mengurangkan arus bekalan sehingga tetapan Slence Latency 4 digunakan.
Apabila disambungkan, setiap 30 saat pfodApp meminta kemas kini paparan. Ini memaksa pengukuran sensor dan mengirim kembali data untuk mengemas kini paparan grafik. Kemas kini ini menghasilkan tambahan ~ 66uA selama 2 saat setiap 30 saat. Itu adalah purata 4.4uA selama 30 saat. Menambah ini ke 20uA, memberikan arus bekalan sambungan rata-rata ~ 25uA
Langkah 5: Jumlah Arus Bekalan dan Hayat Bateri
Dengan menggunakan tetapan di atas, seperti yang ditetapkan dalam lp_BLE_TempHumidity_R3.ino, Total Supply semasa semasa Disambungkan dan mengemas kini paparan setiap 30 saat, kira-kira 25uA. Apabila tidak disambungkan, kira-kira 29uA.
Untuk mengira hayat bateri, pengambilan arus berterusan ~ 29uA diandaikan.
Pelbagai bateri mempunyai kapasiti perbezaan dan ciri voltan. Bateri yang dipertimbangkan di sini adalah sel duit syiling CR2032, sel duit syiling CR2450 (N), 2 x AAA Alkaline, 2 x AAA Lithium dan LiPo.
Ringkasan Bateri
Sekiranya menggunakan Solar Assist maka tambahkan 50% pada angka hayat bateri ini (dengan andaian 8 jam sehari)
Catatan: Kapasitor 22uF LowESR (C1), selain kapasitor NanoV2 22uF di atas kapal, menyimpan arus Solar Cell dan kemudian membekalkannya untuk denyutan arus TX. Lain-lain, bateri membekalkan sebahagian arus TX. LowESR 22uF tambahan ini menambahkan sekitar 10% pada arus bateri apabila sel solar bukan bekalan, tetapi juga memanjangkan jangka hayat bateri dengan mengimbangi peningkatan rintangan dalaman bateri ketika bateri mencapai akhir hayat. Ukuran di bawah dilakukan TANPA kapasitor 22uF tambahan.
CR2032 - 235mAHr - hayat bateri 10 bulanCR2450 (N) - 650mAHr (540mAHr) - hayat bateri 2.3 thn (2 thn) 2 x AAA Alkaline - 1250mAHr - hayat bateri 3.8.yrs2 x AAA Lithium - 1200mAHr - hayat bateri 4.7 thnLiPo boleh dicas semula - tidak disyorkan kerana pelepasan diri yang tinggi.
CR2032
Sel duit syiling ini mempunyai kapasiti biasanya 235mAHr (Energizer Battery), voltan nominal 3V dan voltan pelepasan tertentu 2V. Ini menunjukkan jangka hayat bateri 8100 jam atau ~ 0.9 thn. Walau bagaimanapun, rintangan sel dalaman meningkat apabila bateri mencapai akhir hayat dan mungkin tidak dapat memberikan denyut arus Tx puncak. Kapasitor bekalan yang lebih besar boleh digunakan untuk mengurangkan kesan ini, tetapi katakan masa hidup 10 bulan.
CR2450 (N)
Sel duit syiling ini mempunyai kapasiti biasanya 620mAHr (540mAHr untuk CR2450N), voltan nominal 3V dan voltan pelepasan yang ditentukan 2V. Ini menunjukkan jangka hayat bateri 22, 400hrs atau ~ 2yr 6m (18600hrs ~ 2yrs 2m untuk CR2450N). Walau bagaimanapun, rintangan sel dalaman meningkat apabila bateri mencapai akhir hayat dan mungkin tidak dapat memberikan denyut arus Tx puncak. Kapasitor bekalan yang lebih besar boleh digunakan untuk mengurangkan kesan ini, tetapi katakanlah umur 2 yr 4m (2 thn).
Catatan: Versi CR2450N mempunyai bibir lebih tebal yang membantu mengelakkan pemasangan yang salah pada pemegang CR2450N. Anda boleh memasukkan sel CR2450N dan CR2450 dalam pemegang CR2450 tetapi anda tidak boleh memasukkan sel CR2450 dalam pemegang CR2450N
2 x sel Alkali AAA
Bateri ini mempunyai kapasiti sekitar 1250mAHr (Energizer Battery) untuk arus yang sangat rendah, voltan nominal 2x1.5V = 3V dan voltan pelepasan yang ditentukan 2x0.8V = 1.6V. Tetapi voltan pelepasan yang ditentukan ini lebih rendah daripada voltan operasi sensor Si7021 (1.9V) sehingga bateri hanya dapat digunakan hingga ~ 1V setiap satu. Ini mengurangkan kapasiti sekitar 10% hingga 15% iaitu ~ 1000mAHr.
Ini menunjukkan jangka hayat bateri 34, 500hrs atau ~ 4yr. Walau bagaimanapun, rintangan sel dalaman meningkat apabila bateri mencapai akhir hayat dan mungkin tidak dapat memberikan denyut arus Tx puncak. Kapasitor bekalan yang lebih besar boleh digunakan untuk mengurangkan kesan ini, tetapi katakanlah 3yr 10m hidup. Perhatian Bateri alkali mempunyai pelepasan sendiri 2% hingga 3% setiap tahun.
2 x sel Lithium AAA
Bateri ini mempunyai kapasiti sekitar 1200mAHr (Energizer Battery), voltan nominal 2x1.7V = 3.4V, pada arus rendah, dan voltan habis 2x1.4V = 2.4V. Ini menunjukkan jangka hayat bateri 41, 400jam atau 4jam 8m.
Bateri Boleh Diisi Semula LiPo
Bateri ini terdapat dalam pelbagai kapasiti dari 100mAHr hingga 2000mAHr, dalam format rata, dan mempunyai voltan terisi 4.2V dan voltan yang dilepaskan> 2.7V. Walau bagaimanapun, mereka mempunyai pelepasan diri yang tinggi sebanyak 2% -3% / bulan (iaitu 24% hingga 36% per tahun) dan oleh itu tidak sesuai untuk aplikasi ini seperti bateri lain.
Langkah 6: Alternatif Bekalan - Solar Assist, Battery Only, Solar Only
Bateri ditambah Solar Assist
Pembinaan di atas menggunakan bekalan Battery plus Solar Assist. Apabila panel solar menghasilkan lebih banyak voltan daripada voltan bateri, sel suria akan memberi kuasa pada monitor, sehingga memanjangkan hayat bateri. Biasanya jangka hayat bateri dapat diperpanjang 50% lagi.
Panel solar yang digunakan adalah kecil, 50mm x 30mm, murah, ~ $ 0.50, dan kuasa rendah. Mereka adalah panel nominal 5V, tetapi memerlukan cahaya matahari langsung langsung untuk menghasilkan 5V. Dalam projek ini dua panel disambungkan secara bersiri sehingga meletakkan monitor di beberapa tempat di dekat tingkap, di bawah sinar matahari langsung, cukup untuk menggantikan tenaga bateri. Walaupun bilik yang terang, atau lampu meja, cukup untuk sel suria menghasilkan> 3.3V pada> 33uA dan mengambil alih dari bateri.
Panel ujian sederhana dibina untuk menentukan di mana Monitor Suhu / Kelembapan dapat ditempatkan, di bawah sinar matahari dan masih bertenaga solar. Seperti yang anda lihat dari foto di atas, kedua panel yang disambungkan ke perintang 100K menghasilkan 5.64V di seluruh 100K, iaitu arus 56uA pada 5.64V. Ini lebih dari sekadar mengambil alih kuasa monitor dari bateri. Sebarang bacaan voltan melebihi voltan bateri nominal 3V bermaksud sel suria akan menggerakkan monitor dan bukannya bateri.
Kedua-dua dioda di litar Monitor Kelembapan Suhu mengasingkan sel suria dan bateri antara satu sama lain dan melindungi daripada menghubungkannya dalam kekutuban terbalik. Perintang siri 10V 1W dan 470R melindungi pengawal selia NanoV2 dari voltan berlebihan dari dua sel suria di bawah sinar matahari penuh, terutamanya jika sel 12V kebetulan digunakan dan bukannya yang 5V. Dalam operasi normal pada <5V, zener 10V hanya menarik ~ 1uA.
Bateri Sahaja
Untuk Bekalan Bateri sahaja, hilangkan R1, D1 dan D3 dan sel suria. Anda juga boleh mengganti D1 dengan sekeping wayar jika anda tidak mahu perlindungan polaritas terbalik.
Suria Sahaja
Menghidupkan monitor hanya dari Solar Cells, tanpa bateri, memerlukan litar bekalan kuasa yang berbeza. Masalahnya adalah bahawa semasa monitor akan beroperasi pada 29uA, semasa menghidupkan tarikan nRF52 ~ 5mA selama 0.32 saat. Litar yang ditunjukkan di atas (versi pdf) mematikan pengatur MAX8881 sehingga kapasitor input, 2 x 1000uF, mengecas hingga 4.04V. Kemudian MAX6457 melepaskan input SHDN MAX8881 untuk menghidupkan nRF52 (NanoV2) Kapasitor 2 x 1000uF membekalkan arus permulaan yang diperlukan.
Ini membolehkan monitor menyala sebaik sahaja ada tenaga suria yang tetap beroperasi pada suhu 29uA.
Langkah 7: Kesimpulannya
Tutorial ini telah menunjukkan Monitor Kelembapan Suhu berkuasa bateri / solar sebagai contoh projek BLE berkuasa rendah di Arduino untuk cip nRF52832. Arus bekalan ~ 29uA di mana dicapai dengan menyesuaikan parameter sambungan. Ini menyebabkan jangka hayat bateri sel duit syiling CR2032 melebihi 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.
Litar kuasa khas dipersembahkan untuk membolehkan monitor dijalankan secara murni dari sel solar berkapasiti rendah.
PfodDesigner percuma membolehkan anda merancang menu / sub-menu, merancang data tarikh / masa dan log dan kemudian menghasilkan lakaran Arduino berkuasa rendah untuk anda. Di sini antara muka tersuai dikodkan menggunakan primitif lukisan pfodApp. Menyambung dengan pfodApp memaparkan antara muka pengguna dan mengemas kini bacaan semasa monitor menggunakan ~ 29uA
Tidak diperlukan pengaturcaraan Android. pfodApp menangani semua itu.
Disyorkan:
Arduino Keyboard Joystick Extender Box dan Sound Controller Thing Using Deej: 8 Steps
Arduino Keyboard Joystick Extender Box dan Sound Controller Thing Using Deej: Why Untuk sementara waktu saya ingin menambahkan joystick kecil ke papan kekunci saya untuk mengawal elemen antara muka, atau tugas lain yang lebih kecil dalam permainan dan simulator (MS Flight Sim, Elite: Dangerous, Star Wars: Skuadron, dll). Juga, untuk Elite: Dangerous, saya pernah
Smart Dustbin Menggunakan Arduino, Ultrasonic Sensor & Servo Motor: 3 Steps
Smart Dustbin Menggunakan Arduino, Ultrasonic Sensor & Servo Motor: Dalam projek ini, saya akan menunjukkan kepada anda Cara Membuat Smart Dustbin menggunakan Arduino, di mana penutup tong sampah akan terbuka secara automatik ketika anda menghampiri sampah. Komponen penting lain yang digunakan untuk membuat tong sampah ini adalah HC-04 Ultrasonic Sen
Arduino Bluetooth RC Car W / Electronic Braking System: 4 Steps (with Pictures)
Arduino Bluetooth RC Car W / Electronic Braking System: Inilah cara membuat kereta RC dengan harga sekitar 40 $ (27 $ w / uno clone)
Robot kecil: bit Robot - Bahagian 1: 7
Tiny Micro: bit Robot - Bahagian 1: Saya selalu menganggap robot kecil hebat dan membuatnya dengan Microbit yang jimat akan menjadi ideal. Saya ingin membuat robot yang tidak menggunakan papan IO yang sudah siap seperti yang saya gunakan pada masa lalu untuk memandu motor atau mendapatkan input sensor, saya ingin
Acoustic DISDRO Meter: Raspebbery Pi Open Weather Station (Bahagian 2): 4 Steps (with Pictures)
Acoustic DISDRO Meter: Raspebbery Pi Open Weather Station (Bahagian 2): DISDRO bermaksud pengedaran titisan. Peranti mencatat ukuran setiap penurunan dengan cap waktu. Data ini berguna untuk pelbagai aplikasi, termasuk penelitian meteorologi (cuaca) dan pertanian. Sekiranya disdro sangat tepat, saya boleh