Мазмуну:

Дагы бир акылдуу аба ырайы бекети, бирок : 6 кадам (сүрөттөр менен)
Дагы бир акылдуу аба ырайы бекети, бирок : 6 кадам (сүрөттөр менен)

Video: Дагы бир акылдуу аба ырайы бекети, бирок : 6 кадам (сүрөттөр менен)

Video: Дагы бир акылдуу аба ырайы бекети, бирок : 6 кадам (сүрөттөр менен)
Video: АЯЛДЫ КАНТИП КАНДЫРЫШ КЕРЕК КӨРГҮЛӨ! 2024, Июнь
Anonim
Image
Image
Дагы бир акылдуу метеостанция, бирок…
Дагы бир акылдуу метеостанция, бирок…
Дагы бир акылдуу метеостанция, бирок…
Дагы бир акылдуу метеостанция, бирок…
Дагы бир акылдуу метеостанция, бирок…
Дагы бир акылдуу метеостанция, бирок…

Макул, мен билем, мындай метеостанциялар бардык жерде бар, бирок айырмасын көрүү үчүн бир нече мүнөт бөл …

  • Төмөн кубат
  • 2 электрондук кагаз дисплейи…
  • бирок 10 башка экрандар!
  • ESP32 негизделген
  • акселерометр жана температура / нымдуулук сенсорлору
  • Wifi жаңыртуу
  • 3D басылган корпус

жана башка көптөгөн пайдалуу амалдар …

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

Жабдуулар

Көрүнүп тургандай, система 2 электрондук кагаз экрандан жана 3D басылган кутудан турат. Бирок анын ичинде көп нерселер бар:

  • ESP32
  • Бир MPU6050 акселерометр
  • DHT22 сенсору
  • LiPo батареясы
  • Бүт нерсени туташтыруу үчүн PCB
  • Үйдө жасалган duPont жиптери

жана Wi-Fi байланышы. Чынында 3 тармак жарыяланган, система туташканга чейин аларды бир -бирден текшерет.

1 -кадам: Эмне үчүн башка метеостанция?

Эмне үчүн башка метеостанция?
Эмне үчүн башка метеостанция?
Эмне үчүн башка метеостанция?
Эмне үчүн башка метеостанция?
Эмне үчүн башка метеостанция?
Эмне үчүн башка метеостанция?
Эмне үчүн башка метеостанция?
Эмне үчүн башка метеостанция?

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

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

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

Экрандар SPI аркылуу туташкан, мен аларды ESP32 менен туташтыруу үчүн туура төөнөгүчтөрдү табуудан мурун бир аз издеп көргөм, анткени мага акселерометр үчүн I2C, DHT22ди окуу үчүн төөнөгүч жана батареянын чыңалуусун өлчөө үчүн 2 башка нерсе керек экенин билем. ESP32 дээрлик толугу менен заряддалган! Кээ бир казыктар окуу үчүн гана экенин билип (мен аларды DHT сенсоруна колдондум), башкаларын Wifi менен бирге колдонууга болбойт, туура конфигурацияны табуу бир аз татаалыраак болчу.

Куту 4 багытта багытталышы мүмкүн, плюс жалпак. Мунун баары 4*2+2 = 10 мүмкүн болгон маалымат түрүн 2 экранда гана көрсөтөт. Ошентип, ал көп нерселерди көрсөтүүгө мүмкүндүк берет:

  • Күн жана күндүн ыйыгы
  • Учурдагы убакыт
  • Бүгүнкү аба ырайы
  • Жакынкы сааттардагы аба ырайы
  • Жакынкы күндөр үчүн аба ырайы
  • Батарейканын кубаттуулугу
  • Мен дагы эле орун бар эле, атайын сайттан туш келди цитата.

2 -кадам: Сизге эмне керек?

Сизге эмне керек?
Сизге эмне керек?
Сизге эмне керек?
Сизге эмне керек?
Сизге эмне керек?
Сизге эмне керек?
  • ESP32: Lolin32 модулу (батарейканын туташтыргычы менен жабдылган өтө аз кубаттуулукта, батареяны USB плюс аркылуу кубаттай алат)
  • 2 эппер дисплейи: 4.2 дюйм жана 2.9 дюйм. Мен моделдерди Good Display дүкөнүнөн тандадым.
  • DHT22 сенсор
  • MCU6050 акселерометр - гирометр I2C сенсор
  • LiPo батареясы
  • Батарея чыңалуусун өлчөө үчүн: 2 10k каршылыгы, 1 100k каршылыгы, 1 100nF конденсатору, 1 MOSFET транзистору
  • Лайк жана ширетүүчү, басылган плата
  • Корпус үчүн 3D принтерге кирүү

