Sisukord:
- Tarvikud
- 1. samm: miks teine ilmajaam?
- 2. samm: mida vajate?
- Samm: see projekt pani mind palju mõtlema ja õppima…
- Samm 4: E-paberi kuvarite kasutamine
- Samm: valmistamine
- 6. samm: kood ja failid
Video: Veel üks nutikas ilmajaam, kuid : 6 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
OK, ma tean, et selliseid ilmajaamu on igal pool nii palju, kuid võtke paar minutit aega, et näha erinevust …
- Madal võimsus
- 2 e-paberi näidikut…
- aga 10 erinevat ekraani!
- ESP32 baasil
- kiirendusmõõtur ja temperatuuri / niiskuse andurid
- Wifi värskendus
- 3D trükitud ümbris
ja palju muid kasulikke nippe …
Põhiidee on kuvada mõlemal ekraanil erinevat teavet sõltuvalt kasti suunast. Korpus on rööptahukujulise kasti, sillutuskivi kujuga, omamoodi vööga, mis toimib jalana.
Tarvikud
Nagu näete, koosneb süsteem 2 e-paberi ekraanist ja 3D-prinditud kastist. Kuid selles on palju asju:
- ESP32
- Üks MPU6050 kiirendusmõõtur
- DHT22 andur
- LiPo aku
- PCB kogu asja ühendamiseks
- Kodused duPonti niidid
ja WiFi-ühendus. Tegelikult on deklareeritud 3 võrku, süsteem katsetab neid ükshaaval, kuni õnnestub ühendada.
1. samm: miks teine ilmajaam?
Idee on kuvada mõlemal ekraanil mitmesugust teavet sõltuvalt kasti suunast. Korpus on rööptahukujulise kasti, sillutuskivi kujuga, omamoodi vööga, mis on toeks selle püstitamiseks.
Kiirendusmõõtur tuvastab liikumise ja orientatsiooni ning käivitab näidikud.
Energia säästmiseks valisin e-paberi ekraanid (vt viiteid allpool), mis hoiavad ekraani ka siis, kui need pole enam toiteallikad. Sarnaselt ESP32 jaoks valisin Lolin32 mooduli (tuntud oma säästlikkuse poolest) ja pidin õppima, kuidas hallata sügavat und ja kiirendusmõõturi tekitatud häireid.
Ekraanid on ühendatud SPI kaudu, otsisin üsna palju, enne kui leidsin ESP32 -ga ühendamiseks õiged tihvtid, teades, et mul on vaja ka kiirendusmõõturi I2C -d, tihvti DHT22 lugemiseks ja 2 teist aku pinge mõõtmiseks. ESP32 on peaaegu täielikult laetud! Teades, et mõned tihvtid on kirjutuskaitstud (kasutasin neid DHT-anduri jaoks), teisi ei saa koos Wifi-ga kasutada, oli õige konfiguratsiooni leidmine pisut keeruline.
Kasti saab suunata neljas suunas, pluss tasane. Kokkuvõttes teeb 4*2+2 = 10 võimalikku teavet ainult 2 ekraaniga kuvamiseks. Nii saate kuvada palju asju:
- Kuupäev ja päeva pühak
- Praegune aeg
- Tänane ilmateade
- Ilmaprognoosid järgnevateks tundideks
- Ilmaprognoosid lähipäevadeks
- Aku laetuse tase
- Ja kuna mul oli veel ruumi, siis juhuslik tsitaat spetsialiseeritud veebisaidilt.
2. samm: mida vajate?
- ESP32: Lolin32 moodul (väga väike energiatarve, varustatud akupistikuga, saab akut laadida USB pluss kaudu)
- 2 ekraanipaberit: 4,2 tolli ja 2,9 tolli. Valisin mudelid Good Display poest.
- DHT22 andur
- Kiirendusmõõtur MCU6050 - güomeetri I2C andur
- LiPo aku
- Aku pinge mõõtmiseks: 2 10 k takistit, 1 100 k takisti, 1 100 nF kondensaator, 1 MOSFET transistor
- Jootekolb ja jootekolb, trükkplaat
- Juurdepääs korpuse 3D -printerile
Lisatud pildil on näha kõigi PCB komponentide asukoht: pidin säästma ruumi, et mahutada korpusesse, mis ei tohiks olla liiga suur.
Ilmaandmete saamiseks peate registreeruma ka ilma API -liideses ja panema oma võtmed faili "Variables.h" õigesse kohta (vt allpool).
Ilmaveebisaidid:
- apixu
- accuweather
Samm: see projekt pani mind palju mõtlema ja õppima…
See süsteem pidi olema vähese energiatarbega, nii et te ei pea akut igal õhtul laadima … Energia säästmiseks valisin e-paberi ekraanid, mis hoiavad ekraani isegi siis, kui neil pole enam toite. Sarnaselt ESP32 jaoks valisin Lolin32 mooduli (tuntud oma kokkuhoiu poolest) ja pidin õppima sügava une haldamist ning kiirendusmõõturi tekitatud häirete äratamist.
Kasti saab suunata 4 suunas, tasasemaks. Kokkuvõttes teeb 4*2+2 = 10 võimalikku kuvatavat teavet. Seega võimaldab see teha paljusid asju: kuupäeva ja päeva pühakut, kellaaega, tänast ilmateadet, ilmateateid järgmisteks tundideks või päevadeks, aku laetuse taset ja juhuslikku hinnapakkumist spetsialiseeritud veebisaidilt.
Internetist on seda palju otsida ja nagu teate: WiFi on energiasäästu vaenlane …
Seega peame ühenduse haldama, et kuvada ajakohast teavet, kuid kulutamata ühendamisele liiga palju aega. Teine üsna keeruline probleem: üsna täpse aja hoidmine. Ma ei vaja RTC -d, kuna leian aega Internetist, kuid ESP32 sisemine kell liigub üsna palju, eriti une ajal. Pidin leidma viisi, kuidas interneti kaudu kella lähtestamist oodates piisavalt täpne olla. Ma sünkroniseerin selle Internetis iga tund uuesti.
Seega on autonoomia (Interneti-ühenduste sagedus) ja kuvatava teabe täpsuse vahel kompromiss.
Teine probleem, mida tuleb lahendada, on mälu. Kui ESP32 on sügavas unes, kaob mälu, välja arvatud nn RTC RAM. See mälu on 4 MB lai, millest ainult 2 saab programmi jaoks kasutada. Sellesse mällu pean salvestama mitmesugused programmimuutujad, mida tuleb pärast uinumisfaasi ühest täitmisest teise hoida: ilmateated, kellaaeg ja kuupäev, ikoonifailide nimed, jutumärgid jne. Ma pidin õppima sellega toime tulema.
Ikoonidest rääkides salvestatakse need SPIFFS -i, ESP32 -failisüsteemi. Pärast tasuta Wundergroundi ilma API sulgemist pidin otsima teisi tasuta ilmateabe pakkujaid. Valisin kaks: ühe jooksva päeva ilma jaoks koos 12-tunniste prognoosidega ja teise mitmepäevaste prognooside jaoks. Ikoonid pole samad, seega tekitas see mulle kaks uut probleemi:
- Valige ikoonikomplekt
- Sobitage need ikoonid kahe saidi prognoosikoodidega
See kirjavahetus on salvestatud ka RTC RAM -i, nii et seda ei pea iga kord uuesti laadima.
Viimane probleem ikoonidega. Neid kõiki pole võimalik SPIFFS -is salvestada. Ruum on kõigi minu failide jaoks liiga väike. Oli vaja teha piltide tihendamine. Kirjutasin Pythonis skripti, mis loeb minu ikoonifailid ja tihendab need RLE -ks ning salvestab seejärel tihendatud failid SPIFFS -i. Seal see pidas.
Kuid e-paberi kuvakogu võtab ainult BMP-tüüpi faile, mitte kokkusurutud pilte. Seega pidin kirjutama lisafunktsiooni, et saaksin oma ikoone nendest tihendatud failidest kuvada.
Internetist loetud andmed on sageli json -vormingus: ilmaandmed, päeva pühak. Ma kasutan selleks (suurepärast) arduinoJsoni raamatukogu. Kuid tsitaadid pole sellised. Võtan need spetsiaalsest saidist, nii et pean neid lugema, vaadates otse veebilehe sisu. Selle jaoks pidin kirjutama konkreetse koodi. Iga päev südaöö paiku läheb programm sellele saidile ja loeb umbes kümme juhuslikku hinnapakkumist ning salvestab need RTC RAM -i. Üks neist kuvatakse juhuslikult, kui korpus on suunatud suurele ekraanile ülespoole.
Ma annan teile rõhumärkide kuvamise probleemi (vabandust, aga jutumärgid on prantsuse keeles) …
Kui väike ekraan on üleval, kuvatakse aku pinge koos joonisega, et järelejäänud taset paremini näha. Aku pinge lugemiseks oli vaja teha elektrooniline koost. Kuna mõõtmine ei tohiks akut tühjendada, kasutasin Internetist leitud diagrammi, mis kasutab lülitina MOSFET -transistorit, et tarbida voolu ainult mõõtmise ajal.
Et seda vooluringi teha ja kõik kasti mahutada, mida ma tahtsin, et see oleks võimalikult väike, pidin ma tegema süsteemi kõigi komponentide ühendamiseks trükkplaadi. See on minu esimene trükkplaat. Mul vedas, sest kõik toimis sellel poolel esimest korda hästi …
Vaata implantatsioonikaarti: "keelatud tsoon" on ala, mis on reserveeritud USB -kaabli ühendamiseks. Moodul Lolin32 võimaldab teil laadida akut USB kaudu: USB -kaabli ühendamisel on aku laetud ja moodul töötab samal ajal.
Viimane punkt: fondid. Erineva suurusega, julgelt või mitte, tuli need luua ja salvestada. Adafruit GFX raamatukogu hoolitseb selle eest väga hästi, kui olete fondifailid õigesse kataloogi installinud. Failide loomiseks kasutasin Font Converteri saiti, väga mugav!
Valige kindlasti:
- Eelvaate kuva: TFT 2,4"
- Raamatukogu versioon: Adafruit GFX font
Kokkuvõtteks: suur projekt, mis võimaldas mul palju õppida
Samm 4: E-paberi kuvarite kasutamine
Nende ekraanide peamine puudus on videol selgelt nähtav: ekraani värskendamine võtab aega üks või kaks sekundit ja seda tehakse vilgutades (kahe ekraani tava- ja ümberpööratud versioonide alternatiivne kuvamine). See on ilmateabe jaoks vastuvõetav, sest ma ei uuenda seda väga sageli (iga tund, välja arvatud kasti orientatsiooni muutmine). Aga mitte selleks korraks. Sellepärast (ja tarbimise piiramiseks) kasutan endiselt HH: MM kuvarit (mitte sekundeid).
Seega pidin otsima ekraani värskendamiseks teist võimalust. Need ekraanid (mõned neist) toetavad osalist värskendamist (rakendatakse kas ekraani alale või kogu ekraanile …), kuid see ei sobinud mulle, sest minu suur ekraan (mis kuvab kellaaega) hoiab pikslite kummitusi mis asendatakse. Näiteks kell 10:12 kuni 10:13 möödudes on „2” „3” sees veidi nähtav ja pärast „4”, „5” jne muutub see veelgi paremini nähtavaks. juhtida tähelepanu sellele, et minu ekraani puhul on see nii: arutasin seda e-paberi kuvaraamatu GxEPD2 autoriga, kes ütles mulle, et ta ei täheldanud seda nähtust oma ekraanidega. Proovisime parameetreid muuta ilma kummitusi jahtimata.
Seega pidime leidma teise lahenduse: tegin ettepaneku teha osaline kahekordne värskendus, mis lahendas probleemi (vähemalt minu jaoks on see rahuldav). Tunnid mööduvad ilma ekraani vilkumata ja kummitusi pole. Üleminek ei toimu aga kohe: kellaaja muutmiseks kulub veidi rohkem kui üks sekund.
Samm: valmistamine
Selleks, et orientatsiooni muutudes sees midagi ei liiguks, liimitakse erinevad komponendid (kuvarid, elektroonilised moodulid, trükkplaadid, akud) liimipüstoliga. Juhtmete trükkimiseks trükkplaadi alla paigaldasin selle vahetükkidega tehtud jalgadele, sama kehtib ka aku kohta.
Varsti paigaldan välise USB -mikrofoni pistiku, nii et ma ei pea aku laadimiseks korpust avama.
Võib -olla olen ka huvitatud OTA värskendamisest, et see kõik täiustada …
6. samm: kood ja failid
Pakutakse kolme arhiivifaili:
- Weather station.zip: Arduino kood, üleslaadimiseks Arduino IDE abil
- Boite ecran.zip: korpuse CAD- ja 3D -printerifailid
- data.zip: ESP32 SPIFFS -is üleslaaditavad failid.
Kui te ei tea, kuidas faile ESP32 SPIFFS -i üles laadida, lugege lihtsalt seda õpetust, kus on väga kasulik pistikprogramm ja kuidas seda Arduino IDE -s kasutada.
Sügava une programmeerimine erineb Arduino tavalisest programmeerimisest. ESP32 puhul tähendab see seda, et ESP32 ärkab üles ja teostab seadistuse ning läheb seejärel magama. Niisiis, tsüklifunktsioon on tühi ja seda ei täideta kunagi.
Mõnda initsialiseerimisetappi tuleb esmakordsel käivitamisel käivitada ainult üks kord (nt aja, ilmateate, hinnapakkumiste jms hankimine), nii et ESP32 peab teadma, kas praegune äratus on esimene või mitte: selleks Lahendus on salvestada muutuja RTC RAM-i (mis jääb aktiivseks isegi sügava une faasides), mida suurendatakse igal ärkamisel. Kui see on võrdne 1 -ga, on see esimene käivitus ja ESP32 käivitab lähtestamisetapi, vastasel juhul jäetakse see etapp vahele.
ESP32 äratamiseks on mitu võimalust:
- Taimeri äratus: kood arvutab sügava une kestuse enne magamaminekut. Seda kasutatakse päeva hinnapakkumiste ja pühaku aja (iga 1, 2, 3 või 5 minuti) või ilmaandmete (iga 3 või 4 tunni järel) värskendamiseks (iga 24 tunni järel)
- Äratuse katkestamine: kiirendusmõõtur saadab signaali, mida kasutatakse ESP32 äratamiseks. Seda kasutatakse orientatsiooni muutuse tuvastamiseks ja kuvarite värskendamiseks
- Puuteanduri äratus: ESP32 on varustatud mitme tihvtiga, mis toimivad puuteanduritena, kuid neid ei saa taimeriga äratada, nii et ma ei kasutanud seda.
Mujal koodis on ka teisi programmeerimisnippe, et hoida aega täpsena, säästes samas energiat (st mitte ühendada NTP -serverit iga minut), eemaldada aktsendid, mida Adafruit GFX teek ei toeta, et vältida ekraani värskendamist, kui kiirendusmõõturi parameetrite määramine, eriti katkendava äratuse jaoks, pole vajalik, taimeriga äratamise korral täpselt magamisaja arvutamine, vältige jadakonsooli kasutamist, kui see pole IDE-ga ühendatud (energia säästmiseks), katkestage ühendus wifi, kui seda pole vaja jne … ja kood on täis kommentaare, mis aitavad funktsioonidest aru saada.
Täname, et lugesite seda juhendit (minu esimene). Loodan, et teile meeldib see ja teile meeldib selle ilmajaama tegemine
Andurite võistluse teine koht
Soovitan:
YADPF (VEEL veel üks digitaalne pildiraam): 7 sammu (koos piltidega)
YADPF (VEEL Teine digitaalne pildiraam): Ma tean, et see pole uus asi, ma tean, ma olen mõnda neist projektidest siin näinud, kuid ma olen alati tahtnud luua oma digitaalse pildiraami. Kõik pildiraamid, mida ma näinud olen, on toredad, aga ma otsisin midagi muud, ma otsin tõeliselt toredat fotot
Mitte nii tark, kuid väga tervislik, kuid siiski veidi jube peegel: 5 sammu (piltidega)
Mitte nii tark, kuid väga tervislik, kuid siiski veidi õudne peegel: kas vajate peeglit, kuid pole valmis oma koju veel ühte nutikat eset lisama? Siis on see mitte nii tark-aga-väga-tervislik-veel-veidi õudne peegel just sulle
Veel üks nutikas täring (YASD): 8 sammu
Veel üks nutikas täring (YASD): mis on YASD? Veel üks nutikate funktsioonidega elektrooniline täring? Jah ja ei. Jah - YASD kasutab LED -e juhuslikult genereeritud numbrite kuvamiseks täringute stiilis. Ei - YASD ei ole iseenesest valmistoode. See peaks pigem näitama, milline trükkplaat
Veel üks Arduino ilmajaam (ESP-01 & BMP280 & DHT11 & OneWire): 4 sammu
Veel üks Arduino ilmajaam (ESP-01 & BMP280 & DHT11 & OneWire): siit leiate ühe korduse OneWire'i kasutamise kohta ESP-01 väga väikeste tihvtidega. Selles juhendis loodud seade ühendub teie Wifi võrguga valik (teil peavad olema volikirjad …) Kogub sensoorseid andmeid BMP280 ja DHT11
Veel üks ilmajaam (Y.A.W.S.): 18 sammu (koos piltidega)
Veel üks ilmajaam (Y.A.W.S.): see projekt on minu ettekujutus üha populaarsemast ilmajaamast. Minu oma põhineb ESP8266, a.96 ” OLED -ekraan ja BME280 keskkonnaandurite massiiv. Ilmajaamad tunduvad olevat väga populaarne projekt. Minu oma eristub teisest