Idén är lånad från projektet. ESP8266 Vädervisning.
Jag bestämde mig för att tänka på det.
Följande uppgifter ställdes in:
- Uppdatera användningsrelaterad kod ny version bibliotek ArduinoJson.h.
- Omskriva koden med funktionen millis () istället för funktionen fördröjning (). Det är uppenbart att med fördröjning för att ställa in en paus mellan att ändra information på displayen är det omöjligt att implementera knappkontroller;
- make ladda ner skisser via Wifi;
- Kom bort från den skrymmande Wemos D1 R2 på Wemos D1 mini;
- När så är möjligt Russify-display;
- Använd ett färdigt fodral med knapphål för enheter baserade på LCD1602;
- Använd 6x6-standardknappar som är lödda till brödskivan. Lägg till kontrollknappar för bakgrundsbelysning, en karusellknapp för att ändra visad data och en knapp för att tvinga datauppdateringar från servern.
Följande komponenter användes:
- Väskan är tillverkad av ABS-plast med en uppsättning av lock för knapparna;
- Nylonstötter 6 + 5 mm hane M3 svart, 4 st;
- M3 nylon nötter svart, 4 st;
- Nylonstolpar 6 + 5 mm hane M2 vit, 3 st;
- Nylon stativ 6 mm mamma vit, 1 st;
- Nylonstativ 8 mm mamma vit, 1 st;
- Nylonhyllor 10mm mamma vit, 2 st;
- LCD 1602 (I2C), gul;
- Wemos d1 mini;
- Wemos d1 DC-Power-skärm;
- Brädbräda 3x7;
- Knappar 6x6, höjd 7 mm, 3st;
- Dupontkablar 10 cm mamma, 4 st;
- 24 AWG-kablar svart och rött;
- Silikontrådar 20 AWG blått och vitt;
- Motstånd 5 kOhm - 2 st, 10 kOhm - 1 st (som kom till hands);
- Strömadapter 9V 1A;
- Tvåkomponent epoxylim.
Det använda fallet har flera fördelar. För det första, utöver displayen, passar standard 3x7 standardavkopplingskortet, med komponenter installerade på det på båda sidor, perfekt i höjden. För det andra har den i två ändar rektangulära öppningar för kylning. Det visade sig att hopparna mellan dessa hål är perfekt klippta av minifiler 3 och 4 mm. Om du klipper ett par hoppar och skär ett litet rektangulärt hål i fodralet, går DC-005 strömkontakten perfekt in i hålet i komplex geometri. Dessutom har baksidan av det här fallet ett stort fyrkantigt hål, som tydligen var tänkt att installera batterier.Genom det är det bekvämt att ansluta något inuti utan att demontera fodralet. Därefter kan den helt enkelt stängas med glas eller plast.
Bygg framsteg:
Först gjordes en prototyp på en brödskiva.
Sedan avslutas ärendet med en fil.
Därefter lödas huvudkomponenterna och beslaget utförs. Benen var speciellt böjda så att de avtagbara lederna passade i höjd. Ett par nylonhyllor måste placeras så att alla knappar var i samma höjd.
Som ett resultat är brädans framsida med knappar, motstånd och ledningar enligt följande:
Som ett resultat ser enhetens insidor så här:
Vid montering ser enheten så här:
Att övervinna svårigheter:
- Under en lång tid kunde jag inte förstå varför knapparna inte fungerade, även om multimetern tydligt visade 0 när knapparna trycktes och 4,6 - 5,0 V när de trycktes (beroende på strömförsörjningen). Det visade sig att i Wemos / Lolin-enheter är det nödvändigt att ange GPIO-nummer som stiftnummer i skissen. Till exempel är D5 GPIO14. Så detta är den 14: e stiftet.
const int-knappPin = 14;
- För att visa vädret är villkoret nödvändigt:
currentMillis - föregåendeMillis == weatherTime
Strikt korrespondens, för det måste göras en gång.
För att göra en begäran till servern är villkoret nödvändigt:currentMillis - previousMillis> = getDataTime
Lös överensstämmelse, eftersom den körs tills flaggan “mottagna data” är inställd.
I själva verket är detta inte uppenbart, och för att förstå detta tog det ganska lång tid. - Jag var också tvungen att plåga mig själv med serverns svar:
String weather = root ["weather"] [0] ["main"]; Strängbeskrivning = root ["weather"] [0] ["description"];
Noll var helt uppenbar. Det visar sig att det finns två väderstationer i Moskva, och den andra av dem fungerar inte alltid (för att få information från den måste du ange [1] om den är aktiv).
Förvaret med kod och bibliotek finns här.