Idėja pasiskolinta iš projekto. ESP8266 Orų ekranas.
Aš nusprendžiau tai atminti.
Buvo iškelti šie uždaviniai:
- Atnaujinkite su kodu susijusį kodą nauja versija bibliotekos ArduinoJson.h.
- Perrašykite kodą, naudodami funkciją millis (), o ne atidėliojimo () funkciją. Aišku, kad naudojant vėlavimą nustatyti pertrauką tarp informacijos keitimo ekrane, neįmanoma valdyti mygtukų;
- Padaryti atsisiųskite eskizus per „Wifi“;
- Atsitraukite nuo didelių gabaritų „Wemos D1 R2“ ant „Wemos D1 mini“;
- Kai tik įmanoma Rusifikuoti rodymas;
- Prietaisams, kurių pagrindą sudaro LCD1602, naudokite paruoštą dėklą su mygtukų skylėmis;
- Naudokite standartinius 6x6 mygtukus, lituotus prie duonos lentos. Pridėkite foninio apšvietimo valdymo mygtukus, karuselės mygtuką rodomiems duomenims pakeisti ir mygtuką, kad priverstumėte atnaujinti duomenis iš serverio.
Buvo naudojami šie komponentai:
- Korpusas pagamintas iš ABS plastiko su mygtukų dangtelių rinkiniu;
- Nailono statramsčiai 6 + 5 mm vyriški M3 juodi, 4 vnt;
- M3 nailono riešutai juodi, 4 vnt;
- Nailoniniai stulpeliai 6 + 5 mm vyriški M2 balti, 3 vnt;
- Nailono stovas 6 mm motininis baltas, 1 vnt;
- Nailono stovas 8 mm motininis baltas, 1 vnt;
- Nailono lentynos 10mm motinos balta, 2 vnt;
- LCD 1602 (I2C), geltonas;
- „Wemos d1 mini“;
- „Wemos d1 DC-Power“ skydas;
- Lentos duonos lenta 3x7;
- Mygtukai 6x6, aukštis 7 mm, 3vnt;
- Dupont laidai 10cm motina-mama, 4 vnt;
- 24 AWG laidai juodi ir raudoni;
- Silikoniniai laidai 20 AWG mėlynos ir baltos spalvos;
- Rezistoriai 5 kOhm - 2 vnt, 10 kOhm - 1 vnt (atėjo į rankas);
- Maitinimo adapteris 9V 1A;
- Dviejų komponentų epoksidiniai klijai.
Panaudotas atvejis turi keletą privalumų. Pirma, be ekrano, standartinė 3x7 standartinė atsiejimo lenta, kurios komponentai yra įmontuoti iš abiejų pusių, puikiai tinka aukščiui. Antra, dviejuose galuose yra stačiakampės angos aušinimui. Paaiškėjo, kad džemperiai tarp šių skylių yra puikiai supjaustyti 3 ir 4 mm mini failais. Jei supjaustysite porą megztinių ir supjaustėte mažą stačiakampę skylę korpuse, tada maitinimo jungtis DC-005 puikiai eina į sudėtingos geometrijos skylę. Taip pat šio korpuso užpakalinėje dalyje yra didelė kvadratinė anga, kurioje, matyt, turėjo būti sumontuotos baterijos.Per jį patogu kažką prijungti viduje neišardžius korpuso. Vėliau jis gali būti tiesiog uždarytas stiklu ar plastiku.
Kurkite pažangą:
Pirmiausia ant duonos lentos buvo pagamintas prototipas.
Tada byla baigiama rinkti į bylą.
Po to pagrindiniai komponentai yra lituojami ir atliekamas montavimas. Kojos buvo specialiai sulenktos taip, kad nuimami sąnariai atitiktų aukštį. Pora nailoninių stelažų turėjo būti sudėti taip, kad visos sagos būtų tame pačiame aukštyje.
Dėl to priekinė plokštės pusė su mygtukais, rezistoriais ir laidais yra tokia:
Dėl to įrenginio vidus atrodo taip:
Surinktas prietaisas atrodo taip:
Įveikti sunkumus:
- Ilgą laiką negalėjau suprasti, kodėl mygtukai neveikė, nors multimetras aiškiai rodė 0, kai mygtukai buvo paspaudžiami, ir 4,6 - 5,0 V, kai buvo nuspausti (priklausomai nuo maitinimo šaltinio). Paaiškėjo, kad „Wemos“ / „Lolin“ įrenginiuose eskize reikia nurodyti GPIO numerius kaip PIN numerius. Pvz., D5 yra GPIO14. Taigi tai yra 14-asis kaištis.
const int buttonPin = 14;
- Norint parodyti orą, būtina sąlyga:
currentMillis - previousMillis == WeatherTime
Griežtas susirašinėjimas, nes tai turi būti padaryta vieną kartą.
Norint pateikti užklausą serveriui, būtina sąlyga:currentMillis - previousMillis> = getDataTime
Neatitikimas, nes vykdomas tol, kol nenustatoma vėliava „Duomenys gauti“.
Tiesą sakant, tai nėra akivaizdu, ir norint tai suprasti, reikėjo gana ilgai. - Aš taip pat turėjau kankintis dėl serverio atsakymo:
Styginis oras = šaknis ["oras"] [0] ["pagrindinis"]; Stygos aprašymas = šaknis ["oras"] [0] ["aprašymas"];
Nulis buvo visiškai nepastebimas. Pasirodo, Maskvoje yra dvi oro stotys, o antroji iš jų ne visada veikia (norėdami gauti duomenis iš jos, turite nurodyti [1], jei ji aktyvi).
Yra saugykla su kodu ir bibliotekomis čia.