Мазмуну:

NaTaLia Аба ырайы станциясы: Arduino Solar Powered Weather Station туура жолго түштү: 8 кадам (сүрөттөр менен)
NaTaLia Аба ырайы станциясы: Arduino Solar Powered Weather Station туура жолго түштү: 8 кадам (сүрөттөр менен)

Video: NaTaLia Аба ырайы станциясы: Arduino Solar Powered Weather Station туура жолго түштү: 8 кадам (сүрөттөр менен)

Video: NaTaLia Аба ырайы станциясы: Arduino Solar Powered Weather Station туура жолго түштү: 8 кадам (сүрөттөр менен)
Video: Погода Москва сегодня. 🌩 До конца дня в столице ожидаются ливень, гроза и ветер с порывами до 17 м/с 2024, Июль
Anonim
NaTaLia Аба ырайы станциясы: Arduino күн энергиясынан иштеген аба ырайы станциясы туура жолго түштү
NaTaLia Аба ырайы станциясы: Arduino күн энергиясынан иштеген аба ырайы станциясы туура жолго түштү
NaTaLia Аба ырайы станциясы: Arduino күн энергиясынан иштеген аба ырайы станциясы туура жолго түштү
NaTaLia Аба ырайы станциясы: Arduino күн энергиясынан иштеген аба ырайы станциясы туура жолго түштү

1 жыл 2 башка жерде ийгиликтүү иштегенден кийин, мен күн энергиясы менен иштеген аба ырайы станциясынын долбоорунун пландары менен бөлүшүп жатам жана ал кантип күн энергиясынан узак убакыт бою жашай ала турган системага айланып калганын түшүндүрүп жатам. Эгерде сиз менин көрсөтмөлөрүмдү аткарсаңыз жана тизмедегидей эле материалдарды колдонсоңуз, сиз көп жылдар бою иштей турган күн энергиясы менен иштеген аба ырайы станциясын кура аласыз. Чынында, анын иштөө мөөнөтүн чектеген жалгыз фактор - бул сиз колдонгон батарейканын иштөө мөөнөтү.

1 -кадам: Аба ырайы станциясынын иштеши

1, Бергич: Күн панели бар сыртта орнотулган куту, аба ырайы телеметриясын (Температура, Нымдуулук, Жылуулук Индекси, Күндүн Күчтүүлүгү) мезгил -мезгили менен ички кабыл алуучу блокко жөнөтөт.

2, Алуучу: Raspberry PI 2 + Ардуино Мегадан жасалган ички блок 433 МГц RF кабылдагычы бар, маалыматтарды кабыл алуу үчүн туташкан. Менин орнотуумда бул бирдиктин LCD дисплейинин эч кандай функциясы жок. Кайдыгерлик менен чуркайт. Негизги С программасы Arduinoдон келген маалыматтарды сериал аркылуу кабыл алуу менен алектенет, андан кийин маалыматтарды тексттик файлга киргизет жана акыркы алынган маалыматты телнет аркылуу башка түзмөктөр сурашы үчүн жеткиликтүү кылат.

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

2 -кадам: Биринчи версиялар

Биринчи версиялар
Биринчи версиялар
Биринчи версиялар
Биринчи версиялар
Биринчи версиялар
Биринчи версиялар
Биринчи версиялар
Биринчи версиялар

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

Күндүн энергиясы менен иштөөчү системаны иштеп чыкканыңызда, эң маанилүү нерсе - электр энергиясын керектөө, бардык компоненттерде: mcu, радио өткөргүч, чыңалуу жөндөгүчү ж.

Аба ырайы жөнүндө эки битти чогултуу жана ташуу үчүн малина пи сыяктуу чоң компьютерди же ESP сыяктуу күчтүү Wi -Fi түзмөгүн колдонуу ашыкча болмок, бирок мен муну үйрөткүчтө көрсөтөм, кичинекей Arduino тактасы дагы.

