Съдържание:

Метеорологична станция NaTaLia: Метеорологична станция със слънчева енергия Arduino, направена по правилния начин: 8 стъпки (със снимки)
Метеорологична станция NaTaLia: Метеорологична станция със слънчева енергия Arduino, направена по правилния начин: 8 стъпки (със снимки)

Видео: Метеорологична станция NaTaLia: Метеорологична станция със слънчева енергия Arduino, направена по правилния начин: 8 стъпки (със снимки)

Видео: Метеорологична станция NaTaLia: Метеорологична станция със слънчева енергия Arduino, направена по правилния начин: 8 стъпки (със снимки)
Видео: Как да инсталирате метеостанция Meteobot® 2024, Юли
Anonim
Метеорологична станция NaTaLia: Метеорологичната станция със слънчева енергия Arduino е направена по правилния начин
Метеорологична станция NaTaLia: Метеорологичната станция със слънчева енергия Arduino е направена по правилния начин
Метеорологична станция NaTaLia: Метеорологичната станция със слънчева енергия Arduino е направена по правилния начин
Метеорологична станция NaTaLia: Метеорологичната станция със слънчева енергия Arduino е направена по правилния начин

След 1 година успешна работа на 2 различни места споделям плановете си за проектиране на метеорологични станции със слънчева енергия и обяснявам как тя се е превърнала в система, която наистина може да оцелее за дълги периоди от слънчева енергия. Ако следвате моите инструкции и използвате абсолютно същите материали, както са изброени, можете да построите метеорологична станция със слънчева енергия, която ще работи в продължение на много години. Всъщност единственият фактор, ограничаващ колко дълго ще работи, е животът на батерията, която използвате.

Стъпка 1: Работа на метеорологичната станция

1, Предавател: Външна монтирана кутия със слънчев панел, която периодично изпраща метеорологична телеметрия (температура, влажност, топлинен индекс, слънчева сила) към вътрешния приемник.

2, Приемник: Вътрешно устройство, изработено от Raspberry PI 2 + Arduino Mega с 433 Mhz RF приемник, свързан за приемане на данни. В моята настройка това устройство няма никаква локална LCD функция. Тече безгрижно. Основна програма на C се грижи за получаване на входящите данни от Arduino чрез сериала, след което регистрира данните в текстов файл и прави последните получени данни достъпни чрез telnet за други устройства, за да ги попитат.

Станцията контролира светлините в моя дом чрез отчитане на фоторезистора (който определя дали навън е ден или нощ). Приемникът е без глава в моя случай, но можете лесно да промените проекта, за да добавите LCD дисплей. Едно от устройствата, използващи, анализиращи и показващи метеорологичните данни от станцията, е моят друг проект: Ironforge NetBSD Toaster.

Стъпка 2: Първи версии

Първи версии
Първи версии
Първи версии
Първи версии
Първи версии
Първи версии
Първи версии
Първи версии

В мрежата има много слънчеви проекти, но много от тях допускат често срещаната грешка, че системата отнема повече енергия от батерията с течение на времето, което слънчевият панел би могъл да попълни, особено през облачните, тъмни зимни месеци.

Когато проектирате слънчева система, единственото нещо, което има значение, е КОНСУМАЦИЯТА НА МОЩНОСТТА на всички компоненти: MCU, радиопредавател, регулатор на напрежението и др.

Използването на голям компютър като малиново пи или мощно wifi устройство като ESP само за събиране и транспортиране на няколко бита метеорологични данни би било прекалено много, но както ще го покажа в този урок, дори малка дъска Arduino е.

Най -доброто е винаги да измервате тока по време на процеса на изграждане с метър или с обхват (полезно, когато се опитвате да измервате малки скокове на използване по време на операцията в много кратки периоди от време (милисекунди)).

На първата снимка можете да видите първата ми (Arduino Nano Based) станция и втората Arduino Barebone Atmega 328P платка.