Тиркелген сүрөт ПХБдагы бардык компоненттердин абалын көрсөтөт: Мен корпуска батыш үчүн мейкиндикти сактоого туура келди, бул өтө чоң болбошу керек.

Аба ырайы маалыматын алуу үчүн, сиз ошондой эле аба ырайы APIлерине катталып, ачкычтарыңызды 'Variables.h' файлына туура жайгаштырыңыз (төмөндү караңыз).

Аба ырайы сайттары:

  • apixu
  • accuweather

3 -кадам: Бул долбоор мени көп ойлонууга жана үйрөнүүгө мажбур кылды …

Бул долбоор мени көп нерсеге үйрөттү …
Бул долбоор мени көп нерсеге үйрөттү …
Бул долбоор мени ойлонууга жана көп нерсеге үйрөттү …
Бул долбоор мени ойлонууга жана көп нерсеге үйрөттү …
Бул долбоор мени көп нерсеге үйрөттү …
Бул долбоор мени көп нерсеге үйрөттү …

Бул система аз кубаттуулукта болушу керек болчу, андыктан батарейканы күн сайын кечинде заряддоонун кажети жок … Энергияны үнөмдөө үчүн, мен мындан ары иштебесе дагы дисплейди сактап турган электрондук кагаз экрандарды тандап алдым. Ошо сыяктуу эле ESP32 үчүн мен Lolin32 модулун (үнөмдүүлүгү менен белгилүү) тандап алдым жана терең уйкуну башкарууну, акселерометр чыгарган үзгүлтүккө каршы ойготууну үйрөнүүгө туура келди.

Куту 4 багытта багытталышы мүмкүн, жалпак. Бардыгы 4*2+2 = 10 мүмкүн болгон маалымат түрүн көрсөтөт. Ошентип, ал сизге көп нерселерди кылууга мүмкүндүк берет: дата жана күндүн ыйыгы, убакыт, бүгүнкү аба ырайы, жакынкы сааттарга же күндөргө аба ырайынын божомолдору, батарейканын кубаттуулугунун деңгээли жана атайын веб -сайттан туш келди цитата.

Интернеттен издеш керек, жана өзүңүз билесиз: WiFi - энергияны үнөмдөөнүн душманы …

Ошентип, биз туташууну башкарышыбыз керек, акыркы маалыматты көрсөтүү үчүн, бирок туташууга көп убакыт коротпой. Дагы бир татаал маселе: убакытты так сактоо. Мага интернеттен убакыт таба алганым үчүн RTC кереги жок, бирок ESP32нин ички сааты бир аз жылып баратат, айрыкча уйку мезгилинде. Интернетте саатты баштапкы абалга келтирүүнү күтүп жатып, тактыкты сактоонун жолун табышым керек болчу. Мен аны интернетте саат сайын кайра синхрондоштурам.

Ошентип, автономия (интернет байланыштарынын жыштыгы) менен көрсөтүлгөн маалыматтын тактыгы ортосунда айырма бар.

Дагы бир чечиле турган маселе - бул эс тутум. ESP32 катуу уктап жатканда, RTC RAM деп аталгандан башка, эс тутум жоголот. Бул эстутумдун туурасы 4МБ, анын ичинен 2си гана программа үчүн колдонулушу мүмкүн. Бул эс тутумда, мен уйку баскычынан кийин, бир аткаруудан экинчисине чейин сакталууга тийиш болгон ар кандай программалардын өзгөрмөлөрүн сакташым керек: аба ырайы божомолдору, убакыт жана күн, сөлөкөт файл аттары, цитаталар ж.б. Мен аны менен күрөшүүнү үйрөнүшүм керек болчу..

Иконалар жөнүндө айтсам, алар SPIFFS, ESP32 файл тутумунда сакталат. Бекер Wunderground аба ырайы API жабылгандан кийин, мен башка бекер аба ырайы маалымат провайдерлерин издөөгө туура келди. Мен экөөнү тандадым: бири учурдагы аба ырайы үчүн, 12 сааттык божомол менен, экинчиси көп күндүк божомолдор үчүн. Сүрөттөр бирдей эмес, андыктан мага эки жаңы көйгөйдү жаратты:

  • Иконалар топтомун тандаңыз
  • Бул сөлөкөттөрдү 2 сайттын болжолдоо коддоруна дал келтириңиз