Эң жакшысы - бул курулуш процессинде метрди же диапазонду өлчөө (эгерде операция учурунда колдонуунун кичинекей чукулдарын өтө кыска убакыт аралыгында (миллисекундтарда) өлчөөгө аракет кылсаңыз пайдалуу).

Биринчи сүрөттө менин биринчи (Arduino Nano Based) станциясын жана экинчи Arduino Barebone Atmega 328P тактасын көрө аласыз.

Биринчи версия, ал кемчиликсиз иштесе да (айлана -чөйрөнү көзөмөлдөө жана радио аркылуу маалыматтарды жөнөтүү) өтө жогору электр энергиясын керектөөчү болгон ~ 46mA жана бир нече жуманын ичинде батарейканы куюп жиберген.

Бардык версиялар төмөнкү батареяны колдонушкан:

18650 6000mAh Корголгон Li-Ion Заряддалуучу Батарея Камтылган Коргоо Кеңеши

Бул ScamFire батарейкаларын ЖАҢЫРТЫҢЫЗ. Бул абдан эски Нускамалык болсо да, мен дагы бул жасалма батареядан улам аны оңдоого аргасыз болдум. Көрсөтүлгөн батареяны ЭМЕС, башка LION/LIPO батареялары жөнүндө өз алдынча изилдөө жүргүзүңүз, бардык 3.7V батареялары бул долбоор менен иштейт.

Акыры, анын чыныгы сыйымдуулугу кандай экенин билүү үчүн ScamFire батарейкасын өчүрүүгө убакыт таптым. Ошентип, биз реалдуу жана "жарнакталган" кубаттуулуктар менен катар 2 эсептөөнү жүргүзөбүз.

Биринчиден, бул батарейканын жасалма экени жана бул тууралуу эч нерсе чындыкка коошпойт, жаңы версиялар андан да жаманы, алар 2 центти коргоо схемасын калтырып, жасалма көчүрүп алышкан, андыктан алардын нөлгө түшүүсүн эч нерсе токтото албайт.

LION/LIPO батареялары жөнүндө чакан макала:

TLDR:

Бул эмнени билдирет: клетканын максималдуу чыңалуусу 4.2v жана "номиналдуу" (орточо) чыңалуу 3.7V.

Мисалы, бул жерде "классикалык" 3.7V/4.2V батареясынын чыңалуу профили. Чыңалуу 4.2 максимумдан башталат жана бат эле батарейканын иштөө мөөнөтү болжол менен 3.7В чейин төмөндөйт. 3.4В соккондон кийин батарейкасы өлүп, 3.0Вда өчүрүү схемасы батареяны ажыратат.

Жасалма жүктү колдонуу менен менин өлчөөлөрүм:

Батарея заряддалган: 4.1V

Чектөө коюлган: 3.4V

Жүктөө симуляциясы: 0.15A (менин түзмөгүмдө мындан төмөн түшүү көйгөйү бар болчу.)

Ченелүүчү кубаттуулук: 0.77Ah, бекер 0.8 Ah бергиле, бул жарнамаланган 6000mAh ордуна 800mAh!

Бул батареяда коргоо схемасы жок болгондуктан, мен акырындык менен төмөн түшө алам, бирок 10 мүнөттөн кийин 3.4Вда 3.0В чейин түшүп кетет.

Ошентип, жөнөкөй эсептөөлөр менен батарея камсыз кылат:

Теориялык

Батарея чыңалуусу = 3.7V

Power = 3.7x6000 = 22000 мВт

Реал

Батарея чыңалуусу = 3.7VPower = 3.7x800 = 2960 mWh

Version: 0.1 ARDUINO NANO BASED

LowPower китепканасы болсо дагы, Arduino наносу ~ 16 мА (уйку режиминде) -> FAIL.

Теориялык

Pavg = VxIavg = 5Vx16mA = 80 мВт

Батарея өмүрү = 22000/80 = 275 саат = болжол менен 11 күн

RealPavg = VxIavg = 5Vx16mA = 80 мВт

Батарея өмүрү = 800/80 = 10 саат

Version: 0.2 Atmega 328P Barebone

ATmega328 тарабынан керектелүүчү күч, сиз аны менен эмне кылып жатканыңыздан көп нерсе көз каранды. Ал жерде демейки абалда отуруп, ал 16МГцте иштеп жатканда 16mA @ 5V колдоно алат.

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 V Pro Mini үчүн светодиод жок жана жөнгө салуучу жок (төмөндө караңыз), энергия керектөө 4,5 мкА. Бул 4.2 мкА иштетилген WDT күйгүзүү үчүн ATmega328P маалымат барагында айтылганга абдан жакын (маалымат булагы шилтемеленген). Ошондуктан, мен powerDown функциясы акылга сыярлык түрдө мүмкүн болгон нерселердин баарын өчүрөрүнө толук ишенем. LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF); деген билдирүү менен WDT өчүрүлөт жана сиз үзгүлтүккө учурамайынча ойгонбойсуз.

Ошентип, бош сөөктү орнотуу менен биз чипти 5 мүнөт уктоо режимине коё алабыз, ал эми энергияны аз сарптайт (0.04 мА четки жабдууларсыз). Бирок бул кристалл осциллятору бар Atmega 328P чипи жана башка эч нерсе эмес, бул конфигурацияда батареянын чыңалуусун 3.7V -> 5.0 V чейин жогорулатуу үчүн колдонулган чыңалуу күчөткүчү 0.01 мАны да керектейт.

Туруктуу чыңалуу дренажы уйку режиминде керектөөнү 1 мАга чейин көбөйткөн фото резистор болду (бул бардык компоненттерди камтыйт).

Уйку режиминде жана ойготуу режиминде түзмөк үчүн керектөөнүн так формуласы:

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

Ион = 13мА

Бул көбүнчө RF433 Mhz өткөргүчүнөн келет:

Бергич:

Иш чыңалуусу: 3V - 12V max. электрди колдонуу 12V Иштөө учуру: максимум 40mAдан аз жана минималдуу 9m Марезонанс режими: (SAW) Модуляция режими: ASK Иштөө жыштыгы: Обо 315МГс Же 433МГс Трансмиссия күчү: 25mW (31V 12Vде 315МГс) Жыштык катасы: +150kHz (макс) Ылдамдык: 10Кб / сек

Уйку = 1мА

Фоторезистор болбосо бир кыйла аз болмок.

Трунон убактысы Тон = 250 мС = 0.25с

Уйку убактысы Tsleep = 5 мүн = 300с

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

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

Iavg = 1.26mA

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

Теориялык

Батарея өмүрү = 22000mWh/6mW = 3666 саат = 152 күн болжол менен

Реал

Батарея өмүрү = 800mWh/6mW = 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 мА), бирок борттогу кичинекей LED де-ширетилиши керек болчу.

4 -кадам: Аппараттык тизме

Аппараттык тизме
Аппараттык тизме
  • 18650 6000mAh Корголгон Li-Ion Заряддалуучу Батарея Камтылган Коргоо Кеңеши
  • Atmega 328P16M 5V жүктөгүч менен
  • Adafruit DC Boarduino (Arduino менен шайкеш) Kit (w/ATmega328) <Эгерде сиз келечектеги лучой проектилерди жасап жатсаңыз, бул жакшы инвестиция болот
  • Фото Жарык Сезимдүү Резистор Фоторезистор Optoresistor 5mm GL5539
  • 1A 1000V диод 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 Mini Solar Panel Module System Epoxy Cell Charger DIY
  • TP405 5V Mini USB 1A Lithium Battery Charging Board Charger Module
  • Arduino/ARM/MC үчүн 433Mhz RF өткөргүч жана кабыл алуучу шилтемелери
  • IP65 Switch Protector Junction Box Тышкы Суу өткөрбөй турган корпус 150x110x70mm
  • Жаңы DHT22 температурасы жана салыштырмалуу нымдуулук сенсор модулу Arduino үчүн
  • 1x220 Ohm, 2x10KOhm, 1xLED, 1xMini Switch, 1x1N4007diode
  • Adafruit 16 МГц керамикалык резонатор / осциллятор [ADA1873]
  • Arduino UNO/Mega ж.б. алуучу станция үчүн + Raspberry PI 1/2/3
  • Таза акрил пластикалык кутуча (милдеттүү эмес)

