L'idea è presa in prestito dal progetto. ESP8266 Visualizzazione del tempo.
Ho deciso di ricordarmelo.
Sono stati impostati i seguenti compiti:
- Aggiorna il codice relativo all'utilizzo nuova versione biblioteca ArduinoJson.h.
- Riscrivi il codice usando la funzione millis () invece della funzione delay (). È chiaro che usando il ritardo per impostare una pausa tra la modifica delle informazioni sul display, è impossibile implementare i controlli dei pulsanti;
- make scarica schizzi via Wifi;
- Allontanati dal voluminoso Wemos D1 R2 sul Wemos D1 mini;
- Quando possibile Russify display;
- Utilizzare una custodia già pronta con fori per pulsanti per dispositivi basati su LCD1602;
- Utilizzare pulsanti 6x6 standard saldati alla breadboard. Aggiungi pulsanti di controllo della retroilluminazione, un pulsante a carosello per modificare i dati visualizzati e un pulsante per forzare gli aggiornamenti dei dati dal server.
Sono stati utilizzati i seguenti componenti:
- La custodia è in plastica ABS con un set di cover per i pulsanti;
- Puntoni in nylon 6 + 5 mm maschio M3 nero, 4 pezzi;
- Dadi in nylon M3 neri, 4 pezzi;
- Pali in nylon 6 + 5 mm maschio M2 bianco, 3 pezzi;
- Supporto in nylon 6 mm bianco madre, 1 pezzo;
- Supporto in nylon 8 mm bianco madre, 1 pezzo;
- Scaffali in nylon 10mm bianco madre, 2 pezzi;
- LCD 1602 (I2C), giallo;
- Wemos d1 mini;
- Wemos d1 DC-Power shield;
- Tagliere da tavola 3x7;
- Bottoni 6x6, altezza 7 mm, 3 pezzi;
- Fili Dupont 10 cm madre-madre, 4 pezzi;
- 24 fili AWG neri e rossi;
- Fili di silicone 20 AWG blu e bianco;
- Resistori 5 kOhm - 2 pezzi, 10 kOhm - 1 pezzo (che è venuto a portata di mano);
- Adattatore di alimentazione 9V 1A;
- Adesivo epossidico bicomponente.
La custodia usata presenta numerosi vantaggi. Innanzitutto, oltre al display, la scheda di disaccoppiamento standard 3x7 standard, con componenti installati su entrambi i lati, si adatta perfettamente in altezza. In secondo luogo, alle due estremità ha aperture rettangolari per il raffreddamento. Si è scoperto che i ponticelli tra questi fori sono perfettamente tagliati da mini file da 3 e 4 mm. Se tagli un paio di ponticelli e fai un piccolo foro rettangolare nella custodia, il connettore di alimentazione DC-005 entra perfettamente nel foro della geometria complessa. Inoltre, il retro di questo caso ha un grande foro quadrato, che, a quanto pare, avrebbe dovuto installare le batterie.Attraverso di esso, è conveniente collegare qualcosa all'interno senza smontare la custodia. Successivamente, può essere semplicemente chiuso con vetro o plastica.
Progressi di costruzione:
Innanzitutto, è stato realizzato un prototipo su una breadboard.
Quindi il caso viene finalizzato con un file.
Successivamente, i componenti principali vengono saldati e il raccordo viene eseguito. Le gambe erano appositamente piegate in modo che le articolazioni staccabili si adattassero in altezza. Un paio di rack di nylon dovevano essere archiviati in modo che tutti i pulsanti fossero alla stessa altezza.
Di conseguenza, la parte anteriore della scheda con pulsanti, resistori e fili è la seguente:
Di conseguenza, l'interno del dispositivo è simile al seguente:
Quando assemblato, il dispositivo si presenta così:
Superare le difficoltà:
- Per molto tempo non sono riuscito a capire perché i pulsanti non funzionassero, sebbene il multimetro mostrasse chiaramente 0 quando i pulsanti erano premuti e 4.6 - 5.0 V quando premuti (a seconda dell'alimentazione). Si è scoperto che nei dispositivi Wemos / Lolin è necessario indicare i numeri GPIO come numeri pin nello schizzo. Ad esempio, D5 è GPIO14. Quindi questo è il 14 ° pin.
const int buttonPin = 14;
- Per mostrare il tempo, la condizione è necessaria:
currentMillis - previousMillis == weatherTime
Corrispondenza rigorosa, perché deve essere eseguita una volta.
Per effettuare una richiesta al server, la condizione è necessaria:currentMillis - previousMillis> = getDataTime
Conformità generica, poiché viene eseguita fino all'impostazione del flag "dati ricevuti".
In realtà, questo non è ovvio e, per capirlo, ci è voluto molto tempo. - Ho anche dovuto tormentarmi con la risposta del server:
String weather = root ["weather"] [0] ["main"]; Descrizione stringa = root ["weather"] [0] ["description"];
Zero era completamente invisibile. Si scopre che ci sono due stazioni meteorologiche a Mosca, e la seconda non funziona sempre (per ricevere dati da essa, è necessario specificare [1] se è attiva).
Si trova il repository con codice e librerie qui.