A ideia é emprestada do projeto. ESP8266 Weather Display.
Eu decidi trazer isso à mente.
As seguintes tarefas foram definidas:
- Atualizar código relacionado ao uso nova versão bibliotecas ArduinoJson.h.
- Reescreva o código usando a função millis () em vez da função delay (). É claro que, usando o atraso para definir uma pausa entre as informações alteradas no visor, é impossível implementar controles de botão;
- Fazer baixar esboços via Wifi;
- Afaste-se do volumoso Wemos D1 R2 no Wemos D1 mini;
- Sempre que possível Exibição Russify;
- Use uma caixa pronta com orifícios para botões para dispositivos baseados no LCD1602;
- Use os botões 6x6 padrão soldados na placa de ensaio. Adicione botões de controle de luz de fundo, um botão de carrossel para alterar os dados exibidos e um botão para forçar atualizações de dados do servidor.
Os seguintes componentes foram usados:
- O estojo é feito de plástico ABS com um conjunto de capas para os botões;
- Suporte de nylon 6 + 5 mm macho M3 preto, 4 peças;
- Porcas de nylon M3 pretas, 4 peças;
- Espigões de nylon 6 + 5 mm macho M2 branco, 3 peças;
- Suporte de nylon 6 mm branco mãe, 1 pc;
- Suporte de nylon 8 mm branco mãe, 1 pc;
- Prateleiras de nylon 10mm branco mãe, 2 peças;
- LCD 1602 (I2C), amarelo;
- Wemos d1 mini;
- Wemos d1 Blindagem de energia DC;
- Tábua de pão 3x7;
- Botões 6x6, altura 7 mm, 3pcs;
- Dupont fios 10cm mãe-mãe, 4 peças;
- 24 AWG fios preto e vermelho;
- Fios de silicone 20 AWG azul e branco;
- Resistores 5 kOhm - 2 peças, 10 kOhm - 1 peça (que veio à mão);
- Adaptador de energia 9V 1A;
- Adesivo epóxi bicomponente.
O caso usado tem várias vantagens. Em primeiro lugar, além da tela, a tábua de pão de desacoplamento padrão 3x7 padrão, com componentes instalados nos dois lados, se encaixa perfeitamente na altura. Em segundo lugar, nas duas extremidades, possui aberturas retangulares para resfriamento. Verificou-se que os jumpers entre esses orifícios são perfeitamente cortados por mini-limas de 3 e 4 mm. Se você cortar alguns jumpers e fizer um pequeno orifício retangular no gabinete, o conector de força DC-005 entrará perfeitamente no orifício formado por geometria complexa. Além disso, a parte de trás deste gabinete possui um grande buraco quadrado, que aparentemente deveria instalar baterias.Através dele, é conveniente conectar algo dentro sem desmontar o gabinete. Posteriormente, pode simplesmente ser fechado com vidro ou plástico.
Progresso da construção:
Primeiro, um protótipo foi feito em uma tábua de pão.
Em seguida, o caso é finalizado com um arquivo.
Depois disso, os principais componentes são soldados e o encaixe é realizado. As pernas foram especialmente dobradas para que as articulações destacáveis se ajustassem à altura. Um par de racks de nylon teve que ser arquivado para que todos os botões estivessem na mesma altura.
Como resultado, a parte frontal da placa com botões, resistores e fios é a seguinte:
Como resultado, a parte interna do dispositivo fica assim:
Quando montado, o dispositivo fica assim:
Superando dificuldades:
- Durante muito tempo, não entendi por que os botões não funcionavam, embora o multímetro mostrasse claramente 0 quando os botões foram pressionados e 4,6 - 5,0 V quando pressionados (dependendo da fonte de alimentação). Verificou-se que nos dispositivos Wemos / Lolin é necessário indicar números GPIO como números de pinos no esboço. Por exemplo, D5 é GPIO14. Então este é o 14º pino.
const int buttonPin = 14;
- Para mostrar o clima, a condição é necessária:
currentMillis - previousMillis == weatherTime
Correspondência estrita, porque deve ser feita uma vez.
Para fazer uma solicitação ao servidor, a condição é necessária:currentMillis - previousMillis> = getDataTime
Fraca conformidade, porque é executada até que o sinalizador "dados recebidos" seja definido.
De fato, isso não é óbvio e, para entender isso, levou muito tempo. - Eu também tive que me atormentar com a resposta do servidor:
String weather = root ["weather"] [0] ["main"]; Descrição da string = root ["weather"] [0] ["description"];
Zero era completamente óbvio. Acontece que existem duas estações meteorológicas em Moscou, e a segunda nem sempre funciona (para receber dados dela, você deve especificar [1] se estiver ativo).
O repositório com código e bibliotecas está localizado aqui.