Мунун баарын Ebayден таба аласыз, мен эч кандай сатуучуларды алардын баракчаларына шилтеме кылуу менен жылдыргым келбейт жана шилтемелер келечекте баары бир өлүп калат.

Аппараттык тизме үчүн эскертүүлөр:

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

Күн заряддагыч түзүлүштө 2 кичинекей түстүү светодиод бар, алар күн заряддалганда гана күйгүзүлөт жана көрсөтөт (кызыл-> кубаттоо, көк-> толук заряддалган абал). Буларды да сатпай койсо болот. Тескерисинче, кубаттоо учурунда батареяга бир аз көбүрөөк шире берет.

Көрүнүп тургандай, менин тизмемде батарейка кармагычтар жок. Неге? Анткени алар ишеничсиз. Менде батарейканын кармагычы чыгып кеткен жана байланыш үзүлгөн учурлар көп болгон. Өзгөчө, эгер сиздин орнотууңуз меникиндей бийик табакка орнотулган болсо, аба ырайынын катаал шарттары үчүн ачык. Мен батареяны 2 сыдырма менен кармагычка сыдырдым, ал дагы эле чыгып кете алды. Муну жасабаңыз, жөн эле батареядан тышкы жабууну алып салыңыз жана зымдарды батарейканын түбүнө түз зарядтаңыз, ашыкча заряддан коргоо схемасын камтыйт (коргоону айланып өтпөңүз). Батарея кармагычты батарейканы түзмөктө кармап туруу үчүн гана колдонсо болот.

TP405 5V Mini USB 1A Литий Батарея кубаттоочу тактасы: тилекке каршы, бул тактада күн панелине тескери ток коргоочу камтылган эмес, бул үчүн сиз дагы 1 диодду күн панелинин бир бутунун ортосуна коюп, токту токтотуу үчүн заряддоонун схемасына муктаж болосуз. түнкүсүн кайра күн батареясына агып кетүү.

5 -кадам: Ассамблея

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

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

Atmega328Pти туура эмес жайгаштырбаганыңызды текшериңиз (бул чипти ысытууга жана кирпичке айландырууга, чыңалууну күчөткүчкө да зыян келтириши мүмкүн).

Бул орнотууда чип ылдый карайт (кичинекей U тешиги PIN1 белгилейт). Башка бардык компоненттер ачык -айкын болушу керек.

LDR үчүн корголгон кабелди колдонуңуз (мисалы: CDromдун аудио кабели жакшы болот). Кээ бир учурларда (тестирлөөнүн көп жумаларынан кийин) радио сигналын берүүнү токтотуп жатканы белгилүү болду. Бул мүчүлүштүктөрдү жоюу кыйын болгон каталардын бири болчу, андыктан көйгөйдү каалабасаңыз, корголгон кабелди колдонуңуз, окуянын аягында.

Светодиод: Кутунун астындагы LED адегенде чыгып жаткан радио өткөргүч болгондо жарк этип кошулган, бирок кийинчерээк мен аны энергияны текке кетирүү катары эсептеп, жүктөө процессинде 3 жолу гана жаркылдайт.

TP: жалпы схема үчүн токту өлчөө үчүн сыноо чекити.

DHT22: Арзан DHT11ди сатып албаңыз, терс температураны өлчөй турган ак DHT22 алуу үчүн 50 цент көбүрөөк сарптаңыз.

6 -кадам: Дизайн

Case Design
Case Design
Case Design
Case Design
Case Design
Case Design

Бул бир аз ашыкча болсо да, DHT22 температура сенсорун кармап туруу үчүн 3D басылган куб (weather_cube) жасалган. Куб IP сенсорго жетүү үчүн 1 тешикти камтыган IP кутусунун түбүнө чапталган. Мен аарыларга, аарыга жана башка майда чымындарга каршы тешикке тор коштум.

Тышкы кутуну, эгер сиз аны ачык жердеги табактын устунуна орнотуп жатсаңыз, станцияны суу өткөрбөй тургандай кылып жасоого болот.

1 пайдалуу өзгөчөлүктүн идеясы: жайдын күнү күндүн көлөкөсүн камсыз кылган кутунун үстүнө 1-2см чоң металл чатырын кошуу, бирок бул биздин күндүн нурун панелден алып салышы мүмкүн. Сиз панель менен кутуну бөлүп турган дизайнды ойлоп таба аласыз (панелди күнгө калтырып, көлөкөдө кутуча).

Сүрөттөрдө: 1 жылдан кийин иштөө чөйрөсүнөн четтетилген станциялардын бири, батареянын чыңалуусу таң калычтуу 3.9В бойдон, кубиктин түбүнө чапталган торум айрылганына карабай, кутунун эч бир жерине суу зыян келтирген эмес. Станцияны тейлөөнүн себеби, LDR туташтыргычынын туташуусундагы ката, бирок секирүүчү кабель дагы эле ордунда окшойт, бирок байланыш үзүлгөн, андыктан пин кээде LDR аналогунун начар окулушун камсыз кылып сүзүп турган. Сунуш: эгер сиз стандарттык компьютерлердин jumpercables колдонгон болсоңуз, мунун алдын алуу үчүн станция кемчиликсиз иштеп жаткандан кийин, аларды hotglue.

7 -кадам: Программалык камсыздоо

Программалык камсыздоо
Программалык камсыздоо

Программанын коду 3 тышкы китепкананы талап кылат (LowPower, DHT, VirtualWire). Мен акыркы убакта алардын айрымдарын интернеттен оңой табууда көйгөйгө туш болдум, ошондуктан аларды өзүнчө ZIP файлына тиркеп койдум. Linux/Windowsту кандай OS колдонуп жатканыңызга карабастан, Arduino IDE китепканасынын папкасын таап, ошол жерден алыңыз.

Жөн гана эскертүү, мен DHT11ди сатып алууга каршы кеңеш бергениме карабастан, эгерде сиз DHT сенсорунун туура эмес түрүн колдонсоңуз, программанын башталышы бөлүмдүн башында түбөлүккө илинип калат (сиз старттын 3 жолу жарк эткенин көрбөйсүз).

Негизги цикл коду абдан жөнөкөй, адегенде айлана -чөйрөнүн маанилерин (температура, жылуулук индекси, нымдуулук, күн) окуйт, радио аркылуу жөнөтөт, андан кийин аз кубаттуу китепкананы колдонуп, Arduino 5 мүнөт уктатат.

Мен байдратты төмөндөтүү радио берүүлөрдүн туруктуулугун жогорулатарын байкадым. Станция өтө аз көлөмдөгү маалыматтарды жөнөтүп жатат, 300 bps жетиштүү. Ошондой эле, өткөргүч болжол менен гана иштеп жатканын унутпаңыз. 4.8V, келечекте 3.3V версиясы бул дагы начар өткөрүүнүн сапатына алып келиши мүмкүн (маалыматтарды дубалдар жана башка тоскоолдуктар аркылуу жөнөтүү). Мен Raspberry PI 2ге тиркелген Arduino Mega'ни колдонуу менен көйгөйгө туш болдум, мен PIден Мегага кубат берчүмүн. Чечим Мегага өзүнчө 12В тышкы электр энергиясын берүү болчу.

8 -кадам: 2 -версия (ESP32 негизделген)

2 -версия (ESP32 негизделген)
2 -версия (ESP32 негизделген)
2 -версия (ESP32 негизделген)
2 -версия (ESP32 негизделген)
2 -версия (ESP32 негизделген)
2 -версия (ESP32 негизделген)

Сындыра турган нерселердин баары жакшы эски Мерфини цитата келтирүү үчүн бузулат жана акыры жылдар өткөндөн кийин станциялар табышмактуу жолдор менен ишке ашпай калды. Бирөө он миңдегенге чейин жеткен күндүн маалыматын жөнөтө баштады, бул мүмкүн эмес: Arduino тактасында 6 канал бар (Мини жана Нанодо 8 канал, Мегада 16 канал), 10-бит аналогу санариптик конвертерге. Бул 0 менен 5 вольттун ортосундагы кирүү чыңалуусун 0 менен 1023 ортосундагы бүтүн сандарга салыштырат дегенди билдирет. Ошентип, радиону алмаштыргандан кийин, LDR жана Atmega 328Pди бир нече жолу кайра программалоодон баш тарттым жана инновацияга убакыт келди деп чечтим. Келгиле ESP32.

Мен колдонгон такта: ESP32 WEMOS LOLIN32 Lite V1.0.0 Wifi & Bluetooth Card Rev1 MicroPython 4MB FLASH

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

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

Иштөө чыңалуусу 3.3V Digital I/O Pins 19 Analog Input Pins 6 Clock Speed (Max) 240Mhz Flash 4M байт Length 5mm Width 2.54mm Weight 4g

Сүрөттөн айырмаланып LOLIN логотиби жок (Кытайдан жасалма). Менин биринчи жагымдуу сюрпризим тактада басылган пинту Arduino pinout менен дал келгени болду! Көптөгөн noname такталар менен иштешкенден кийин, мен күнү бою pinouts издөөгө аргасыз болдум, чарчадым, акыры pinout түз алдыга такта WoW!

Бирок бул жерде окуянын караңгы жагы:

Башында мен LDRди A15ке туташтырдым, ал пин 12. Андан кийин менде 4095 окуулар бар (бул ESP32де AnlogRead менен ала турган максимум), бул мени жаңыртып жиберди, анткени мен станцияны кайра куруунун себеби эски LDR окуулары болчу (DHT дагы эле жакшы иштеп жаткан)). Ошентип, мындай болуп чыкты:

Esp 32 эки 12-бит ACD реестрин бириктирет. ADC1 8 каналдар GPIOs 32-39 тиркелет жана ADC2 башка казыктарда 10 каналды камтыйт. Эң негизгиси, ESP32 ADC2ди wifi функцияларын башкаруу үчүн колдонот, андыктан Wifi колдонсоңуз, ал реестрди колдоно албайсыз. ADC айдоочусу API ADC1ди колдойт (8 канал, GPIOs 32 - 39го тиркелет), жана ADC2 (10 канал, GPIOsго тиркелген 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/кочкорду колдонуңуз: 240Mhz (Wifi | BT) -Жарк ылдамдыгын колдонуу: 80 Mhz

Тордо 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

Pavg = VxIavg = 5Vx0.5mA = 2.5 мВт

Теориялык

Батарея өмүрү = 22000mWh/2.5mW = 8800 саат = 366 күн болжол менен

Реал

Батарея өмүрү = 800mWh/2.5mW = 320 саат = болжол менен 13 күн

Мен убакыттын тактыгын өлчөөгө мүмкүнчүлүгүм жок болчу, бирок менин оңдоолорум менен ал 2 секундага созулат.

Мен түштөн кийин баарын коддоого жумшагым келбеди, ошондуктан маалыматтарды сактоо үчүн эмне кылып жатканын көрүү үчүн ESP32ге негизделген Instructables боюнча башка аба ырайынын станцияларын издедим. Тилекке каршы, алар ийкемдүү эмес жана чектүү сайттарды колдонуп жатышканын байкады. Мен "булуттун" күйөрманы болбогондуктан жана алардын коду бузулду, анткени сайт API'ни ошондон бери өзгөрткөн, мен 10 мүнөтүмдү ыңгайлаштырылган чечим кабыл алдым, анткени ал ойлогондой кыйын эмес. Кел, баштайлы!

Биринчиден, бул долбоор үчүн өзүнчө схема сүрөтү жок, анткени ал V1 сыяктуу эле ошол эле компоненттерди колдонот (кечирим сураныч). DHT VCCге тартылып, LDR 10k менен тартылды. Менин кытайлык жасалма (6500 мАч ультра күн от lol: D) сыяктуу 18650 батареялары менен көрүүгө мүмкүн болгон маселе, алар 4.1V жаңы доордун тегерегиндеги разряддын башталышынан жана клеткалардын бузулушун токтотуу үчүн алардын өчүрүү схемалары башталганга чейин кетишинен (бактылуу болгондор). Бул 3.3V киргизүү катары биз үчүн жакшы эмес. Бул LOLIN тактасында литий батарея коннектору жана кубаттоо схемасы бар болсо да, мен бул проектте эски станциядан колумдан келгендин баарын жаңырткым келген, ошондуктан эски 18650 менен бул заряддагыч түзүлүштү колдоно албайсың. Чечим жөнөкөй эле: мен эски чыңалуунун күчөткүчүнөн 5Вга туташтырылган микро USB кабелин кесип салдым жана voila көйгөйү чечилди, анткени microUSB тактада жөндөгүч бар.

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

Жаңысында: батарейка 3.7V -> 5V чейин көтөрүлөт -> ESP32деги борттогу рег аркылуу жөнгө салынат -> бардык компоненттер 3.3Vде иштейт.

Программалык камсыздоого дагы бир DHT китепканасы керек болот, Arduino DHT ESPке туура келбейт. Бизге эмне керек DHT ESP деп аталат.

Мен бул кодду DHT мисалында кодумду негиздей баштадым. Коддун иштөө тартиби:

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

2, статикалык IP менен wifiга туташуу

3, маалыматтарды PHP скриптине жайгаштырыңыз

4, 10 мүнөт уктаңыз

Байкагандай, мен кодду эффективдүүлүк үчүн жөнгө салдым, анткени ойгонуу убактысын таптакыр кыскартуу үчүн, ал эски долбоор күйгүзүлгөндөн 5 эсе күчүн жоготуп жатат. Мен муну кантип кылдым? Биринчиден, кандайдыр бир ката болсо, getTemperature () функциясы жалган менен кайтып келет (бул дагы 10 мүнөт уктоону билдирет). Бул DHT сенсорун иштетүү мүмкүн эмес же WiFi байланышы жок болушу мүмкүн. Байкаганыңыздай, wifi ассоциациясын түбөлүккө сынап көрүү үчүн () цикли да алынып салынды, бирок ал жерде 1 сек кечигүү калтырылышы керек, антпесе ал дайыма туташпайт жана ал AP түрүнө, жүктөөгө ж. боло берет, 0,5 сек менен мен ырааттуу эмес жүрүм -турумга ээ болдум (кээде туташа албайт). Эгерде кимдир бирөө муну жакшы жолду билсе, аны комментарийге калтырыңыз. DHT маалыматы окулганда жана wifi туташуусу бүткөндө гана, ал маалыматты веб -сервердеги скриптке жайгаштырууга аракет кылат. 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 мАчтан ашык жарнакталган кубаттуулук - бул ыктымалдуулук менен алдамчылык).

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