Ideea este împrumutată din proiect. ESP8266 Meteo Display.
Am decis să mi-l aduc în minte.
Au fost setate următoarele sarcini:
- Actualizați codul aferent utilizării versiune nouă bibliotecă ArduinoJson.h.
- Rescrieți codul folosind funcția millis () în loc de funcția delay (). Este clar că folosind întârziere pentru a seta o pauză între schimbarea informațiilor pe afișaj, este imposibil să implementați comenzile butoanelor;
- Marca descărcați schițe prin Wifi;
- Scapă-te de volumul Wemos D1 R2 de pe Wemos D1 mini;
- Ori de câte ori este posibil Display Russify;
- Utilizați o carcasă gata pregătită cu găuri pentru butoane pentru dispozitivele bazate pe LCD1602;
- Folosiți butoanele standard 6x6 lipite pe panou. Adăugați butoane de control pentru iluminare de fundal, buton pentru carusel pentru modificarea datelor afișate și buton pentru forțarea actualizărilor de date de pe server.
Au fost utilizate următoarele componente:
- Carcasa este din plastic ABS cu un set de huse pentru butoane;
- Buzunare din nylon 6 + 5 mm masculi M3 negru, 4 buc;
- Piulițe de nailon M3 negru, 4 buc;
- Posturi de nylon 6 + 5 mm mascul M2 alb, 3 buc;
- Stand nylon 6 mm alb mat, 1 buc;
- Stand din nailon 8 mm alb mat, 1 buc;
- Rafturi din nylon 10mm alb mat, 2 buc;
- LCD 1602 (I2C), galben;
- Wemos d1 mini;
- Wemos d1 Scut DC-Power;
- Panou de bord 3x7;
- Butoane 6x6, inaltime 7 mm, 3buc;
- Cabluri Dupont 10cm mamă-mamă, 4 buc;
- 24 fire AWG negru și roșu;
- Fire de silicon 20 AWG albastru și alb;
- Rezistoare 5 kOhm - 2 buc, 10 kOhm - 1 buc (care a venit la mână);
- Adaptor de alimentare 9V 1A;
- Adeziv epoxidic cu două componente.
Carcasa folosită are mai multe avantaje. În primul rând, pe lângă afișaj, placa de decuplare standard 3x7, cu componente instalate pe acesta pe ambele părți, se potrivește perfect în înălțime. În al doilea rând, la două capete are deschideri dreptunghiulare pentru răcire. S-a dovedit că salturile dintre aceste găuri sunt tăiate perfect de mini-fișiere de 3 și 4 mm. Dacă tăiați câteva jumperi și tăiați o mică gaură dreptunghiulară în carcasă, atunci conectorul de alimentare DC-005 intră perfect în gaura geometriei complexe. De asemenea, partea din spate a acestui caz are o gaură pătrată mare, care, se pare, trebuia să instaleze baterii.Prin intermediul acestuia, este convenabil să conectați ceva în interior fără a demonta carcasa. Ulterior, poate fi închisă pur și simplu cu sticlă sau plastic.
Construiți progresul:
În primul rând, s-a făcut un prototip pe o panou de pâine.
Apoi cazul este finalizat cu un fișier.
După aceea, componentele principale sunt lipite și montarea este realizată. Picioarele erau special îndoite, astfel încât îmbinările detașabile să se încadreze în înălțime. Câteva rafturi din nylon trebuiau depuse pentru ca toate butoanele să fie la aceeași înălțime.
Ca urmare, partea frontală a plăcii cu butoane, rezistențe și fire este următoarea:
Drept urmare, elementele interioare ale dispozitivului arată astfel:
Când este asamblat, dispozitivul arată astfel:
Depășirea dificultăților:
- Multă vreme nu am putut înțelege de ce nu au funcționat butoanele, deși multimetrul a arătat clar 0 la apăsarea butoanelor și 4,6 - 5,0 V la apăsare (în funcție de sursa de alimentare). S-a dovedit că în dispozitivele Wemos / Lolin este necesar să se indice numerele GPIO ca numere de pin în schiță. De exemplu, D5 este GPIO14. Deci acesta este cel de-al 14-lea pin.
buton const intPin = 14;
- Pentru a arăta vremea, starea este necesară:
currentMillis - previousMillis == weatherTime
Corespondență strictă, deoarece trebuie făcută o singură dată.
Pentru a face o solicitare către server, condiția este necesară:currentMillis - previousMillis> = getDataTime
Conformitate slabă, deoarece se execută până când este setat steagul „date primite”.
De fapt, acest lucru nu este evident și, pentru a înțelege acest lucru, a durat destul de mult. - De asemenea, a trebuit să mă chinui cu răspunsul serverului:
String weather = root ["weather"] [0] ["main"]; String description = root ["weather"] [0] ["description"];
Zero era complet neobișnuit. Se dovedește că există două stații meteo în Moscova, iar a doua dintre ele nu funcționează întotdeauna (pentru a primi date de la aceasta, trebuie să specificați [1] dacă este activă).
Depozitul cu coduri și biblioteci este situat aici.