Мазмұны:

NaTaLia метеостанциясы: күн энергиясымен жұмыс істейтін Arduino метеостанциясы дұрыс жасады: 8 қадам (суреттермен)
NaTaLia метеостанциясы: күн энергиясымен жұмыс істейтін Arduino метеостанциясы дұрыс жасады: 8 қадам (суреттермен)

Бейне: NaTaLia метеостанциясы: күн энергиясымен жұмыс істейтін Arduino метеостанциясы дұрыс жасады: 8 қадам (суреттермен)

Бейне: NaTaLia метеостанциясы: күн энергиясымен жұмыс істейтін Arduino метеостанциясы дұрыс жасады: 8 қадам (суреттермен)
Бейне: Алтай. Көл сақтаушылары. [Агафя Лыкова және Василий Песков]. Сібір. Телецкое көлі. 2024, Маусым
Anonim
NaTaLia метеостанциясы: күн энергиясымен жұмыс істейтін Arduino метеостанциясы дұрыс жолмен жүрді
NaTaLia метеостанциясы: күн энергиясымен жұмыс істейтін Arduino метеостанциясы дұрыс жолмен жүрді
NaTaLia метеостанциясы: күн энергиясымен жұмыс істейтін Arduino метеостанциясы дұрыс жолмен жүрді
NaTaLia метеостанциясы: күн энергиясымен жұмыс істейтін Arduino метеостанциясы дұрыс жолмен жүрді

Екі түрлі жерде 1 жыл табысты жұмыс істегеннен кейін мен күн сәулесінен қуат алатын метеостанция жобаларының жоспарларымен бөлісемін және оның күн энергиясынан ұзақ уақыт бойы өмір сүре алатын жүйеге қалай айналғанын түсіндіремін. Егер сіз менің нұсқауларымды орындасаңыз және дәл сол материалдарды қолдансаңыз, сіз көптеген жылдар бойы жұмыс істейтін күн сәулесінен жұмыс істейтін метеостанцияны құра аласыз. Шын мәнінде, оның жұмыс істеу ұзақтығын шектейтін жалғыз фактор - бұл батареяның қызмет ету мерзімі.

1 -қадам: метеостанцияның жұмысы

1, Таратқыш: күн батареясы бар ашық аспалы қорап, ауа -райының телеметриясын (температура, ылғалдылық, жылу индексі, күн күші) мезгіл -мезгіл ішкі қабылдағыш қондырғысына жібереді.

2, Қабылдағыш: Raspberry PI 2 + Arduino Mega -дан жасалған ішкі құрылғы, деректерді қабылдауға қосылған 433 МГц РФ қабылдағышы бар. Менің қондырғымда бұл құрылғыда СКД дисплейінің жергілікті функциясы жоқ. Ол байқаусызда жүгіреді. C негізгі бағдарламасы Arduino -дан кіріс деректерін серия арқылы алуға, содан кейін деректерді мәтіндік файлға тіркеуге және басқа құрылғыларға сұрау үшін telnet арқылы соңғы алынған деректерді алуға қамқорлық жасайды.

Станция менің үйдегі шамдарды фоторезистордың көмегімен басқарады (ол сыртта күндіз немесе түнді анықтайды). Менің жағдайда ресивердің басы жоқ, бірақ сіз СКД дисплейді қосу үшін жобаны оңай өзгерте аласыз. Станциядағы ауа райы деректерін қолданатын, талдайтын және көрсететін құрылғы - бұл менің басқа жобам: Ironforge NetBSD тостері.

2 -қадам: Бірінші нұсқалар

Бірінші нұсқалар
Бірінші нұсқалар
Алғашқы нұсқалар
Алғашқы нұсқалар
Бірінші нұсқалар
Бірінші нұсқалар
Алғашқы нұсқалар
Алғашқы нұсқалар

Күн желісінде көптеген күн жобалары бар, бірақ олардың көпшілігі жүйеде батарея батареясынан күн батареясы, әсіресе бұлтты, қараңғы қыста толтыра алатын энергияны көбірек алады деген қателік жібереді.

Сіз күн сәулесінен қуат алатын жүйені жасаған кезде, барлық компоненттерде қуатты тұтыну маңызды: mcu, радио таратқыш, кернеу реттегіші және т.

Таңқурай пи сияқты үлкен компьютерді немесе ESP сияқты қуатты аш Wi -Fi құрылғысын ауа -райы туралы бірнеше биттерді жинау және тасымалдау үшін пайдалану артық болады, бірақ мен оны осы оқулықта көрсететін болсам, тіпті шағын Arduino тақтасы.

Ең жақсысы - құрылғыны өлшеу кезінде өлшеуішпен немесе ауқыммен өлшеу.

Бірінші суретте сіз менің бірінші (Arduino Nano Based) станциясын және екінші Arduino Barebone Atmega 328P тақтасын көре аласыз.

Бірінші нұсқа өте жақсы жұмыс істегенімен (қоршаған ортаны бақылау және деректерді радио арқылы жіберу) тым жоғары қуат тұтынуы ~ 46мА болды және батареяны бірнеше аптада таусылды.

Барлық нұсқалар келесі батареяны қолданды:

18650 6000mAh қорғалған литий-иондық қайта зарядталатын батарея

Бұл ScamFire батареяларын жаңартыңыз. Бұл өте ескі нұсқаулық болса да, мен бұл жалған батареяға байланысты оны түзетуге мәжбүр болдым. Аталған батареяны сатып алмаңыз, басқа LION/LIPO аккумуляторлары туралы жеке зерттеулер жасаңыз, барлық 3.7В батареялары осы жобамен жұмыс істейді.

Ақырында, мен оның нақты сыйымдылығын білу үшін ScamFire батареясын өшіруге уақыт таптым. Сондықтан біз нақты және «жарнамаланған» қуаттармен қатар 2 есепті жүргіземіз.

Біріншіден, бұл батареяның жалған екендігі және олар туралы ештеңе шындыққа жанаспайды, жаңа нұсқалар одан да жаманы, олар жалғанды 2 центтік қорғаныс тізбегін қалдырып көшірді, сондықтан олардың нөлге дейін зарядталуын ештеңе тоқтата алмайды.

LION/LIPO батареялары туралы шағын мақала:

TLDR:

Бұл нені білдіреді: ұяшықтың максималды кернеуі 4,2в, ал «номиналды» (орташа) кернеу 3,7В.

Мысалы, мұнда «классикалық» 3.7V/4.2V батареясы үшін кернеудің профилі берілген. Кернеу максималды 4.2 -ден басталады және батареяның қызмет ету мерзімінің көп бөлігінде шамамен 3.7 В -қа дейін төмендейді. 3.4 В кернеуге жеткенде, батарея заряды таусылады, ал 3.0 В кернеуінде батареяны ажыратады.

Жалған жүктемені қолданатын менің өлшемдерім:

Батарея зарядталды: 4.1 В

Шектеу мәні: 3,4 В

Жүктемені имитациялау: 0.15А (менің құрылғымда бұдан төмен түсу мәселесі болды.)

Өлшенген сыйымдылық: 0,77Ач оған 0,8 Ah тегін беріледі, бұл жарнамаланған 6000 мАч орнына 800 мАч!

Бұл батареяда қорғаныс тізбегі болмағандықтан, мен еркін төмен түсе аламын, бірақ 10 минуттан кейін 3.4 В кезінде ол 3.0 В дейін төмендейді.

Сондықтан батарея қарапайым есептеулермен қамтамасыз етеді:

Теориялық

Батарея кернеуі = 3,7 В

Қуат = 3.7x6000 = 22000 мВт / сағ

Нағыз

Батарея кернеуі = 3.7В Қуат = 3.7x800 = 2960 мВт / сағ

Нұсқа: 0.1 ARDUINO NANO BASED

LowPower кітапханасының өзінде Arduino наносы ~ 16 мА (ұйқы режимінде) -> ЖАҚСЫ.

Теориялық

Павг = VxIavg = 5Vx16mA = 80 мВт

Батареяның қызмет ету мерзімі = 22000/80 = 275 сағат = шамамен 11 күн

RealPavg = VxIavg = 5Vx16mA = 80 мВт

Батареяның қызмет ету мерзімі = 800/80 = 10 сағат

Нұсқа: 0.2 Atmega 328P Сүйек

ATmega328 тұтынатын қуат онымен не істеп жатқаныңызға байланысты. Әдепкі күйде отырғанда, ол 16 МГц жиілікте жұмыс істегенде 16 мА @ 5 В қолдана алады.

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 мс -ден 8 с -ге қояды. Ол ADC мен BOD қызметін өшіреді. Ұйқы режимі келесі үзіліске дейін чиптің барлық функциялары өшірілгенін білдіреді. Әрі қарай, сыртқы осциллятор тоқтатылады. INT1 мен INT2 деңгейіндегі үзілістер, түйреуіштерді ауыстыру, TWI/I2C мекен -жай сәйкестігі немесе WDT, егер қосылған болса, MCU -ны оята алады. Осылайша, бір мәлімдемемен сіз энергия шығынын азайтасыз. 3.3 В Pro Mini қуат светодиодсыз және реттеушісіз (төменде қараңыз) жұмыс істеп тұрғанда, энергия шығыны 4,5 мкА құрайды. Бұл 4,2 мкА қосылатын WDT қосылған ұйқысыздық үшін ATmega328P деректер кестесінде айтылғанға өте жақын (деректер кестесі дереккөздерде сілтемеде). Сондықтан мен powerDown функциясы мүмкін болатын барлық нәрсені өшіретініне сенімдімін. LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF); операторының көмегімен WDT өшіріледі және сіз үзіліс басталғанша оянбайсыз.

Жалаңаш қондырғы көмегімен біз чипті 5 минут ұйқы режиміне қоя аламыз, ал ол өте аз энергия жұмсайды (0,04 мА перифериялық құрылғыларсыз). Бұл тек кристалды осцилляторы бар Atmega 328P чипі және басқа ештеңе жоқ, бұл конфигурацияда аккумулятордың кернеуін 3,7 В -> 5,0 В дейін жоғарылату үшін қолданылатын кернеу күшейткіші 0,01 мА тұтынады.

Тұрақты кернеудің ағып кетуі ұйқы режимінде тұтынуды жалпы 1 мА дейін арттыратын фото резистор болды (бұл барлық компоненттерді қамтиды).

Ұйқы мен ояту режимінде құрылғы үшін нақты тұтынуды есептеу формуласы:

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

Ион = 13мА

Бұл көбінесе RF433 Mhz таратқыштан келеді:

Таратқыш:

Жұмыс кернеуі: 3V - 12V max. қуатты пайдалану 12 В Жұмыс тоқ: максимум 40 мА -дан аз және минималды 9 м Резонанс режимі:

Ұйқы = 1мА

Фоторезисторсыз айтарлықтай аз болар еді.

Трунон уақыты Тон = 250 мС = 0,25с

Ұйқы уақыты Tsleep = 5 мин = 300с

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

Iavg = (0,25с*13мА + 300с*1мА) / (0,25с + 300с)

Iavg = 1.26mA

Павг = VxIavg = 5Vx1,26mA = 6 мВт

Теориялық

Батареяның қызмет ету мерзімі = 22000 мВт/сағ/6 мВт = 3666 сағат = шамамен 152 күн

Нағыз

Батареяның қызмет ету мерзімі = 800мВт/6мВт = 133 сағат = шамамен 5,5 күн

Бұл UltraFire -дің жақсы сериясы болса да, мен бастапқыда қолдандым, егер күн батареясы немесе 1мА төмен тұтынылмаса, бұл жоба ұзақ өмір сүре алмайды.

Станцияны құрудан тартынбаңыз және өз нәтижелеріңіз бен есептеулеріңізді түсініктемелерге жазыңыз, мен мақаланы жаңартамын. Мен сонымен қатар әр түрлі MCU және түрлендіргіштердің нәтижелерін бағалаймын.

3 -қадам: табысты метеостанцияны құру

Табысты метеостанцияны құру
Табысты метеостанцияны құру
Табысты метеостанцияны құру
Табысты метеостанцияны құру
Табысты метеостанцияны құру
Табысты метеостанцияны құру
Табысты метеостанцияны құру
Табысты метеостанцияны құру

Бұл бірінші сәтті нұсқа болса да, онда суреттерде аздаған сәтсіздіктер бар, мен оларды қайта жасай алмаймын, себебі станциялар қазірдің өзінде орналастырылған. Суретте көрсетілген екі кернеу күшейткіші аэромодельдеу және басқа қосымшалар үшін жазу кезінде қол жетімді. Мен станцияны қайта құрған кезде мен кішірек және тиімдірек кернеу тақтасын алуды ойладым, бірақ өлшемі кіші болғаны оның тиімдірек екенін білдірмейді.

Суретте индикаторы жоқ жаңа шағын модуль 3мА (*FAIL*) ағызды, сондықтан мен ескі тақтамен қалдым:

