Идеята е взаимствана от проекта. ESP8266 Дисплей за времето.
Реших да го науча.
Бяха поставени следните задачи:
- Актуализирайте свързания с използването код нова версия библиотека ArduinoJson.h.
- Пренапишете кода, използвайки функцията millis (), вместо функцията забавяне (). Ясно е, че използвайки забавяне за задаване на пауза между промяната на информацията на дисплея, е невъзможно да се приложат контроли на бутоните;
- грим изтегляне на скици през Wifi;
- Махнете се от обемния Wemos D1 R2 на Wemos D1 mini;
- Когато е възможно Русифициране на дисплея;
- Използвайте готов калъф с отвори за бутони за устройства, базирани на LCD1602;
- Използвайте стандартни 6x6 бутони, прикрепени към дъската. Добавете бутони за управление на подсветката, бутон за въртене за промяна на показаните данни и бутон за форсиране на актуализации на данни от сървъра.
Използвани са следните компоненти:
- Калъфът е изработен от ABS пластмаса с комплект капаци за бутоните;
- Найлонови подпори 6 + 5 мм мъжки М3 черен, 4 бр;
- М3 найлонови гайки черни, 4 бр;
- Найлонови стълбове 6 + 5 мм мъжки М2 бял, 3 бр;
- Найлонова стойка 6 мм майка бяла, 1 бр;
- Найлонова стойка 8 мм майка бяла, 1 бр;
- Найлонови стелажи 10 мм майка бяла, 2 бр;
- LCD 1602 (I2C), жълт;
- Wemos d1 mini;
- Wemos d1 DC-Power щит;
- Дъска за дъска 3x7;
- Бутони 6х6, височина 7 мм, 3бр .;
- Dupont проводници 10см майка-майка, 4 бр;
- 24 AWG проводници черни и червени;
- Силиконови проводници 20 AWG синьо и бяло;
- Резистори 5 kOhm - 2 бр, 10 kOhm - 1 бр (които дойдоха на ръка);
- Захранващ адаптер 9V 1A;
- Двукомпонентно епоксидно лепило.
Използваният калъф има няколко предимства. Първо, в допълнение към дисплея, стандартната 3x7 стандартна разделителна платка с нейните компоненти, инсталирани от двете страни, е перфектно поставена по височина. Второ, в два края има правоъгълни отвори за охлаждане. Оказа се, че джъмперите между тези дупки са перфектно изрязани от мини файлове 3 и 4 мм. Ако изрежете няколко джъмпера и изрежете малък правоъгълен отвор в кутията, тогава захранващият конектор DC-005 иде идеално в образувания отвор със сложна геометрия. Също така, на гърба на този случай има голям квадратен отвор, в който, както изглежда, е трябвало да се поставят батерии.Чрез него е удобно да свържете нещо вътре, без да разглобявате кутията. Впоследствие той може просто да бъде затворен със стъкло или пластмаса.
Изграждане на прогрес:
Първо е направен прототип на дъска.
Тогава случаят се финализира с файл.
След това основните компоненти се запояват и монтажът се извършва. Краката бяха специално огънати, така че разглобяемите стави да се поберат по височина. Трябваше да се подадат няколко найлонови стелажа, така че всички копчета да са на една и съща височина.
В резултат на това предната страна на платката с бутони, резистори и проводници е както следва:
В резултат вътрешностите на устройството изглеждат така:
Когато е сглобено, устройството изглежда така:
Преодоляване на трудностите:
- Дълго време не можах да разбера защо бутоните не работят, въпреки че мултицетът ясно показва 0 при натискане на бутоните и 4,6 - 5,0 V при натискане (в зависимост от захранването). Оказа се, че в устройствата на Wemos / Lolin е необходимо да се посочват GPIO номерата като пинови номера в скицата. Например, D5 е GPIO14. Това е 14-ти пин.
const int buttonPin = 14;
- За да покажете времето, условието е необходимо:
currentMillis - previousMillis == weatherTime
Строга кореспонденция, защото трябва да се извърши веднъж.
За да направите заявка до сървъра, условието е необходимо:currentMillis - previousMillis> = getDataTime
Отпуснато съответствие, тъй като се изпълнява, докато не бъде зададен флагът „получени данни“.
Всъщност това не е очевидно и за да се разбере това, отне доста време. - Трябваше също да се измъчвам с отговора на сървъра:
String weather = root ["weather"] [0] ["main"]; Description of string = root ["weather"] [0] ["description"];
Нулата беше напълно незабележима. Оказва се, че в Москва има две метеорологични станции, а втората не винаги работи (за да получите данни от нея, трябва да посочите [1], ако е активна).
Намира се хранилището с код и библиотеки тук.