Talaan ng mga Nilalaman:

Madali Napakababang Power BLE sa Arduino Bahagi 2 - Temperatura / Humidity Monitor - Rev 3: 7 Mga Hakbang
Madali Napakababang Power BLE sa Arduino Bahagi 2 - Temperatura / Humidity Monitor - Rev 3: 7 Mga Hakbang

Video: Madali Napakababang Power BLE sa Arduino Bahagi 2 - Temperatura / Humidity Monitor - Rev 3: 7 Mga Hakbang

Video: Madali Napakababang Power BLE sa Arduino Bahagi 2 - Temperatura / Humidity Monitor - Rev 3: 7 Mga Hakbang
Video: Scentroid's CTAir Continuous Urban Air Quality Monitor Seminar A 12.08.2020 (Subtitled) 2024, Nobyembre
Anonim
Madali Napakababang Power BLE sa Arduino Bahagi 2 - Temperatura / Humidity Monitor - Rev 3
Madali Napakababang Power BLE sa Arduino Bahagi 2 - Temperatura / Humidity Monitor - Rev 3
Madali Napakababang Power BLE sa Arduino Bahagi 2 - Temperatura / Humidity Monitor - Rev 3
Madali Napakababang Power BLE sa Arduino Bahagi 2 - Temperatura / Humidity Monitor - Rev 3
Madali Napakababang Power BLE sa Arduino Bahagi 2 - Temperatura / Humidity Monitor - Rev 3
Madali Napakababang Power BLE sa Arduino Bahagi 2 - Temperatura / Humidity Monitor - Rev 3

Update: Ika-23 ng Nobyembre 2020 - Unang kapalit ng 2 x AAA na mga baterya mula noong ika-15 ng Enero 2019 ie 22months para sa 2xAAA AlkalineUpdate: Ika-7 ng Abril 2019 - Rev 3 ng lp_BLE_TempHumidity, nagdaragdag ng mga plot ng Petsa / Oras, gamit ang pfodApp V3.0.362 +, at auto throttling kapag nagpapadala data

Update: Ika-24 ng Marso 2019 - Rev 2 ng lp_BLE_TempHumidity, nagdaragdag ng higit pang mga pagpipilian sa plot at i2c_ClearBus

Ang itinuturo na ito, Isang Napakababang Mababang Temperatura ng Humidity Monitor, ay Bahagi 2 ng 3.

Bahagi 1 - Pagbuo ng Napakababang Mga aparato ng BLE Power na ginawa Madali sa Arduino ay sumasakop sa pag-aayos ng Arduino upang i-code ang nRF52 mababang mga aparato sa kuryente, ang module ng programa at sinusukat ang kasalukuyang supply. Saklaw din nito ang dalubhasa sa mababang timer ng kapangyarihan at mga kumpare at na-debund na input at gamit ang pfodApp upang kumonekta at makontrol ang nRF52 na aparato.

Bahagi 2 - Isang Napakababang Power Temperature Humidity Monitor, ang isang ito, ay sumasakop sa paggamit ng isang Redbear Nano V2 module at isang sensor ng temperatura / halumigmig ng Si7021 upang makabuo ng isang mababang power baterya / solar monitor. Saklaw din nito ang pagbabago ng Si7021 library upang maging mababang lakas, na tune ang BLE aparato upang mabawasan ang kasalukuyang pagkonsumo nito ng <25uA at pagdidisenyo ng isang pasadyang display ng temperatura / kahalumigmigan para sa iyong mobile.

Bahagi 3 - Saklaw ng isang Redbear Nano V2 Kapalit gamit ang iba pang mga modyul na batay sa nRF52 sa halip na Nano V2. Saklaw nito ang pagpili ng mga bahagi ng supply, konstruksyon, pag-aalis ng proteksyon sa chip ng nRF52 chip, gamit ang mga NFC pin bilang normal na GPIO, at pagtukoy sa isang bagong board ng nRF52 sa Arduino.

Ang itinuturo na ito ay isang praktikal na aplikasyon ng Bahagi 1 Pagbuo ng Napakababang Power BLE na mga aparato na ginawang Madali sa Arduino sa pamamagitan ng pagbuo ng isang Napakababang Power BLE Temperatura at Humidity Monitor. Tatakbo ang monitor nang maraming taon sa Coin Cell o 2 x AAA na mga baterya, kahit na mas matagal sa solar assist. Saklaw ng tutorial na ito ang pag-tune ng mga parameter ng BLE para sa mababang paggamit ng kuryente at kung paano paandarin ang iyong aparato mula sa baterya O baterya + solar O solar lamang.

Pati na rin ang pagpapakita ng kasalukuyang temperatura at halumigmig, ang monitor ay nag-iimbak ng huling 36 Hrs ng 10min na pagbabasa at ang huling 10 araw ng oras-oras na pagbabasa. Maaari itong mai-chart sa iyong Android mobile at ang mga halagang nai-save sa isang file ng log. Walang kinakailangang Programming sa Android, hinahawakan ng pfodApp ang lahat ng iyon. Ang display at charting ng Android ay ganap na kinokontrol ng iyong Arduino sketch upang maaari mo itong ipasadya kung kinakailangan.

Ang isang Redbear Nano V2 board ay ginagamit para sa bahagi ng nRF52832 BLE at isang Sparkfun Si7021 breakout board ang ginagamit para sa Temperature / Humidity Sensor. Ang isang binagong low power library ay ginagamit sa Si7021. Ang isang maliit na PCB ay idinisenyo upang hawakan ang NanoV2 at mga sangkap ng supply. Gayunpaman dahil walang ginagamit na mga sangkap na naka-mount sa ibabaw, maaari mo itong madaling maitayo sa vero board. Tatlong mga bersyon ng suplay ng kuryente ang sakop. i) Baterya plus Solar assist, ii) Baterya Lamang, iii) Solar Lamang. Ang opsyon na Solar Only ay walang anumang imbakan ng baterya at sa gayon ay tatakbo lamang kapag mayroong ilang ilaw. Sapat ang isang maliwanag na ilaw ng silid o lampara sa desk.

Balangkas

Ang proyektong ito ay may 4 kamag-anak na independiyenteng bahagi: -

  1. Pagpili ng Komponent at Konstruksiyon
  2. Code - Mababang Power Sensor Library, User Interface at Arduino Sketch
  3. Pagsukat sa Kasalukuyang at Buhay ng Baterya
  4. Mga Alternatibong Suplay - Solar Tumutulong, Baterya Lamang, Solar Lamang

Hakbang 1: Pagpili ng Component

Pagpili ng Bahagi

Tulad ng nabanggit sa Bahagi 1 - Ang bilis ng kamay sa pagkuha ng isang talagang mababang solusyon sa lakas ay upang gawin wala sa halos lahat ng oras, i-minimize ang kasalukuyang sa pamamagitan ng panlabas na pull-up / pull-down resistors sa mga input at walang anumang labis na mga sangkap. Gagamitin ng proyektong ito ang bawat isa sa mga trick na iyon upang makakuha ng isang mababang solusyon sa kuryente.

Ang bahagi ng nRF52832

Ang nRF52832 chip ay maaaring tumakbo sa isang power supply na nasa pagitan ng 1.7V at 3.6V (absolute max voltage 3.9V). Nangangahulugan ito na maaari mong mai-power ang chip nang direkta mula sa isang coin cell o 2 x AAA na baterya. Gayunpaman maingat na magdagdag ng isang boltahe regulator upang maprotektahan ang maliit na tilad mula sa higit sa volts. Ang labis na sangkap na ito ay may isang gastos sa kuryente, ngunit sa kaso ng board ng NanoV2 ang on-board regulator, TLV704, kumakain ng mas mababa sa 5.5uA max, karaniwang 3.4uA lamang. Para sa maliit na sobrang paggamit ng kuryente makakakuha ka ng proteksyon hanggang sa 24V na mga input ng supply.

Ang bahagi ng Si7021

Ang sensor ng Si7021 mismo ay nakakakuha ng karaniwang <1uA kapag hindi kumukuha ng isang pagsukat, ibig sabihin, sa Standby, at hanggang sa 4mA kapag nagpapadala ng data sa pamamagitan ng I2C. Dahil hindi kami patuloy na sumusukat, ang 4mA ay hindi isang makabuluhang bahagi ng average na kasalukuyang supply. Ang pagkuha ng isang pagbabasa nang 30 segundo ay nagdaragdag ng mas kaunti pagkatapos ng 1uA sa average na kasalukuyang supply, tingnan ang kasalukuyang mga sukat ng supply sa ibaba.

Mayroong dalawang kaagad na magagamit na mga board ng breakout ng Si7021. Isa mula sa Adafruit at isa mula sa Sparkfun. Ang isang mabilis na sulyap sa dalawang board ay sasabihin sa iyo na ang Adafruit board ay may maraming mga bahagi kaysa sa Sparkfun board, kaya't hilig mong piliin ang Sparkfun board. Ang pagtingin sa mga iskema para sa bawat board ay nagpapakita na ang Sparkfun board ay lamang ang hubad sensor at dalawang 4k7 pullup resisotors, habang ang Adafruit board ay may isang on-board, MIC5225, regulator na karaniwang kumukuha ng 29uA sa lahat ng oras. Ito ay makabuluhan kapag ang higit sa lahat ng kasalukuyang para sa natitirang circuit ay <30uA. Dahil mayroon na kaming isang regulator para sa nRF52832 chip, ang labis na sangkap na ito ay hindi kinakailangan at ang Si7021 ay maaaring pinalakas mula sa supply na 3.3V. Kaya ang proyektong ito ay gagamit ng breakout board ng Si7021 mula sa Sparkfun.

i-minimize ang kasalukuyang sa pamamagitan ng panlabas na pull-up / pull-down resistors sa mga input

Ang 4K7 I2C pullup resistors ay hindi partikular na mataas na halaga at kukuha ng 0.7mA kapag hinila pababa. Ito ay magiging isang problema kung saan sila saan sa isang switch ng switch na na-grounded sa mahabang panahon. Gayunpaman sa proyektong ito ang kasalukuyang sa pamamagitan ng mga resistors ay nai-minimize sa pamamagitan lamang ng paggamit ng interface ng I2C madalas at para sa isang maikling panahon lamang. Karamihan sa mga oras na ang mga linya ng I2C ay hindi ginagamit at mataas / tri-state kaya walang kasalukuyang dumadaloy sa mga resistors na ito.

Hakbang 2: Konstruksiyon

Konstruksyon
Konstruksyon
Konstruksyon
Konstruksyon
Konstruksyon
Konstruksyon

Ang proyekto ay itinayo sa isang maliit na PCB, ngunit dahil walang mga bahagi ng SMD, maaari itong kasing dali ng pagbuo gamit ang vero board. Ang PCB ay gawa ng pcbcart.com mula sa mga Gerber file na ito, TempHumiditySensor_R1.zip Ang PCB ay pangkalahatang layunin na sapat upang magamit para sa iba pang mga proyekto ng BLE.

Ang eskematiko ay ipinapakita sa itaas. Narito ang isang bersyon ng pdf.

Listahan ng Mga Bahagi

Tinatayang gastos bawat yunit hanggang Disyembre 2018, ~ US $ 62, hindi kasama ang pagpapadala at ang programmer mula sa Bahagi 1

  • Redbear NanoV2 ~ US $ 17
  • Sparkfun Si7021 breakout board ~ US $ 8
  • 2 x 53mm x 30mm 0.15W 5V solar cells hal. Overfly ~ US $ 1.10
  • 1 x PCB TempHumiditySensor_R1.zip ~ US $ 25 para sa 5 off www.pcbcart.com O Vero board (strip copper) hal. Jaycar HP9540 ~ AUD $ 5
  • 2 x 1N5819 schottky diodes hal. Digikey 1N5819FSCT-ND ~ US $ 1
  • 1 x 470R 0.4W 1% risistor hal. Digikey BC3274CT-ND ~ US $ 0.25
  • 6 x 6 pin male header pin hal. Sparkfun PRT-00116 ~ US $ 1.5
  • babae hanggang babae jumper hal. Adafruit ID: 1950 ~ US $ 2
  • 3mm x 12mm nylon screws, hal. Jaycar HP0140 ~ AUD $ 3
  • 3mm x 12mm nylon nut, hal. Jaycar HP0146 ~ AUD $ 3
  • Scotch Permanent Mounting Tape Cat 4010 hal. mula sa Amazon ~ US $ 6.6
  • AAA x 2 na may hawak ng baterya, hal. Sparkfun PRT-14219 ~ US $ 1.5
  • 2 x AAA 750mA Alkaline na mga baterya, hal. Sparkfun PRT-09274 ~ US $ 1.0 Ang mga baterya na ito ay dapat tumagal> 2yrs. Ang Energizer Alkaline Baterya ay may mas mataas na kapasidad
  • Plastic Box (ABS) 83mm x 54mm x 31mm, hal. Jaycar HB6005 ~ AUD $ 3
  • pfodApp ~ US $ 10
  • 1 x 22uF 63V Mababang ESR Capacitor (Opsyonal) hal. Jaycar RE-6342 ~ AUD $ 0.5 o Digikey P5190-ND ~ US $ 0.25

Ang konstruksyon ay tuwid na pasulong. Ang may hawak ng baterya at mga solar cell ay naka-secure sa plastic box na may mabibigat na tungkulin na dobleng sided tape.

Tandaan ang wire link ng Gnd mula sa CLK hanggang GND sa natapos na bahagi. Naka-install ito MATAPOS ang programa upang maiwasan ang ingay sa input ng CLK mula sa pagpapalitaw ng nRF52 chip sa isang mataas na kasalukuyang debug mode

Hakbang 3: Code - Mababang Power Sensor Library, User Interface at Arduino Sketch

Code - Mababang Power Sensor Library, User Interface at Arduino Sketch
Code - Mababang Power Sensor Library, User Interface at Arduino Sketch
Code - Mababang Power Sensor Library, User Interface at Arduino Sketch
Code - Mababang Power Sensor Library, User Interface at Arduino Sketch
Code - Mababang Power Sensor Library, User Interface at Arduino Sketch
Code - Mababang Power Sensor Library, User Interface at Arduino Sketch

I-download ang zip code, lp_BLE_TempHumidity_R3.zip, at i-unzip ito sa iyong direktoryo ng Arduino Sketches. Kailangan mo ring i-install ang lp_So7021 library mula sa zip file na ito at i-install din ang pfodParser library.

Mababang Power Sensor Library, lp_Si7021

Ang parehong Adafruit at Sparkfun ay nagbibigay ng mga library ng suporta upang ma-access ang sensor ng Si7021, subalit ang parehong mga aklatan na iyon ay hindi angkop para sa napakababang paggamit ng kuryente. Ang pareho ay gumagamit ng isang pagkaantala (25) sa code upang maantala ang pagbabasa ng sensor habang kumukuha ito ng pagsukat. Tulad ng nabanggit sa Bahagi 1 Mga pagkaantala ay Masama. Ang pagkaantala ng Arduino () ay pinapanatili lamang ang micro-processor na tumatakbo gamit ang lakas habang hinihintay nito ang pagkaantala ng oras. Sinisira nito ang unang panuntunan ng mababang lakas na BLE, huwag gumawa ng halos lahat ng oras. Ang kapalit na lp_Si7021 library, pinapalitan ang lahat ng mga pagkaantala ng lp_timers na pinatulog ang micro-processor habang hinihintay ang sensor na matapos ang pagsukat nito.

Gaano karaming pagkakaiba ang ginagawa ng lp_Si7021 library? Gamit ang orihinal na SparkFun Si7021 suporta library at pagkuha ng isang pagbabasa sa isang segundo nang walang anumang mga Serial na mga kopya, gumuhit ~ 1.2mA average. Ang pagpapalit ng Sparkfun library ng lp_Si7021 library ay binabawasan ang average na kasalukuyang hanggang ~ 10uA, ibig sabihin, 100 beses na mas mababa. Sa proyektong ito ang pinakamabilis na rate ng pagsukat ay isang beses bawat 30 segundo kapag nakakonekta ang mobile, na nagreresulta sa isang average na kasalukuyang sensor na mas mababa sa 1uA. Kapag walang koneksyon sa BLE ang rate ng pagsukat ay isang beses bawat 10 minuto at ang average na kasalukuyang supply ng sensor ay bale-wala.

User Interface

Sa itaas ay ang pangunahing display ng screen at isang naka-zoom na view ng 10 araw-oras na kasaysayan. Ang mga plots ay maaaring ma-zoom at ma-pan sa parehong direksyon, gamit ang dalawang daliri.

Ang interface ng gumagamit ay naka-code sa Arduino sketch at pagkatapos ay ipinadala sa pfodApp sa unang koneksyon kung saan ito naka-cache para sa paulit-ulit na paggamit at pag-update. Ang grapikong display ay binuo mula sa pagguhit ng mga primitibo. Tingnan ang Mga Kontrol ng Pasadyang Arduino para sa Android para sa isang tutorial sa kung paano bumuo ng iyong sariling mga kontrol. Ang mga Thermometer, RHGauge at Button file ay naglalaman ng mga utos ng pagguhit para sa mga item na iyon.

Tandaan: Wala kung ang display na ito ay binuo sa pfodApp. Ang buong display ay ganap na kinokontrol ng code sa iyong Arduino sketch

Ang sendDrawing_z () na pamamaraan sa lp_BLE_TempHumidity_R3.ino sketch ay tumutukoy sa interface ng gumagamit.

walang bisa ang sendDrawing_z () {dwgs.start (50, 60, dwgs. WHITE); // mga default sa background sa PUTI kung tinanggal ibig sabihin magsimula (50, 60); parser.sendRefreshAndVersion (30000); // re-request dwg bawat 30sec sec. hindi ito papansinin kung walang itinakdang bersyon ng parser // pindutin ang mga pindutan sa itaas upang pilitin ang mga pag-update sa display dwgs.touchZone (). cmd ('u'). laki (50, 39). ipadala (); dwgs.pushZero (35, 22, 1.5); // ilipat ang zero sa gitna ng dwg sa 35, 22 at sukatan ng 1.5 beses rhGauge.draw (); // iguhit ang control dwgs.popZero (); dwgs.pushZero (18, 33); // ilipat ang zero sa gitna ng dwg sa 18, 33 scale ay 1 (default) thermometer.draw (); // iguhit ang control dwgs.popZero ();

dwgs.pushZero (12.5, 43, 0.7); // ilipat ang zero sa gitna ng dwg sa 12.5, 43 at sukatan ng 0.7

hrs8PlotButton.draw (); // iguhit ang control dwgs.popZero (); dwgs.pushZero (37.5, 43, 0.7); // ilipat ang zero sa gitna ng dwg sa 37.5, 43 at sukatan ng 0.7 araw1Plotbutton.draw (); // iguhit ang control dwgs.popZero ();

dwgs.pushZero (12.5, 54, 0.7); // ilipat ang zero sa gitna ng dwg sa 12.5, 54 at sukatan ng 0.7

araw3PlotButton.draw (); // iguhit ang control dwgs.popZero (); dwgs.pushZero (37.5, 54, 0.7); // ilipat ang zero sa gitna ng dwg sa 37.5, 54 at sukatan ng 0.7 araw10Plotbutton.draw (); // iguhit ang control dwgs.popZero (); dwgs.end (); }

Ang mga command na pushZero ay binabago ang pinagmulan at pag-scale para sa pagguhit ng susunod na bahagi. Hinahayaan ka nitong madaling baguhin ang laki at posisyon ng mga pindutan at gauge.

Sa unang koneksyon ang paunang pagpapakita ay tumatagal ng 5 o 6 sec upang pababa na ma-load ang ~ 800 bytes na tumutukoy sa display. Ang cache ng pfodApp ay ang cache kaya't ang mga pag-update sa hinaharap ay kailangan lamang magpadala ng mga pagbabago, sukatin ang mga posisyon at pagbabasa. Ang mga pag-update na ito ay tumatagal lamang ng ilang segundo upang maipadala ang 128 bytes na kailangang i-update ang display.

Mayroong limang (5) mga aktibong touch zone na tinukoy sa display. Ang bawat pindutan ay may isang tinukoy sa paraan ng pagguhit () nito, kaya maaari mo itong i-click upang buksan ang kani-kanilang balangkas, at ang tuktok na kalahati ng screen ay na-configure bilang pangatlong touch zone

dwgs.touchZone (). cmd ('u'). laki (50, 39). ipadala ();

Kapag nag-click ka sa screen sa itaas ng mga pindutan, ang 'u' dwg utos ay ipinadala sa iyong sketch upang pilitin ang isang bagong pagsukat at pag-update sa screen. Karaniwan kapag nakakonekta, nangyayari lamang ang mga pag-update tuwing 30sec. Ang bawat pag-click o pag-refresh ng pagguhit ay pinipilit ang isang bagong pagsukat. Ang tugon mula sa Arduino sketch sa pfodApp ay naantala hanggang sa makumpleto ang bagong pagsukat (~ 25mS) upang ang pinakabagong halaga ay maipadala sa pag-update.

Arduino Sketch

Ang Arduino Sketch, lp_BLE_TempHumidity_R3.ino, ay isang pinahusay na bersyon ng halimbawang sketch na ginamit sa Bahagi 1. Ang lp_BLE_TempHumidity_R3.ino sketch ay pinapalitan ang menu ng guhit na ipinakita sa itaas. Nagdaragdag din ito ng suporta sa sensor ng lp_Si7021 at mga array ng data upang maiimbak ang 10 min at oras-oras na pagsukat sa kasaysayan.

Ang pangunahing komplikasyon sa lp_BLE_TempHumidity_R3.ino sketch ay upang hawakan ang pagpapadala ng data ng balangkas. Bilang ng mga sukat ay ginawang readRHResults () humahawak sa pagkolekta ng mga resulta at i-save ang mga ito sa mga makasaysayang arrays. Ang mga array ay may haba na 120 ngunit kapag naipadala ang data ang unang 30 mga puntos ng data ay para sa isang mas pinong agwat ng oras.

Mayroong ilang mga puntos na kailangang alagaan kapag nagpapadala ng 200 kakaibang mga puntos ng balangkas upang ipakita: -

  1. Ang bawat data point ay ~ 25 bytes ang haba, sa format ng teksto ng CSV. Kaya't ang 150 puntos ay 3750 bytes ng data. Ang klase ng lp_BLESerial ay mayroong 1536 byte buffer, 1024 na kung saan ay sapat na malaki para sa pinakamalaking mensahe ng pfod. Ang iba pang 512 bytes ay nakalaan para sa pagpapadala ng data. Kapag napunan na ng data ng kasaysayan ang 512 bytes, ang pagpapadala ng karagdagang data ay naantala hanggang may puwang sa buffer.
  2. Upang maiwasan ang data ng balangkas na nagpapabagal sa pangunahing mga update sa display, ipinapadala lamang ang data ng balangkas habang ipinapakita ang screen ng plot. Kapag ang user ay bumalik sa pangunahing screen, ang pagpapadala ng data ng balangkas ay naka-pause. Ang pagpapadala ng data ng balangkas ay ipagpatuloy kapag nag-click ang gumagamit sa isang pindutan ng balangkas upang maipakita muli ang isang lagay ng lupa.
  3. Ang mga makasaysayang balangkas ay nagsisimula sa 0 (ngayon) at pabalik sa oras. Kung walang bagong pagsukat mula nang maipakita ang huling balangkas, ang nakaraang data na na-download na ay ipinakita lamang agad. Kung mayroong isang bagong pagsukat, pagkatapos ay idinagdag ito sa nakaraang data ng balangkas.
  4. Kapag ang monitor ay unang pinalakas, walang mga pagbasa sa kasaysayan at 0 ay nakaimbak sa mga array bilang isang hindi wastong pagbabasa. Kapag ipinakita ang balangkas, ang mga hindi wastong pagbasa ay lalaktawan lamang, na magreresulta sa isang mas maikling balangkas.

Celsius at Fahrenheit

Ang lp_BLE_TempHumidity_R3.ino sketch ay nagpapakita at naglalagay ng data sa Celsius. Upang mai-convert ang mga resulta sa Fahrenheit palitan ang lahat ng mga paglitaw ng

parser.print (sensor. Temp_RawToFloat (..

kasama si

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

At palitan ang simbolo ng unicode degC sa Octal / 342 / 204 / 203 ng simbolo ng degF / 342 / 204 / 211

Ipapakita ng pfodApp ang anumang Unicode na maipapakita ng mobile mo.

Tingnan ang Paggamit ng mga Non-ASCII chars sa Arduino para sa karagdagang detalye. Baguhin din ang mga setting ng MIN_C, MAX_C sa Thermometer.h. Panghuli ayusin ang mga limitasyon sa balangkas ayon sa nais mo hal. baguhin | Temp C ~ 32 ~ 8 ~ deg C |

para sabihin

| Temp F ~ 90 ~ 14 ~ deg F |

Hakbang 4: Pagsukat sa Kasalukuyang Suplay

Pagsukat sa Kasalukuyang Suplay
Pagsukat sa Kasalukuyang Suplay

Ang paggamit ng lp_Si7021 library, kahit na ang pagkuha ng pagsukat ng temperatura / kahalumigmigan bawat 10 sec ay nag-aambag lamang ~ 1uA sa average na kasalukuyang supply, kaya ang pangunahing kadahilanan sa kasalukuyang supply at samakatuwid ang buhay ng baterya ay ang kasalukuyang ginagamit ng BLE advertising at koneksyon at paghahatid ng data.

Ikonekta ang board ng Temperatura / Humidity sa Programmer na inilarawan sa Bahagi 1 tulad ng ipinakita sa itaas.

Gamit ang mga solar cell at baterya na hindi naka-plug, ang Vin at Gnd ay konektado sa Vdd at Gnd ng programmer (ang Yellow at Green lead) at ang SWCLK at SWDIO ay kumonekta sa Clk at SIO ng programmer header board (ang Blue at Pink lead)

Maaari mo na ngayong i-program ang NanoV2 at sukatin ang kasalukuyang supply tulad ng inilarawan sa Bahagi 1.

I-install ang low power Si7021 library mula sa zip file na ito, lp_Si7021.zip at i-install ang pfodParser library at i-unzip lp_BLE_TempHumidity_R3.zip sa iyong direktoryo ng Sketch ng Arduino at i-program ang Temp / Humditiy board na may lp_BLE_TempHumidity_R3.ino

Tulad ng nabanggit sa itaas ng kontribusyon ng sensor ay <1uA, average, sa pinakamataas na rate ng pagsukat na ginamit sa proyektong ito, kaya ang BLE advertising at mga parameter ng koneksyon ang tumutukoy sa kadahilanan para sa buhay ng baterya.

Ang mga parameter ng BLE advertising at koneksyon na nakakaapekto sa kasalukuyang pagkonsumo ay: -Tx Power, Advertising Interval, Max at Min Connection Intervals, at Slave Latency.

Tandaan: Gamit ang mga koneksyon sa itaas mayroong dalawang (2) mga regulator sa supply, isa sa NanoV2 board sa pamamagitan ng Vin at MAX8881 sa supply ng programmer. Nangangahulugan ito na ang sinusukat na mga alon ng supply ay magiging ~ 5uA mas mataas kaysa sa aktwal, dahil sa pangalawang regulator. Ang mga halagang binanggit sa ibaba ay ang mga sinusukat na alon na binawas sa sobrang 5uA na ito.

Tx Lakas

Nagbibigay ang Tx Power effects ng kasalukuyang pareho kapag nakakonekta at kapag nag-a-advertise (hindi konektado). Gumagamit ang proyektong ito ng maximum na setting ng kuryente (+4) at nagbibigay ng pinakamahusay na saklaw at pinakadakilang kaligtasan sa ingay para sa mga pinaka maaasahang koneksyon. Maaari mong gamitin ang lp_BLESerial setTxPower () na pamamaraan upang mabago ang setting ng kuryente. Ang mga wastong halaga ay, sa pagtaas ng lakas, -40, -30, -20, -16, -12, -8, -4, 0 +4. Dapat mong tawagan ang lp_BLESerial start () na pamamaraan BAGO ka tumawag sa setTxPower (). Tingnan ang lp_BLE_TempHumidity_R3.ino sketch.

Maaari kang mag-eksperimento sa pagbawas ng Tx Power, ngunit ang kompromiso ay mas maikli ang saklaw at higit na maraming mga koneksyon ang nag-drop out dahil sa pagkagambala. Sa proyektong ito ang Tx Power ay naiwan sa default nito, +4. Tulad ng makikita mo sa ibaba, kahit na sa setting na ito, posible pa rin ang napakababang supply.

Advertising Interval

Para sa isang naibigay na Tx Power, kapag walang koneksyon, itinatakda ng Advertising Interval ang average na kasalukuyang pagkonsumo. Ang inirekumendang saklaw ay 500 hanggang 1000mS. Dito ginamit ang 2000mS. Ang kompromiso ay ang mas mahabang agwat ng advertising ay nangangahulugang mas mabagal para sa iyong mobile na makahanap ng aparato at mag-set up ng isang koneksyon. Sa panloob, ang mga agwat ng advertising ay itinakda sa mga multiply ng 0.625mS sa saklaw na 20mS hanggang 10.24sec. Ang lp_BLESerial setAdvertisingInterval () na pamamaraan ay tumatagal ng mS bilang pagtatalo, para sa kaginhawaan. Para sa +4 TxPower at 2000mS agwat ng advertising ang kasalukuyang pagkonsumo ay ~ 18uA. Para sa 1000mS agwat ng advertising, ito ay ~ 29uA. Gumamit ang Rev 2 ng agwat sa advertising na 2000mS ngunit nagresulta ito sa mabagal na koneksyon. Ang Rev 3 ay binago sa agwat ng advertising na 1000mS upang gawing mas mabilis ang mga koneksyon.

Mga Agwat ng Max at Min na Koneksyon

Kapag naitatag ang isang koneksyon, tinutukoy ng agwat ng koneksyon kung gaano kadalas na nakikipag-ugnay ang mobile sa aparato. Hinahayaan ka ng lp_BLESerial setConnectionInterval () na itakda ang iminungkahing max at min, subalit kinokontrol ng mobile kung ano talaga ang agwat ng koneksyon. Para sa kaginhawaan ang mga argumento upang itakda angConnectionInterval () ay nasa mS, ngunit sa panloob ang mga agwat ng koneksyon ay nasa maramihang 1.25mS, sa saklaw na 7.5mS hanggang 4sec.

Ang default na setting ay itinakdaConnectionInterval (100, 150) ibig sabihin, min 100mS hanggang max 150mS. Ang pagdaragdag ng mga halagang ito ay binabawasan ang kasalukuyang supply habang nakakonekta, ngunit ang kompromiso ay mas mabagal na paghahatid ng data. Ang bawat pag-update ng screen ay tumatagal ng tungkol sa 7 mga mensahe ng BLE, habang ang isang buong 36 na oras na 10 minutong pagsukat ay tumatagal ng halos 170 BLE na mensahe. Kaya't ang pagdaragdag ng mga agwat ng koneksyon ay nagpapabagal sa mga pag-update sa screen at ipinapakita ang isang lagay ng lupa.

Ang klase ng lp_BLESerial ay may 1536 byte send buffer at nagpapadala lamang ng isang bloke ng 20 bytes mula sa buffer na ito, bawat agwat ng max na koneksyon upang maiwasan ang pagbaha sa link ng BLE sa data. Gayundin kapag nagpapadala ng data ng balangkas, nagpapadala lamang ang sketch ng data hanggang sa naghihintay na maipadala ang 512 bytes pagkatapos ay pagkaantala sa pagpapadala ng higit pang data hanggang sa maipadala ang ilang data. Iniiwasan nito ang pagbaha na magpadala ng buffer. Ang throttling ng mga nagpapadala na ito ay gumagawa ng paghahatid ng data sa mobile na maaasahan, ngunit hindi ito na-optimize para sa maximum sa pamamagitan ng paglalagay.

Sa proyektong ito ang mga agwat ng koneksyon ay naiwan bilang mga default na halaga.

Latency ng Alipin

Kapag walang data na ipadala sa mobile, maaaring opsyonal na huwag pansinin ng aparato ang ilan sa mga mensahe sa koneksyon mula sa mobile. Sine-save nito ang Tx Power at kasalukuyang supply. Ang setting ng Slave Latency ay ang bilang ng mga mensahe sa koneksyon upang hindi pansinin. Ang default ay 0. Ang lp_BLESerial setSlaveLatency () na pamamaraan ay maaaring magamit upang baguhin ang setting na ito.

Ang default na Slity Latency ng 0 ay nagbigay ~ 50uA kasalukuyang supply, hindi pinapansin ang mga pag-update ng screen bawat 30 sec, ngunit kasama ang mga keepAlive na mensahe ng 5 sec. Ang pagtatakda ng Slave Latency sa 2 ay nagbigay ng average na konektadong kasalukuyang supply ng ~ 25uA. Ang isang setting ng Latency Latency na 4 na ibinigay ~ 20uA. Ang mas mataas na mga setting ay tila hindi binawasan ang kasalukuyang supply kaya't ginamit ang isang setting ng Slave Latency na 4.

Kapag nakakonekta, bawat 30 sec na pfodApp ay humihiling ng isang pag-update sa display. Pinipilit nito ang pagsukat ng sensor at nagpapadala ng pabalik ng data upang ma-update ang grapikong display. Ang pag-update na ito ay nagreresulta sa isang sobrang ~ 66uA para sa 2 sec bawat 30 sec. Iyon ay isang average ng 4.4uA sa loob ng 30 sec. Ang pagdaragdag nito sa 20uA, ay nagbibigay ng isang average na kasalukuyang supply ng koneksyon ng ~ 25uA

Hakbang 5: Kabuuang Supply Kasalukuyang at Buhay ng Baterya

Gamit ang mga setting sa itaas, tulad ng nakatakda sa lp_BLE_TempHumidity_R3.ino, ang Kabuuang kasalukuyang Supply kapag Nakakonekta at ina-update ang display bawat 30 sec, humigit-kumulang 25uA. Kapag hindi nakakonekta, humigit-kumulang na 29uA.

Para sa pagkalkula ng buhay ng baterya ng isang patuloy na kasalukuyang gumuhit ng ~ 29uA ay ipinapalagay.

Ang iba't ibang mga baterya ay may mga pagkakaiba-iba na mga kakayahan at boltahe na katangian. Ang mga baterya na isinasaalang-alang dito ay CR2032 coin cell, CR2450 (N) coin cell, 2 x AAA Alkaline, 2 x AAA Lithium at LiPo.

Buod ng Baterya

Kung gumagamit ng Solar assist pagkatapos ay magdagdag ng 50% sa mga figure ng buhay ng baterya (sa pag-aakalang 8hr sa isang araw na ilaw)

Tandaan: Ang 22uF LowESR capacitor (C1), bilang karagdagan sa nakasakay sa NanoV2 22uF capacitor, iniimbak ang kasalukuyang Solar Cell at pagkatapos ay inaalok ito para sa kasalukuyang mga pulso ng TX. Iba pang matalino na ang baterya ay nagbibigay ng ilan sa kasalukuyang TX. Ang labis na 22uF LowESR na ito ay nagdaragdag ng tungkol sa 10% sa kasalukuyang baterya kapag ang solar cell ay hindi ang supply, ngunit pinahahaba din ang buhay ng baterya sa pamamagitan ng pagbabayad para sa tumataas na panloob na paglaban ng baterya habang ang baterya ay umabot sa pagtatapos ng buhay. Ang mga sukat sa ibaba ay kinuha Nang WALANG karagdagang 22uF capacitor.

CR2032 - 235mAHr - buhay ng baterya 10 buwanCR2450 (N) - 650mAHr (540mAHr) - buhay ng baterya 2.3 yrs (2yrs) 2 x AAA Alkaline - 1250mAHr - buhay ng baterya 3.8.yrs2 x AAA Lithium - 1200mAHr - buhay ng baterya 4.7 yrsLiPo rechargable - hindi inirerekumenda dahil sa mataas na paglabas ng sarili.

CR2032

Ang coin cell na ito ay may kapasidad na karaniwang 235mAHr (Energizer Battery), isang nominal na boltahe ng 3V at isang tinukoy na boltahe ng paglabas ng 2V. Nagpapahiwatig ito ng buhay ng baterya ng 8100hrs o ~ 0.9yr. Gayunpaman ang pagtaas ng panloob na paglaban ng cell habang ang baterya ay umabot sa pagtatapos ng buhay at sa gayon ay maaaring hindi maibigay ang rurok na Tx kasalukuyang mga pulso. Ang isang mas malaking supply capacitor ay maaaring magamit upang mabawasan ang epektong ito, ngunit sabihin na 10 buwan ang buhay.

CR2450 (N)

Ang cell ng coin na ito ay may kapasidad na karaniwang 620mAHr (540mAHr para sa CR2450N), isang nominal na boltahe ng 3V at isang tinukoy na boltahe ng paglabas ng 2V. Nagpapahiwatig ito ng buhay ng baterya ng 22, 400hrs o ~ 2yr 6m (18600hrs ~ 2yrs 2m para sa CR2450N). Gayunpaman ang pagtaas ng panloob na paglaban ng cell habang ang baterya ay umabot sa pagtatapos ng buhay at sa gayon ay maaaring hindi maibigay ang rurok na Tx kasalukuyang mga pulso. Ang isang mas malaking supply capacitor ay maaaring magamit upang mabawasan ang epektong ito, ngunit sabihin na 2yr 4m (2yr N) buhay.

Tandaan: Ang bersyon ng CR2450N ay may isang makapal na labi na makakatulong na maiwasan ang maling pag-install sa isang may-ari ng CR2450N. Maaari kang magpasok ng isang CR2450N at CR2450 na cell sa isang may-ari ng CR2450 ngunit hindi mo maaaring ipasok ang isang CR2450 na cell sa isang may-ari ng CR2450N

2 x AAA Alkaline cells

Ang mga baterya na ito ay may kapasidad na halos 1250mAHr (Energizer Battery) para sa napakababang alon, isang nominal na boltahe na 2x1.5V = 3V at isang tinukoy na boltahe ng paglabas ng 2x0.8V = 1.6V. Ngunit ang tinukoy na boltahe ng paglabas na ito ay mas mababa kaysa sa operating boltahe ng Si7021 sensor (1.9V) kaya ang baterya ay maaari lamang magamit pababa sa ~ 1V bawat isa. Binabawasan nito ang kapasidad ng halos 10% hanggang 15% ibig sabihin ~ 1000mAHr.

Nagpapahiwatig ito ng buhay ng baterya ng 34, 500hrs o ~ 4yr. Gayunpaman ang pagtaas ng panloob na paglaban ng cell habang ang baterya ay umabot sa pagtatapos ng buhay at sa gayon ay maaaring hindi maibigay ang rurok na Tx kasalukuyang mga pulso. Ang isang mas malaking supply capacitor ay maaaring magamit upang mabawasan ang epektong ito, ngunit sabihin 3yr 10m buhay. Tandaan Ang mga baterya ng alkalina ay may sariling pagpapalabas ng 2% hanggang 3% bawat taon.

2 x AAA na mga cell ng Lithium

Ang mga baterya na ito ay may kapasidad na halos 1200mAHr (Energizer Battery), isang nominal na boltahe ng 2x1.7V = 3.4V, sa mababang alon, at isang pinalabas na boltahe ng 2x1.4V = 2.4V. Nagpapahiwatig ito ng buhay ng baterya ng 41, 400hrs o 4yrs 8m.

LiPo Rechargable Baterya

Ang mga baterya na ito ay nagmula sa iba't ibang mga kapasidad mula sa 100mAHr hanggang 2000mAHr, sa mga flat format, at mayroong isang sisingilin na boltahe na 4.2V at isang pinalabas na boltahe ng> 2.7V. Gayunpaman mayroon silang isang mataas na paglabas sa sarili ng 2% -3% / buwan (ibig sabihin, 24% hanggang 36% bawat taon) at sa gayon ay hindi angkop para sa application na ito tulad ng iba pang mga baterya.

Hakbang 6: Mga Alternatibong Suplay - Solar Tumutulong, Baterya Lamang, Solar Lamang

Mga Alternatibong Suplay - Solar Tumutulong, Baterya Lamang, Solar Lamang
Mga Alternatibong Suplay - Solar Tumutulong, Baterya Lamang, Solar Lamang
Mga Alternatibong Suplay - Solar Tumutulong, Baterya Lamang, Solar Lamang
Mga Alternatibong Suplay - Solar Tumutulong, Baterya Lamang, Solar Lamang
Mga Alternatibong Suplay - Solar Tumutulong, Baterya Lamang, Solar Lamang
Mga Alternatibong Suplay - Solar Tumutulong, Baterya Lamang, Solar Lamang
Mga Alternatibong Suplay - Solar Tumutulong, Baterya Lamang, Solar Lamang
Mga Alternatibong Suplay - Solar Tumutulong, Baterya Lamang, Solar Lamang

Ang baterya plus Solar assist

Ang konstruksyon sa itaas ay gumagamit ng supply ng Baterya plus Solar assist. Kapag ang mga solar panel ay nakakalikha ng higit na boltahe kaysa sa boltahe ng baterya, ang mga solar cell ay magpapagana ng monitor, kaya't pinapalawak ang buhay ng baterya. Kadalasan ang buhay ng baterya ay maaaring mapalawak ng isa pang 50%.

Ang mga solar panel na ginamit ay maliit, 50mm x 30mm, mura, ~ $ 0.50, at mababang lakas. Ang mga ito ay nominally 5V panel, ngunit kailangan ng buong direktang maliwanag na sikat ng araw upang makabuo ng 5V. Sa proyektong ito ang dalawang mga panel ay konektado sa serye upang ang paglalagay ng monitor sa ilang kung saan malapit sa isang window, sa labas ng direktang araw, ay sapat upang mapalitan ang lakas ng baterya. Kahit na ang mahusay na naiilawan na silid, o isang desk lamp, ay sapat para sa mga solar cell upang makabuo ng> 3.3V sa> 33uA at sakupin ang baterya.

Ang isang simpleng panel ng pagsubok ay itinayo upang matukoy kung saan maaaring ilagay ang Temperatura / Humidity Monitor, sa labas ng araw at pinapagana pa rin ng solar. Tulad ng nakikita mo mula sa larawan sa itaas, ang dalawang mga panel na konektado sa isang 100K risistor ay gumagawa ng 5.64V sa buong 100K, ibig sabihin, 56uA kasalukuyang nasa 5.64V. Ito ay higit sa sapat na pagkuha ng pag-power sa monitor mula sa baterya. Ang anumang pagbabasa ng boltahe sa itaas ng nominal na boltahe ng baterya ng 3V ay nangangahulugang ang mga solar cell ay pinapatakbo ang monitor sa halip na ang baterya.

Ang dalawang diode sa Temperatura Humidity Monitor circuit ay ihiwalay ang mga solar cell at ang mga baterya mula sa bawat isa at nagbabantay laban sa pagkonekta sa kanila sa reverse polarity. Ang 10V 1W zener at 470R series resistor ay pinoprotektahan ang on-board regulator ng NanoV2 mula sa higit na boltahe mula sa dalawang solar cells sa buong araw, lalo na kung ang 12V cells ay naganap na gagamitin sa halip na 5V. Sa normal na operasyon sa <5V, ang 10V zener ay kumukuha lamang ng ~ 1uA.

Baterya Lamang

Para sa isang Supply lamang ng Baterya, alisin lamang ang R1, D1 at D3 at ang mga solar cells. Maaari mo ring palitan ang D1 ng isang piraso ng kawad kung hindi mo nais ang reverse proteksyon ng polarity.

Solar Lamang

Ang pagpapatakbo ng monitor mula sa mga Solar Cell lamang, na walang baterya, ay nangangailangan ng ibang circuit ng supply ng kuryente. Ang problema ay habang ang monitor ay gagana sa 29uA, sa lakas up ang nRF52 gumuhit ~ 5mA para sa 0.32 sec. Ang circuit na ipinakita sa itaas (bersyon ng pdf) ay humahawak sa regulator ng MAX8881 hanggang sa ang mga input capacitor, 2 x 1000uF, singilin hanggang sa 4.04V. Pagkatapos ang MAX6457 ay naglalabas ng MAX8881 SHDN input upang mapalakas ang nRF52 (NanoV2) Ang 2 x 1000uF capacitors ay nagbibigay ng kinakailangang kasalukuyang pagsisimula.

Hinahayaan nitong mapalakas ang monitor monitor sa sandaling mayroong sapat na solar power na panatilihin itong tumatakbo sa 29uA.

Hakbang 7: Konklusyon

Ang tutorial na ito ay nagpakita ng isang baterya / solar Powered Temperature Humidity Monitor bilang isang halimbawa napakababang proyekto na BLE sa Arduino para sa nRF52832 chip. Mga supply ng alon ng ~ 29uA kung saan nakamit sa pamamagitan ng pag-tune ng mga parameter ng koneksyon. Nagresulta ito sa buhay ng baterya ng CR2032 coin cell na lumalagpas sa 10 buwan. Mas mahaba para sa mas mataas na kapasidad na mga cell ng barya at baterya. Ang pagdaragdag ng dalawang murang solar cells ay madaling pinalawig ang buhay ng baterya ng 50% o higit pa. Ang isang maliwanag na ilaw ng silid o isang desk lamp ay sapat upang mapalakas ang monitor mula sa mga solar cell.

Ang isang espesyal na circuit ng kuryente ay ipinakita upang payagan ang monitor na patakbuhin ang pulos mula sa mababang mga kapasidad na solar cells.

Hinahayaan ka ng libreng pfodDesigner na magdisenyo ng mga menu / sub-menu, balangkas laban sa petsa / oras at mag-log data at pagkatapos ay makabuo ng mababang kapangyarihan na Arduino sketch para sa iyo. Dito naka-code ang isang pasadyang interface gamit ang mga primitive na pagguhit ng pfodApp. Ang pagkonekta sa pfodApp ay nagpapakita ng interface ng gumagamit at ina-update ang mga pagbabasa habang ang monitor ay gumagamit ng ~ 29uA

Walang kinakailangang programa sa Android. Hawak ng pfodApp ang lahat ng iyon.

Inirerekumendang: