Përmbajtje:

Edhe një stacion i motit i zgjuar, por : 6 hapa (me fotografi)
Edhe një stacion i motit i zgjuar, por : 6 hapa (me fotografi)

Video: Edhe një stacion i motit i zgjuar, por : 6 hapa (me fotografi)

Video: Edhe një stacion i motit i zgjuar, por : 6 hapa (me fotografi)
Video: Праздник. Новогодняя комедия 2024, Nëntor
Anonim
Image
Image
Edhe një stacion tjetër i zgjuar i motit, por…
Edhe një stacion tjetër i zgjuar i motit, por…
Edhe një stacion tjetër i zgjuar i motit, por…
Edhe një stacion tjetër i zgjuar i motit, por…
Edhe një stacion tjetër i zgjuar i motit, por…
Edhe një stacion tjetër i zgjuar i motit, por…

OK, e di që ka kaq shumë stacione të tilla moti në dispozicion kudo, por kaloni disa minuta për të parë ndryshimin…

  • Fuqi e ulët
  • 2 ekrane letre…
  • por 10 ekrane të ndryshëm!
  • ESP32 bazuar
  • akselerometër dhe sensorë të temperaturës / lagështisë
  • Përditësim Wifi
  • Rast i printuar 3D

dhe shumë truke të tjera të dobishme…

Ideja kryesore është të shfaqni informacione të ndryshme në të dy ekranet në varësi të orientimit të kutisë. Rasti është në formën e një kutie paralelepipedike, një gur shtrimi, me një lloj rripi që shërben si këmbë.

Furnizimet

Siç mund ta shihni, sistemi përbëhet nga 2 ekrane letre elektronike dhe një kuti të printuar 3D. Por ka shumë gjëra në të:

  • Një ESP32
  • Një përshpejtues MPU6050
  • Një sensor DHT22
  • Një bateri LiPo
  • Një PCB për të lidhur gjithçka
  • Fijet e shtëpisë duPont

dhe një lidhje Wi-Fi. Në fakt deklarohen 3 rrjete, sistemi i teston ato një nga një derisa të ketë sukses në lidhjen.

Hapi 1: Pse një stacion tjetër moti?

Pse një stacion tjetër moti?
Pse një stacion tjetër moti?
Pse një stacion tjetër moti?
Pse një stacion tjetër moti?
Pse një stacion tjetër moti?
Pse një stacion tjetër moti?
Pse një stacion tjetër moti?
Pse një stacion tjetër moti?

Ideja është që të shfaqen lloje të ndryshme informacioni në të dy ekranet në varësi të orientimit të kutisë. Rasti është në formën e një kutie paralelepipedike, një gur shtrimi, me një lloj rripi që shërben si një mbështetje për ta bërë atë të qëndrojë.

Përshpejtuesi zbulon lëvizjen dhe orientimin dhe shkakton shfaqje.

Për të kursyer energji, zgjodha ekranet e letrës elektronike (shih referencat më poshtë) që mbajnë ekranin edhe nëse nuk janë më të ndezur. Në mënyrë të ngjashme për ESP32, unë zgjodha modulin Lolin32 (i njohur për kursimin e tij) dhe më duhej të mësoja se si të menaxhoja gjumin e thellë, dhe zgjimin në ndërprerjen e gjeneruar nga përshpejtuesi.

Ekranet janë të lidhura përmes SPI, unë kërkova shumë para se të gjeja kunjat e duhur për t'i lidhur ato me ESP32, duke e ditur që më duhen edhe një I2C për përshpejtuesin, një kunj për të lexuar DHT22 dhe 2 të tjerë për matjen e tensionit të baterisë. ESP32 është pothuajse plotësisht i ngarkuar! Duke ditur që disa kunja janë vetëm për lexim (kam përdorur ato për sensorin DHT), të tjerat nuk mund të përdoren së bashku me Wifi, ishte pak e komplikuar të gjesh konfigurimin e duhur.

Kutia mund të orientohet në 4 drejtime, plus e sheshtë. Në tërësi kjo bën që 4*2+2 = 10 lloje të mundshme informacioni të shfaqen me vetëm 2 ekrane. Kështu që ju lejon të shfaqni shumë gjëra:

  • Data, dhe shenjtori i ditës
  • Koha aktuale
  • Parashikimi i motit sot
  • Parashikimet e motit për orët në vijim
  • Parashikimet e motit për ditët në vijim
  • Niveli i ngarkimit të baterisë
  • Dhe pasi kisha akoma vend, një citim i rastësishëm nga një faqe në internet e specializuar.

Hapi 2: Çfarë ju nevojitet?

Cfare te nevojitet ?
Cfare te nevojitet ?
Cfare te nevojitet ?
Cfare te nevojitet ?
Cfare te nevojitet ?
Cfare te nevojitet ?
  • ESP32: Moduli Lolin32 (fuqi shumë e ulët, e pajisur me një lidhës baterie, mund të ngarkojë baterinë përmes USB plus)
  • 2 ekrane epaper: 4.2 inç dhe 2.9 inç. Zgjodha modelet nga dyqani Good Display.
  • Sensori DHT22
  • Përshpejtues MCU6050 - sensori i xhirometrit I2C
  • Një bateri LiPo
  • Për matjen e tensionit të baterisë: 2 rezistencë 10k, 1 rezistencë 100k, 1 kondensator 100nF, 1 transistor MOSFET
  • Saldim dhe hekur bashkues, bord i qarkut të shtypur
  • Qasja në një printer 3D për rastin

Imazhi i bashkangjitur tregon pozicionin e të gjithë përbërësve në PCB: Më duhej të kurseja hapësirë për t'u përshtatur në kasë, e cila nuk duhet të jetë shumë e madhe.

Për të marrë të dhënat e motit, gjithashtu duhet të regjistroheni në API të motit dhe t'i vendosni çelësat tuaj në vendet e duhura në skedarin 'Variables.h' (shiko më poshtë).

Uebfaqet e motit:

  • apixu
  • moti i mirë

Hapi 3: Ky projekt më bëri të mendoj dhe të mësoj shumë…

Ky projekt më bëri të mendoj dhe të mësoj shumë…
Ky projekt më bëri të mendoj dhe të mësoj shumë…
Ky projekt më bëri të mendoj dhe të mësoj shumë…
Ky projekt më bëri të mendoj dhe të mësoj shumë…
Ky projekt më bëri të mendoj dhe të mësoj shumë…
Ky projekt më bëri të mendoj dhe të mësoj shumë…

Ky sistem duhej të ishte me fuqi të ulët, kështu që nuk keni nevojë të ngarkoni baterinë çdo natë … Për të kursyer energji, zgjodha ekranet e letrës elektronike që mbajnë ekranin edhe nëse nuk janë më të fuqizuar. Në mënyrë të ngjashme për ESP32, unë zgjodha modulin Lolin32 (i njohur për kursimin e tij) dhe më duhej të mësoja se si të menaxhoja gjumin e thellë, dhe thirrjen e zgjimit për ndërprerjen e krijuar nga përshpejtuesi.

Kutia mund të orientohet në 4 drejtime, më e sheshtë. Në tërësi kjo bën që 4*2+2 = 10 lloje të mundshme informacioni të shfaqen. Pra, ju lejon të bëni shumë gjëra: datën dhe shenjtorin e ditës, kohën, parashikimin e motit të sotëm, parashikimet e motit për orët ose ditët e ardhshme, nivelin e ngarkimit të baterisë dhe një citim të rastësishëm nga një faqe interneti e specializuar.

Ashtë shumë për të kërkuar në internet, dhe siç e dini: WiFi është armiku i kursimit të energjisë…

Pra, ne duhet të menaxhojmë lidhjen, në mënyrë që të shfaqim informacion të azhurnuar, por pa shpenzuar shumë kohë për t'u lidhur. Një problem tjetër mjaft kompleks: mbajtja e një kohe mjaft të saktë. Nuk kam nevojë për një RTC pasi mund të gjej kohë në internet, por ora e brendshme e ESP32 lëviz shumë, veçanërisht gjatë periudhave të gjumit. Më duhej të gjeja një mënyrë për të qëndruar mjaft të saktë, ndërsa prisja të rivendosja orën me internet. Unë e sinkronizoj atë në internet çdo orë.

Pra, ekziston një kompromis midis autonomisë (frekuenca e lidhjeve në internet) dhe saktësisë së informacionit të shfaqur.

Një problem tjetër që duhet zgjidhur është kujtesa. Kur ESP32 është në gjumë të thellë, kujtesa humbet, përveç asaj që quhet RTC RAM. Kjo memorie është 4MB e gjerë, nga të cilat vetëm 2 mund të përdoren për programin. Në këtë kujtesë, unë duhet të ruaj variablat e ndryshme të programit që duhet të mbahen nga një ekzekutim në tjetrin, pas një faze gjumi: parashikimet e motit, koha dhe data, emrat e skedarëve të ikonave, citimet, etj. Më duhej të mësoja të merresha me të Me

Duke folur për ikonat, ato ruhen në SPIFFS, sistemin e skedarëve ESP32. Pas mbylljes së API -së falas të motit Wunderground, më duhej të kërkoja ofrues të tjerë të të dhënave falas të motit. Zgjodha dy: një për motin e ditës aktuale, me parashikime 12 orë, dhe një tjetër për parashikimet shumëditore. Ikonat nuk janë të njëjta, kështu që më shkaktoi dy probleme të reja:

  • Zgjidhni një grup ikonash
  • Përputhni këto ikona me kodet e parashikimit të 2 vendeve

Kjo korrespondencë është ruajtur edhe në RAM RTC në mënyrë që të mos ketë nevojë të rimbushet çdo herë.

Problemi i fundit me ikonat. E pamundur të ruhen të gjitha në SPIFFS. Hapësira është shumë e vogël për të gjithë skedarët e mi. Ishte e nevojshme të bëhej ngjeshja e imazhit. Kam shkruar një skenar në Python që lexon skedarët e mi të ikonave dhe i ngjesh ato në RLE, dhe pastaj i ruaj skedarët e ngjeshur në SPIFFS. Aty u mbajt.

Por biblioteka e ekranit të letrës elektronike merr vetëm skedarë të tipit BMP, jo imazhe të ngjeshura. Kështu që më duhej të shkruaja një funksion shtesë për të qenë në gjendje të shfaqja ikonat e mia nga këto skedarë të ngjeshur.

Të dhënat e lexuara në internet janë shpesh në formatin json: të dhënat e motit, Shenjti i ditës. Unë përdor bibliotekën (e madhe) arduinoJson për këtë. Por citatet nuk janë të tilla. Unë i marr nga një sit i dedikuar, kështu që më duhet t'i lexoj duke parë drejtpërdrejt në përmbajtjen e faqes në internet. Më duhej të shkruaja një kod specifik për këtë. Çdo ditë, rreth mesnatës, programi shkon në këtë faqe dhe lexon rreth dhjetë citate të rastësishme, dhe i ruan ato në RAM RTC. Njëra shfaqet rastësisht mes tyre kur strehimi është i orientuar në ekran të madh lart.

Ju përcjell problemin e shfaqjes së karaktereve të theksuara (më falni, por citimet janë në frëngjisht)….

Kur ekrani i vogël është ngritur, shfaqet tensioni i baterisë, me një vizatim për të parë më mirë nivelin e mbetur. Ishte e nevojshme të bëhej një montim elektronik për të lexuar tensionin e baterisë. Meqenëse matja nuk duhet të shkarkojë baterinë, unë përdor një diagram të gjetur në internet, i cili përdor një tranzistor MOSFET si ndërprerës në mënyrë që të konsumojë rrymë vetëm kur të bëhet matja.

Për të qenë në gjendje të bëj këtë qark dhe të vendos gjithçka në kuti, që doja më të voglin e mundshëm, më duhej të bëja një PCB për të lidhur të gjithë përbërësit e sistemit. Ky është PCB -ja ime e parë. Isha me fat sepse gjithçka funksionoi mirë herën e parë në këtë anë…

Shihni hartën e implantimit: "zona e ndaluar" është një zonë e rezervuar për lidhjen e kabllit USB. Moduli Lolin32 ju lejon të rimbushni baterinë përmes USB: bateria ngarkohet nëse kabllo USB është e lidhur, dhe moduli punon në të njëjtën kohë.

Pika e fundit: fontet. Me madhësi të ndryshme, të guximshme apo jo, ato duheshin krijuar dhe ruajtur. Biblioteka Adafruit GFX kujdeset për këtë shumë mirë, pasi të keni instaluar skedarët e shkronjave në drejtorinë e duhur. Për të krijuar skedarët, kam përdorur sitin Font Converter, shumë i përshtatshëm!

Sigurohuni që të zgjidhni:

  • Paraqitja e ekranit: TFT 2.4"
  • Versioni i bibliotekës: Fonti Adafruit GFX

Për ta përmbledhur: një projekt i madh, i cili më lejoi të mësoja shumë gjëra

Hapi 4: Përdorimi i ekraneve të letrës elektronike

Përdorimi i ekraneve të letrës elektronike
Përdorimi i ekraneve të letrës elektronike

Disavantazhi kryesor i këtyre ekraneve është qartë i dukshëm në video: azhurnimi i ekranit zgjat një ose dy sekonda dhe bëhet duke ndezur (shfaqje alternative e versioneve normale dhe të përmbysura të dy ekraneve). Kjo është e pranueshme për informacionin e motit sepse nuk e përditësoj shumë shpesh (çdo orë përveç ndryshimit të orientimit të kutisë). Por jo për kohën. Kjo është arsyeja pse (dhe për të kufizuar konsumin) unë ende përdor ekranin HH: MM (jo sekondat).

Kështu që më duhej të kërkoja një mënyrë tjetër për të azhurnuar ekranin. Këto ekrane (disa prej tyre) mbështesin një azhurnim të pjesshëm (të aplikuar ose në një zonë të ekranit, ose në të gjithë ekranin …) por nuk ishte i mirë për mua sepse ekrani im i madh (i cili shfaq kohën) mban fantazmat e pikselëve që zëvendësohen. Për shembull, kur kaloni nga 10:12 në 10:13, '2' është pak e dukshme brenda '3', dhe bëhet edhe më e dukshme pas '4', '5', etj. Do të doja për të vënë në dukje se ky është rasti për ekranin tim: e diskutova me autorin e bibliotekës së ekranit të letrës elektronike GxEPD2 i cili më tha se nuk e vëzhgoi këtë fenomen me ekranet e tij. Ne u përpoqëm të ndryshonim parametrat pa pasur sukses në gjuetinë e fantazmave.

Kështu që na u desh të gjenim një zgjidhje tjetër: Unë propozova të bëja një freskim të pjesshëm të dyfishtë, i cili zgjidhi problemin (të paktën është i kënaqshëm për mua). Orët kalojnë pa ndezur ekranin dhe nuk ka fantazma. Sidoqoftë, kalimi nuk është i menjëhershëm: duhet pak më shumë se një sekondë për të ndryshuar kohën.

Hapi 5: Për ta bërë atë

Duke e bërë atë
Duke e bërë atë
Duke e bërë atë
Duke e bërë atë
Duke e bërë atë
Duke e bërë atë
Duke e bërë atë
Duke e bërë atë

Për të siguruar që asgjë nuk lëviz brenda kur ndryshon orientimi, përbërësit e ndryshëm (ekrane, module elektronike, PCB, bateri) janë ngjitur me një armë zam. Për të drejtuar telat nën PCB, e instalova në këmbët e bëra me ndarës, e njëjta gjë vlen edhe për baterinë.

Së shpejti do të instaloj një lidhës të jashtëm të mikrofonit USB, kështu që nuk do të më duhet të hap rastin për të rimbushur baterinë.

Ndoshta do të jem gjithashtu i interesuar të azhurnoj nga OTA për t'i përsosur të gjitha….

Hapi 6: Kodi dhe skedarët

Image
Image

Janë dhënë tre skedarë arkivi:

  • Stacioni i motit.zip: kodi Arduino, për tu ngarkuar duke përdorur Arduino IDE
  • Boite ecran.zip: skedarët e printerit CAD dhe 3D për rastin
  • data.zip: skedarët që do të ngarkohen në SPIFFS të ESP32.

Nëse nuk dini si të ngarkoni skedarë në SPIFFS të ESP32, thjesht lexoni këtë tutorial, i cili paraqet një shtojcë shumë të dobishme dhe si ta përdorni atë në Arduino IDE.

Programimi i gjumit të thellë është krejt i ndryshëm nga programimi standard i një Arduino. Për ESP32, do të thotë që ESP32 zgjohet dhe ekzekuton konfigurimin, pastaj shkon për të fjetur. Pra, funksioni i lakut është bosh dhe nuk ekzekutohet kurrë.

Disa faza të fillimit duhet të ekzekutohen vetëm një herë në ekzekutimin e parë (të tilla si marrja e kohës, të dhënat e motit, kuotat, etj), kështu që ESP32 duhet të dijë nëse zgjimi aktual është i pari apo jo: për këtë, zgjidhja është ruajtja e një ndryshoreje në RAM RTC (e cila mbetet aktive edhe gjatë fazave të gjumit të thellë) e cila rritet në çdo zgjim. Nëse është e barabartë me 1 atëherë është ekzekutimi i parë dhe ESP32 drejton fazën e fillimit, përndryshe kjo fazë anashkalohet.

Për të zgjuar ESP32, ka disa mundësi:

  • Zgjimi i kohëmatësit: kodi llogarit kohëzgjatjen e gjumit të thellë para se të shkoni për të fjetur. Kjo përdoret për të përditësuar kohën (çdo 1, 2, 3 ose 5 minuta) ose të dhënat e motit (çdo 3 ose 4 orë) të citateve dhe shenjtorëve të ditës (çdo 24 orë)
  • Ndërprit zgjimin: akselerometri dërgon një sinjal që përdoret për të zgjuar ESP32. Kjo përdoret për të zbuluar një ndryshim orientimi dhe azhurnuar ekranet
  • Zgjimi i sensorit të prekjes: ESP32 është i pajisur me disa kunja që veprojnë si sensorë të prekjes, por ato nuk mund të përdoren me zgjimin e kohëmatësit, kështu që nuk e kam përdorur këtë.

Ka truke të tjera programimi diku tjetër në kod, për të mbajtur kohën e saktë duke kursyer energji (dmth. Mos lidhni serverin NTP çdo minutë), për të hequr thekset që nuk mbështeten nga biblioteka Adafruit GFX, për të shmangur përditësimin e një ekrani nëse nuk është e nevojshme, të vendosni parametrat e akselerometrit veçanërisht për zgjimin e ndërprerë, të llogaritni me saktësi kohën e gjumit në rast të zgjimit të kohëmatësit, të shmangni përdorimin e tastierës serike nëse nuk është e lidhur me IDE (për të kursyer përsëri energji), shkëputeni wifi kur nuk nevojitet, etj … dhe kodi është plot me komente që ndihmojnë në kuptimin e funksioneve.

Faleminderit që lexuat këtë Udhëzues (i pari im). Shpresoj se do t'ju pëlqejë dhe do të kënaqeni duke bërë këtë stacion moti

Konkursi i sensorëve
Konkursi i sensorëve

Vrapues në Konkursin e Sensorëve

Recommended: