La idea está tomada del proyecto. Pantalla meteorológica ESP8266.
Decidí traerlo a mi mente.
Se establecieron las siguientes tareas:
- Actualizar código relacionado con el uso nueva versión bibliotecas ArduinoJson.h.
- Reescribe el código usando la función millis () en lugar de la función delay (). Está claro que, usando el retraso para establecer una pausa entre el cambio de información en la pantalla, es imposible implementar controles de botón;
- Hacer descargar bocetos a través de Wifi;
- Aléjese del voluminoso Wemos D1 R2 en el Wemos D1 mini;
- Siempre que sea posible Pantalla de Russify;
- Use una caja lista para usar con agujeros para botones para dispositivos basados en LCD1602;
- Use botones estándar de 6x6 soldados a la placa de pruebas. Agregue botones de control de retroiluminación, un botón de carrusel para cambiar los datos mostrados y un botón para forzar actualizaciones de datos desde el servidor.
Se utilizaron los siguientes componentes:
- La caja está hecha de plástico ABS con un juego de tapas para los botones;
- Puntales de nylon 6 + 5 mm macho M3 negro, 4 piezas;
- Tuercas de nylon M3 negras, 4 piezas;
- Postes de nylon 6 + 5 mm macho M2 blanco, 3 piezas;
- Soporte de nylon 6 mm madre blanco, 1 pc;
- Soporte de nylon 8 mm madre blanco, 1 pc;
- Bastidores de nylon 10 mm madre blanco, 2 piezas;
- LCD 1602 (I2C), amarillo;
- Wemos d1 mini;
- Wemos d1 DC-Power escudo;
- Tablero de tablero 3x7;
- Botones 6x6, altura 7 mm, 3 piezas;
- Dupont cables 10cm madre-madre, 4 piezas;
- Cables de 24 AWG negros y rojos;
- Cables de silicona 20 AWG azul y blanco;
- Resistencias 5 kOhm - 2 pcs, 10 kOhm - 1 pc (que vino a la mano);
- Adaptador de corriente 9V 1A;
- Adhesivo epoxi de dos componentes.
El caso usado tiene varias ventajas. En primer lugar, además de la pantalla, la placa de desacoplamiento estándar 3x7 estándar, con componentes instalados en ambos lados, se ajusta perfectamente en altura. En segundo lugar, en dos extremos tiene aberturas rectangulares para enfriar. Resultó que los puentes entre estos agujeros están perfectamente cortados por mini archivos de 3 y 4 mm. Si corta un par de puentes y corta un pequeño orificio rectangular en la carcasa, el conector de alimentación DC-005 encaja perfectamente en el orificio de la geometría compleja. Además, la parte posterior de este estuche tiene un gran agujero cuadrado, que, aparentemente, se suponía que instalaba baterías.A través de él, es conveniente conectar algo dentro sin desmontar la carcasa. Posteriormente, simplemente se puede cerrar con vidrio o plástico.
Progreso de construcción:
Primero, se hizo un prototipo en una placa de pruebas.
Luego el caso se finaliza con un archivo.
Después de eso, los componentes principales se sueldan y se realiza el ajuste. Las patas estaban especialmente dobladas para que las articulaciones desmontables se ajustaran en altura. Hubo que archivar un par de bastidores de nylon para que todos los botones estuvieran a la misma altura.
Como resultado, la parte frontal de la placa con botones, resistencias y cables es la siguiente:
Como resultado, el interior del dispositivo se ve así:
Cuando está ensamblado, el dispositivo se ve así:
Superar dificultades:
- Durante mucho tiempo no pude entender por qué los botones no funcionaron, aunque el multímetro mostró claramente 0 cuando se presionaron los botones y 4.6 - 5.0 V cuando se presionaron (dependiendo de la fuente de alimentación). Resultó que en los dispositivos Wemos / Lolin es necesario indicar los números GPIO como números pin en el boceto. Por ejemplo, D5 es GPIO14. Así que este es el decimocuarto pin.
const int buttonPin = 14;
- Para mostrar el clima, la condición es necesaria:
currentMillis - previousMillis == weatherTime
Correspondencia estricta, porque debe hacerse una vez.
Para realizar una solicitud al servidor, la condición es necesaria:currentMillis - previousMillis> = getDataTime
Cumplimiento flexible, porque se ejecuta hasta que se establece el indicador de "datos recibidos".
De hecho, esto no es obvio, y para entender esto, tomó bastante tiempo. - También tuve que atormentarme con la respuesta del servidor:
Cadena weather = root ["weather"] [0] ["main"]; Cadena description = root ["clima"] [0] ["descripción"];
Zero era completamente obvio. Resulta que hay dos estaciones meteorológicas en Moscú, y la segunda de ellas no siempre funciona (para recibir datos de ella, debe especificar [1] si está activa).
Se encuentra el repositorio con código y bibliotecas. aqui.