Първата версия, въпреки че работи перфектно (мониторинг на околната среда и изпращане на данни по радио), имаше твърде висока консумация на енергия ~ 46mA и изтощи батерията за няколко седмици.

Всички версии използваха следната батерия:

18650 6000mAh Защитена литиево-йонна акумулаторна батерия Вграден защитен борд

Актуализирайте тези батерии ScamFire. Въпреки че това е доста стар Instructable, все още се чувствах принуден да го коригирам поради тази фалшива батерия. НЕ купувайте споменатата батерия, направете свое собствено проучване за други батерии LION/LIPO, всички 3,7V батерии ще работят с този проект.

И накрая имах време да развенча батерията на ScamFire, за да видя какъв е нейният реален капацитет. Затова ще извършим 2 изчисления рамо до рамо с реалния и „рекламирания“капацитет.

Първо, това е едно нещо, че тази батерия е фалшива и нищо, което твърдят за нея, не е вярно, новите версии са още по -лоши, че са копирали фалшивата, като са пропуснали защитната верига от 2 цента, така че нищо няма да ги спре да се разредят до нула.

Малка статия за батериите LION/LIPO:

TLDR:

Това означава, че максималното напрежение на клетката е 4.2v и че "номиналното" (средно) напрежение е 3.7V.

Например, тук е профил на напрежението за "класическа" батерия 3.7V/4.2V. Напрежението започва от максимум 4,2 и бързо пада до около 3,7 V за по -голямата част от живота на батерията. След като ударите 3.4V, батерията е изтощена и при 3.0V прекъсващата верига изключва батерията.

Моите измервания с помощта на фиктивен товар:

Заредена батерия: 4.1V

Прекъсването е настроено на: 3.4V

Симулация на натоварване: 0,15A (моето устройство имаше малко проблем с падането по -ниско от това.)

Измерен капацитет: 0.77Ah дайте му безплатни 0.8 Ah, което е 800mAh вместо рекламираните 6000mAh!

Тъй като тази батерия дори нямаше защитна верига, можех свободно да се спусна, но при 3.4V след 10 минути тя вече се срива до 3.0V.

Следователно с прости изчисления батерията осигурява:

Теоретичен

Напрежение на батерията = 3.7V

Мощност = 3.7x6000 = 22000 mWh

Истински

Напрежение на батерията = 3.7V Мощност = 3.7x800 = 2960 mWh

Версия: 0.1 ARDUINO NANO BASED

Дори с библиотеката LowPower Arduino nano консумира ~ 16 mA (в режим на заспиване) -> FAIL.

Теоретичен

Pavg = VxIavg = 5Vx16mA = 80 mW

Живот на батерията = 22000/80 = 275 часа = приблизително 11 дни

RealPavg = VxIavg = 5Vx16mA = 80 mW

Живот на батерията = 800/80 = 10 часа

Версия: 0.2 Atmega 328P Barebone

Консумираната мощност от ATmega328 зависи много от това, което правите с него. Просто седнал там в състояние по подразбиране, той може да използва 16mA @ 5V, докато работи на 16MHz.

Когато ATmega328P е в активен режим, той непрекъснато ще изпълнява няколко милиона инструкции в секунда. Освен това, бордови периферни устройства аналогово-цифров преобразувател (ADC), сериен периферен интерфейс (SPI), таймер 0, 1, 2, двупроводен интерфейс (I2C), USART, таймер за наблюдение (WDT) и откриване на кафяв изход (BOD) консумират енергия.

За да пести енергия, ATmega328P MCU поддържа редица режими на заспиване и неизползваните периферни устройства могат да бъдат изключени. Режимите на сън се различават по това кои части остават активни, по продължителността на съня и времето, необходимо за събуждане (период на събуждане). Режимът на заспиване и активните периферни устройства могат да се контролират с AVR библиотеки за сън и захранване или, по-кратко, с отличната библиотека с ниска мощност.