Бул кат алышуу ар дайым кайра жүктөлүп турбашы үчүн RTC RAMда сакталган.

Иконалар менен акыркы көйгөй. Алардын бардыгын SPIFFSте сактоо мүмкүн эмес. Бардык файлдарым үчүн орун өтө кичине. Сүрөттү кысуу керек болчу. Мен Pythonдо сценарий жаздым, ал менин сөлөкөт файлдарымды окуп, аларды RLEге кысат, анан кысылган файлдарды SPIFFSте сактайт. Ал жерде өттү.

Бирок электрондук кагазды көрсөтүү китепканасы кысылган сүрөттөрдү эмес, BMP тибиндеги файлдарды гана алат. Ошентип, мен бул кысылган файлдардан сүрөтчөлөрүмдү көрсөтүү үчүн кошумча функция жазууга туура келди.

Интернетте окулган маалыматтар көбүнчө json форматында: аба ырайы, күндүн ыйыгы. Мен бул үчүн (улуу) arduinoJson китепканасын колдоном. Бирок цитаталар андай эмес. Мен аларды атайын сайттан алам, андыктан веб -баракчанын мазмунун түз карап, аларды окуум керек. Мен бул үчүн атайын код жазышым керек болчу. Күн сайын, түн ортосуна жакын, программа бул сайтка барат жана болжол менен онго жакын цитаталарды окуйт жана аларды RTC RAMда сактайт. Корпус чоң экранды жогору карай багыттаганда, алардын бири туш келди көрсөтүлөт.

Мен сизге акцент каармандарды көрсөтүү көйгөйүн берем (кечиресиз, бирок цитаталар француз тилинде) ….

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

Бул схеманы жасап, баарын эң кичине болушун каалагандай кылып, системанын бардык компоненттерин туташтыруу үчүн ПХБ жасашым керек болчу. Бул менин биринчи ПХБ. Мен бактылуу болдум, анткени бул жакта биринчи жолу баары жакшы иштеди …

Имплантация картасын караңыз: "тыюу салынган аймак" - бул USB кабелин туташтыруу үчүн корголгон аймак. Lolin32 модулу батарейканы USB аркылуу толуктоого мүмкүндүк берет: USB кабели туташкан учурда батарейка заряддалат жана модуль ошол эле учурда иштейт.

Акыркы пункт: шрифттер. Ар кандай өлчөмдөгү, жоон же жокпу, аларды жаратуу жана сактоо керек болчу. Adafruit GFX китепканасы, шрифт файлдарын туура каталогго орноткондон кийин, абдан жакшы кам көрөт. Файлдарды түзүү үчүн мен Font Converter сайтын колдондум, абдан ыңгайлуу!

Тандаганыңызды текшериңиз:

  • Алдын ала көрүү дисплейи: TFT 2.4"
  • Китепкана версиясы: Adafruit GFX шрифти

Жыйынтыктап айтканда: мага көп нерсени үйрөнүүгө мүмкүнчүлүк берген чоң долбоор

4-кадам: Электрондук кагазды колдонуу

Электрондук кагазды колдонуу
Электрондук кагазды колдонуу

Бул экрандардын негизги кемчилиги видеодон ачык көрүнүп турат: дисплейдин жаңыртылышы бир же эки секундага созулат жана жаркылдоо менен жасалат (эки экрандын кадимки жана тескери версияларынын альтернативдүү дисплейи). Бул аба ырайы маалыматы үчүн алгылыктуу, анткени мен аны тез -тез жаңыртпайм (кутунун багытын өзгөртүүдөн башка ар бир саат). Бирок убакыт үчүн эмес. Мына ошондуктан (жана керектөөнү чектөө үчүн) мен дагы эле HH: MM дисплейин колдоном (секунд эмес).

Ошентип, дисплейди жаңыртуунун башка жолун издөөгө туура келди. Бул экрандар (алардын айрымдары) жарым -жартылай жаңыртууну колдойт (экрандын бир жерине же бүтүндөй экранга колдонулат …), бирок бул мен үчүн жакшы болгон жок, анткени менин чоң экраным (убакытты көрсөтөт) пикселдердин арбактарын сактайт. ошол алмаштырылат. Мисалы, 10: 12ден 10: 13кө өткөндө, '2' кичине "3" ичинде көрүнөт, ал эми "4", "5" ж.б.дан кийин ого бетер көрүнөт. Бул менин экраным үчүн ушундай экенин көрсөтүш үчүн: Мен муну GxEPD2 электрондук кагаз дисплей китепканасынын автору менен талкууладым, ал бул көрүнүштү өзүнүн экрандары менен байкабаганын айтты. Биз арбактарга аңчылык кылбай, параметрлерди өзгөртүүгө аракет кылдык.

Ошентип, биз башка чечим табышыбыз керек болчу: мен маселени чечкен жарым -жартылай кош сергитүүнү сунуштадым (жок дегенде бул мен үчүн канааттандырарлык). Сааттар экрандын жарыгы жок өтүп жатат жана арбак жок. Бирок, алмаштыруу дароо эмес: убакытты өзгөртүү үчүн бир секунддан бир аз көбүрөөк убакыт талап кылынат.

5 -кадам: Жасоо

Муну жасоо
Муну жасоо
Муну жасоо
Муну жасоо
Муну жасоо
Муну жасоо
Муну жасоо
Муну жасоо

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

Жакында мен тышкы USB микрофон туташтыргычын орнотом, ошондуктан батарейканы толтуруу үчүн корпусту ачуунун кажети жок.

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

6 -кадам: Код жана файлдар

Image
Image

Үч архивдик файл берилет:

  • Weather station.zip: Arduino IDE аркылуу жүктөө үчүн Arduino коду
  • Boite ecran.zip: CAD жана 3D принтер файлдары
  • data.zip: ESP32деги SPIFFSке жүктөлүүчү файлдар.

Эгерде сиз файлдарды ESP32нин SPIFFSке кантип жүктөөнү билбесеңиз, анда абдан пайдалуу плагинди жана аны Arduino IDEде кантип колдонуу керектигин үйрөткүчтү окуңуз.

Терең уйку программалоо Arduino стандарттык программалоодон такыр башкача. ESP32 үчүн, бул ESP32 ойгонот жана орнотууну аткарат, андан кийин уктайт. Ошентип, цикл функциясы бош жана эч качан аткарылбайт.

Кээ бир инициализация фазасы биринчи аткарууда бир гана жолу аткарылышы керек (мисалы, убакытты алуу, аба ырайы маалыматтары, цитаталар ж. Б.), Ошондуктан ESP32 учурдагы ойгонуу биринчи же жокпу билиши керек: Чечим-бул ар бир ойгонгондо көбөйтүлүүчү RTC RAMда (терең уйку баскычтарында дагы активдүү бойдон кала берет) сактоо. Эгерде ал 1ге барабар болсо, анда бул биринчи аткаруу жана ESP32 инициализация фазасын иштетет, антпесе бул фаза өткөрүп жиберилет.

ESP32ди ойготуу үчүн бир нече мүмкүнчүлүктөр бар:

  • Таймердин ойгонуусу: код уктаар алдында терең уйкунун узактыгын эсептейт. Бул убакытты (1, 2, 3 же 5 мүнөт сайын) же аба ырайын (ар бир 3 же 4 саатта) цитаталардын жана күндүн ыйыктарынын (24 саат сайын) жаңыртуу үчүн колдонулат.
  • Үзгүлтүк менен ойгонуу: акселерометр ESP32ди ойготуу үчүн колдонулган сигналды жөнөтөт. Бул багыттын өзгөрүшүн аныктоо жана дисплейлерди жаңыртуу үчүн колдонулат
  • Сенсордук сенсордун ойгонушу: ESP32 сенсордук сенсор катары иштеген бир нече казыктар менен жабдылган, бирок аларды таймердин ойготуусу менен колдонууга болбойт, ошондуктан мен муну колдонгон жокмун.

Башка программалоо ыкмалары коддун башка бөлүктөрүндө бар, энергияны үнөмдөөдө убакытты так сактоо үчүн (б.а. NTP серверин ар бир мүнөткө туташтырбоо), Adafruit GFX китепканасы тарабынан колдоого алынбаган акценттерди алып салуу, эгерде дисплейди жаңыртпоо үчүн. акселерометрдин параметрлерин, айрыкча үзгүлтүккө учуратуу үчүн коюу, таймер ойгонгондо уктоо убактысын так эсептөө, IDEге туташпаса Сериялык консолун колдонуудан качуу (энергияны кайра үнөмдөө үчүн), ажыратуу wifi кереги жок болгондо ж.б.… жана код функцияларды түшүнүүгө жардам берген комментарийлерге толгон.

Бул Нускаманы окуганыңыз үчүн рахмат (менин эң биринчим). Сизге жагат жана бул аба ырайы станциясын жасоодон ырахат аласыз деп ишенем

Сенсорлор таймашы
Сенсорлор таймашы

Сенсорлор конкурсунда экинчи орунду ээледи

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