PFM Control DC-DC USB 0.9V-5V to 5V dc Boost Step-up Power Supply Module

Жазу кезінде бұл модуль әлі де Ebay -де 99 центке қол жетімді, бірақ егер сіз басқа күшейткішті қолдануды шешсеңіз, әрқашан күту режиміндегі қуат шығынын тексеріңіз. Сапалы күшейткішпен ол менікінен (0,01 мА) артық болмауы керек, бірақ борттағы шағын жарықдиодты дәнекерлеуге тура келді.

4 -қадам: Жабдықтар тізімі

Жабдықтар тізімі
Жабдықтар тізімі
  • 18650 6000mAh қорғалған литий-ионды қайта зарядталатын батарея
  • Atmega 328P16M 5V жүктеушімен
  • Adafruit DC Boarduino (Arduino үйлесімді) жиынтығы (wme/ATmega328) <егер сіз болашақ жалаңаш жобаларды жасасаңыз, бұл жақсы инвестиция болады.
  • Жарыққа сезімтал резистор фоторезисторлы опторезистор 5мм GL5539
  • 1А 1000В диод 1N4007 IN4007 DO-41 түзеткіш диодтар
  • PFM Control DC-DC USB 0.9V-5V to 5V dc Boost Step-up Power Supply Module
  • 1.6W 5.5V 266mA шағын күн панельдерінің модульдік жүйесі эпоксидті жасушалық зарядтағыш DIY
  • TP405 5V Mini USB 1A литий батареясын зарядтау тақтасының модулі
  • Arduino/ARM/MC қашықтан басқару пультіне арналған 433 МГц жиілікті таратқыш пен қабылдағыш байланыстырғыш жиынтығы
  • Сыртқы су өткізбейтін корпус IP65 ауыстырып қосқыш қорғанышы 150x110x70 мм
  • DHT22 температурасы мен салыстырмалы ылғалдылық датчигінің жаңа модулі Arduino үшін
  • 1x220 Ohm, 2x10KOhm, 1xLED, 1xMini Switch, 1x1N4007 диод
  • Adafruit 16 МГц керамикалық резонатор / осциллятор [ADA1873]
  • Arduino UNO/Mega және т.б. қабылдағыш станцияға + Raspberry PI 1/2/3
  • Таза акрил пластикалық қорап (міндетті емес)

Сіз мұның бәрін Ebay -де таба аласыз, мен олардың сатушыларын олардың беттеріне сілтеме жасау арқылы жарнамалағым келмейді, және сілтемелер болашақта бәрібір өліп қалады.

Жабдықтар тізіміне ескертулер:

Егер сіз қандай да бір жолмен Atmega кірпішін қаласаңыз, олардың көбін сатып алатын болсаңыз, кернеу күшейткіші мен күн зарядының реттегіші де солай болады.

Күн зарядтағышында күн сәулесімен зарядталған кезде қосылатын (қызыл-> зарядтау, көк-толық зарядталған күйлер) 2 кішкентай түсті жарық диоды бар. Бұларды сатылымнан шығаруға да болады. Ол зарядтау кезінде батареяға сәл көбірек қосымша шырын береді.

Көріп отырғаныңыздай, менің тізімімде батарея ұстаушылар жоқ. Неге? Өйткені олар сенімсіз. Менде батареяның ұстағышынан шығып кетіп, байланыс үзілген кездер көп болды. Әсіресе, егер сіздің қондырғыңыз мен сияқты биік табаққа орнатылса, кез келген ауа райы жағдайына ашық. Мен тіпті батареяны ұстағышқа 2 сыдырмамен қыстырдым, ол әлі де шығып кетті. Мұны жасамаңыз, аккумулятордан сыртқы жабынды алып тастаңыз және сымдарды аккумулятордың түбіне тікелей зарядтаңыз, қорғаныс тізбегі бар (қорғанысты айналып өтпеңіз). Батарея ұстағышты батареяны тек құрылғыда ұстау үшін пайдалануға болады.

TP405 5V Mini USB 1A литий батареясын зарядтау тақтасы: өкінішке орай, бұл тақтада күн панелінің кері токтан қорғанысы жоқ, бұл үшін күн батареясының бір аяғы мен зарядтау тізбегінің арасына токты тоқтату үшін тағы 1 диод қажет болады. түнде күн панеліне қайта түсу.

5 -қадам: құрастыру

Ассамблея
Ассамблея
Ассамблея
Ассамблея
Ассамблея
Ассамблея

Бұл тақта салыстырмалы түрде аз компоненттерден тұрады және тақтадағы маркерлер өте қарапайым.

Atmega328P -ті қате орнатпағаныңызға көз жеткізіңіз (бұл чипті қыздырып, кірпіштендіруі мүмкін, кернеу күшейткішін де бұзуы мүмкін).

Бұл қондырғыда микросхема төмен қарайды (PIN1 белгілейтін U тесікшесі). Барлық басқа компоненттер анық болуы керек.

LDR үшін қорғалған кабельді пайдаланыңыз (мысалы: CDrom дыбыстық кабелі жақсы жұмыс істейді). Кейбір жағдайларда (көптеген апталық тестілеу кезінде) радио сигналды таратуға кедергі келтіретіні белгілі болды. Бұл ақауларды жою қиын болатын қателердің бірі болды, сондықтан егер сіз проблеманы қаламасаңыз, қорғаныс кабелін қолданыңыз, әңгіме соңы.

Жарықдиодты: қораптың төменгі жағындағы жарық диоды бастапқыда шығыс радио тарату кезінде жыпылықтау үшін қосылды, бірақ кейінірек мен оны қуатты ысырап ету деп санадым және ол жүктеу кезінде тек 3 рет жыпылықтайды.

TP: жалпы тізбек үшін ток өлшеу үшін сынақ нүктесі.

DHT22: Арзан DHT11 сатып алмаңыз, теріс DHT22 -ді алу үшін 50 центке жұмсаңыз, ол теріс температураны да өлшей алады.

6 -қадам: Корпустың дизайны

Корпустың дизайны
Корпустың дизайны
Корпустың дизайны
Корпустың дизайны
Корпустың дизайны
Корпустың дизайны

Бұл шамалы болса да, DHT22 температура сенсорын орнында ұстау үшін 3D басып шығарылған текше (weather_cube) жасалды. Текше IP -қораптың төменгі жағына желімделген, онда сенсорға ауа жететін 1 тесік бар. Мен шұңқырға аралар, аралар және басқа ұсақ шыбындарға қарсы тор қостым.

Сыртқы қорапты, егер сіз оны ашық жерде табақшаға орнатсаңыз, станцияны су өткізбейтін ету үшін пайдалануға болады.

1 пайдалы функция туралы идея: қораптың үстіне 1-2см үлкен металл төбені қосу, жазда күннің көлеңкесін қамтамасыз етеді, бірақ бұл біздің пайдалы күн сәулесін панельден алып тастауы мүмкін. Сіз панель мен қорапты бөлетін дизайнды ойлап таба аласыз (панельді күн сәулесінде, қорапты көлеңкеде қалдырыңыз).

Суреттерде: 1 жылдан кейін жұмыс ортасынан шығарылған станциялардың бірі, аккумулятордың кернеуі 3,9В шамасында, қораптың ешбір бөлігінде судың зақымдалуы жоқ, бірақ мен текшенің түбіне жабыстырған торым жыртылған. Станцияға қызмет көрсетудің себебі - LDR коннекторының қосылу ақаулығы, бірақ секіргіш кабель әлі де орнында болып көрінгенімен, байланыс үзілген, сондықтан кейде істік LDR аналогты нашар оқуды қамтамасыз етіп өзгермелі болған. Ұсыныс: егер сіз компьютердің стандартты өтпелі кабельдерін қолдансаңыз, бұған жол бермеу үшін станция мінсіз жұмыс істегеннен кейін оларды ыстық желіммен жабыстырыңыз.

7 -қадам: Бағдарламалық қамтамасыз ету

Бағдарламалық қамтамасыз ету
Бағдарламалық қамтамасыз ету

Бағдарламалық кодқа 3 сыртқы кітапхана қажет болады (LowPower, DHT, VirtualWire). Мен олардың кейбіреуін соңғы кезде Интернеттен оңай таба алмадым, сондықтан оларды бөлек ZIP файлына тіркедім. Linux/Windows жүйесінде қандай ОЖ қолданатындығыңызға қарамастан, Arduino IDE кітапханалық қалтасын тауып, сол жерден шығарып алыңыз.

Мен DHT11 сатып алмауға кеңес бергеніме қарамастан, егер сіз DHT сенсорының дұрыс емес түрін қолдансаңыз, бағдарлама инициализация бөлімінің басында мәңгіге ілінеді (сіз тіпті іске қосу светодиодының 3 рет жыпылықтағанын көрмейсіз).

Негізгі цикл коды өте қарапайым, алдымен ол қоршаған ортаның мәндерін (температура, жылу индексі, ылғалдылық, күн) оқиды, оларды радио арқылы жібереді, содан кейін Arduino -ны 5 минут ұйқыға қою үшін қуаты төмен кітапхананы қолданады.

Мен радиацияның төмендеуі радио таратудың тұрақтылығын арттыратынын анықтадым. Станция деректердің өте аз мөлшерін жіберуде, 300 bps жеткілікті. Сондай -ақ, таратқыш шамамен шамамен жұмыс істейтінін ұмытпаңыз. 4.8В, болашақта 3.3V нұсқасы бұл одан да нашар сапаға әкелуі мүмкін (деректерді қабырғалар арқылы жіберу және басқа кедергілер). Мен таңқурай PI 2 -ге бекітілген Arduino Mega -ді пайдаланып, Mei -ді PI -ден қуаттаймын, мен ешқандай хабар алмадым. Шешім Mega -ны бөлек 12В бөлек қоректендіру болды.

8 -қадам: 2 -нұсқа (ESP32 негізіндегі)

2 -нұсқа (ESP32 негізіндегі)
2 -нұсқа (ESP32 негізіндегі)
2 -нұсқа (ESP32 негізіндегі)
2 -нұсқа (ESP32 негізіндегі)
2 -нұсқа (ESP32 негізіндегі)
2 -нұсқа (ESP32 негізіндегі)

Сындыруға болатын барлық нәрсе ескі Мерфиге сілтеме жасау үшін бұзылады, ал ақырында станциялар жұмбақ жолмен сәтсіздікке ұшырады. Біреуі ондаған мыңға дейін жетпейтін күн сәулесіндегі деректерді жібере бастады, бұл мүмкін емес: Arduino тақтасында цифрлық түрлендіргішке 10 биттік аналогты 6 каналы бар (Mini мен Nano-да 8 арна, 16 Mega). Бұл 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.3В сандық кіріс -шығыс түйреуіштері 19 аналогты кіріс түйреуіштері 6 сағат жылдамдығы (максимум) 240 МГц жарқыл 4М байт ұзындығы 5мм ені 2,54мм салмағы 4г

Суретте көрсетілгендей, LOLIN логотипі жоқ (Қытайдан жасалған жалған). Менің бірінші жағымды тосын сыйым тақтада басылған түйіннің Arduino түйісуімен сәйкес келуі болды! Мен көптеген тақтайшалармен айналысқаннан кейін, мен күні бойы пинуттарды іздеуге мәжбүр болдым, шаршадым, ақырында түйісу тікелей WoW орналасқан тақта!

Әйтсе де, оқиғаның қараңғы жағы мынада:

Бастапқыда мен LDR -ді A15 -ке қостым, ол істікшелерді бір -біріне бекіту оңай болды. Содан кейін менде 4095 оқылым бар (бұл ESP32 -те AnlogRead арқылы алуға болатын максимум), бұл мені жаңғыртып жіберді, себебі станцияның қайта құрылуының себебі LDR -дің ескі оқылымдары болды (DHT әлі де жақсы жұмыс істеп тұрды)). Сонымен, былай шығады:

