Съдържание:
- Стъпка 1: Избор на компонент
- Стъпка 2: Строителство
- Стъпка 3: Код - Библиотека с сензори с ниска мощност, потребителски интерфейс и скица на Arduino
- Стъпка 4: Измерване на захранващия ток
- Стъпка 5: Общ ток на захранване и живот на батерията
- Стъпка 6: Алтернативи на захранването - Solar Assist, Only Battery, Solar Only
- Стъпка 7: Заключение
Видео: Лесен BLE с много ниска мощност в Arduino, част 2 - Монитор за температура/влажност - Rev 3: 7 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:49
Актуализация: 23 ноември 2020 г. - Първа подмяна на 2 x AAA батерии от 15 януари 2019 г., т.е. 22 месеца за 2xAAA алкална Актуализация: 7 април 2019 г. - Rev 3 на lp_BLE_TempHumidity, добавя графики за дата/час, използвайки pfodApp V3.0.362+и автоматично регулиране при изпращане данни
Актуализация: 24 март 2019 г. - Ред 2 на lp_BLE_TempHumidity, добавя още опции за сюжет и i2c_ClearBus
Този инструктаж, Монитор за влажност на температурата с много ниска мощност, е част 2 от 3.
Част 1 - Лесно изграждане на BLE устройства с много ниска мощност с капаците на Arduino, които настройват Arduino да кодират устройства с ниска мощност nRF52, модула за програмиране и измерването на захранващия ток. Той също така обхваща специализирани таймери и сравнители с ниска мощност и освободени входове и използване на pfodApp за свързване и управление на устройството nRF52.
Част 2 - Този монитор за влажност на температурата с много ниска мощност, този, обхваща използването на Redbear Nano V2 модул и сензор за температура / влажност на Si7021 за изграждане на батерия с ниска мощност / слънчев монитор. Той също така обхваща модифицирането на библиотеката Si7021 на ниска мощност, настройване на BLE устройството за намаляване на текущата консумация на <25uA и проектиране на персонализиран дисплей за температура/влажност за вашия мобилен телефон.
Част 3 - Смяна на Redbear Nano V2 обхваща използването на други модули на базата на nRF52 вместо Nano V2. Той обхваща избора на компоненти за захранване, конструкцията, премахването на защитата за програмиране на чипове nRF52, използването на NFC щифтове като нормален GPIO и определянето на нова платка nRF52 в Arduino.
Тази инструкция е практическо приложение на Част 1 Изграждане на BLE устройства с много ниска мощност, улеснени с Arduino чрез конструиране на BLE монитор за температура и влажност на BLE с много ниска мощност. Мониторът ще работи с години на Coin Cell или 2 x AAA батерии, дори по -дълго със слънчева помощ. Този урок обхваща настройката на BLE параметрите за ниска консумация на енергия и как да захранвате устройството си от батерия ИЛИ батерия + слънчева ИЛИ само слънчева.
Освен че показва текущата температура и влажност, мониторът съхранява последните 36 часа от 10 минути отчитания и последните 10 дни отчитане на час. Те могат да бъдат записани на вашия мобилен телефон с Android и стойностите да бъдат записани в лог файл. Не се изисква програмиране за Android, pfodApp се справя с всичко това. Дисплеят и графиките на Android се контролират изцяло от вашата скица на Arduino, така че можете да я персонализирате според нуждите.
За компонента nRF52832 BLE се използва платка Redbear Nano V2, а за сензора за температура / влажност се използва пробивна платка Sparkfun Si7021. Модифицирана библиотека с ниска мощност се използва със Si7021. Малка платка е проектирана да побере NanoV2 и захранващите компоненти. Въпреки това, тъй като не се използват повърхностно монтирани компоненти, можете също толкова лесно да изградите това върху борда на vero. Покрити са три версии на захранването. i) Батерия плюс слънчева помощ, ii) Само батерия, iii) Само слънчева. Опцията Solar Only няма място за съхранение на батерията и затова ще работи само когато има малко светлина. Ярка стайна светлина или настолна лампа са достатъчни.
Контур
Този проект има 4 относителни независими части:-
- Избор на компоненти и конструиране
- Код - Библиотека със сензори с ниска мощност, потребителски интерфейс и скица на Arduino
- Измерване на захранващия ток и живота на батерията
- Алтернативи на захранването - Solar Assist, Only Battery, Solar Only
Стъпка 1: Избор на компонент
Избор на компоненти
Както бе споменато в Част 1-Трикът за получаване на решение с наистина ниска мощност е да не правите нищо през повечето време, да минимизирате тока чрез външни резистори за издърпване/издърпване на входовете и да нямате допълнителни компоненти. Този проект ще използва всеки от тези трикове, за да получи решение с ниска мощност.
Компонентът nRF52832
Чипът nRF52832 може да работи с захранване между 1.7V и 3.6V (абсолютно максимално напрежение 3.9V). Това означава, че можете да захранвате чипа директно от монета или от 2 x AAA батерии. Разумно е обаче да се добави регулатор на напрежението, за да се предпази чипът от пренапрежение. Този допълнителен компонент идва с разход на енергия, но в случай на платка NanoV2 бордовият регулатор, TLV704, консумира по-малко от 5,5uA max, обикновено само 3,4uA. За това малко допълнително потребление на енергия получавате защита за до 24V захранващи входове.
Компонентът Si7021
Самият сензор Si7021 черпи обикновено <1uA, когато не прави измерване, т.е. в режим на готовност, и до 4mA, когато предава данните чрез I2C. Тъй като не правим непрекъснато измерване, 4mA не е значителна част от средния ток на захранване. Отчитането за много 30 секунди добавя по -малко от 1uA към средния ток на захранване, вижте измерванията на захранващия ток по -долу.
Има две лесно достъпни пробивни платки Si7021. Един от Adafruit и един от Sparkfun. Бърз поглед към двете дъски ще ви каже, че дъската Adafruit има много повече компоненти от дъската Sparkfun, така че ще бъдете склонни да изберете дъската Sparkfun. Разглеждането на схемите за всяка платка показва, че дъската Sparkfun е само голият сензор и два 4k7 резистора, докато дъската Adafruit има вграден, MIC5225, регулатор, който обикновено черпи 29uA през цялото време. Това е значително, когато общия ток за останалата част на веригата е <30uA. Тъй като вече имаме регулатор за чипа nRF52832, този допълнителен компонент не е необходим и Si7021 може да се захранва от това 3.3V захранване. Така че този проект ще използва пробивната платка Si7021 от Sparkfun.
минимизирайте тока чрез външни издърпващи/издърпващи резистори на входовете
Изтеглящите резистори 4K7 I2C не са с особено висока стойност и ще изтеглят 0,7 mA, когато се изтеглят ниско. Това би било проблем, ако те са на вход на превключвател, който е заземен за дълги периоди. Въпреки това в този проект токът през тези резистори се свежда до минимум чрез използване на интерфейса I2C рядко и само за кратко време. През повечето време линиите I2C не се използват и са с високо / три състояние, така че през тези резистори не протича ток.
Стъпка 2: Строителство
Проектът е изграден на малка платка, но тъй като няма SMD компоненти, той може също толкова лесно да бъде изграден с помощта на vero board. ПХБ е произведена от pcbcart.com от тези файлове на Gerber, TempHumiditySensor_R1.zip ПХБ е достатъчно общо предназначение, за да се използва за други BLE проекти.
Схемата е показана по -горе. Ето една pdf версия.
Списък с части
Приблизителна цена на единица към декември 2018 г., ~ US $ 62, с изключение на доставката и програмиста от част 1
- Redbear NanoV2 ~ 17 щ.д.
- Пробивна платка Sparkfun Si7021 ~ 8 щ.д.
- 2 x 53 мм x 30 мм 0,15 W 5V слънчеви клетки напр. Overfly ~ 1,10 щ.д.
- 1 x PCB TempHumiditySensor_R1.zip ~ 25 щ.д. за 5 отстъпка www.pcbcart.com ИЛИ Vero платка (медна лента) напр. Jaycar HP9540 ~ 5 австралийски долара
- 2 x 1N5819 диода на Шоттки напр. Digikey 1N5819FSCT-ND ~ US $ 1
- 1 x 470R 0.4W 1% резистор напр. Digikey BC3274CT-ND ~ 0,25 щ.д.
- 6 x 6 пинови мъжки щифта за заглавки, напр. Sparkfun PRT-00116 ~ 1,5 щ.д.
- женски към женски джъмпер напр. Adafruit ID: 1950 ~ 2 щ.д.
- 3 мм х 12 мм найлонови винтове, напр. Jaycar HP0140 ~ 3 австралийски долара
- 3 мм х 12 мм найлонови гайки, напр. Jaycar HP0146 ~ 3 австралийски долара
- Скоч Перманентна монтажна лента Cat 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) 83 мм x 54 мм x 31 мм, напр. Jaycar HB6005 ~ 3 австралийски долара
- pfodApp ~ 10 щ.д.
- 1 x 22uF 63V ниско ESR кондензатор (по избор) напр. Jaycar RE-6342 ~ 0,5 австралийски долара или Digikey P5190-ND ~ 0,25 щ.д.
Конструкцията е направо напред. Поставката на батерията и соларните клетки са закрепени към пластмасовата кутия с тежка двустранна лента.
Обърнете внимание на свързващия проводник Gnd от CLK към GND в завършената част. Това е инсталирано СЛЕД програмиране, за да се предотврати шума на входа CLK да задейства чипа nRF52 в режим на отстраняване на грешки с голям ток
Стъпка 3: Код - Библиотека с сензори с ниска мощност, потребителски интерфейс и скица на Arduino
Изтеглете компресирания код, lp_BLE_TempHumidity_R3.zip и го разархивирайте в директорията на Arduino Sketches. Също така трябва да инсталирате библиотеката lp_So7021 от този zip файл и също така да инсталирате библиотеката pfodParser.
Библиотека със сензори за ниска мощност, lp_Si7021
Както Adafruit, така и Sparkfun предоставят библиотеки за поддръжка за достъп до сензора Si7021, но и двете библиотеки са неподходящи за използване с много ниска мощност. И двамата използват забавяне (25) в кода, за да забавят отчитането на сензора, докато той извършва измерването му. Както е отбелязано в част 1 Забавянията са зло. Забавянето на Arduino () просто поддържа микропроцесора да работи, използвайки захранване, докато изчаква забавянето да изтече. Това нарушава първото правило за BLE с ниска мощност, не правете нищо през повечето време. Сменящата библиотека lp_Si7021 замества всички закъснения с lp_timers, които приспиват микропроцесора, докато чакат сензорът да завърши измерването си.
Каква разлика прави библиотеката lp_Si7021? Използването на оригиналната библиотека за поддръжка на SparkFun Si7021 и едно четене в секунда без никакви серийни разпечатки, извлича средно ~ 1.2mA. Замяната на библиотеката на Sparkfun с библиотеката lp_Si7021 намалява средния ток до ~ 10uA, т.е. 100 пъти по -малко. В този проект най -бързата скорост на измерване е веднъж на всеки 30 секунди, когато мобилният телефон е свързан, което води до среден ток на сензора по -малък от 1uA. Когато няма BLE връзка, скоростта на измерване е веднъж на всеки 10 минути и средният ток на захранване на сензора е незначителен.
Потребителски интерфейс
По -горе е основният екран и увеличен изглед на 10 -дневната почасова история. Графиките могат да бъдат увеличени и панорамирани в двете посоки, с помощта на два пръста.
Потребителският интерфейс се кодира в скицата на Arduino и след това се изпраща на pfodApp на първата връзка, където се кешира за многократна употреба и актуализации. Графичният дисплей е изграден от примитиви за рисуване. Вижте Персонализирани контроли на Arduino за Android за урок как да изградите свои собствени контроли. Файловете на термометъра, RHGauge и Button съдържат командите за рисуване на тези елементи.
Забележка: Няма, ако този дисплей е вграден в pfodApp. Целият дисплей се контролира изцяло от кода във вашата скица на Arduino
Методът sendDrawing_z () в скицата lp_BLE_TempHumidity_R3.ino определя потребителския интерфейс.
void sendDrawing_z () {dwgs.start (50, 60, dwgs. WHITE); // фоновите настройки по подразбиране на WHITE, ако са пропуснати т.е. start (50, 60); parser.sendRefreshAndVersion (30000); // повторно заявяване на dwg на всеки 30сек. това се пренебрегва, ако не е зададена версия на анализатора // докоснете горните бутони, за да принудите актуализациите на дисплея dwgs.touchZone (). cmd ('u'). size (50, 39).send (); dwgs.pushZero (35, 22, 1.5); // преместваме нула в центъра на dwg до 35, 22 и мащабираме с 1,5 пъти rhGauge.draw (); // изчертавам контрола 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 променят произхода и мащаба за изчертаване на следващия компонент. Това ви позволява лесно да променяте размера и позицията на бутоните и габаритите.
При първата връзка първоначалният дисплей отнема 5 или 6 секунди, за да зареди надолу ~ 800 байта, които определят дисплея. pfodApp кешира дисплея, така че бъдещите актуализации трябва само да изпращат промените, позициите на индикатора и показанията. Тези актуализации отнемат само няколко секунди, за да изпратят 128 -те байта, необходими за актуализиране на дисплея.
На дисплея са дефинирани пет (5) активни сензорни зони. Всеки бутон има един дефиниран в неговия метод draw (), така че можете да кликнете върху него, за да отворите съответния график, а горната половина на екрана е конфигурирана като трета зона на докосване
dwgs.touchZone (). cmd ('u'). размер (50, 39).send ();
Когато щракнете върху екрана над бутоните, командата 'u' dwg се изпраща към вашата скица, за да принуди ново измерване и актуализация на екрана. Обикновено при свързване актуализациите се случват само на всеки 30 секунди. Всяко щракване или опресняване на чертежа налага ново измерване. Отговорът от скицата на Arduino към pfodApp се забавя, докато новото измерване приключи (~ 25 mS), така че най -новата стойност да може да бъде изпратена в актуализацията.
Скица на Arduino
Скицата на Arduino, lp_BLE_TempHumidity_R3.ino, е подобрена версия на примерната скица, използвана в част 1. Скицата lp_BLE_TempHumidity_R3.ino заменя менюто с чертежа, показан по -горе. Той също така добавя поддръжката на сензора lp_Si7021 и масивите от данни за съхраняване на 10 -минутни и почасови исторически измервания.
Основното усложнение в скицата lp_BLE_TempHumidity_R3.ino е обработката на изпращането на графичните данни. Докато измерванията се извършват, readRHResults () обработва събирането на резултатите и запазването им в историческите масиви. Масивите са с дължина 120, но когато се изпращат данните, първите 30 точки от данни са за по -фин интервал от време.
Когато изпращате 200-те нечетни сюжетни точки за показване, трябва да се погрижите за няколко точки:-
- Всяка точка от данни е с дължина ~ 25 байта, в текстов формат CSV. Така 150 точки са 3750 байта данни. Класът lp_BLESerial има 1536 байтов буфер, 1024 от които са достатъчно големи за най -голямото pfod съобщение. Останалите 512 байта са запазени за изпращане на данните. След като историческите данни запълнят 512 байта, изпращането на допълнителни данни се забавя, докато няма място в буфера.
- За да се избегне забавянето на графичните данни, актуализациите на основния дисплей, графичните данни се изпращат само докато е показан графичният екран. След като потребителят се върне към главния екран, изпращането на графичните данни се спира на пауза. Изпращането на графични данни се възобновява, когато потребителят кликне върху бутона за график, за да покаже отново сюжета.
- Историческите сюжети започват от 0 (сега) и се връщат назад във времето. Ако след извеждането на последния график не е имало ново измерване, предишните данни, които вече са били изтеглени, се показват отново веднага веднага. Ако има ново измерване, то се добавя към предишните графика.
- Когато мониторът се включи за първи път, няма исторически показания и 0 се съхранява в масивите като невалидно отчитане. Когато графиката се показва, невалидните показания просто се пропускат, което води до по -кратък график.
Целзий и Фаренхайт
Скицата lp_BLE_TempHumidity_R3.ino показва и нанася данните в Целзий. За да преобразувате резултатите във Фаренхайт, заменете всички появявания на
parser.print (sensor. Temp_RawToFloat (..
с
parser.print (sensor. CtoF (sensor. Temp_RawToFloat (…
И заменете символа unicode degC в Octal / 342 / 204 / 203 със символа degF / 342 / 204 / 211
pfodApp ще покаже всеки Unicode, който можете да покажете на мобилния си телефон.
Вижте Използване на не-ASCII символи в Arduino за повече подробности. Също така променете настройките MIN_C, MAX_C в Термометър.ч. Накрая коригирайте границите на сюжета, както желаете, напр. промяна | Temp C ~ 32 ~ 8 ~ deg C |
да кажа
| Температура F ~ 90 ~ 14 ~ градуса F |
Стъпка 4: Измерване на захранващия ток
Използвайки библиотеката lp_Si7021, дори измерването на температура/влажност на всеки 10 секунди допринася само ~ 1uA за средния ток на захранване, така че основният фактор в захранващия ток и следователно животът на батерията е токът, използван от BLE рекламата и връзката и предаването на данни.
Свържете дъската за температура/влажност към програмиста, описан в част 1, както е показано по -горе.
При изключени слънчеви клетки и батерии, Vin и Gnd са свързани към Vdd и Gnd на програмиста (жълтите и зелените проводници), а SWCLK и SWDIO са свързани към Clk и SIO на заглавната платка на програмиста (сините и розовите проводници)
Вече можете да програмирате NanoV2 и да измервате захранващия ток, както е описано в част 1.
Инсталирайте библиотеката Si7021 с ниска мощност от този zip файл, lp_Si7021.zip и инсталирайте библиотеката pfodParser и разархивирайте lp_BLE_TempHumidity_R3.zip във вашата директория за скици на Arduino и програмирайте платката Temp/Humditiy с lp_BLE_TempHumidity_R3.ino
Както бе споменато по -горе, приносът на сензора е <1uA, средно, при най -високата честота на измерване, използвана в този проект, така че рекламните и свързващите параметри на BLE са определящият фактор за живота на батерията.
Параметрите за рекламиране и свързване на BLE, които влияят на текущото потребление, са: -Tx мощност, рекламен интервал, максимални и минимални интервали на връзка и подчинена латентност.
Забележка: Използвайки горните връзки, има два (2) регулатора в захранването, един на платката NanoV2 чрез Vin и MAX8881 на захранването на програмиста. Това означава, че измерените захранващи токове ще бъдат с ~ 5uA по -високи от действителните, поради втория регулатор. Посочените по -долу стойности са измерените токове минус тези допълнителни 5uA.
Tx мощност
Tx Захранващи ефекти захранват ток както при свързване, така и при рекламиране (без връзка). Този проект използва настройка за максимална мощност (+4) и осигурява най -добрия обхват и най -голяма устойчивост на шум за най -надеждните връзки. Можете да използвате метода lp_BLESerial setTxPower (), за да промените настройката на мощността. Валидните стойности са, при увеличаване на мощността, -40, -30, -20, -16, -12, -8, -4, 0 +4. Трябва да извикате метода lp_BLESerial begin () ПРЕДИ да извикате setTxPower (). Вижте скицата lp_BLE_TempHumidity_R3.ino.
Можете да експериментирате с намаляване на мощността на Tx, но компромисът е с по -малък обхват и повече прекъсвания на връзката поради смущения. В този проект Tx Power е оставен по подразбиране, +4. Както ще видите по -долу, дори при тази настройка, все още е възможно много нисък ток на захранване.
Рекламен интервал
За дадена Tx мощност, когато няма връзка, рекламният интервал задава средното текущо потребление. Препоръчителният диапазон е от 500 до 1000 mS. Тук се използва 2000 mS. Компромисът е, че по -дългите рекламни интервали означават, че по -бавно вашият мобилен телефон намира устройството и създава връзка. Вътрешно рекламните интервали са зададени кратно на 0.625mS в диапазона от 20mS до 10.24sec. Методът lp_BLESerial setAdvertisingInterval () приема mS като аргумент, за удобство. За +4 TxPower и 2000mS рекламен интервал текущото потребление беше ~ 18uA. За рекламен интервал от 1000 mS той беше ~ 29uA. Rev 2 използва 2000mS рекламен интервал, но това доведе до бавни връзки. Rev 3 е променен на рекламен интервал от 1000 mS, за да направи връзките по -бързи.
Максимални и минимални интервали на свързване
След като се установи връзка, интервалът на свързване определя колко често мобилният телефон се свързва с устройството. Lp_BLESerial setConnectionInterval () ви позволява да зададете предложените макс и мин, но мобилният контролира какъв всъщност е интервалът на свързване. За удобство аргументите за setConnectionInterval () са в mS, но вътрешно интервалите на свързване са кратни на 1.25mS, в диапазона от 7.5mS до 4sec.
Настройката по подразбиране е setConnectionInterval (100, 150), т.е. Увеличаването на тези стойности намалява захранващия ток, докато е свързан, но компромисът е по -бавното предаване на данни. Всяка актуализация на екрана отнема около 7 BLE съобщения, докато пълните 36 часа от 10 минути измервания отнемат около 170 BLE съобщения. Така увеличаването на интервалите на свързване забавя актуализациите на екрана и графиката се показва.
Класът lp_BLESerial има буфер за изпращане на 1536 байта и изпраща само един блок от 20 байта от този буфер, всеки максимален интервал на връзка, за да се предотврати заливането на BLE връзката с данни. Също така, когато изпращате графични данни, скицата изпраща данни само докато 512 байта изчакат да бъдат изпратени, след което забавя изпращането на повече данни, докато не бъдат изпратени някои данни. Това избягва наводняването на буфера за изпращане. Това ограничаване на изпращанията прави предаването на данни към мобилния телефон надеждно, но не е оптимизирано за максимум чрез пут.
В този проект интервалите на свързване бяха оставени като стойности по подразбиране.
Латентност на подчинените
Когато няма данни за изпращане към мобилния телефон, устройството по желание може да игнорира някои от съобщенията за връзка от мобилния телефон. Това спестява Tx захранване и захранващ ток. Настройката Slaven Latency е броят на съобщенията за връзка, които трябва да се игнорират. По подразбиране е 0. Методът lp_BLESerial setSlaveLatency () може да се използва за промяна на тази настройка.
Латентността на Slave по подразбиране от 0 дава ~ 50uA ток на захранване, игнорирайки актуализациите на екрана на всеки 30 секунди, но включително съобщенията keepAlive много 5 секунди. Задаването на Slave Latency на 2 дава среден свързан захранващ ток от ~ 25uA. Настройката на Slave Latency от 4 дава ~ 20uA. Изглежда, че по -високите настройки не намаляват захранващия ток, така че беше използвана настройка на Slave Latency от 4.
Когато е свързан, на всеки 30 секунди pfodApp иска актуализация на дисплея. Това принуждава сензорното измерване и изпраща обратно данни за актуализиране на графичния дисплей. Тази актуализация води до допълнителни ~ 66uA за 2 секунди на всеки 30 секунди. Това е средно 4.4uA за 30 секунди. Добавяйки това към 20uA, се получава среден захранващ ток на свързване ~ 25uA
Стъпка 5: Общ ток на захранване и живот на батерията
Използвайки горните настройки, както е зададено в lp_BLE_TempHumidity_R3.ino, общия ток на захранване при свързване и актуализиране на дисплея на всеки 30 секунди, приблизително 25uA. Когато не е свързан, той е приблизително 29uA.
За изчисляване на живота на батерията се приема постоянен ток ~ 29uA.
Различните батерии имат различен капацитет и характеристики на напрежението. Батериите, разглеждани тук, са CR2032 монетни клетки, CR2450 (N) монети клетки, 2 x AAA алкални, 2 x AAA литиеви и LiPo.
Резюме на батерията
Ако използвате Solar Assist, добавете 50% към тези стойности на живота на батерията (ако приемете 8 часа дневна светлина)
Забележка: 22uF LowESR кондензатор (C1), в допълнение към вградения кондензатор NanoV2 22uF, съхранява тока на слънчевата клетка и след това го захранва за импулсите на TX ток. От друга страна, батерията доставя част от TX тока. Този допълнителен 22uF LowESR добавя около 10% към тока на батерията, когато слънчевата клетка не е захранване, но също така удължава живота на батерията, като компенсира нарастващото вътрешно съпротивление на батерията, когато батерията достигне края на живота си. Измерванията по -долу са направени БЕЗ допълнителния 22uF кондензатор.
CR2032 - 235mAHr - живот на батерията 10 месеца CR2450 (N) - 650mAHr (540mAHr) - живот на батерията 2,3 години (2yrs) 2 x AAA алкални - 1250mAHr - живот на батерията 3,8 г. 2 x AAA литиева - 1200mAHr - живот на батерията 4,7 г. LiPo презареждаща се поради високото саморазреждане.
CR2032
Тази монетна клетка има капацитет обикновено 235 mAHr (батерия за енергизиране), номинално напрежение 3V и определено напрежение на разреждане 2V. Това предполага живот на батерията от 8100 часа или ~ 0,9 години. Въпреки това вътрешното съпротивление на клетката се увеличава с достигане на края на живота на батерията и затова може да не е в състояние да осигури пиковите импулси на ток Tx. По -голям захранващ кондензатор може да се използва за намаляване на този ефект, но да речем 10 месеца живот.
CR2450 (N)
Тази монетна клетка има капацитет обикновено 620 mAHr (540 mAHr за CR2450N), номинално напрежение 3V и определено напрежение на разряд 2V. Това предполага живот на батерията от 22, 400 часа или ~ 2 години 6 метра (18600 часа ~ 2 години 2 метра за CR2450N). Въпреки това вътрешното съпротивление на клетката се увеличава с достигане на края на живота на батерията и затова може да не е в състояние да осигури пиковите импулси на ток Tx. Може да се използва по -голям захранващ кондензатор, за да се намали този ефект, но да кажем 2 години 4m (2yr N) живот.
Забележка: Версията CR2450N има по -дебел ръб, който помага да се предотврати неправилна инсталация в държач CR2450N. Можете да поставите клетка CR2450N и CR2450 в държач CR2450, но не можете да поставите клетка CR2450 в държач CR2450N
2 x AAA алкални клетки
Тези батерии имат капацитет от около 1250mAHr (батерия за енергизиране) за много ниски токове, номинално напрежение 2x1.5V = 3V и определено напрежение на разреждане 2x0.8V = 1.6V. Но това определено напрежение на разреждане е по -малко от работното напрежение на сензора Si7021 (1.9V), така че батерията може да се използва само до ~ 1V всяка. Това намалява капацитета с около 10% до 15%, т.е. ~ 1000 mAHr.
Това предполага живот на батерията от 34, 500 часа или ~ 4 години. Въпреки това вътрешното съпротивление на клетката се увеличава с достигане на края на живота на батерията и затова може да не е в състояние да осигури пиковите импулси на ток Tx. Може да се използва по -голям захранващ кондензатор, за да се намали този ефект, но да речем 3 години 10м живот. Забележка Алкалните батерии имат саморазряд от 2% до 3% годишно.
2 x AAA литиеви клетки
Тези батерии имат капацитет от около 1200mAHr (батерия за енергизиране), номинално напрежение 2x1.7V = 3.4V, при ниски токове и разредено напрежение 2x1.4V = 2.4V. Това предполага живот на батерията от 41, 400 часа или 4 години 8 метра.
Акумулаторна батерия LiPo
Тези батерии се предлагат с различен капацитет от 100mAHr до 2000mAHr, в плоски формати и имат заредено напрежение от 4.2V и разредено напрежение> 2.7V. Те обаче имат висок саморазряд от 2% -3%/месец (т.е. 24% до 36% годишно) и затова не са толкова подходящи за това приложение, както другите батерии.
Стъпка 6: Алтернативи на захранването - Solar Assist, Only Battery, Solar Only
Батерия плюс соларен помощник
Конструкцията по -горе използва захранването Battery + Solar Assist. Когато слънчевите панели генерират по -голямо напрежение от напрежението на батерията, слънчевите клетки ще захранват монитора, като по този начин ще удължат живота на батерията. Обикновено животът на батерията може да бъде удължен с още 50%.
Използваните слънчеви панели са малки, 50 мм х 30 мм, евтини, ~ 0,50 долара и ниска мощност. Те са номинално 5V панели, но се нуждаят от пълна пряка ярка слънчева светлина, за да генерират 5V. В този проект два панела са свързани последователно, така че поставянето на монитора там, където е близо до прозорец, далеч от пряка слънчева светлина, е достатъчно, за да се замени захранването на батерията. Дори добре осветена стая или настолна лампа са достатъчни, за да могат слънчевите клетки да генерират> 3.3V при> 33uA и да поемат от батерията.
Изграден е прост панел за изпитване, за да се определи къде може да се постави монитор за температура / влажност, извън слънцето и все още да се захранва със слънчева енергия. Както можете да видите от горната снимка, двата панела, свързани към 100K резистор, произвеждат 5.64V през 100K, т.е. 56uA ток при 5.64V. Това е повече от достатъчно поемане на захранването на монитора от батерията. Всяко отчитане на напрежението над номиналното напрежение на батерията от 3V означава, че слънчевите клетки ще захранват монитора вместо батерията.
Двата диода във веригата за контрол на влажността на температурата изолират слънчевите клетки и батериите един от друг и предпазват от свързването им в обратна полярност. 10V 1W стабилитрон и резистор от серия 470R предпазват бордовия регулатор на NanoV2 от пренапрежение от две слънчеви клетки на пълно слънце, особено ако вместо 5V се използват 12V клетки. При нормална работа при <5V, 10V ценерът черпи само ~ 1uA.
Само батерия
За захранване само с батерии, просто пропуснете R1, D1 и D3 и слънчевите клетки. Можете също така да замените D1 с парче тел, ако не искате защита от обратна полярност.
Само слънчеви
Захранването на монитора само от слънчеви клетки, без батерия, изисква различна схема на захранване. Проблемът е, че докато мониторът ще работи на 29uA, при включване nRF52 черпи ~ 5mA за 0,32 сек. Показаната по -горе схема (pdf версия) държи регулатора MAX8881 изключен, докато входните кондензатори, 2 x 1000uF, се заредят до 4.04V. След това MAX6457 освобождава входа MAX8881 SHDN за захранване на nRF52 (NanoV2) 2 x 1000uF кондензатора доставят необходимия стартов ток.
Това позволява на монитора да се включи веднага щом има достатъчно слънчева енергия, да го поддържа при 29uA.
Стъпка 7: Заключение
Този урок представи батериен/слънчев захранващ монитор за влажност на температурата като пример BLE проект с много ниска мощност в Arduino за чипа nRF52832. Захранващи токове ~ 29uA, където се постигат чрез настройване на параметрите на връзката. Това доведе до живот на батерията с монетни клетки CR2032 над 10 месеца. По -дълъг за монети с по -голям капацитет и батерии. Добавянето на две евтини слънчеви клетки лесно удължава живота на батерията с 50% или повече. Ярка стайна светлина или настолна лампа са достатъчни за захранване на монитора от слънчевите клетки.
Беше представена специална захранваща верига, която позволява на монитора да работи само от слънчеви клетки с малък капацитет.
Безплатният pfodDesigner ви позволява да проектирате менюта/подменюта, да съпоставяте с дата/час и лог данни и след това да генерирате скица на Arduino с ниска мощност за вас. Тук персонализиран интерфейс беше кодиран с помощта на примитиви за рисуване на pfodApp. Свързването с pfodApp показва потребителския интерфейс и актуализира показанията, докато мониторът използва ~ 29uA
Не се изисква програмиране за Android. pfodApp обработва всичко това.
Препоръчано:
Автоматизиране на оранжерия с LoRa! (Част 1) -- Сензори (температура, влажност, влажност на почвата): 5 стъпки
Автоматизиране на оранжерия с LoRa! (Част 1) || Сензори (температура, влажност, влажност на почвата): В този проект ще ви покажа как автоматизирах оранжерия. Това означава, че ще ви покажа как построих оранжерията и как свързах електрониката за захранване и автоматизация. Също така ще ви покажа как да програмирате Arduino платка, която използва L
Лесен BLE с много ниска мощност в Arduino, част 3 - Подмяна на Nano V2 - Стъпки 3: 7 (със снимки)
Лесен BLE с много ниска мощност в Arduino Част 3 - Замяна на Nano V2 - Ред 3: Актуализация: 7 април 2019 г. - Ред 3 на lp_BLE_TempHumidity, добавя графики за дата/час, използвайки pfodApp V3.0.362+и автоматично ограничаване при изпращане на данни Актуализация: 24 март 2019 - Ред 2 на lp_BLE_TempHumidity, добавя още опции за графики и i2c_ClearBus, добавя GT832E
Стълбищна нощна лампа - много ниска мощност и 2 сензора: 5 стъпки
Стълбищна нощна лампа - много ниска мощност и 2 сензора: Изградих тази нощна лампа за стълбища с ниска мощност с два инфрачервени сензора за движение, за да мога да инсталирам едно устройство, на половината път в стълбището, и да го задействам или от някой, който се качва или идва надолу по стълбите. Също така направих моя дизайн много нисък
DIY MusiLED, музикално синхронизирани светодиоди с приложение за Windows и Linux с едно щракване (32-битово и 64-битово). Лесен за пресъздаване, лесен за използване, лесен за пренасяне .: 3 стъпки
DIY MusiLED, музикално синхронизирани светодиоди с приложение за Windows и Linux с едно щракване (32-битово и 64-битово). Лесен за пресъздаване, лесен за използване, лесен за пренасяне .: Този проект ще ви помогне да свържете 18 светодиода (6 червени + 6 сини + 6 жълти) към вашата платка Arduino и да анализирате сигналите на звуковата карта на вашия компютър в реално време и да ги предадете на светодиодите, за да ги светят според ритъма (Snare, High Hat, Kick)
WiFi IoT сензор за температура и влажност. Част: 8 IoT, Домашна автоматизация: 9 стъпки
WiFi IoT сензор за температура и влажност. Част: 8 IoT, Домашна автоматизация: Преамбюл Тази статия документира практическата стабилност и по -нататъшното развитие на по -ранна инструкция: „Pimping“вашето първо IoT WiFi устройство. Част 4: IoT, Домашна автоматизация, включително цялата необходима софтуерна функционалност, за да се постигне успех