Библиотеката с ниска мощност е лесна за използване, но много мощна. Изявлението LowPower.powerDown (SLEEP_8S, ADC_OFF, BOD_OFF); поставя MCU в SLEEP_MODE_PWR_DOWN за 16 ms до 8 s, в зависимост от първия аргумент. Той деактивира ADC и BOD. Сън при изключване означава, че всички функции на чипа са деактивирани до следващото прекъсване. Освен това външният осцилатор е спрян. Само прекъсвания на ниво на INT1 и INT2, прекъсвания при смяна на щифтове, съвпадение на адреса на TWI/I2C или WDT, ако е разрешено, могат да събудят MCU. Така че с единното изявление ще намалите консумацията на енергия до минимум. За 3.3 V Pro Mini без светодиод за захранване и без регулатор (вижте по -долу), който изпълнява декларацията, консумацията на енергия е 4.5 μA. Това е много близко до това, което е споменато в листа с данни ATmega328P за спиране при изключено захранване с активиран WDT от 4,2 μA (лист с данни, свързан в източници). Затова съм напълно уверен, че функцията powerDown изключва всичко, което е разумно възможно. С израза LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);, WDT ще бъде деактивиран и няма да се събудите, докато не се задейства прекъсване.

Така че с настройката barebone можем да поставим чипа в режим на заспиване за 5 минути, докато той консумира много малко количество енергия (0.04 mA без периферни устройства). Това обаче е само чипът Atmega 328P с кристалния осцилатор и нищо друго, усилвателят на напрежението, използван в тази конфигурация за повишаване на напрежението на батерията от 3,7 V -> 5,0 V, също консумира 0,01 mA.

Един постоянен източник на напрежение е добавеният фоторезистор, който увеличава консумацията в режим на заспиване до общо 1 mA (това включва всички компоненти).

Формулата за изчисляване на точната консумация на устройството както в режим на заспиване, така и в режим на събуждане е:

Iavg = (Ton*Ion + Tsleep*Isleep) / (Ton + Tsleep)

Йон = 13mA

Това идва най -вече от предавателя RF433 Mhz:

Предавател:

Работно напрежение: 3V - 12V fo max. използване на мощност 12V Работен ток: макс По -малко от 40mA макс, и мин 9 mAR Режим на резонанс: (SAW) Режим на модулация: ASK Работна честота: Eve 315MHz или 433MHz Предавателна мощност: 25mW (315MHz при 12V) Честотна грешка: +150kHz (макс) Скорост: по -малко от 10Kbps

Сън = 1mA

Би било значително по -малко без фоторезистора.

Време на Трюнон Тон = 250 mS = 0,25s

Време за сън Tsleep = 5 min = 300s

Iavg = (Ton*Ion + Tsleep*Isleep) / (Ton + Tsleep)

Iavg = (0.25s*13mA + 300s*1mA) / (0.25s + 300s)

Iavg = 1,26 mA

Pavg = VxIavg = 5Vx1.26mA = 6 mW

Теоретичен

Живот на батерията = 22000mWh/6mW = 3666 часа = приблизително 152 дни

Истински

Живот на батерията = 800mWh/6mW = 133 часа = приблизително 5,5 дни

Въпреки че това все още бяха по -добра серия UltraFire, това, което използвах първоначално, можеше да се види, че без слънчевия панел или ниската консумация от 1 mA този проект няма да оцелее дълго.

Чувствайте се свободни да изградите станцията и да запишете вашите констатации и изчисления към коментарите и аз ще актуализирам статията. Също така бих оценил резултатите с различни MCU и усилващи конвертори.

Стъпка 3: Изграждане на успешна метеорологична станция

Изграждане на успешна метеорологична станция
Изграждане на успешна метеорологична станция
Изграждане на успешна метеорологична станция
Изграждане на успешна метеорологична станция
Изграждане на успешна метеорологична станция
Изграждане на успешна метеорологична станция
Изграждане на успешна метеорологична станция
Изграждане на успешна метеорологична станция

Въпреки че това е първата успешна версия, тя съдържа малко грешки на снимките и не мога да ги преработя, защото станциите вече са разгърнати. Двата усилвателя на напрежението, показани на снимката, могат да бъдат получени по време на писането за аеромоделиране и други приложения. Когато препроектирах моята станция, мислех да получа по -малка и по -ефективна стъпкова платка за напрежение, но по -малките по размер определено не означават, че тя е по -ефективна.

Новият малък модул на снимката, който дори няма индикатор, всъщност източи 3mA (*FAIL*) сам по себе си, така че останах със старата си платка:

PFM управление DC-DC USB 0.9V-5V до 5V dc Boost Step-up захранващ модул

По време на писането този модул все още е наличен в Ebay за 99 цента, но ако решите да използвате друг усилвател, винаги проверявайте консумацията на енергия в режим на готовност. С висококачествен усилвател той не трябва да бъде повече от моя (0,01 mA), въпреки че малкият светодиод на борда трябваше да бъде споен.

Стъпка 4: Списък на хардуера

Списък на хардуера
Списък на хардуера
  • 18650 6000mAh Защитена литиево-йонна акумулаторна батерия Вграден защитен борд
  • Atmega 328P16M 5V с буутлоудър
  • Adafruit DC Boarduino (съвместим с Arduino) комплект (с ATmega328) <това ще бъде добра инвестиция, ако правите бъдещи проекти barebone
  • Фоточувствителен резистор Фоторезистор Опторезистор 5 мм GL5539
  • 1A 1000V диод 1N4007 IN4007 DO-41 Токоизправителни диоди
  • PFM управление DC-DC USB 0.9V-5V до 5V dc Boost Step-up захранващ модул
  • 1.6W 5.5V 266mA Мини модул за слънчеви панели Система Епоксидно клетъчно зарядно устройство DIY
  • TP405 5V Мини USB 1A литиево -йонна батерия за зареждане на модул за зареждане
  • Комплект за свързване на RF предавател и приемник 433Mhz за дистанционно управление Arduino/ARM/MC <Комплект, съдържа както предавателя, така и предавателя
  • IP65 Прекъсвач Защитно съединителна кутия Външен водоустойчив корпус 150x110x70mm
  • Нов модул за сензор за температура и относителна влажност на DHT22 за Arduino
  • 1x220 Ohm, 2x10KOhm, 1xLED, 1xMini Switch, 1x1N4007диод
  • Adafruit 16 MHz керамичен резонатор / осцилатор [ADA1873]
  • Arduino UNO/Mega и т.н. за приемна станция + Raspberry PI 1/2/3
  • Прозрачна акрилна пластмасова кутия (по избор)

Можете да намерите всичко това в Ebay, не искам да популяризирам никакви продавачи, като се свързвам към техните страници и така или иначе връзките ще станат мъртви в бъдеще.

Бележки за списъка с хардуер:

Само в случай, че погребате по някакъв начин Atmega с програмиране, купете повече от тях, същото важи и за усилвателя на напрежението и контролера за слънчево зареждане.

Слънчевото зарядно устройство съдържа 2 малки цветни светодиода, които се включват само в случай на слънчево зареждане и показват (червено-> зареждане, синьо-> напълно заредено състояние). Те също могат да бъдат разпаени. По -скоро дава малко повече допълнителен сок на батерията по време на зареждане.

Както виждате, в моя списък няма държачи за батерии. Защо? Защото са ненадеждни. Имах безброй случаи, когато батерията се изваждаше от държача и губеше връзка. Особено, ако настройката ви е монтирана на висок стълб като моя, отворен за всякакви сурови метеорологични условия. Дори закопчах батерията в държача с 2 ципа и тя все пак успя да се изнесе. Не го правете, просто премахнете външното покритие от батерията и запоявайте проводниците директно в долната част на батерията, съдържащи защитна верига от презареждане (не заобикаляйте защитата). Държач за батерия може да се използва само за задържане на батерията на място в устройството.

TP405 5V Mini USB 1A литиева батерия за зареждане: за съжаление тази платка не включва защита от обратен ток към слънчевия панел, за това ще ви е необходим още 1 диод, който да бъде поставен между единия крак на соларния панел и веригата за зареждане, за да спрете опитите за ток да се влива обратно в слънчевия панел през нощта.

Стъпка 5: Монтаж

Монтаж
Монтаж
Монтаж
Монтаж
Монтаж
Монтаж

Тази платка съдържа сравнително малко компоненти и маркерите на дъската са сравнително прости.

Уверете се, че НЕ поставяте Atmega328P по грешен начин (това може да загрее и да огради чипа, може също да разруши усилвателя на напрежението).

В тази настройка чипът е обърнат надолу (малка U дупка, маркираща PIN1). Всички останали компоненти трябва да са очевидни.

Използвайте екраниран кабел (напр.: Аудио кабелът от CDrom ще се справи добре) за LDR. В някои случаи (в продължение на много седмици тест) се оказа, че пречи на предаването на радиосигнал. Това беше един от онези грешки, които е трудно да се отстранят, така че ако не искате проблеми, просто използвайте екраниран кабел, краят на историята.

LED: Светодиодът в долната част на кутията първоначално беше добавен, за да мига, когато има изходящо радиопредаване, но по -късно го считах за загуба на енергия и мига само 3 пъти в процеса на зареждане.

TP: е тестова точка за измерване на тока за цялата верига.

DHT22: Не купувайте евтиния DHT11, харчете 50 цента повече, за да получите белия DHT22, който може да измерва и отрицателните температури.

Стъпка 6: Дизайн на корпуса

Дизайн на корпуса
Дизайн на корпуса
Дизайн на корпуса
Дизайн на корпуса
Дизайн на корпуса
Дизайн на корпуса

Въпреки че е малко пресилено, беше направен 3D отпечатан куб (weather_cube), който държи температурния сензор DHT22 на място. Кубът е залепен за дъното на IP кутията, включващ само 1 отвор, за да може въздухът да достигне до сензора. Добавих мрежа в дупката срещу пчели, оси и други малки мухи.

Външна кутия може да се използва по избор, за да се направи станцията по -водоустойчива, в случай че я монтирате на стълб за чинии на открито.

Идея за 1 полезна функция: добавяне на голяма метална покривна плоча 1-2 см в горната част на кутията, осигуряваща сянка от слънцето през лятото, въпреки че това също може да отнеме нашата полезна слънчева светлина от панела. Можете да измислите дизайн, който разделя панела и кутията (оставяйки панела на слънце, кутията в сянка).

На снимките: една от станциите, премахнати от работната среда след 1 година, напрежението на батерията е на зашеметяващите 3.9V все още, няма повреди от вода в която и да е част от кутията, въпреки че мрежата, която залепих в долната част на куба, беше разкъсана. Причината, поради която станцията трябва да се обслужва, е грешка във връзката на LDR конектора, въпреки че кабелът на джъмпера изглеждаше все още на място, връзката беше прекъсната, поради което щифтът понякога плаваше, осигурявайки лоши аналогови показания на LDR. Предложение: ако използвате стандартни джъмпери за компютър, залепете ги горещо, след като станцията работи перфектно, за да избегнете това.

Стъпка 7: Софтуер

Софтуер
Софтуер

Софтуерният код ще изисква 3 външни библиотеки (LowPower, DHT, VirtualWire). Напоследък имах проблем с намирането на някои от тях лесно онлайн, затова ги прикачих в отделен ZIP файл. Независимо каква ОС използвате Linux/Windows, просто намерете библиотечната папка на вашия Arduino IDE и ги извлечете там.

Само бележка, независимо че вече съветвам да не купувате DHT11, ако използвате грешен тип DHT сензор, програмата просто ще виси завинаги в началото в секцията за инициализация (дори няма да видите стартиращия светодиод да мига 3 пъти).

Кодът на основния цикъл е много прост, първо чете стойностите на околната среда (температура, топлинен индекс, влажност, слънчева енергия), изпраща ги по радио, след това използва библиотеката с ниска мощност, за да приспи Arduino за 5 минути.

Открих, че намаляването на скоростта на предаване ще увеличи стабилността на радиопредаванията. Станцията изпраща много малко количество данни, 300 bps са повече от достатъчни. Също така не забравяйте, че предавателят работи само от прибл. 4.8V, в бъдещата версия 3.3V това може да доведе до още по -лошо качество на предаване (изпращане на данни през стени и други препятствия). Попаднах на проблем с използването на Arduino Mega, прикрепен към Raspberry PI 2, захранващ Mega от PI, че не получих никакво предаване. Решението беше захранването на Mega от отделно външно 12V захранване.

Стъпка 8: Версия 2 (базирана на ESP32)

Версия 2 (базирана на ESP32)
Версия 2 (базирана на ESP32)
Версия 2 (базирана на ESP32)
Версия 2 (базирана на ESP32)
Версия 2 (базирана на ESP32)
Версия 2 (базирана на ESP32)

Всичко, което може да се счупи, ще се счупи, за да цитирам добрия стар Мърфи и в крайна сметка след години станциите се провалиха по мистериозни начини. Един започна да изпраща глупави слънчеви данни, които достигнаха десетки хиляди, което е невъзможно поради: Платката Arduino съдържа 6 канала (8 канала на Mini и Nano, 16 на Mega), 10-битов аналогово-цифров преобразувател. Това означава, че той ще картографира входните напрежения между 0 и 5 волта в цели числа между 0 и 1023. Така че след смяна на радиото, LDR и препрограмиране на Atmega 328P няколко пъти се отказах и реших, че е време за иновации. Да отидем на ESP32.

Платката, която използвах, беше: ESP32 WEMOS LOLIN32 Lite V1.0.0 Wifi и Bluetooth карта Rev1 MicroPython 4MB FLASH

wiki.wemos.cc/products:lolin32:lolin32_lit…

Микроконтролер ESP-32

Работно напрежение 3.3V Цифрови входно/изходни щифтове 19 Аналогови входни щифтове 6 Тактова честота (макс.) 240Mhz Светкавица 4M байта Дължина 5 мм Ширина 2,54 мм Тегло 4 г

Което за разлика от изобразеното няма логото LOLIN (фалшив от Китай). Първата ми приятна изненада беше, че разпечатката, отпечатана на дъската, съвпада с разпечатката на Arduino! След като се справих с толкова много платки на noname, където трябваше да търся разпилки по цял ден мъртъв уморен, правейки грешки най -накрая на дъска, където разпилката е направо напред WoW!

Ето обаче тъмната страна на историята:

Първоначално свързах LDR към A15, който е щифт 12, защото беше по -лесно да залепите щифтовете заедно. След това имам 4095 показания (което е максимумът, който можете да получите с AnlogRead на ESP32), което ме побърка, защото цялата причина, поради която възстанових станцията, бяха счупените LDR показания от старата (DHT все още работеше добре). Така се оказва, че:

Esp 32 интегрира два 12-битови ACD регистри. ADC1 с 8 канала, свързани към GPIO 32-39 ande ADC2 с 10 канала в други пинове. Работата е там, че ESP32 използва ADC2 за управление на wifi функции, така че ако използвате Wifi, не можете да използвате този регистър. API за ADC драйвер поддържа ADC1 (8 канала, свързани към GPIO 32 - 39) и ADC2 (10 канала, свързани към GPIO 0, 2, 4, 12 - 15 и 25 - 27). Използването на ADC2 обаче има някои ограничения за приложението:

ADC2 се използва от Wi-Fi драйвера. Следователно приложението може да използва ADC2 само когато Wi-Fi драйверът не е стартиран. Някои от щифтовете ADC2 се използват като щифтове за закрепване (GPIO 0, 2, 15), поради което не могат да се използват свободно. Такъв е случаят със следните официални комплекти за разработка:

Така че свързването на LDR от пин 12 към A0, което е VP, разреши всичко, но не разбирам защо дори изброяват пиновете ADC2 като достъпни за производителите. Колко други хобисти губят тонове време, докато разберат това? Поне маркирайте неизползваемите щифтове с червено или нещо подобно или изобщо не го споменавайте в ръководството, така че другите производители да могат да разберат за тях само ако наистина се нуждаят от тях. Цялата цел на ESP32 е да го използва с WIFI, всеки го използва с WIFI.

Добро начало как да настроите Arduino IDE за тази платка:

Въпреки че го поставих в кода тук, той отново се появява:

Този код може да не се компилира за други модели ESP32 освен Weemos LOLIN 32!

Настройки за изграждане: -Използвайте качване/сериен: 115200 -Използвайте процесор/RAM: 240Mhz (Wifi | BT) -Използвайте честотата на флаш: 80 Mhz

В мрежата има много метеорологични станции, базирани на ESP32, те са много по -често срещани, отколкото моята версия 1 беше с чипа barebone, защото са по -лесни за настройка, не се нуждаете от програмист, просто включете устройството в usb и го програмирайте и тяхното режимът на дълбок сън е отличен за дълго време, работещ от батерията. Това беше първото нещо, което тествах дори преди запояване в прекъсващите щифтове, тъй като, както отбелязах на няколко места в този проект, НАЙ -важното нещо е консумацията на енергия и с текущата (фалшива) батерия и малък слънчев панел в режим на готовност мощността не може да надхвърли 1-2 mA. В противен случай проектът няма да може да се поддържа в дългосрочен план.

Отново беше приятна изненада, че режимът на дълбок сън работи както се рекламира. По време на дълбок сън течението беше толкова ниско, че евтиният му мултиметър дори не можеше да го измери (работи за мен).

По време на изпращането на данни токът беше около 80 mA (което е около 5 пъти повече, отколкото когато Atmega 328P се събуждаше и предава), но не забравяйте, че с V1 е имало средно 1 mA изтичане на енергия на LDR в режим на заспиване (което също зависи от нивата на осветеност и премина от 0.5mA - 1mA), което сега го няма.

След като батерията UltraFire е развенчана, ако използвате същата батерия, ето какво можете да очаквате:

Iavg = (Ton*Ion + Tsleep*Isleep) / (Ton + Tsleep)

Iavg = (2s*80mA + 300s*0.01mA) / (2s + 300s) Iavg = 0.5mA

Pavg = VxIavg = 5Vx0.5mA = 2.5 mW

Теоретичен

Живот на батерията = 22000mWh/2.5mW = 8800 часа = приблизително 366 дни

Истински

Живот на батерията = 800mWh/2.5mW = 320 часа = приблизително 13 дни

Нямах обхват за точно измерване на времето за включване, но с моите ощипвания то достига около 2 секунди.

Не исках да прекарвам следобеда в персонализирано кодиране на всичко, затова потърсих някои други метеорологични станции на Instructables, базирани на ESP32, за да видя какво правят за съхранение на данни. За съжаление забелязахме, че използват негъвкави и ограничени сайтове като weathercloud. Тъй като не съм фен на „облака“и техният код отдавна се счупи, защото оттогава сайтът е променил своя API, отделих 10 минути, за да направя персонализирано решение, защото не е толкова трудно, колкото може да се мисли. Да започваме!

Първо, няма картина на печатната платка отделно за този проект, защото тя използва същите компоненти (съжалявам за това, споени в грозна картина) като V1 с разликата, че всичко работи от 3.3V. DHT се свърза с издърпване към VCC, LDR се изтегли с 10k. Проблемът, който може да се види с батериите 18650, като моята китайска фалшива (6500 mAh ултра слънчев огън хаха: D) е, че те започват кривата на разреждане от около 4.1V нова ера и продължават, докато прекъсващата им верига се включи, за да спре увреждането на клетките (тези, които имат късмета да го имат). Това никъде не е добре като 3.3V вход. Въпреки че тази платка LOLIN има конектор за литиева батерия и верига за зареждане в този проект, исках да обновя най -много това, което мога от старата станция, така че със старата 18650 НЕ МОЖЕТЕ да използвате това вградено зарядно устройство. Решението беше много просто: отрязах микро USB кабел, запоен в 5V от стария усилвател на напрежение и проблема с voila беше решен, тъй като платката на microUSB има регулатор.

Така че разликата между старата и новата версия, която в старата батерия осигурява 3.7V -> повишена до 5V -> ardu работи на 5V -> всички компоненти работят на 5V.

В новия: батерията осигурява 3.7V -> усилена до 5V -> регулирана чрез бордови регистър на ESP32 -> всички компоненти работят на 3.3V.

Софтуерно, ще ни трябва и друга DHT библиотека, DHT на Arduino не е съвместим с ESP. Това, от което се нуждаем, се нарича DHT ESP.

Започнах да базирам кода си на пример DHT, предоставен от този код. Работата на кода е:

1, Вземете данните за околната среда от данните DHT + Solar от фотоклетката

2, Свържете се с wifi със статичен IP

3, Публикувайте данните в php скрипт

4, Отидете да спите за 10 минути

Както ще забележите, аз настроих кода за ефективност, за да сведе до минимум времето за събуждане, тъй като изразходва 5 пъти повече енергия, отколкото старият проект, когато беше включен. Как направих това? На първо място, ако има някакъв вид грешка, функцията getTemperature () ще се върне с false (което означава отново 10 минути сън). Това може да е така, сякаш DHT сензорът не може да бъде иницииран или wifi връзката не е налична. Както забелязвате, обичайният цикъл while (), за да продължите да опитвате wifi асоциацията завинаги, също беше премахнат, но трябваше да оставите закъснение от 1 секунда там, в противен случай няма да се свърже винаги и също зависи от типа на AP, зареждането и т.н. колко бързо ще се случи, с 0.5s получих непоследователно поведение (понякога не можеше да се свърже). Ако някой знае по -добър начин за това, моля, оставете го в коментарите. Само когато данните за DHT се четат и wifi връзката е активирана, тя ще се опита да публикува данните в скрипта на уеб сървъра. Всички видове загуба на време функции като Serial.println () са деактивирани и в нормален работен режим. Като сървър използвам и IP, за да избегна ненужно търсене на DNS, в моя код и шлюзът по подразбиране, и dns сървърът са зададени на 0.0.0.0.

Не разбирам защо е толкова трудно да създадете свой собствен API, когато всичко, което е необходимо, е:

sprintf (отговор, "temp =%d & hum =%d & hi =%d & sol =%d", temp, hum, hi, sol);

int httpResponseCode = http. POST (отговор);

Поставяте този малък php код на всяко малиново пи и можете веднага да изпълнявате системни () задачи въз основа на телеметрията като включване на вентилатори или включване на светлините, ако стане достатъчно тъмно.

Някои бележки относно кода:

WiFi.config (staticIP, шлюз, подмрежа, dns); // ТРЯБВА да стане след като Wifi започне колко тъпо …

WiFi.mode (WIFI_STA); // В противен случай трябва да създаде нежелана точка за достъп

Да, сега знаете. Също така редът на IP конфигурациите може да се променя чрез платформи, първо опитах други примери, където стойностите на шлюза и подмрежата бяха превключени. Защо да зададете статичен IP? Е, това е съвсем очевидно, ако имате специално предназначено поле в мрежата си като Linux сървър, работещ с isc dhcpd, не искате сто милиона записи в дневника, когато ESP се събуди и получи IP от DHCP. Рутерите обикновено не регистрират асоциации, така че това ще остане невиждано. Това е цената за спестяване на енергия.

V2 никога не е успял да се издържа поради лошото качество на батерията и просто го сложих на адаптер, така че ако искате да изградите V1 или V2, НЕ купувайте споменатата батерия, направете собствено проучване на батериите (всяка 18650 Рекламираният капацитет над 2000mAh в Ebay е измама с голяма вероятност).

Препоръчано: