Idéen er lånt fra projektet. ESP8266 Vejrvisning.
Jeg besluttede at bringe det til tankerne.
Følgende opgaver blev sat:
- Opdater brugsrelateret kode ny version bibliotek ArduinoJson.h.
- Omskriv koden vha. Funktionen millis () i stedet for funktionen forsinkelse (). Det er tydeligt, at det ved hjælp af forsinkelse for at indstille en pause mellem at skifte information på displayet er umuligt at implementere knapper.
- make download skitser via Wifi;
- Kom væk fra den omfangsrige Wemos D1 R2 på Wemos D1 mini;
- Når det er muligt Russify-skærm;
- Brug en færdiglavet taske med knaphul til enheder baseret på LCD1602;
- Brug standard 6x6 knapper, der er loddet til brødbrættet. Tilføj baggrundsbelysningsknapper, en karruselknap til ændring af de viste data og en knap til at tvinge dataopdateringer fra serveren.
Følgende komponenter blev anvendt:
- Kassen er lavet af ABS-plastik med et sæt dæksler til knapperne;
- Nylonstivere 6 + 5 mm han M3 sort, 4 stk;
- M3 nylon nødder sort, 4 stk;
- Nylonstolper 6 + 5 mm han M2 hvid, 3 stk;
- Nylon stativ 6 mm mor hvid, 1 stk;
- Nylon stativ 8 mm mor hvid, 1 stk;
- Nylon stativer 10mm mor hvid, 2 stk;
- LCD 1602 (I2C), gul;
- Wemos d1 mini;
- Wemos d1 DC-Power skjold;
- Brætbræt 3x7;
- Knapper 6x6, højde 7 mm, 3stk;
- Dupont-ledninger 10 cm mor-mor, 4 stk;
- 24 AWG-ledninger sort og rød;
- Silikonetråde 20 AWG blå og hvid;
- Modstande 5 kOhm - 2 stk, 10 kOhm - 1 pc (som kom til hånden);
- Strømadapter 9V 1A;
- To-komponent epoxylim.
Den anvendte sag har flere fordele. For det første placeres 3x7 standardafkoblingskort med komponenter på begge sider perfekt placeret i højden udover skærmen. For det andet har den i to ender rektangulære åbninger til afkøling. Det viste sig, at springerne mellem disse huller er perfekt skåret af mini-filer 3 og 4 mm. Hvis du skærer et par springere og skærer et lille rektangulært hul i etuiet, går DC-005 strømstikket perfekt ind i hullet dannet med kompleks geometri. Bagsiden af denne sag har også et stort firkantet hul, som tilsyneladende skulle installere batterier.Gennem det er det praktisk at forbinde noget indeni uden at adskille sagen. Efterfølgende kan det blot lukkes med glas eller plast.
Opbyg fremskridt:
Først blev der lavet en prototype på en brødbræt.
Derefter afsluttes sagen med en fil.
Derefter loddes hovedkomponenterne, og beslaget udføres. Benene var specielt bøjede, så de aftagelige samlinger passede i højden. Et par nylonstativer måtte indsættes, så alle knapper var i samme højde.
Som et resultat er bremsens forside med knapper, modstande og ledninger som følger:
Som et resultat ser enhedens inderside sådan ud:
Når den er samlet, ser enheden sådan ud:
Overvinde vanskeligheder:
- I lang tid kunne jeg ikke forstå, hvorfor knapperne ikke fungerede, selvom multimeteret tydeligt viste 0, når der blev trykket på knapperne og 4,6 - 5,0 V, når de blev trykket (afhængigt af strømforsyningen). Det viste sig, at det i Wemos / Lolin-enheder er nødvendigt at angive GPIO-numre som pin-numre på skitsen. For eksempel er D5 GPIO14. Så dette er den 14. pin.
const int-knapPin = 14;
- For at vise vejret er betingelsen nødvendig:
currentMillis - forrigeMillis == weatherTime
Streng korrespondance, fordi det skal ske en gang.
For at stille en anmodning til serveren er betingelsen nødvendig:currentMillis - forrigeMillis> = getDataTime
Løs overholdelse, fordi det udføres, indtil flaget "modtaget data" er indstillet.
Dette er faktisk ikke indlysende, og for at forstå dette tog det ret lang tid. - Jeg måtte også plage mig med serverens svar:
String weather = root ["weather"] [0] ["main"]; Strengbeskrivelse = rod ["vejr"] [0] ["beskrivelse"];
Nul var helt uvidende. Det viser sig, at der er to vejrstationer i Moskva, og den anden af dem fungerer ikke altid (for at modtage data fra det, skal du specificere [1], hvis det er aktivt).
Opbevaringsstedet med kode og biblioteker er placeret her.