Esp 32 12 биттік ACD екі регистрін біріктіреді. ADC1 GPIOs 32-39-ге бекітілген 8 арнаны қосады, ал ADC2 басқа түйреуіштердегі 10 арнаны қосады. Мәселе мынада, ESP32 Wi -Fi функцияларын басқару үшін ADC2 пайдаланады, сондықтан егер сіз Wi -Fi қолдансаңыз, бұл тізілімді пайдалана алмайсыз. ADC драйвері API ADC1 (8 канал, GPIOs 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 орнатудың жақсы бастамасы:

Мен оны кодқа енгізгеніммен, ол тағы да қайталанады:

Бұл код Weemos LOLIN 32 -ден басқа ESP32 модельдері үшін құрастырылмауы мүмкін!

Құрастыру параметрлері: -Жүктеуді қолданыңыз/сериялық: 115200 -CPU/ram: 240Mhz пайдаланыңыз (Wifi | BT) -Жарқыл жиілігін пайдаланыңыз: 80 МГц

Интернетте көптеген ESP32 метеостанциялары бар, олар менің 1 -нұсқаммен салыстырғанда, жалаңаш чиппен салыстырғанда әлдеқайда көп, себебі оларды орнату оңай, сізге бағдарламашының қажеті жоқ, құрылғыны USB -ге қосып, оны бағдарламалау керек. терең ұйқы режимі батареядан ұзақ уақыт жұмыс істеуге өте ыңғайлы. Бұл батырманың ұшында дәнекерлеу алдында мен сынап көрген бірінші нәрсе болды, өйткені мен бұл жобада бірнеше орынды атап өткенімдей, ЕҢ бастысы - энергияны тұтыну, ал ағымдағы (жалған) батареямен және шағын күн панелімен күту режимі. қуат шын мәнінде 1-2 мА-дан асып кете алмайды, әйтпесе жоба ұзақ уақыт бойы өзін-өзі ұстай алмайды.

Ұйқы режимінің жарнамаланғандай жұмыс жасайтыны тағы да жағымды тосын сый болды. Қатты ұйқы кезінде ток өте төмен болғандықтан, менің арзан мультиметр оны өлшей алмады (мен үшін жұмыс істейді).

Деректерді жіберу кезінде ток 80 мА шамасында болды (бұл Atmega 328P оянып жатқан кездегіден шамамен 5 есе көп), бірақ V1 -де LDR -де ұйқы режимінде орташа 1mA қуат ағымы болғанын ұмытпаңыз (ол жарық деңгейіне тәуелді және 0,5мА -дан 1мА -ға дейін өзгерді).

Егер сіз бірдей батареяны қолдансаңыз, UltraFire аккумуляторы жойылады деп күтуге болады:

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

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

Павг = VxIavg = 5Vx0,5mA = 2,5 мВт

Теориялық

Батареяның қызмет ету мерзімі = 22000 мВт/сағ/2,5 мВт = 8800 сағат = шамамен 366 күн

Нағыз

Батареяның қызмет ету мерзімі = 800мВт/2,5мВт = 320 сағат = шамамен 13 күн

Менде уақытты дәл өлшеуге мүмкіндік болмады, бірақ менің түзетулеріммен ол 2 секундқа созылады.

Мен түстен кейін бәрін реттелетін кодтаумен өткізгім келмеді, сондықтан мен деректерді сақтау үшін не істеп жатқанын білу үшін ESP32 негізіндегі Instructables басқа ауа райы станцияларын іздедім. Өкінішке орай, олар ауа райы бұлты сияқты икемсіз және шектеулі сайттарды қолданады. Мен «бұлттың» жанкүйері болмағаным үшін және олардың коды ұзақ уақыт бойы бұзылды, себебі сайт API -ді өзгертті, мен 10 минут ішінде арнайы шешім қабылдадым, себебі бұл ойлағандай қиын емес. Бастайық!

Біріншіден, бұл жоба үшін схеманың жеке суреті жоқ, өйткені ол V3 сияқты дәл сол компоненттерді пайдаланады (ұсақ нан тақтасындағы суретте дәнекерленген), бәрі айырмашылығы 3,3В. DHT VCC тартылуымен қосылды, LDR 10k төмендеді. Менің қытайлық жалған (6500 мАч ультра күн сәулесі: D) сияқты 18650 батареяларынан көруге болатын мәселе, олар разрядтың қисық сызығын 4.1В жаңа жастан бастайды және жасушалардың зақымдалуын тоқтату үшін олардың ажырату схемасы іске қосылғанға дейін жүреді. бақытты болғандар). Бұл біз үшін 3.3В кіріс ретінде жақсы емес. Бұл LOLIN тақтасында литий батареясы қосқышы мен зарядтау схемасы болса да, мен бұл жобада ескі станциядан қолымнан келгенін жаңартқым келді, сондықтан оны 18650 жылғы ескі қондырғыда қолдануға болмайды. Шешім өте қарапайым болды: мен ескі кернеуді күшейткіштен 5В -ға дәнекерленген микро USB кабелін өшірдім, ал шешілген мәселе, себебі microUSB тақтасында реттегіш бар.

Ескі аккумуляторда 3.7В -> 5В дейін көтерілген ескі мен жаңа нұсқаның айырмашылығы -5V -> ardu 5V -де жұмыс істейді -> барлық компоненттер 5В -та жұмыс істейді.

Жаңасында: батарея 3.7В -> 5В дейін көтерілген -> ESP32 борттық регламенті арқылы реттеледі -> барлық компоненттер 3.3В жұмыс істейді.

Бағдарламалық қамтамасыз ету бойынша бізге басқа DHT кітапханасы қажет болады, Arduino DHT ESP -пен сәйкес келмейді. Бізге қажет нәрсе DHT ESP деп аталады.

Мен кодты осы код ұсынған DHT мысалына негіздей бастадым. Кодтың жұмысы:

1, фотоэлементтен DHT + Solar деректерінен экологиялық деректерді алыңыз

2, Wi -Fi желісіне статикалық IP арқылы қосылыңыз

3, деректерді PHP сценарийіне орналастырыңыз

4, 10 минут ұйықтаңыз

Сіз байқаған боларсыз, мен кодты тиімділікті ояту уақытын мүлдем азайту үшін реттедім, себебі ол ескі жобаны қосқаннан 5 есе көп қуат жұмсайды. Мен мұны қалай істедім? Біріншіден, кез келген қате болса, getTemperature () функциясы жалған мәнмен қайтарылады (бұл тағы 10 минут ұйықтауды білдіреді). Бұл DHT сенсоры іске қосылмайтын немесе WiFi байланысы жоқ сияқты болуы мүмкін. Сіз әдеттегі while () циклін Wi -Fi байланысын мәңгіге жалғастыру үшін алып тастадыңыз, бірақ ол жерде 1 секундтық кідіріс қалуы керек, әйтпесе ол әрқашан қосылмайды, сонымен қатар ол AP түріне, жүктемеге және оның жылдамдығына байланысты. болады, 0,5 секундта менде тұрақты емес мінез -құлық пайда болды (кейде ол қосыла алмады). Егер біреу мұны істеудің жақсы әдісін білсе, оны түсініктемелерде қалдырыңыз. DHT деректері оқылғанда және Wi -Fi байланысы орнатылғанда ғана ол деректерді веб -сервердегі сценарийге орналастыруға тырысады. Serial.println () сияқты уақытты ысырап етудің барлық түрлері қалыпты жұмыс режимінде ажыратылады. Сервер ретінде мен қажетсіз DNS іздеуін болдырмау үшін IP қолданамын, менің кодымда әдепкі шлюз мен dns сервері 0.0.0.0 -ге орнатылған.

Мен түсінбеймін, неге жеке API құру соншалықты қиын:

sprintf (жауап, «temp =%d & hum =%d & hi =%d & sol =%d», temp, hum, hi, sol);

int httpResponseCode = http. POST (жауап);

Сіз бұл кішкентай PHP кодын кез келген таңқурай пи -ге қоясыз және желдеткіштерді қосу немесе қараңғы түссе шамдарды қосу сияқты телеметрияға негізделген бірден system () тапсырмаларын орындай аласыз.

Код туралы кейбір ескертулер:

WiFi.config (staticIP, шлюз, ішкі желі, dns); // WIFI қалай ақымақ болғаннан кейін болуы керек …

WiFi.mode (WIFI_STA); // БОЛМАСА, ол қажетсіз кіру нүктесін жасайды

Ия, енді білдіңіз. Сондай -ақ, IP конфигурациясының тәртібі платформалар арқылы өзгеруі мүмкін, мен шлюз мен ішкі желі мәндері ауысқан басқа мысалдарды көрдім. Неліктен статикалық IP орнату керек? Егер сіздің желіңізде isc dhcpd жұмыс істейтін Linux сервері сияқты арнайы қорап болса, ESP оянғаннан және DHCP -ден IP -ті алғаннан кейін жүз миллион журналдық жазба қажет емес. Әдетте маршрутизаторлар ассоциацияларды тіркемейді, бұл көрінбейді. Бұл қуатты үнемдеу бағасы.

Батарея сапасының нашарлығына байланысты V2 ешқашан өзін -өзі ұстай алмады, мен оны адаптерге қойдым, сондықтан егер сіз V1 немесе V2 құрастырғыңыз келсе, аталған батареяны сатып алмаңыз, батареялар туралы өз зерттеулеріңізді жасаңыз (кез келген 18650 ж. Ebay -де 2000 мАч -тан жоғары жарнамалық сыйымдылық - бұл жоғары ықтималдығы бар алаяқтық).

Ұсынылған: