Мазмуну:

Ардуинонун 2 -бөлүгүндө өтө аз кубаттагы BLE - Температура/Нымдуулуктун Монитору - Аян 3: 7 Кадамдар
Ардуинонун 2 -бөлүгүндө өтө аз кубаттагы BLE - Температура/Нымдуулуктун Монитору - Аян 3: 7 Кадамдар

Video: Ардуинонун 2 -бөлүгүндө өтө аз кубаттагы BLE - Температура/Нымдуулуктун Монитору - Аян 3: 7 Кадамдар

Video: Ардуинонун 2 -бөлүгүндө өтө аз кубаттагы BLE - Температура/Нымдуулуктун Монитору - Аян 3: 7 Кадамдар
Video: Using BTS7960 BTN8982TA PWM H Bridge motor controller module with Arduino library 2024, Ноябрь
Anonim
Arduino 2 -бөлүгүндө Easy Low Low BLE 2 - Температура/Нымдуулуктун Монитору - Аян 3
Arduino 2 -бөлүгүндө Easy Low Low BLE 2 - Температура/Нымдуулуктун Монитору - Аян 3
Arduino 2 -бөлүгүндө Easy Low Low BLE 2 - Температура/Нымдуулуктун Монитору - Аян 3
Arduino 2 -бөлүгүндө Easy Low Low BLE 2 - Температура/Нымдуулуктун Монитору - Аян 3
Arduino 2 -бөлүгүндө Easy Low Low BLE 2 - Температура/Нымдуулуктун Монитору - Аян 3
Arduino 2 -бөлүгүндө Easy Low Low BLE 2 - Температура/Нымдуулуктун Монитору - Аян 3

Жаңыртуу: 23 -жылдын 2020 -ноябры - 2019 -жылдын 15 -январынан тартып 2 x AAA батарейкасын алмаштыруу, башкача айтканда 22x 2AAA AlkalineUpdate: 7th April 2019 - Rev 3 of lp_BLE_TempHumidity, pfodApp V3.0.362+колдонуп, Дата/Убакыт пландарын кошот жана жөнөтүүдө автоматтык дроссель. маалыматтар

Жаңыртуу: 2019 -жылдын 24 -мартында - lp_BLE_TempHumidityтин Rev 2, дагы сюжет параметрлерин жана i2c_ClearBus кошот

Бул көрсөтмө, Абдан төмөн кубаттагы температура нымдуулук монитору, 3 -бөлүктүн 2си.

1 -бөлүк - Arduino жардамы менен өтө эле аз кубаттуу BLE түзмөктөрүн куруу Arduino кодун nRF52 аз кубаттуу түзмөктөргө, программалоо модулуна жана берүү агымын өлчөөгө камтыйт. Ал ошондой эле nRF52 түзмөгүнө туташуу жана көзөмөлдөө үчүн аз кубаттуулуктагы таймерлерди жана компараторлорду жана дебюндук киргизүүлөрдү жана pfodAppты колдонууну камтыйт.

2 -бөлүк - Абдан аз кубаттуулуктагы температура нымдуулугунун монитору, бул Redbear Nano V2 модулун жана Si7021 температура / нымдуулук сенсорун колдонуп, аз кубаттуу батареяны / күн мониторун курат. Ал ошондой эле Si7021 китепканасынын кубаттуулугун төмөндөтүүнү, BLE түзмөгүн <25uA керектөөнү азайтууну жана мобилдик телефонуңуз үчүн ыңгайлаштырылган температура/нымдуулук дисплейин иштеп чыгууну камтыйт.

3 -бөлүк - Redbear Nano V2 алмаштыруу Nano V2 ордуна башка nRF52 негизделген модулдарды колдонууну камтыйт. Бул камсыздоо компоненттерин тандоо, курулуш, nRF52 чип программалоо коргоосун алып салуу, NFC казыктарын кадимки GPIO катары колдонуу жана Arduinoдогу жаңы nRF52 тактасын аныктоону камтыйт.

Бул көрсөтмө 1 -бөлүктүн өтө аз кубаттуу BLE түзмөктөрүнүн практикалык колдонмосу, Arduino менен оңой жасалган, өтө аз кубаттуулуктагы BLE температурасы жана нымдуулугун көзөмөлдөөчү. Монитор көп жылдар бою Coin Cell же 2 x AAA батареялары менен иштейт, ал тургай күндүн жардамы менен. Бул окуу куралы аз энергия керектөө үчүн BLE параметрлерин тууралоону камтыйт жана аппаратты батарейкадан же батареядан + күндөн же күндөн гана иштетүү керек.

Учурдагы температураны жана нымдуулукту көрсөтүү менен бирге, монитор акыркы 36 саатта 10 мүнөт окууну жана акыркы 10 күндө сааттык окууларды сактайт. Булар сиздин Android мобилдик телефонуңузда жана баалуулуктар журнал файлына сакталган болот. Android программалоонун кереги жок, pfodApp мунун баарын чечет. Android дисплейи жана диаграммасы толугу менен сиздин Arduino эскизиңиз тарабынан көзөмөлдөнөт, андыктан аны талапка ылайыкташтырсаңыз болот.

Redbear Nano V2 тактасы nRF52832 BLE компоненти үчүн, ал эми Sparkfun Si7021 сынык тактасы Температура / Нымдуулук сенсору үчүн колдонулат. Өзгөртүлгөн аз кубаттуу китепкана Si7021 менен колдонулат. Кичинекей ПХБ NanoV2ди кармап туруу жана компоненттерди берүү үчүн иштелип чыккан. Бирок, колдонулуучу бетке орнотулган компоненттер жок болгондуктан, сиз муну vero тактасында оңой эле кура аласыз. Үч электр менен жабдуу версиясы камтылган. i) Батарея плюс Күндүн жардамы, ii) Батарея гана, iii) Күн гана. Solar Only опциясында батарейканын сактагычы жок, ошондуктан жарык болгондо гана иштейт. Жарык бөлмө жарыгы же стол чырагы жетиштүү.

Контур

Бул долбоор 4 салыштырмалуу көз карандысыз бөлүктөн турат:-

  1. Компоненттерди тандоо жана куруу
  2. Код - Төмөн кубаттуулуктагы сенсордук китепкана, колдонуучу интерфейси жана Arduino эскизи
  3. Жеткирүү учурун жана батареянын иштөө мөөнөтүн өлчөө
  4. Alternative Supply - Solar Assist, Battery Only, Solar Only

1 -кадам: Компоненттерди тандоо

Компоненттерди тандоо

1-бөлүктө айтылгандай-Чындыгында аз кубаттуулуктагы чечимди алуунун айла-амалы, көпчүлүк учурда эч нерсе кылбоо, агымдарды тышкы тартуу/түшүрүү каршылыгы аркылуу азайтуу жана кошумча компоненттери жок. Бул долбоор аз кубаттуулуктагы чечимди алуу үчүн ошол амалдарды колдонот.

NRF52832 компоненти

NRF52832 чипи 1.7V жана 3.6V (абсолюттук максималдуу чыңалуу 3.9V) ортосундагы электр энергиясы менен иштей алат. Бул чипти монетанын уячасынан же 2 х AAA батареясынан түз иштете алаарыңызды билдирет. Бирок чипти ашыкча вольттон коргоо үчүн чыңалуу жөндөгүчүн кошуу акылдуулукка жатат. Бул кошумча компонент электр энергиясынын наркы менен коштолот, бирок NanoV2 тактасында борттогу жөнгө салуучу TLV704 5.5uA максимумдан аз, адатта болгону 3.4uA керектейт. Бул кичинекей кошумча энергияны колдонуу үчүн 24Vга чейин камсыздоонун кирүүсүнөн коргоого ээ болосуз.

Si7021 компоненти

Si7021 сенсорунун өзү, эреже катары, <1uA өлчөйт, б.а. Күтүү режиминде, жана I2C аркылуу маалыматтарды өткөрүүдө 4mA чейин. Биз өлчөөнү үзгүлтүксүз жүргүзбөгөндүктөн, 4mA орточо берүү агымынын маанилүү бөлүгү эмес. Окууну 30 секунда алуу менен орточо жеткирүү агымына 1уАдан аз кошулат, төмөндөгү камсыздоо агымынын өлчөөлөрүн караңыз.

Эки жеткиликтүү Si7021 сындыруу тактасы бар. Бири Адафруттан, бири Спаркфундан. Эки тактаны тез кароо сизге Adafruit тактасында Sparkfun тактасына караганда көбүрөөк компоненттер бар экенин айтып берет, андыктан сиз Sparkfun тактасын тандагыңыз келет. Ар бир тактанын схемаларын карасак, Sparkfun тактайы жөн гана жылаңач сенсор жана 4k7 эки тартма резизотору экенин көрсөтүп турат, ал эми Adafruit тактасында дайыма 29uA тарткан бортунда MIC5225 регулятору бар. Бул чынжырдын калган бардык агымы <30uA болгондо маанилүү. Бизде nRF52832 чипинин жөнгө салуучусу болгондуктан, бул кошумча компоненттин кереги жок жана Si7021ди 3.3V булагынан иштетсе болот. Ошентип, бул долбоор Sparkfun'дун Si7021 сынык тактасын колдонот.

кириштердеги тышкы тартуу/түшүрүү каршылыгы аркылуу токту азайтуу

4K7 I2C тартылуу каршылыгы өзгөчө жогору эмес жана төмөн тартылганда 0.7mA тартат. Эгерде алар узак убакытка негизделген которгучту киргизишсе, бул көйгөй болмок. Бирок бул долбоордо бул резисторлор аркылуу ток I2C интерфейсин сейрек жана кыска убакытка гана колдонуу менен минималдаштырылган. Көбүнчө I2C линиялары колдонулбайт жана жогорку / үч абалда болгондуктан, бул резисторлор аркылуу эч кандай агым болбойт.

2 -кадам: Курулуш

Курулуш
Курулуш
Курулуш
Курулуш
Курулуш
Курулуш

Долбоор кичинекей ПХБнын үстүндө курулган, бирок SMD компоненттери жок болгондуктан, аны веро тактасын колдонуу менен оңой эле курууга болот. PCB бул Gerber файлдарынан pcbcart.com тарабынан даярдалган, TempHumiditySensor_R1.zip ПХБ башка BLE долбоорлорунда колдонууга жетиштүү жалпы максат.

Схема жогоруда көрсөтүлгөн. Бул жерде pdf версиясы бар.

Бөлүктөр тизмеси

2018 -жылдын декабрына карата бирдиктин болжолдуу баасы, ~ US $ 62, жеткирүүнү жана 1 -бөлүктөгү программистти эске албаганда

  • Redbear NanoV2 ~ 17 АКШ доллары
  • Sparkfun Si7021 сынык тактасы ~ 8 АКШ доллары
  • 2 x 53mm x 30mm 0.15W 5V күн батареялары ж. Overfly ~ 1.10 АКШ доллары
  • 1 x PCB TempHumiditySensor_R1.zip ~ US $ 25 үчүн 5 өчүрүү www.pcbcart.com ЖЕ Vero тактасы (жез тилкеси) мис. Jaycar HP9540 ~ 5 AUD $
  • 2 x 1N5819 schottky диоддору, мис. Digikey 1N5819FSCT-ND ~ US $ 1
  • 1 x 470R 0.4W 1% резистор ж. Digikey BC3274CT-ND ~ 0.25 АКШ доллары
  • 6 х 6 пин эркек баш казыктары, мис. Sparkfun PRT-00116 ~ 1.5 АКШ доллары
  • ургаачыдан секирген аялга мис. Adafruit ID: 1950 ~ US $ 2
  • 3мм х 12мм нейлон бурамалары, мис. Jaycar HP0140 ~ AUD $ 3
  • 3мм х 12мм нейлон жаңгактары, мис. Jaycar HP0146 ~ 3 AUD $
  • Scotch Туруктуу Таптоочу Мышык 4010 ж. Amazonдан ~ US $ 6.6
  • AAA x 2 батарея кармагыч, мис. Sparkfun PRT-14219 ~ 1.5 АКШ доллары
  • 2 x AAA 750mA щелочтуу батареялар, мис. Sparkfun PRT-09274 ~ US $ 1.0 Бул батарейкалар> 2 жыл иштеши керек. Energizer щелочный батареялары кубаттуулугу жогору
  • Пластикалык кутуча (ABS) 83mm x 54mm x 31mm, мис. Jaycar HB6005 ~ AUD $ 3
  • pfodApp ~ 10 АКШ доллары
  • 1 x 22uF 63V төмөн ESR Capacitor (Милдеттүү эмес) ж. Jaycar RE-6342 ~ AUD $ 0.5 же Digikey P5190-ND ~ US $ 0.25

Курулуш түз алдыга. Батарея кармагыч жана күн батареялары пластикалык кутуга оор эки жактуу скотч менен бекитилген.

Даяр бөлүктө CLKтен GNDге Gnd шилтемеси зымына көңүл буруңуз. Бул CLK киргизүү боюнча ызы -чууну nRF52 чипти учурдагы мүчүлүштүктөрдү оңдоо режимине киргизбөө үчүн программалоодон кийин орнотулат

3 -кадам: Код - аз кубат сенсорунун китепканасы, колдонуучу интерфейси жана Arduino эскизи

Код - Төмөн кубаттуулуктагы сенсордук китепкана, колдонуучу интерфейси жана Arduino эскизи
Код - Төмөн кубаттуулуктагы сенсордук китепкана, колдонуучу интерфейси жана Arduino эскизи
Код - Төмөн кубаттуулуктагы сенсордук китепкана, колдонуучу интерфейси жана Arduino эскизи
Код - Төмөн кубаттуулуктагы сенсордук китепкана, колдонуучу интерфейси жана Arduino эскизи
Код - Төмөн кубаттуулуктагы сенсордук китепкана, колдонуучу интерфейси жана Arduino эскизи
Код - Төмөн кубаттуулуктагы сенсордук китепкана, колдонуучу интерфейси жана Arduino эскизи

ZIP кодун жүктөп алыңыз, lp_BLE_TempHumidity_R3.zip жана аны Arduino Sketches каталогуна ачыңыз. Ошондой эле, бул zip файлынан lp_So7021 китепканасын жана pfodParser китепканасын орнотушуңуз керек.

Төмөн кубат сенсорунун китепканасы, lp_Si7021

Adafruit жана Sparkfun экөө тең Si7021 сенсоруна жетүү үчүн китепканаларды камсыздашат, бирок бул эки китепкана тең энергияны аз колдонуу үчүн жараксыз. Экөө тең сенсордун өлчөөсүн окуп жатканда кечигүү үчүн коддогу кечигүүнү (25) колдонушат. 1 -бөлүктө айтылгандай, кечигүүлөр жаман. Arduino delay () микро-процессордун күчү менен иштей берет, ал эми кечигүү убактысын күтөт. Бул аз кубат BLE биринчи эрежесин бузат, көпчүлүк учурда эч нерсе кылбаңыз. Алмаштыруучу lp_Si7021 китепканасы, бардык кечигүүлөрдү lp_timers менен алмаштырат, бул микро-процессорду уктап, сенсордун өлчөө бүтүшүн күтөт.

Lp_Si7021 китепканасынын канчалык айырмасы бар? Түпнуска SparkFun Si7021 колдоо китепканасын колдонуу жана сериялык басып чыгарууларсыз секундасына бир окууну алуу ~ 1.2mA орточо тартат. Sparkfun китепканасын lp_Si7021 китепканасы менен алмаштыруу орточо токту ~ 10уАга, башкача айтканда 100 эсеге азайтат. Бул долбоордо эң ылдам өлчөө ылдамдыгы 30 секундда бир жолу, мобилдик телефон туташтырылганда, орточо сенсор 1уАдан аз болот. BLE туташуусу жок болгондо, өлчөө ылдамдыгы ар 10 мүнөттө бир жолу болот жана сенсордун орточо агымы анча чоң эмес.

Колдонуучу интерфейси

Жогоруда негизги экран дисплейи жана 10 күндүк сааттык тарыхтын чоңойтулган көрүнүшү. Сюжеттерди эки манжаңыз менен чоңойтууга жана эки жакка панорировкалоого болот.

Колдонуучу интерфейси Arduino эскизинде коддолгон, андан кийин кайталап колдонуу жана жаңыртуулар үчүн кэштелген биринчи байланышта pfodAppка жөнөтүлөт. Графикалык дисплей примитивдерди тартуудан курулган. Android үчүн Custom Arduino Controls'ту караңыз, өз көзөмөлүңүздү кантип курууну үйрөткүч үчүн. Thermometer, RHGauge жана Button файлдары ошол нерселер үчүн чийүү командаларын камтыйт.

Эскертүү: Бул дисплей pfodAppка орнотулган болсо, эч ким жок. Бүт дисплей Arduino эскизиндеги код менен толук көзөмөлдөнөт

Lp_BLE_TempHumidity_R3.ino эскизиндеги sendDrawing_z () методу колдонуучу интерфейсин аныктайт.

жараксыз sendDrawing_z () {dwgs.start (50, 60, dwgs. WHITE); // фондук демейки мааниси WHITE болсо, башкача айтканда башталат (50, 60); parser.sendRefreshAndVersion (30000); // dwg-ге ар бир 30сек. эгер анализдөөчү версия орнотулбаса, көңүл бурулбайт // жаңыртууну көрсөтүү үчүн жогорудагы баскычтарды басыңыз dwgs.touchZone (). cmd ('u'). size (50, 39).send (); dwgs.pushZero (35, 22, 1.5); // нөлдү dwg борборуна 35, 22ге жылдыруу жана rhGauge.draw () 1,5 эсеге масштабдоо; // dwgs.popZero көзөмөлүн тартуу (); dwgs.pushZero (18, 33); // нөлдү dwg борборуна жылдыруу 18, 33 масштабы 1 (демейки) термометр.draw (); // dwgs.popZero көзөмөлүн тартуу ();

dwgs.pushZero (12.5, 43, 0.7); // нөлдү dwg борборуна 12.5, 43кө жана 0,7ге масштабга жылдырыңыз

hrs8PlotButton.draw (); // dwgs.popZero көзөмөлүн тартуу (); dwgs.pushZero (37.5, 43, 0.7); // нөлдү dwg борборуна 37.5, 43кө жылдырыңыз жана 0.7 күнгө масштабда1PlotButton.draw (); // dwgs.popZero көзөмөлүн тартуу ();

dwgs.pushZero (12.5, 54, 0.7); // нөлдү dwg борборуна 12.5, 54кө жылдыруу жана 0.7ге масштабдоо

days3PlotButton.draw (); // dwgs.popZero көзөмөлүн тартуу (); dwgs.pushZero (37.5, 54, 0.7); // нөлдү dwg борборуна 37.5, 54кө жылдырыңыз жана 0.7 күнгө масштабда10PlotButton.draw (); // dwgs.popZero көзөмөлүн тартуу (); dwgs.end (); }

PushZero буйруктары кийинки компонентти тартуунун келип чыгышын жана масштабын өзгөртөт. Бул баскычтардын жана өлчөгүчтөрдүн өлчөмүн жана ордун оңой өзгөртүүгө мүмкүндүк берет.

Биринчи туташууда баштапкы дисплей дисплейди аныктоочу ~ 800 байтты түшүрүү үчүн 5 же 6 сек талап кылынат. pfodApp дисплейди кэштейт, андыктан келечектеги жаңыртуулар гана өзгөрүүлөрдү, өлчөөчү позицияларды жана окууларды жөнөтүшү керек. Бул жаңыртууларга дисплейди жаңыртуу үчүн 128 байт жөнөтүү үчүн бир нече секунд кетет.

Дисплейде аныкталган беш (5) активдүү тийүү зонасы бар. Ар бир баскычтын draw () методунда аныкталган бири бар, андыктан сиз аны басып, тиешелүү сюжетти ачсаңыз болот, экрандын жогорку жарымы үчүнчү тийүү зонасы катары конфигурацияланган

dwgs.touchZone (). cmd ('u'). өлчөмү (50, 39).send ();

Баскычтардын үстүндөгү экранды чыкылдатыңыз, 'u' dwg буйругу эскизиңизге жаңы өлчөө жана экранды жаңыртуу үчүн жөнөтүлөт. Адатта туташканда, жаңыртуулар 30 секунд сайын гана болот. Чиймени ар бир чыкылдатуу же жаңыртуу жаңы өлчөөнү мажбурлайт. Arduino эскизинен pfodAppка жооп жаңы өлчөө аяктаганга чейин кечиктирилет (~ 25mS), андыктан акыркы маанини жаңыртууда жөнөтүүгө болот.

Arduino Sketch

Arduino Sketch, lp_BLE_TempHumidity_R3.ino, 1 -бөлүктө колдонулган мисал эскизинин жакшыртылган версиясы. Lp_BLE_TempHumidity_R3.ino эскизи менюну жогоруда көрсөтүлгөн чиймеге алмаштырат. Ал ошондой эле lp_Si7021 сенсорунун колдоосун жана 10 мүнөт жана сааттык тарыхый өлчөөлөрдү сактоо үчүн маалымат массивдерин кошот.

Lp_BLE_TempHumidity_R3.ino эскизиндеги негизги татаалдык - сюжет маалыматтарын жөнөтүү. Ченөө жүргүзүлгөндө readRHResults () жыйынтыктарды чогултуу жана аларды тарыхый массивдерге сактоо менен алектенет. Массивдер 120 узун, бирок маалымат жөнөтүлгөндө алгачкы 30 маалымат пункту жакшыраак убакыт аралыгында болот.

Көрсөтүүгө 200 так участокту жөнөтүүдө бир нече пунктка көңүл буруу керек:-

  1. Ар бир маалымат чекити ~ 25 байт, CSV текст форматында. Ошентип, 150 пункт - 3750 байт маалымат. Lp_BLESerial классында 1536 байт буфер бар, анын 1024ү эң чоң pfod билдирүүсү үчүн жетиштүү. Калган 512 байт маалыматтарды жөнөтүү үчүн корголгон. Тарыхый маалыматтар 512 байтты толтургандан кийин, буферде боштук болгонго чейин, кошумча маалыматтарды жөнөтүү кечиктирилет.
  2. Сюжет маалыматтары негизги дисплей жаңыртууларын жайлатпоо үчүн, сюжеттик маалыматтар сюжеттик экран көрсөтүлгөндө гана жөнөтүлөт. Колдонуучу кайра башкы экранга которулганда, сюжет маалыматын жөнөтүү тындырылат. Колдонуучу сюжетти кайра көрсөтүү үчүн участок баскычын басканда, сюжет маалыматтарын жөнөтүү кайра башталат.
  3. Тарыхый сюжеттер 0 (азыр) башталат жана убакыт артка кетет. Акыркы сюжет көрсөтүлгөндөн бери жаңы өлчөө жок болсо, мурунтан эле жүктөлүп алынган мурунку маалыматтар дароо эле кайра көрсөтүлөт. Эгерде жаңы өлчөө болсо, анда ал мурунку сюжет маалыматтарына кошулат.
  4. Монитор биринчи жолу иштетилгенде, тарыхый көрсөткүчтөр жок жана 0 массивдерде жараксыз окуу катары сакталат. Сюжет көрсөтүлгөндө, жараксыз окуулар жөн эле өткөрүлүп жиберилет, натыйжада кыска сюжет пайда болот.

Цельсий жана Фаренгейт

Lp_BLE_TempHumidity_R3.ino эскизи маалыматтарды Цельсий боюнча көрсөтөт жана пландаштырат. Жыйынтыктарды Фаренгейтке айландыруу үчүн бардык көрүнүштөрдү алмаштырыңыз

parser.print (sensor. Temp_RawToFloat (..

менен

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

Жана Юникод эмес degC символун Octal / 342 / 204 / 203 менен degF белгиси / 342 / 204 / 211 алмаштырыңыз

pfodApp сиз мобилдик көрсөтө турган Юникодду көрсөтөт.

Көбүрөөк маалымат алуу үчүн Arduinoдогу ASCII эмес тамгаларды колдонуу бөлүмүн караңыз. Ошондой эле Thermometer.hдеги MIN_C, MAX_C орнотууларын өзгөртүңүз. Акыры сюжет чектерин каалагандай тууралаңыз, мис. өзгөртүү | Temp C ~ 32 ~ 8 ~ C C |

айтуу

| Temp F ~ 90 ~ 14 ~ F F |

4 -кадам: Жеткирүү агымын өлчөө

Жеткирүү агымын өлчөө
Жеткирүү агымын өлчөө

Lp_Si7021 китепканасын колдонуу, атүгүл ар бир 10 секундада температураны/нымдуулукту өлчөө гана ~ 1uAга жеткирет, андыктан жеткирүү тогунун жана демек, батареянын иштөө мөөнөтүнүн негизги фактору BLE жарнагы жана туташуусу жана берилиштери колдонулат..

Температура/нымдуулук тактасын жогоруда көрсөтүлгөндөй 1 -бөлүктө сүрөттөлгөн Программистке туташтырыңыз.

Күн батареялары жана батарейкалары ажыратылганда, Вин менен Гнд программисттин Vdd жана Gnd (Сары жана Жашыл жолго) жана SWCLK менен SWDIO программисттин баш тактасынын Clk жана SIOуна туташат (Көк жана Кызгылт жетелейт)

Сиз азыр NanoV2ди программалай аласыз жана 1 -бөлүмдө сүрөттөлгөндөй камсыздоо агымын өлчөй аласыз.

Төмөн кубаттуулуктагы Si7021 китепканасын lp_Si7021.zip ZIP файлынан орнотуңуз жана pfodParser китепканасын орнотуңуз жана lp_BLE_TempHumidity_R3.zipди Arduino эскиздер каталогуна ачыңыз жана Temp/Humditiy тактасын lp_BLE_TempHumidity_R3.ino менен программалаңыз.

Жогоруда айтылгандай, сенсордун салымы <1uA, орточо, бул долбоордо колдонулган эң жогорку өлчөө ылдамдыгында, андыктан BLE жарнамалоо жана туташуу параметрлери батареянын иштөө мөөнөтүн аныктоочу фактор болуп саналат.

Учурдагы керектөөгө таасир этүүчү BLE жарнак жана туташуу параметрлери: -Tx Power, Advertising Interval, Max and Min Connection Intervals, and Slave Latency.

Эскертүү: Жогорудагы туташууларды колдонуу менен камсыздоонун эки (2) жөнгө салуучусу бар, бири NanoV2 тактасында Vin аркылуу жана MAX8881 программисттин камсыздоосунда. Бул өлчөөчү жеткирүү токтору экинчи жөнгө салгычтан улам реалдуудан ~ 5uA жогору болот дегенди билдирет. Төмөндө келтирилген баалуулуктар бул кошумча 5uAны өлчөөчү токтор.

Tx Power

Tx Power эффекттери туташканда да, жарнакта да (туташкан эмес) ток берет. Бул долбоор максималдуу кубаттуулукту (+4) колдонот жана эң ишенимдүү байланыштар үчүн эң жакшы диапазонду жана эң чоң ызы -чуу иммунитетин камсыздайт. Күч орнотууну өзгөртүү үчүн lp_BLESerial setTxPower () ыкмасын колдонсоңуз болот. Жарактуу баалуулуктар күчөтүүдө, -40, -30, -20, -16, -12, -8, -4, 0 +4. SetTxPower () деп чалуудан мурун lp_BLESerial begin () ыкмасын чакырышыңыз керек. Lp_BLE_TempHumidity_R3.ino эскизин караңыз.

Сиз Tx Powerти азайтуу менен эксперимент жасай аласыз, бирок компромисс кыска аралыкта жана интерференциянын кесепетинен улам байланыш үзүлүп калат. Бул долбоордо Tx Power демейки боюнча калды, +4. Төмөндө көрүнүп тургандай, бул жөндөө менен дагы, өтө аз камсыздоо агымы дагы деле мүмкүн.

Жарнама интервалы

Берилген Tx Power үчүн, эч кандай байланыш жок болгондо, Advertising Interval орточо керектөөнү белгилейт. Сунушталган диапазон 500дөн 1000мСке чейин. Бул жерде 2000mS колдонулган. Компромисс - бул жарнамалык интервалдардын узактыгы мобилдик түзмөгүңүздү таап, байланышты орнотуу үчүн жайыраак дегенди билдирет. Ички жарнак интервалдары 20mS менен 10.24sec диапазонунда 0.625mS эселенип коюлат. Lp_BLESerial setAdvertisingInterval () методу ынгайлуулук үчүн mSти аргумент катары алат. +4 TxPower жана 2000mS жарнамалык интервал үчүн учурдагы керектөө ~ 18uA болгон. 1000mS жарнак интервал үчүн, ал ~ 29uA болчу. Rev 2 2000mS жарнак интервалын колдонгон, бирок бул жай байланыштарга алып келген. Rev 3 байланыштарды тездетүү үчүн 1000mS жарнак интервалына өзгөрдү.

Макс жана Мин туташуу интервалдары

Байланыш орнотулгандан кийин, байланыш интервалы мобилдик түзмөк менен канчалык көп байланышаарын аныктайт. Lp_BLESerial setConnectionInterval () сунушталган максимумду жана минди коюуга мүмкүндүк берет, бирок мобилдик байланыш интервалы чынында кандай экенин көзөмөлдөйт. Ыңгайлуулук үчүн setConnectionInterval () аргументтери mSде, бирок ички туташуу интервалдары 1.25mS эсе, 7.5mS - 4sec диапазонунда.

Демейки жөндөө setConnectionInterval (100, 150), башкача айтканда, мини 100 мСтен максималдуу 150 мСке чейин. Бул баалуулуктарды жогорулатуу туташуу учурунда жеткирүү агымын азайтат, бирок компромисс маалыматтарды жай берүү болуп саналат. Экрандын ар бир жаңыртылышы болжол менен 7 BLE билдирүүсүн алат, ал эми толук 36 саат 10 мүнөт өлчөө 170 BLE билдирүүсүн алат. Ошентип, байланыш интервалдарын көбөйтүү экрандын жаңыртылышын жана сюжетти көрсөтүүнү жайлатат.

Lp_BLESerial классында 1536 байттык жөнөтүү буфери бар жана BLE шилтемесин маалымат менен каптап кетпеши үчүн ар бир максималдуу туташуу аралыгы бул буферден 20 байттын бир блогун жөнөтөт. Ошондой эле сюжеттик маалыматтарды жөнөтүүдө, эскиз 512 байтты жөнөтүүнү күткөнгө чейин гана маалыматтарды жөнөтөт, андан кийин кээ бир маалыматтар жөнөтүлгөнгө чейин көбүрөөк маалыматтарды жөнөтүүнү кечеңдетет. Бул сел ташуучу буферди алдын алат. Жөнөтүүлөрдүн мындай кыскарышы мобилдик телефонго маалыматтарды берүүнү ишенимдүү кылат, бирок ал максималдуу түрдө оптималдаштырылган эмес.

Бул долбоордо туташуу интервалдары демейки маанилер катары калтырылган.

Кул күтүү

Мобилдик телефонго жөнөтүү үчүн эч кандай маалымат жок болгондо, түзмөк мобилдик телефондон келген кээ бир билдирүүлөрдү этибарга албайт. Бул Tx энергиясын үнөмдөйт жана токту берет. Slave Latency жөндөөсү - этибарга албаган байланыш билдирүүлөрүнүн саны. Демейки - 0. lp_BLESerial setSlaveLatency () методу бул жөндөөнү өзгөртүү үчүн колдонулушу мүмкүн.

Демейки Slave Latency 0 экрандын жаңыртууларын этибарга албастан, 30 секунд сайын ~ 50uA жеткирүү агымын берди, бирок keepAlive билдирүүлөрүн 5 сек. Кул күтүү убактысын 2ге коюу ~ 25uA орточо туташтырылган токту берди. 4 кулунун күтүү убактысы ~ 20uA берди. Жогорку орнотуулар жеткирүү агымын төмөндөткөн жок окшойт, андыктан кулдун күтүү убактысы 4 болгон.

Туташканда, ар 30 секунд сайын pfodApp дисплейдин жаңыртылышын талап кылат. Бул сенсордун өлчөөсүн мажбурлайт жана графикалык дисплейди жаңыртуу үчүн маалыматтарды кайра жөнөтөт. Бул жаңыртуу ар бир 30 секундда 2 сек үчүн кошумча 66uA алып келет. Бул 30 секундадагы орточо 4.4uA. Муну 20uAга кошуу, ~ 25uA орточо туташуу токун берет

5 -кадам: Total Supply Current жана Battery Life

Lp_BLE_TempHumidity_R3.inoдо белгиленгендей, жогорудагы жөндөөлөрдү колдонуп, Кошулгандагы жалпы жеткирүү агымы жана дисплейди 30 секундада, болжол менен 25уА. Туташпаганда, болжол менен 29uA болот.

Батареянын иштөө мөөнөтүн эсептөө үчүн ~ 29uAнын үзгүлтүксүз учурдагы тартылышы болжолдонот.

Ар кандай батареялардын кубаттуулугу жана чыңалуусу боюнча айырмачылыктары бар. Бул жерде каралып жаткан батареялар CR2032 монета клеткасы, CR2450 (N) монета клеткасы, 2 x AAA Alkaline, 2 x AAA Lithium жана LiPo.

Батарея Жыйынтык

Эгер Solar Assist колдонсоңуз, анда батарейканын иштөө мөөнөтүнө 50% кошуңуз (күндүз 8 сааттан кийин)

Эскертүү: 22uF LowESR конденсатору (C1), борттогу NanoV2 22uF конденсаторунан тышкары, Solar Cell агымын сактап, андан кийин TX учурдагы импульстарга жеткирет. Башкача айтканда, батарея TX токунун бир бөлүгүн камсыз кылат. Бул кошумча 22uF LowESR, күн батареясы жабдуу болбогондо, батареянын токуна болжол менен 10% кошот, бирок батарейканын иштөө мөөнөтү бүткөндө батарейканын ички каршылыгынын ордун толтуруп, батарейканын иштөө мөөнөтүн узартат. Төмөндөгү өлчөөлөр кошумча 22uF конденсатору жок алынды.

CR2032 - 235mAHr - батареянын иштөө мөөнөтү 10 айCR2450 (N) - 650mAHr (540mAHr) - Батареянын иштөө мөөнөтү 2.3 жыл (2 жыл) 2 x AAA щелочтуу - 1250mAHr - батареянын иштөө мөөнөтү 3.8.yrs2 x AAA Литий - 1200mAHr - батареянын иштөө мөөнөтү 4.7 ж. өзүнөн-өзү агып чыгуусунан улам.

CR2032

Бул монета клеткасы адатта 235mAHr (Energizer Battery), 3V номиналдуу чыңалуусу жана 2V белгиленген разряддын чыңалуусуна ээ. Бул 8100hrs же ~ 0.9yr батареяны билдирет. Бирок ички клетка каршылыгы батареянын иштөө мөөнөтү бүткөн сайын жогорулайт жана Tx чокусунун эң жогорку импульсун камсыз кыла албашы мүмкүн. Бул эффектти азайтуу үчүн чоңураак конденсатор колдонсо болот, бирок 10 ай жашайт.

CR2450 (N)

Бул монета клеткасы адатта 620mAHr (CR2450N үчүн 540mAHr), 3V номиналдуу чыңалуусу жана 2V белгиленген разряддын чыңалуусуна ээ. Бул батарейканын иштөө мөөнөтүн билдирет 22, 400hrs же ~ 2yr 6m (CR2450N үчүн 18600hrs ~ 2yrs 2m). Бирок ички клетка каршылыгы батареянын иштөө мөөнөтү бүткөн сайын жогорулайт жана Tx чокусунун эң жогорку импульсун камсыз кыла албашы мүмкүн. Бул эффектти азайтуу үчүн чоңураак конденсатор колдонсо болот, бирок 2yr 4m (2yr N) өмүрүн айт.

Эскертүү: CR2450N версиясында CR2450N кармагычка туура эмес орнотууну болтурбоого жардам берген коюу эрин бар. Сиз CR2450N жана CR2450 уячасын CR2450 кармагычка сала аласыз, бирок CR2450N кармагычына CR2450 уячасын сала албайсыз

2 x AAA щелочтуу клеткалар

Бул батарейкалардын кубаттуулугу 1250mAHr (Energizer Battery) үчүн өтө төмөн токтор үчүн, 2x1.5V = 3V номиналдуу чыңалуусу жана 2x0.8V = 1.6V белгиленген разряддын чыңалуусу. Бирок бул көрсөтүлгөн разряддын чыңалуусу Si7021 сенсорунун иштөө чыңалуусунан аз (1.9V), андыктан батарейканы ар бири ~ 1В чейин колдонсо болот. Бул болжол менен 10% дан 15% га чейин азайтат, башкача айтканда ~ 1000mAHr.

Бул 34, 500hrs же ~ 4yr батареяны билдирет. Бирок ички клетка каршылыгы батареянын иштөө мөөнөтү бүткөн сайын жогорулайт жана Tx чокусунун учурдагы импульсун камсыз кыла албашы мүмкүн. Бул эффектти азайтуу үчүн чоңураак конденсатор колдонсо болот, бирок 3yr 10m өмүрүн айт. Эскертүү Шилдүү батареялар жылына 2% дан 3% га чейин өз алдынча заряддалат.

2 x AAA литий клеткалары

Бул батареялар болжол менен 1200mAHr (Energizer Battery), 2x1.7V = 3.4V номиналдуу чыңалуусу, аз токтордо жана 2x1.4V = 2.4V разряддуу чыңалууга ээ. Бул 41, 400 саат же 4 жыл 8 м батарейканын иштөө мөөнөтүн билдирет.

LiPo кайра заряддалуучу батарея

Бул батарейкалар жалпак форматта 100mAHrдан 2000mAHrга чейин ар кандай кубаттуулукта келет жана 4.2V заряддалган чыңалуусу жана> 2.7V разряддуу чыңалууга ээ. Бирок аларда айына 2% -3% (башкача айтканда жылына 24% дан 36% га чейин) өзүнөн-өзү агып чыгуусу бар жана башка батареялар сыяктуу бул колдонмого ылайыктуу эмес.

6 -кадам: Alternative Supply - Solar Assist, Battery Only, Solar Only

Alternative Supply - Solar Assist, Battery Only, Solar Only
Alternative Supply - Solar Assist, Battery Only, Solar Only
Alternative Supply - Solar Assist, Battery Only, Solar Only
Alternative Supply - Solar Assist, Battery Only, Solar Only
Alternative Supply - Solar Assist, Battery Only, Solar Only
Alternative Supply - Solar Assist, Battery Only, Solar Only
Alternative Supply - Solar Assist, Battery Only, Solar Only
Alternative Supply - Solar Assist, Battery Only, Solar Only

Батарея плюс Күн жардамчысы

Жогорудагы курулушта Батарея плюс Solar Assist менен камсыздоо колдонулат. Күн батареялары батареянын чыңалуусуна караганда көбүрөөк чыңалуу жаратканда, күн батареялары мониторду иштетет, ошондуктан батареянын иштөө мөөнөтүн узартат. Адатта, батареянын иштөө мөөнөтү дагы 50%га узартылышы мүмкүн.

Колдонулган күн батареялары кичинекей, 50мм х 30мм, арзан, ~ 0,50 доллар жана кубаты аз. Алар 5В панелдер, бирок 5В түзүү үчүн түздөн -түз жаркыраган күн нуруна муктаж. Бул долбоордо эки панель сериялуу туташтырылган, ошондуктан мониторду терезенин жанына, күндүн нуру тийбеген жерге коюу, батарейканын кубатын алмаштыруу үчүн жетиштүү болот. Күн батареялары> 33uAда 3.3V түзүп, батареядан тартып алуу үчүн жакшы жарыктандырылган бөлмө же стол чырагы жетиштүү.

Жөнөкөй тестирлөө панели Температура / Нымдуулуктун Мониторун күндөн алыс жана кайда коюуга болорун аныктоо үчүн курулган. Жогорудагы сүрөттөн көрүнүп тургандай, 100K каршылыгына туташкан эки панель 100K боюнча 5.64V, башкача айтканда 56uA 5.64V ток чыгарат. Бул мониторду батарейкадан кубаттоо үчүн жетиштүү. 3В номиналдуу батареянын чыңалуусунан жогору болгон ар кандай чыңалуу күн батареялары батарейканын ордуна мониторду иштетет дегенди билдирет.

Температура Нымдуулук Мониторунун схемасындагы эки диод күн батареяларын жана батареяларды бири -биринен изоляциялап, аларды тескери полярдуулукта туташтыруудан коргойт. 10V 1W zener жана 470R сериядагы резистор NanoV2нин борттогу жөнгө салуучусун күндүн нурунда эки күн батареясынан ашыкча чыңалуудан коргойт, айрыкча 5Vдын ордуна 12V клеткалар колдонулса. <5В кадимки иштөөдө, 10В зенер гана ~ 1uA тартат.

Батарея гана

Батарея менен гана камсыздоо үчүн R1, D1 жана D3 менен күн батареяларын калтырыңыз. Сиз тескери полярдык коргоону каалабасаңыз, D1ди зым менен алмаштыра аласыз.

Күн гана

Мониторду Solar Cellsтан гана батарейкасы жок иштетүү, башка электр менен камсыз кылуу схемасын талап кылат. Көйгөй, монитор 29uAда иштесе, nRF52 күйгүзүлгөндө ~ 5mA 0.32 сек. Жогоруда көрсөтүлгөн схема (pdf версиясы) MAX8881 регуляторун киргизүү конденсаторлоруна чейин, 2 x 1000uF, 4.04В чейин заряддоого чейин кармап турат. Андан кийин MAX6457 nRF52 (NanoV2) 2 x 1000uF конденсаторлорун иштетүү үчүн MAX8881 SHDN киришин чыгарат.

Бул күндүн энергиясы жетиштүү болгондо, мониторду 29uA режиминде иштетүүгө мүмкүндүк берет.

7 -кадам: Жыйынтык

Бул окуу куралы nRF52832 чипи үчүн Arduinoдогу өтө аз кубаттуу BLE долбоору катары батарейканы/күн энергиясынан иштейт. ~ 29uA менен камсыздоо токтору, байланыш параметрлерин тууралоо аркылуу жетишилет. Бул CR2032 монета клеткасынын батареясынын иштөө мөөнөтү 10 айдан ашты. Жогорку кубаттуулуктагы монета клеткалары жана батареялары үчүн узунураак. Эки арзан күн батареясын кошуу батарейканын иштөө мөөнөтүн 50% же андан көпкө узартты. Мониторду күн батареяларынан иштетүү үчүн бөлмөнүн жарыгы же стол чырагы жетиштүү.

Мониторду аз кубаттуулуктагы күн батареяларынан иштетүүгө мүмкүндүк берүү үчүн атайын электр схемасы сунушталды.

Акысыз pfodDesigner сизге менюларды/суб-менюларды иштеп чыгууга, датага/убакытка карама-каршы чыгууга жана маалыматтарды жазууга, анан сиз үчүн аз кубаттуу Arduino эскизин түзүүгө мүмкүнчүлүк берет. Бул жерде колдонуучунун интерфейси pfodApp чийме примитивдери аркылуу коддолгон. PfodApp менен туташуу колдонуучу интерфейсин көрсөтөт жана монитор ~ 29uA колдонуп жатканда окуусун жаңыртат

Эч кандай Android программалоо талап кылынат. pfodApp мунун баарын чечет.

Сунушталууда: