Pomysł zapożyczono z projektu. ESP8266 Wyświetlacz pogodowy.
Postanowiłem to przypomnieć.
Ustawiono następujące zadania:
- Zaktualizuj kod związany z użytkowaniem nowa wersja biblioteki ArduinoJson.h.
- Przepisz kod za pomocą funkcji millis () zamiast funkcji delay (). Oczywiste jest, że użycie opóźnienia w celu ustawienia przerwy między zmianą informacji na wyświetlaczu nie jest możliwe za pomocą przycisków;
- Marka pobierz szkice przez Wi-Fi;
- Odejdź od obszernego Wemos D1 R2 na Wemos D1 mini;
- O ile to możliwe Wyświetlacz Russify;
- Użyj gotowego etui z otworami na przyciski dla urządzeń opartych na LCD1602;
- Użyj standardowych przycisków 6x6 przylutowanych do płyty. Dodaj przyciski sterowania podświetleniem, przycisk karuzeli do zmiany wyświetlanych danych oraz przycisk do wymuszania aktualizacji danych z serwera.
Zastosowano następujące elementy:
- Obudowa wykonana jest z tworzywa ABS z zestawem osłon na guziki;
- Rozpórki nylonowe 6 + 5 mm męskie M3 czarne, 4 szt .;
- Nakrętki nylonowe M3 czarne, 4 szt;
- Słupy nylonowe 6 + 5 mm męskie M2 białe, 3 szt .;
- Stojak nylonowy 6 mm biały matowy, 1 szt .;
- Stojak nylonowy 8 mm biały matowy, 1 szt .;
- Stojaki nylonowe 10 mm matka biała, 2 szt;
- LCD 1602 (I2C), żółty;
- Wemos d1 mini;
- Tarcza zasilania DC Wemos d1;
- Deska do krojenia chleba 3x7;
- Guziki 6x6, wysokość 7 mm, 3szt;
- Druty Dupont 10cm matka-matka, 4 szt;
- Przewody 24 AWG czarno-czerwone;
- Przewody silikonowe 20 AWG niebiesko-białe;
- Rezystory 5 kOhm - 2 szt., 10 kOhm - 1 szt. (Co przyszło do ręki);
- Zasilacz 9V 1A;
- Dwuskładnikowy klej epoksydowy.
Zastosowana skrzynia ma kilka zalet. Po pierwsze, oprócz wyświetlacza, standardowa płytka odsprzęgająca 3x7, z komponentami zainstalowanymi po obu stronach, idealnie dopasowuje się do wysokości. Po drugie, na dwóch końcach ma prostokątne otwory do chłodzenia. Okazało się, że zworki między tymi otworami są idealnie przecięte mini-pilnikami 3 i 4 mm. Jeśli przecinasz kilka zworek i wycinasz mały prostokątny otwór w obudowie, wówczas złącze zasilania DC-005 idealnie pasuje do otworu o złożonej geometrii. Również z tyłu tej skrzynki znajduje się duży kwadratowy otwór, który najwyraźniej miał zainstalować baterie.Dzięki temu wygodnie jest podłączyć coś do środka bez demontażu obudowy. Następnie można go po prostu zamknąć za pomocą szkła lub plastiku.
Postęp budowy:
Po pierwsze, prototyp został wykonany na desce.
Następnie sprawa jest finalizowana za pomocą pliku.
Następnie główne elementy są lutowane i przeprowadzane jest dopasowanie. Nogi zostały specjalnie wygięte, aby odpinane stawy pasowały do wysokości. Kilka nylonowych stojaków musiało być złożonych, aby wszystkie guziki były na tej samej wysokości.
W rezultacie przednia strona płytki z przyciskami, rezystorami i drutami wygląda następująco:
W rezultacie wnętrze urządzenia wygląda następująco:
Po złożeniu urządzenie wygląda następująco:
Pokonywanie trudności:
- Przez długi czas nie mogłem zrozumieć, dlaczego przyciski nie działały, chociaż multimetr wyraźnie pokazywał 0 po naciśnięciu przycisków i 4,6 - 5,0 V po naciśnięciu (w zależności od zasilacza). Okazało się, że w urządzeniach Wemos / Lolin konieczne jest wskazanie numerów GPIO jako numerów pinów na szkicu. Na przykład D5 to GPIO14. To jest 14 pin.
const int buttonPin = 14;
- Aby pokazać pogodę, warunek jest konieczny:
currentMillis - previousMillis == weatherTime
Ścisła korespondencja, ponieważ należy to zrobić raz.
Aby wysłać żądanie do serwera, warunek jest konieczny:currentMillis - previousMillis> = getDataTime
Luźna zgodność, ponieważ jest wykonywana do momentu ustawienia flagi „otrzymane dane”.
W rzeczywistości nie jest to oczywiste i aby to zrozumieć, zajęło to dość dużo czasu. - Musiałem też dręczyć się odpowiedzią serwera:
Ciąg znaków = root [„pogoda”] [0] [„main”]; Opis ciągu = root [„pogoda”] [0] [„opis”];
Zero było zupełnie nieoczywiste. Okazuje się, że w Moskwie są dwie stacje pogodowe, a druga z nich nie zawsze działa (aby otrzymać z niej dane, musisz określić [1], jeśli jest aktywna).
Znajduje się repozytorium z kodem i bibliotekami tutaj.