Mündəricat:

Arduino Part 2 -də Asan Çox Aşağı Güc BLE - Temperatur/Nəmlik Monitoru - Rev 3: 7 Addımlar
Arduino Part 2 -də Asan Çox Aşağı Güc BLE - Temperatur/Nəmlik Monitoru - Rev 3: 7 Addımlar

Video: Arduino Part 2 -də Asan Çox Aşağı Güc BLE - Temperatur/Nəmlik Monitoru - Rev 3: 7 Addımlar

Video: Arduino Part 2 -də Asan Çox Aşağı Güc BLE - Temperatur/Nəmlik Monitoru - Rev 3: 7 Addımlar
Video: Lesson 24: Smart Car Part 2: Moving Forwared, Reverse, left and right and Controling Speed of Car 2024, Noyabr
Anonim
Arduino Part 2 -də Asan Çox Aşağı Güclü BLE - Temperatur/Nəmlik Monitoru - Rev 3
Arduino Part 2 -də Asan Çox Aşağı Güclü BLE - Temperatur/Nəmlik Monitoru - Rev 3
Arduino Part 2 -də Asan Çox Aşağı Güclü BLE - Temperatur/Nəmlik Monitoru - Rev 3
Arduino Part 2 -də Asan Çox Aşağı Güclü BLE - Temperatur/Nəmlik Monitoru - Rev 3
Arduino Part 2 -də Asan Çox Aşağı Güclü BLE - Temperatur/Nəmlik Monitoru - Rev 3
Arduino Part 2 -də Asan Çox Aşağı Güclü BLE - Temperatur/Nəmlik Monitoru - Rev 3

Yeniləmə: 23 Noyabr 2020 - 15 Yanvar 2019 -dan bəri 2 x AAA batareyanın ilk dəyişdirilməsi, yəni 2xAAA Alkaline üçün 22 ay Yeniləmə: 7 Aprel 2019 - lp_BLE_TempHumidity -in Rev 3, pfodApp V3.0.362+istifadə edərək Tarix/Saat planlarını əlavə edir və göndərərkən avtomatik tənzimləmə. məlumatlar

Yeniləmə: 24 Mart 2019 - lp_BLE_TempHumidity -in Rev 2, daha çox süjet variantları və i2c_ClearBus əlavə edir

Təlimat verilə bilən Çox Aşağı Güclü Temperatur Rütubət Monitoru 3 -cü hissədən 2 -dir.

1 -ci hissə - Arduino ilə asanlaşdırılan çox aşağı gücə malik BLE cihazlarının qurulması Arduino nRF52 aşağı güc cihazlarını kodlaşdırmağı, proqramlaşdırma modulunu və təchizat cərəyanını ölçməyi əhatə edir. NRF52 cihazına qoşulmaq və onu idarə etmək üçün ixtisaslaşdırılmış aşağı güc sayğaclarını və müqayisə cihazlarını, debüt edilmiş girişləri və pfodApp istifadə etməyi də əhatə edir.

2 -ci hissə - Çox Aşağı Güclü Temperatur Rütubət Monitoru, aşağı enerjili bir batareya / günəş monitoru qurmaq üçün Redbear Nano V2 modulu və Si7021 temperatur / rütubət sensoru istifadə edir. Ayrıca, Si7021 kitabxanasının aşağı gücə çevrilməsini, BLE cihazının cari istehlakını <25uA azaltmaq üçün tənzimləməsini və cibiniz üçün xüsusi bir temperatur/rütubət ekranının dizaynını əhatə edir.

3 -cü hissə - Redbear Nano V2 -nin dəyişdirilməsi, Nano V2 əvəzinə digər nRF52 əsaslı modullardan istifadə edir. Təchizat komponentlərinin seçilməsi, inşaat, nRF52 çip proqramlaşdırma qorumasının aradan qaldırılması, NFC pinlərinin normal GPIO olaraq istifadə edilməsi və Arduinoda yeni bir nRF52 lövhəsinin təyin edilməsi daxildir.

Bu təlimat, Çox Düşük Güclü BLE Temperatur və Rütubət Monitoru quraraq Arduino ilə asanlaşdırılan 1 -ci hissənin Çox Aşağı Güclü BLE cihazlarının praktik bir tətbiqidir. Monitör Coin Cell və ya 2 x AAA batareyaları ilə illərlə işləyəcək, hətta günəş yardımı ilə daha uzun müddət işləyəcək. Bu təlimat, aşağı enerji istehlakı üçün BLE parametrlərinin tənzimlənməsini və cihazı batareyadan və ya batareyadan + yalnız günəşdən və ya günəşdən necə gücləndirəcəyinizi əhatə edir.

Monitor, mövcud temperatur və rütubəti əks etdirməklə yanaşı, son 36 saatlıq 10 dəqiqəlik oxunuşları və son 10 gündə saatlıq oxunuşları saxlayır. Bunlar Android mobil telefonunuzda və bir qeyd sənədində saxlanılan dəyərlər ilə əlaqələndirilə bilər. Android Proqramlaşdırma tələb olunmur, pfodApp bütün bunları idarə edir. Android ekranı və diaqramı tamamilə Arduino eskiziniz tərəfindən idarə olunur, buna görə də lazım olduğu kimi düzəldə bilərsiniz.

NRF52832 BLE komponenti üçün Redbear Nano V2 lövhəsi, Temperatur / Rütubət Sensoru üçün isə Sparkfun Si7021 qırılma lövhəsi istifadə olunur. Si7021 ilə dəyişdirilmiş aşağı güc kitabxanası istifadə olunur. Kiçik bir PCB, NanoV2 və komponentləri təchiz etmək üçün hazırlanmışdır. Səthə quraşdırılmış komponentlər olmadığından, bunu vero lövhədə asanlıqla qura bilərsiniz. Üç enerji təchizatı versiyası əhatə olunur. i) Batareya və Günəş yardımı, ii) Yalnız batareya, iii) Yalnız Günəş. Yalnız Solar seçimində heç bir batareya tutumu yoxdur və buna görə də yalnız işıq olduqda işləyəcək. Parlaq bir otaq işığı və ya masa lampası kifayətdir.

Kontur

Bu layihə 4 nisbi müstəqil hissədən ibarətdir:-

  1. Komponent Seçimi və Tikintisi
  2. Kod - Aşağı Güc Sensor Kitabxanası, İstifadəçi İnterfeysi və Arduino Sketch
  3. Təchizat Cərəyanının və Batareya Ömrünün Ölçülməsi
  4. Alternativ Təchizat - Günəş Köməkçisi, Yalnız Batareya, Yalnız Günəş

Addım 1: Komponent Seçimi

Komponent Seçimi

1-ci hissədə qeyd edildiyi kimi-Həqiqətən də aşağı güc həllini əldə etməyin hiyləsi, əksər hallarda heç bir şey etməmək, girişlərdəki xarici çəkmə/çəkmə rezistorları vasitəsilə cərəyanı minimuma endirmək və heç bir əlavə komponentə malik olmamaqdır. Bu layihə, aşağı gücə sahib bir həll əldə etmək üçün bu fəndlərin hər birini istifadə edəcək.

NRF52832 komponenti

NRF52832 çipi 1.7V və 3.6V (mütləq maksimum gərginlik 3.9V) arasında bir enerji təchizatı ilə işləyə bilər. Bu, çipi birbaşa bir sikkə hüceyrəsindən və ya 2 x AAA batareyadan gücləndirə biləcəyiniz deməkdir. Bununla birlikdə çipi yüksək voltlardan qorumaq üçün bir gərginlik tənzimləyicisi əlavə etmək ehtiyatlıdır. Bu əlavə komponent enerji xərcləri ilə gəlir, lakin NanoV2 lövhəsi vəziyyətində, TLV704 bort tənzimləyicisi maksimum 5.5uA-dan az, adətən yalnız 3.4uA istehlak edir. Bu kiçik əlavə enerji istehlakı üçün 24V -ə qədər təchizat girişləri üçün qorunma əldə edirsiniz.

Si7021 komponenti

Si7021 sensoru özü ölçmə apararkən, yəni gözləmə rejimində <1uA və məlumatları I2C vasitəsilə ötürərkən 4mA -a qədər çəkir. Daim ölçmə aparmadığımız üçün 4mA, orta tədarük cərəyanının əhəmiyyətli bir hissəsi deyil. Çox 30 saniyə oxumaq, orta tədarük cərəyanına 1uA -dan daha az əlavə edir, aşağıdakı təchizat cərəyanı ölçülərinə baxın.

Hazır iki Si7021 qırılma lövhəsi var. Biri Adafruitdən, biri də Sparkfundan. İki lövhəyə qısa bir nəzər salmaq Adafruit lövhəsinin Sparkfun lövhəsindən daha çox komponentə sahib olduğunu söyləyəcək, buna görə də Sparkfun lövhəsini seçməyə meylli olacaqsınız. Hər bir lövhənin sxemlərinə baxdıqda, Sparkfun lövhəsinin yalnız çılpaq sensor və iki ədəd 4k7 çəkmə rezistoru olduğunu, Adafruit lövhəsində isə həmişə 29uA çəkən bir bortda MIC5225 tənzimləyicisi var. Dövrün qalan hissəsi üçün bütün cərəyan <30uA olduqda bu vacibdir. Artıq nRF52832 çipi üçün bir tənzimləyicimiz olduğuna görə, bu əlavə komponentə ehtiyac yoxdur və Si7021 bu 3.3V təchizatı ilə işləyə bilər. Beləliklə, bu layihə Sparkfun Si7021 qırılma taxtasından istifadə edəcək.

girişdəki xarici çəkmə/çəkmə rezistorları vasitəsilə cərəyanı minimuma endirmək

4K7 I2C çəkmə rezistorları xüsusilə yüksək qiymətə malik deyil və aşağı çəkildikdə 0.7mA çəkəcək. Uzun müddətdir əsaslı olan bir keçid girişində olsalar, bu problem olardı. Ancaq bu layihədə bu rezistorlardan keçən cərəyan yalnız I2C interfeysi nadir hallarda və qısa müddət ərzində minimuma endirilir. Çox vaxt I2C xətləri istifadə edilmir və yüksək / üç vəziyyətlidir, buna görə də bu rezistorlardan heç bir cərəyan axmır.

Addım 2: Tikinti

Tikinti
Tikinti
Tikinti
Tikinti
Tikinti
Tikinti

Layihə kiçik bir PCB üzərində qurulmuşdur, lakin SMD komponentləri olmadığı üçün vero lövhədən istifadə etməklə asanlıqla inşa edilə bilər. PCB, bu Gerber fayllarından pcbcart.com tərəfindən istehsal edilmişdir, TempHumiditySensor_R1.zip PCB, digər BLE layihələri üçün istifadə üçün kifayət qədər ümumi bir məqsəddir.

Sxematik yuxarıda göstərilmişdir. Budur pdf versiyası.

Parça siyahısı

1 -ci hissədən göndərmə və proqramçı istisna olmaqla, 2018 -ci ilin dekabr ayına olan vahid başına təxminən xərc, ~ 62 ABŞ dolları

  • Redbear NanoV2 ~ 17 ABŞ dolları
  • Sparkfun Si7021 qırılma taxtası ~ 8 ABŞ dolları
  • 2 x 53mm x 30mm 0.15W 5V günəş batareyaları məsələn. Overfly ~ 1.10 ABŞ dolları
  • 1 x PCB TempHumiditySensor_R1.zip ~ 25 ABŞ dolları 5 endirimlə www.pcbcart.com OR Vero lövhəsi (mis şeridi) məs. Jaycar HP9540 ~ 5 AUD
  • 2 x 1N5819 schottky diodları məs. Digikey 1N5819FSCT-ND ~ 1 ABŞ dolları
  • 1 x 470R 0.4W 1% rezistor məsələn. Digikey BC3274CT-ND ~ 0.25 ABŞ dolları
  • 6 x 6 pinli kişi başlıq sancaqları, məsələn. Sparkfun PRT-00116 ~ 1.5 ABŞ dolları
  • dişi -dişi tullanan məsələn Adafruit ID: 1950 ~ 2 ABŞ dolları
  • 3 mm x 12 mm neylon vintlər, məsələn. Jaycar HP0140 ~ 3 AUD
  • 3 mm x 12 mm neylon qoz -fındıq, məsələn. Jaycar HP0146 ~ 3 AUD
  • Scotch Daimi Montaj Bant Cat 4010 məs. Amazon -dan ~ 6.6 ABŞ dolları
  • AAA x 2 batareya tutacağı, məs. Sparkfun PRT-14219 ~ 1.5 ABŞ dolları
  • 2 x AAA 750mA Qələvi batareyalar, məs. Sparkfun PRT-09274 ~ 1.0 ABŞ dolları Bu batareyaların ömrü> 2 il olmalıdır. Energizer Alkalin Batareyaları daha yüksək tutuma malikdir
  • Plastik Qutu (ABS) 83mm x 54mm x 31mm, məs. Jaycar HB6005 ~ 3 AUD
  • pfodApp ~ 10 ABŞ dolları
  • 1 x 22uF 63V Aşağı ESR Kondansatör (İsteğe bağlı) məs. Jaycar RE-6342 ~ AUD $ 0.5 və ya Digikey P5190-ND ~ US $ 0.25

Tikinti birbaşa irəli gedir. Batareya tutucusu və günəş batareyaları plastik qutuya ağır iki tərəfli bantla bərkidilir.

Bitmiş hissədə CLK ilə GND arasındakı Gnd keçid telinə diqqət yetirin. Bu, CLK girişindəki səs -küyün nRF52 çipinin yüksək cərəyan ayıklama rejiminə keçməsini qarşısını almaq üçün proqramlaşdırmadan SONRA quraşdırılır

Addım 3: Kod - Aşağı Güc Sensor Kitabxanası, İstifadəçi İnterfeysi və Arduino Sketch

Kod - Aşağı Güc Sensor Kitabxanası, İstifadəçi İnterfeysi və Arduino Sketch
Kod - Aşağı Güc Sensor Kitabxanası, İstifadəçi İnterfeysi və Arduino Sketch
Kod - Aşağı Güc Sensor Kitabxanası, İstifadəçi İnterfeysi və Arduino Sketch
Kod - Aşağı Güc Sensor Kitabxanası, İstifadəçi İnterfeysi və Arduino Sketch
Kod - Aşağı Güc Sensor Kitabxanası, İstifadəçi İnterfeysi və Arduino Sketch
Kod - Aşağı Güc Sensor Kitabxanası, İstifadəçi İnterfeysi və Arduino Sketch

Poçt kodunu yükləyin, lp_BLE_TempHumidity_R3.zip və Arduino Sketches kataloqunuza açın. Bu zip faylından lp_So7021 kitabxanasını da qurmalı və pfodParser kitabxanasını da qurmalısınız.

Aşağı Güc Sensor Kitabxanası, lp_Si7021

Həm Adafruit, həm də Sparkfun, Si7021 sensoruna daxil olmaq üçün dəstək kitabxanaları təmin edir, lakin hər iki kitabxana çox aşağı enerji istifadəsi üçün uyğun deyil. Hər ikisi də ölçmə apararkən sensoru oxumağı gecikdirmək üçün kodda bir gecikmə (25) istifadə edir. Birinci hissədə qeyd edildiyi kimi gecikmələr pisdir. Arduino delay (), gecikmənin bitməsini gözləyərkən mikro prosessorun gücdən istifadə etməsini təmin edir. Bu, aşağı güc BLE -nin ilk qaydasını pozur, çox vaxt heç nə etmə. Əvəzedici lp_Si7021 kitabxanası, bütün gecikmələri lp_timers ilə əvəz edir ki, bu da sensorun ölçülməsinin bitməsini gözləyərkən mikroprosessoru yuxuya verir.

Lp_Si7021 kitabxanasının nə qədər fərqi var? Orijinal SparkFun Si7021 dəstək kitabxanasından istifadə edərək və heç bir Serial iz olmadan saniyədə bir oxunuşla ~ 1.2mA orta çəkir. Sparkfun kitabxanasını lp_Si7021 kitabxanası ilə əvəz etməklə, orta cərəyanı ~ 10uA -ya, yəni 100 dəfə azaldır. Bu proyektdə, cib telefonu qoşulduqda hər 30 saniyədə bir ən sürətli ölçmə sürəti 1uA -dan aşağı olan orta sensor cərəyanı ilə nəticələnir. BLE bağlantısı olmadıqda ölçmə sürəti hər 10 dəqiqədə bir olur və sensorun tədarük cərəyanı əhəmiyyətsizdir.

İstifadəçi interfeysi

Yuxarıda əsas ekran görüntüsü və 10 günlük saatlıq tarixin böyüdülmüş görünüşü var. Süjetlər iki barmaqla hər iki istiqamətə yaxınlaşdırıla bilər.

İstifadəçi interfeysi Arduino eskizində kodlanır və sonra təkrar istifadə və yeniləmələr üçün önbelleğe alındığı ilk bağlantıda pfodApp -a göndərilir. Qrafik ekran primitivlərin çəkilməsindən ibarətdir. Öz nəzarətlərinizi necə quracağınıza dair bir dərs üçün Android üçün Xüsusi Arduino Nəzarətlərinə baxın. Thermometer, RHGauge və Button faylları bu maddələr üçün rəsm əmrlərini ehtiva edir.

Qeyd: Bu ekran pfodApp -da quraşdırılıbsa, heç biri yoxdur. Bütün ekran tamamilə Arduino eskizinizdəki kodla idarə olunur

Lp_BLE_TempHumidity_R3.ino eskizindəki sendDrawing_z () metodu istifadəçi interfeysini təyin edir.

etibarsız sendDrawing_z () {dwgs.start (50, 60, dwgs. WHITE); // arxa plan defoltları BEYAZ olduqda, yəni başlanğıc (50, 60); parser.sendRefreshAndVersion (30000); // hər 30 saniyədə bir dəfə dwg tələb edin. heç bir ayrıştırıcı versiyası qurulmadığı təqdirdə, // yeniləmələri göstərmək üçün yuxarıdakı düymələrə toxunun dwgs.touchZone (). cmd ('u'). ölçüsü (50, 39).send (); dwgs.pushZero (35, 22, 1.5); // sıfırı dwg mərkəzinə 35, 22 -ə köçürün və rhGauge.draw () 1,5 dəfə ölçəkləyin; // dwgs.popZero () nəzarətini çəkin; dwgs.pushZero (18, 33); // sıfırla dwg mərkəzinə 18 -ə keçin, 33 miqyas 1 (standart) termometrdir.draw (); // dwgs.popZero () nəzarətini çəkin;

dwgs.pushZero (12.5, 43, 0.7); // sıfırı dwg mərkəzinə 12.5, 43 -ə və 0.7 ölçüyə aparın

hrs8PlotButton.draw (); // dwgs.popZero () nəzarətini çəkin; dwgs.pushZero (37.5, 43, 0.7); // sıfırı dwg mərkəzinə 37.5, 43 -ə köçürün və 0.7 gün ölçəkləyin1PlotButton.draw (); // dwgs.popZero () nəzarətini çəkin;

dwgs.pushZero (12.5, 54, 0.7); // sıfırı dwg mərkəzinə 12.5, 54 -ə və 0.7 ölçüyə aparın

days3PlotButton.draw (); // dwgs.popZero () nəzarətini çəkin; dwgs.pushZero (37.5, 54, 0.7); // sıfırı dwg mərkəzinə 37.5, 54 -ə köçürün və 0.7 gün ölçəkləyin10PlotButton.draw (); // dwgs.popZero () nəzarətini çəkin; dwgs.end (); }

PushZero əmrləri, sonrakı komponenti çəkmək üçün mənşəyi və miqyasını dəyişir. Bu, düymələrin və ölçü cihazlarının ölçüsünü və mövqeyini asanlıqla dəyişdirməyə imkan verir.

İlk bağlantıda, ekranı təyin edən ~ 800 baytı aşağı yükləmək üçün 5 və ya 6 saniyə çəkir. pfodApp ekranı önbelleğe alır, buna görə gələcək yeniləmələr yalnız dəyişiklikləri, ölçü mövqelərini və oxunuşları göndərməlidir. Bu yeniləmələr ekranı yeniləmək üçün lazım olan 128 baytı göndərmək üçün bir neçə saniyə çəkir.

Ekranda müəyyən edilmiş beş (5) aktiv toxunma zonası var. Hər bir düymənin draw () metodunda müəyyən edilmiş bir düymə var, buna görə müvafiq süjeti açmaq üçün üzərinə basa bilərsiniz və ekranın yuxarı yarısı üçüncü toxunma zonası kimi konfiqurasiya edilmişdir.

dwgs.touchZone (). cmd ('u'). ölçüsü (50, 39).send ();

Düymələrin üzərindəki ekrana tıkladığınızda 'u' dwg əmri yeni bir ölçmə və ekran yeniləməsini məcbur etmək üçün eskizinizə göndərilir. Adətən qoşulduqda, yeniləmələr yalnız hər 30 saniyədə olur. Rəsmin hər klik və ya yeniləməsi yeni bir ölçmə məcbur edir. Arduino eskizindən pfodApp -a cavab, yeni ölçmə tamamlanana qədər gecikir (~ 25mS) ki, ən son dəyər yeniləmədə göndərilə bilsin.

Arduino eskiz

Arduino Sketch, lp_BLE_TempHumidity_R3.ino, 1 -ci hissədə istifadə olunan nümunə eskizin təkmilləşdirilmiş bir versiyasıdır. 10 dəqiqə və saatlıq tarixi ölçmələri saxlamaq üçün lp_Si7021 sensor dəstəyi və məlumat diziləri də əlavə edir.

Lp_BLE_TempHumidity_R3.ino eskizindəki əsas çətinlik, süjet məlumatlarının göndərilməsidir. Ölçmələr edildikcə readRHResults () nəticələrin toplanmasını və tarixi cərgələrdə saxlanmasını idarə edir. Dizilər 120 uzunluqdadır, lakin məlumatlar göndərildikdə ilk 30 məlumat nöqtəsi daha yaxşı bir zaman aralığında olur.

200 tək süjet nöqtəsini göstərməyə göndərərkən diqqət etməli olduğunuz bir neçə məqam var:-

  1. Hər bir məlumat nöqtəsi CSV mətn formatında ~ 25 bayt uzunluğundadır. Beləliklə, 150 bal 3750 bayt məlumatdır. Lp_BLESerial sinifində 1024 -ü ən böyük pfod mesajı üçün kifayət qədər böyük olan 1536 bayt tampon var. Digər 512 bayt məlumatların göndərilməsi üçün ayrılmışdır. Tarixi məlumatlar 512 baytı doldurduqdan sonra, əlavə məlumatların göndərilməsi tamponda yer olana qədər gecikir.
  2. Süjet məlumatlarının əsas ekran yeniləmələrini yavaşlatmaması üçün süjet məlumatları yalnız süjet ekranı göstərilərkən göndərilir. İstifadəçi əsas ekrana qayıtdıqdan sonra süjet məlumatlarının göndərilməsi dayandırılır. İstifadəçi süjeti yenidən göstərmək üçün süjet düyməsini basdıqda süjet məlumatlarının göndərilməsi bərpa olunur.
  3. Tarixi süjetlər 0 -dan (indi) başlayır və zamanla geriyə gedir. Son süjet göstərildikdən sonra heç bir yeni ölçü yoxdursa, artıq yüklənmiş əvvəlki məlumatlar dərhal yenidən göstərilir. Yeni bir ölçü varsa, o zaman əvvəlki süjet məlumatlarına əlavə olunur.
  4. Monitor ilk dəfə işə salındıqda heç bir tarixi oxunuş yoxdur və 0, dizilərdə etibarsız oxu olaraq saxlanılır. Süjet göstərildikdə, etibarsız oxunuşlar atlanır və nəticədə daha qısa bir süjet yaranır.

Selsi və Fahrenheit

Lp_BLE_TempHumidity_R3.ino eskizi, məlumatları Celsiusda göstərir və qurur. Nəticələri Fahrenheit'e çevirmək üçün bütün hadisələri əvəz edin

parser.print (sensor. Temp_RawToFloat (..

ilə

parser.print (sensor. CtoF (sensor. Temp_RawToFloat (…)

Və Octic / 342 / 204 / 203 -də unicode degC simvolunu degF simvolu / 342 / 204 / 211 ilə əvəz edin

pfodApp, cibinizdə göstərə biləcəyiniz hər hansı bir Unicode göstərəcək.

Ətraflı məlumat üçün Arduinoda ASCII olmayan simvollardan istifadə edin. Thermometer.h -də MIN_C, MAX_C parametrlərini də dəyişdirin. Nəhayət, süjet sərhədlərini istədiyiniz kimi tənzimləyin. dəyişmək | Temp C ~ 32 ~ 8 ~ C C |

demək

| F ~ 90 ~ 14 ~ dərəcə F |

Addım 4: Təchizat Cərəyanının Ölçülməsi

Təchizat Cərəyanının Ölçülməsi
Təchizat Cərəyanının Ölçülməsi

Lp_Si7021 kitabxanasından istifadə edərək, hər 10 saniyədə bir temperatur/rütubət ölçülməsi belə, orta tədarük cərəyanına ~ 1uA qatqı təmin edir, buna görə də təchizat cərəyanının və buna görə də batareyanın ömrünün əsas faktoru BLE reklam və əlaqə və məlumat ötürülməsi üçün istifadə olunan cərəyandır..

Temperatur/Nəmlik lövhəsini yuxarıda göstərildiyi kimi 1 -ci hissədə təsvir olunan Proqramçıya qoşun.

Günəş batareyaları və batareyaları çıxarıldıqda, Vin və Gnd proqramçı Vdd və Gnd (Sarı və Yaşıl) və SWCLK və SWDIO proqramçı başlıq lövhəsinin Clk və SIO -na (Mavi və Çəhrayı işıqlar) qoşulur.

İndi NanoV2 -ni proqramlaşdıra və 1 -ci hissədə təsvir edildiyi kimi tədarük cərəyanını ölçə bilərsiniz.

Bu zip faylı olan lp_Si7021.zip -dən aşağı güclü Si7021 kitabxanasını quraşdırın və pfodParser kitabxanasını qurun və lp_BLE_TempHumidity_R3.zip -ni Arduino eskizlər qovluğuna açın və Temp/Humditiy lövhəsini lp_BLE_TempHumidity_R3.ino ilə proqramlaşdırın.

Yuxarıda qeyd edildiyi kimi, sensorun bu layihədə istifadə edilən ən yüksək ölçü nisbətində <1uA ortalaması olduğu üçün BLE reklam və əlaqə parametrləri batareyanın ömrünü təyin edən amildir.

Cari istehlaka təsir edən BLE reklam və əlaqə parametrləri bunlardır: -Tx Power, Reklam Aralığı, Maks və Min Bağlantı Aralıqları və Slave Gecikmə.

Qeyd: Yuxarıdakı əlaqələrdən istifadə edərək, təchizatda iki (2) tənzimləyici var, biri Vin vasitəsilə NanoV2 lövhəsində və proqramçı təchizatında MAX8881. Bu, ikinci tənzimləyiciyə görə ölçülmüş tədarük cərəyanlarının faktiki dəyərdən ~ 5uA yüksək olacağı deməkdir. Aşağıda göstərilən dəyərlər, bu əlavə 5uA çıxılmaqla ölçülmüş cərəyanlardır.

Tx Gücü

Tx Güc effektləri həm qoşulduqda, həm də reklam verərkən (bağlı deyil) cərəyan verir. Bu layihə maksimum güc parametrini (+4) istifadə edir və ən etibarlı bağlantılar üçün ən yaxşı diapazonu və ən böyük səs -küy toxunulmazlığını təmin edir. Güc parametrini dəyişdirmək üçün lp_BLESerial setTxPower () metodundan istifadə edə bilərsiniz. Etibarlı dəyərlər, artan gücdə -40, -30, -20, -16, -12, -8, -4, 0 +4. SetTxPower () əvvəli lp_BLESerial begin () metoduna zəng etməlisiniz. Lp_BLE_TempHumidity_R3.ino eskizinə baxın.

Tx Gücünü azaltmaqla təcrübə edə bilərsiniz, ancaq kompromis daha qısadır və müdaxilə səbəbindən daha çox əlaqə kəsilir. Bu layihədə Tx Gücü standart olaraq +4 olaraq qalır. Aşağıda gördüyünüz kimi, bu parametrlə belə çox aşağı təchizat cərəyanı mümkündür.

Reklam Aralığı

Müəyyən bir Tx Güc üçün, heç bir əlaqə olmadıqda, Reklam Aralığı orta cari istehlakı təyin edir. Tövsiyə olunan diapazon 500 ilə 1000 mS arasındadır. Burada 2000 mS istifadə edildi. Güzəşt, daha uzun reklam fasilələri, cibinizin cihazı tapması və əlaqə qurmasının daha yavaş olması deməkdir. Daxili olaraq, reklam intervalları 20mS ilə 10.24sn aralığında 0.625mS çoxluqları ilə təyin olunur. Lp_BLESerial setAdvertisingInterval () metodu rahatlıq üçün mS -ni arqument olaraq götürür. +4 TxPower və 2000mS reklam intervalı üçün cari istehlak ~ 18uA idi. 1000mS reklam aralığı üçün ~ 29uA idi. Rev 2 2000mS reklam intervalından istifadə etdi, lakin bu, yavaş əlaqələrlə nəticələndi. Əlaqələri daha sürətli etmək üçün Rev 3, 1000mS reklam intervalına dəyişdirildi.

Maksimum və Min Bağlantı Aralıqları

Bir əlaqə qurulduqdan sonra, əlaqə aralığı mobil cihazın cihazla nə qədər tez əlaqə quracağını təyin edir. Lp_BLESerial setConnectionInterval (), təklif olunan maksimum və dəqiqəni təyin etməyə imkan verir, lakin mobil əlaqə aralığının əslində nə olduğunu nəzarət edir. Rahatlıq üçün setConnectionInterval () arqumentləri mS -dədir, lakin daxili olaraq bağlantı aralıqları 7.5mS -dən 4sec aralığında 1.25mS -dən çoxdur.

Varsayılan ayar setConnectionInterval (100, 150), yəni min 100mS -dən maksimum 150mS -ə qədərdir. Bu dəyərlərin artırılması qoşulduqda tədarük cərəyanını azaldır, lakin uzlaşma məlumatların daha yavaş ötürülməsidir. Ekranın hər yeniləməsi təxminən 7 BLE mesajı alır, tam 36 saatlıq 10 dəqiqəlik ölçmə isə təxminən 170 BLE mesajı alır. Beləliklə, əlaqə fasilələrinin artırılması ekran yeniləmələrini və süjetin göstərilməsini ləngidir.

Lp_BLESerial sinifinin 1536 baytlıq göndərmə tamponu var və BLE linkinin məlumatlarla dolmasını qarşısını almaq üçün hər maksimum əlaqə aralığından bu tampondan yalnız 20 baytlıq bir blok göndərir. Süjet məlumatları göndərilərkən, eskiz yalnız 512 baytın göndərilməsini gözləyənə qədər məlumat göndərir və sonra bəzi məlumatlar göndərilənə qədər daha çox məlumatın göndərilməsini gecikdirir. Bu, daşqın göndərmə tamponunun qarşısını alır. Göndəricilərin bu daralması cib telefonuna məlumat ötürülməsini etibarlı edir, lakin maksimum yerləşdirmə yolu ilə optimallaşdırılmır.

Bu layihədə əlaqə intervalları standart dəyərlər olaraq qalıb.

Qul Gecikməsi

Cib telefonuna göndəriləcək heç bir məlumat olmadıqda, cihaz isteğe bağlı olaraq cib telefonundan gələn bəzi əlaqə mesajlarını görməzdən gələ bilər. Bu, Tx gücünə və təchizat cərəyanına qənaət edir. Slave Gecikmə ayarı, göz ardı edilməli olan əlaqə mesajlarının sayıdır. Varsayılan 0 -dır. Bu ayarı dəyişdirmək üçün lp_BLESerial setSlaveLatency () metodundan istifadə etmək olar.

Varsayılan Slave Gecikməsi 0, hər 30 saniyədə bir ekran yeniləmələrinə məhəl qoymadan ~ 5uA tədarük cərəyanı verdi, ancaq 5 saniyə ərzində keepAlive mesajları daxil edildi. Slave Gecikməsini 2 -yə təyin etmək, ~ 25uA -a yaxın bağlı bir təchizat cərəyanı verdi. Slave Gecikmə ayarı 4 ~ 20uA verdi. Daha yüksək parametrlər, tədarük cərəyanını azaltmadığı üçün 4 -cü bir Slave Gecikmə ayarı istifadə edildi.

Bağlandıqda, hər 30 saniyədə bir pfodApp bir ekran yeniləməsi tələb edir. Bu, sensor ölçməsini məcbur edir və qrafik ekranı yeniləmək üçün məlumatları geri göndərir. Bu yeniləmə, hər 30 saniyədə 2 saniyə əlavə ~ 66uA ilə nəticələnir. Bu 30 saniyə ərzində ortalama 4.4uA -dır. Bunu 20uA -ya əlavə edərək, ~ 25uA -a qədər bir orta əlaqə təchizatı cərəyanı verir

Addım 5: Ümumi Təchizat Cərəyanı və Batareya Ömrü

Lp_BLE_TempHumidity_R3.ino'da təyin edildiyi kimi yuxarıdakı parametrlərdən istifadə edərək, Bağlandıqda Ümumi Təchizat Cərəyanı və ekranı hər 30 saniyədə, təxminən 25uA -da yeniləyir. Qoşulmadıqda, təxminən 29uA -dır.

Batareya ömrünü hesablamaq üçün ~ 29uA davamlı bir cərəyan qəbul edilir.

Müxtəlif batareyalar fərqli tutumlara və gərginlik xüsusiyyətlərinə malikdir. Burada düşünülən batareyalar CR2032 sikkə hüceyrəsi, CR2450 (N) sikkə hüceyrəsi, 2 x AAA Qələvi, 2 x AAA Lityum və LiPodur.

Batareya Xülasəsi

Solar Assist istifadə edirsinizsə, bu batareya ömrü rəqəmlərinə 50% əlavə edin (gündə 8 saat işığı nəzərə alaraq)

Qeyd: 22uF LowESR kondansatörü (C1), göyərtədəki NanoV2 22uF kondansatörünə əlavə olaraq, Günəş Hüceyrəsi cərəyanını saxlayır və sonra TX cərəyan pulsları üçün təmin edir. Digər tərəfdən, batareya TX cərəyanının bir hissəsini təmin edir. Bu əlavə 22uF LowESR, günəş batareyası təchizat olmadıqda batareya cərəyanına təxminən 10% əlavə edir, həm də batareya ömrünün sonuna çatdıqca artan daxili daxili müqaviməti kompensasiya edərək batareyanın ömrünü uzadır. Aşağıdakı ölçülər əlavə 22 uF kondansatör olmadan alınmışdır.

CR2032 - 235mAHr - batareya ömrü 10 ayCR2450 (N) - 650mAHr (540mAHr) - Batareya ömrü 2.3 il (2 il) 2 x AAA Qələvi - 1250mAHr - Batareya ömrü 3.8.yaş 2 x AAA Lityum - 1200mAHr - Batareya ömrü 4.7 il təkrar oluna bilməz yüksək özünü axıdılması səbəbindən.

CR2032

Bu sikkə hücrəsi tipik olaraq 235mAHr (Energizer Batareyası), 3V nominal gərginliyi və 2V müəyyən bir boşaltma gərginliyinə malikdir. Batareyanın ömrü 8100 saat və ya ~ 0.9 ildir. Batareya ömrünün sonuna çatdıqda daxili hüceyrə müqaviməti artır və buna görə də ən yüksək Tx cərəyanını təmin edə bilməyəcək. Bu təsiri azaltmaq üçün daha böyük bir təchizat kondansatörü istifadə edilə bilər, ancaq 10 aylıq ömür.

CR2450 (N)

Bu sikkə hücrəsi tipik olaraq 620mAHr (CR2450N üçün 540mAHr), 3V nominal gərginlik və 2V müəyyən edilmiş boşaltma gərginliyinə malikdir. Bu, 22, 400 saat və ya ~ 2 il 6 m (CR2450N üçün 18600 saat ~ 2 il 2 m) bir batareyanın ömrünü nəzərdə tutur. Batareya ömrünün sonuna çatdıqda daxili hüceyrə müqaviməti artır və buna görə də ən yüksək Tx cərəyanını təmin edə bilməyəcək. Bu təsiri azaltmaq üçün daha böyük bir təchizat kondansatörü istifadə edilə bilər, ancaq 2 il 4m (2yr N) ömrü deyək.

Qeyd: CR2450N versiyasının daha qalın bir dodağı var ki, bu da CR2450N tutucusuna yanlış quraşdırmanın qarşısını alır. Bir CR2450 tutucusuna bir CR2450N və CR2450 hüceyrəsi daxil edə bilərsiniz, ancaq bir CR2450N tutucusuna bir CR2450 hüceyrəsi daxil edə bilməzsiniz

2 x AAA qələvi hüceyrələri

Bu batareyalar çox aşağı cərəyanlar üçün təxminən 1250mAHr (Energizer Batareyası), 2x1.5V = 3V nominal gərginliyi və 2x0.8V = 1.6V müəyyən bir boşaltma gərginliyinə malikdir. Ancaq bu boşalma gərginliyi Si7021 sensorunun işləmə gərginliyindən (1.9V) daha azdır, buna görə də batareya yalnız ~ 1V -ə qədər istifadə edilə bilər. Bu, tutumu təxminən 10% - 15% azaldır, yəni ~ 1000mAHr.

Bu, 34, 500 saat və ya ~ 4 il batareyanın ömrünü nəzərdə tutur. Batareya ömrünün sonuna çatdıqda daxili hüceyrə müqaviməti artır və buna görə də ən yüksək Tx cərəyan pulslarını təmin edə bilməyəcək. Bu təsiri azaltmaq üçün daha böyük bir təchizat kondansatörü istifadə edilə bilər, ancaq 3 il 10m ömrü deyin. Qeyd Qələvi batareyalar ildə 2% -dən 3% -ə qədər özünü boşaldır.

2 x AAA Lityum hüceyrə

Bu batareyalar təxminən 1200 mAhr (Enerji Batareyası), nominal cərəyanı 2x1.7V = 3.4V, aşağı cərəyanlarda və 2x1.4V = 2.4V boşaldılmış bir gərginliyə malikdir. Bu, 41, 400 saat və ya 4 il 8 m batareyanın ömrünü nəzərdə tutur.

LiPo Şarj Edilə bilən Batareya

Bu batareyalar düz formatda 100mAHr -dən 2000mAHr -ə qədər müxtəlif tutumlarda gəlir və 4.2V yüklənmiş gərginliyə və> 2.7V boşalma gərginliyinə malikdir. Bununla birlikdə, ayda 2% -3% (yəni ildə 24% -dən 36% -ə qədər) yüksək öz-özünə boşalma qabiliyyətinə malikdirlər və buna görə də digər batareyalar kimi bu tətbiq üçün uyğun deyillər.

Addım 6: Alternativ Təchizat - Günəş Yardımı, Yalnız Batareya, Yalnız Günəş

Alternativ Təchizat - Günəş Köməkçisi, Yalnız Batareya, Yalnız Günəş
Alternativ Təchizat - Günəş Köməkçisi, Yalnız Batareya, Yalnız Günəş
Alternativ Təchizat - Günəş Köməkçisi, Yalnız Batareya, Yalnız Günəş
Alternativ Təchizat - Günəş Köməkçisi, Yalnız Batareya, Yalnız Günəş
Alternativ Təchizat - Günəş Köməkçisi, Yalnız Batareya, Yalnız Günəş
Alternativ Təchizat - Günəş Köməkçisi, Yalnız Batareya, Yalnız Günəş
Alternativ Təchizat - Günəş Köməkçisi, Yalnız Batareya, Yalnız Günəş
Alternativ Təchizat - Günəş Köməkçisi, Yalnız Batareya, Yalnız Günəş

Batareya və Günəş Köməkçisi

Yuxarıdakı quruluşda Batareya və Günəş Yardımı təchizatı istifadə olunur. Günəş panelləri batareya gərginliyindən daha çox gərginlik yarandıqda, günəş hüceyrələri monitoru işlədəcək, buna görə də batareyanın ömrünü uzadacaq. Tipik olaraq, batareyanın ömrü başqa 50%artırıla bilər.

İstifadə olunan günəş panelləri kiçik, 50 mm x 30 mm, ucuz, ~ 0,50 dollar və aşağı gücdür. Nominal olaraq 5V panellərdir, lakin 5V yaratmaq üçün tam birbaşa parlaq günəş işığına ehtiyac var. Bu layihədə iki panel ardıcıl olaraq bağlanır, belə ki, monitoru pəncərənin yaxınlığında, birbaşa günəş işığı olmayan yerə yerləşdirmək, batareyanın gücünü əvəz etmək üçün kifayətdir. Günəş hüceyrələrinin> 33uA -da> 3.3V istehsal etməsi və batareyadan götürməsi üçün yaxşı işıqlandırılmış otaq və ya masa lampası belə kifayətdir.

İstilik / Nəmlik Monitorunun günəşdən kənarda yerləşdirilə biləcəyini və hələ də günəş enerjisi ilə işləyəcəyini təyin etmək üçün sadə bir test paneli quruldu. Yuxarıdakı fotoşəkildən göründüyü kimi, 100K rezistora qoşulan iki panel 100K boyunca 5.64V, yəni 5.64V -də 56uA cərəyan verir. Bu, monitoru batareyadan enerji ilə təmin etməkdən artıqdır. 3V nominal batareya gərginliyindən yuxarı olan hər hansı bir gərginlik, günəş batareyalarının batareya yerinə monitoru işlədəcəyi deməkdir.

Temperatur Rütubət Monitoru dövrəsindəki iki diod, günəş hüceyrələrini və batareyaları bir -birindən təcrid edir və onları əks polariteye bağlamaqdan qoruyur. 10V 1W zener və 470R seriyalı rezistor, NanoV2-nin bort tənzimləyicisini tam günəşdə, xüsusən də 5V əvəzinə 12V hüceyrələr istifadə edildikdə, iki günəş batareyasının həddindən artıq gərginliyindən qoruyur. <5V -da normal işdə 10V zener yalnız ~ 1uA çəkir.

Yalnız Batareya

Yalnız Batareya Təchizatı üçün R1, D1 və D3 və günəş hüceyrələrini buraxın. Ters polaritenin qorunmasını istəmirsinizsə, D1 -i bir tel parçası ilə də əvəz edə bilərsiniz.

Yalnız Günəş

Monitörü yalnız Solar Cells -dən, heç bir batareyası olmadan, fərqli bir enerji təchizatı dövrəsi tələb edir. Məsələ burasındadır ki, monitor 29uA -da işləyərkən, nRF52 0.32 saniyə ərzində ~ 5mA çəkir. Yuxarıda göstərilən sxem (pdf versiyası), MAX8881 tənzimləyicisini 2 x 1000uF giriş kondansatörləri 4.04V -ə qədər şarj edənə qədər söndürür. Sonra MAX6457, nRF52 (NanoV2) gücünü artırmaq üçün MAX8881 SHDN girişini buraxır 2 x 1000uF kondansatörler lazımi başlanğıc cərəyanını təmin edir.

Bu, kifayət qədər günəş enerjisi olduğu anda monitorun 29uA -da işləməsinə imkan verir.

Addım 7: Nəticə

Bu təlimat, nRF52832 çipi üçün Arduinoda çox aşağı enerji BLE layihəsi olaraq bir batareya/günəş enerjisi ilə işləyən Temperatur Rütubət Monitorunu təqdim etdi. ~ 29uA təchizatı cərəyanları, əlaqə parametrlərinin tənzimlənməsi ilə əldə edilir. Bu, CR2032 sikkə hüceyrə batareyasının ömrünün 10 aydan çox olması ilə nəticələndi. Daha yüksək tutumlu sikkə hüceyrələri və batareyalar üçün daha uzun. İki ucuz günəş batareyası əlavə etmək, batareyanın ömrünü 50% və ya daha çox uzatdı. Günəş batareyalarından monitoru gücləndirmək üçün parlaq bir otaq işığı və ya bir masa lampası kifayətdir.

Monitörün aşağı tutumlu günəş batareyalarından işləməsinə imkan verən xüsusi bir güc dövrəsi təqdim edildi.

Pulsuz pfodDesigner, menyuları/alt menyuları tərtib etməyə, tarixə/saata və məlumatları qeyd etməyə və sonra sizin üçün aşağı güclü Arduino eskizini yaratmağa imkan verir. Burada xüsusi bir interfeys pfodApp rəsm primitivlərindən istifadə edərək kodlaşdırılmışdır. PfodApp ilə əlaqə istifadəçi interfeysini göstərir və monitor ~ 29uA istifadə edərkən oxunuşları yeniləyir

Android proqramlaşdırma tələb olunmur. pfodApp bütün bunları idarə edir.

Tövsiyə: