Reloj con pantalla grande - Parte 2

en el primera parte del blog Había reconstruido y describí el proyecto de nuestro cliente Hans-Ulrich Küster con su pantalla de gran formato de la época. Para obtener una pantalla grande como sea posible, tenía dos MAX7219 8x32 4 superpuestas en 1 DOT MATRIX LED. Cuando un reloj sirvió un reloj en tiempo real RTC DS3231 I2C.

En esta parte, me gustaría mostrar cómo reemplazé el micro controlador con ATMEGA 328P por los micro controladores de Wi-Fi habilitados de Espressif. Para este propósito, primero dejé el boceto en gran medida sin cambios, pero las dos interfaces SPI y I2C son cada una en otros pasadores que la tablero de micro controlador con ATMEGA. Así que tuve que adaptar fácilmente el circuito y el boceto.

Hardware utilizado:

1

Nodemcu Lua Amica Module V2 ESP8266 ESP-12F WiFi Withi Board de desarrollo con CP2102

o

Módulo ESP32 ANDEMCU WLAN WIFI Tablero de desarrollo con CP2102

2

MAX7219 8x32 4 en 1 MATRIX DOT MATRIX LED Módulo de pantalla

1

Reloj en tiempo real RTC DS3231 I2C

 

Breadboard (Breadboard) y Cable (cable de puente)

Para el ESP8266, me paré durante varios días antes de un problema aparentemente insoluble, porque la interfaz SPI indicada en la tabla PINOUT con MOSI a SD1, CS a CMD y SCLK en CLK simplemente no h. Más sobre eso más tarde.

ESP32

Todo lo más rápido fue el ESP32. Aquí está la asignación PIN para la interfaz SPI:

 #define clk_pin 18// o sck
 #define data_pin 23 // o mosi
 #define cs_pin 2 // o ss

Y las conexiones para la RTC en la interfaz I2C:

// SDA a D21
// scl to d22

De los experimentos anteriores sabía que el ESP32 no conoce la variable LED_BUILTIN, por lo que tengo la línea después del mensaje de error correspondiente al comienzo del boceto

 En t Led_builtin = 2;

agregado.

El tiempo sabía el reloj en tiempo real (tamponado por la batería) ni de las pruebas anteriores, así que tendré el boceto con
 bota sincronfirista = falso; // sincronizar verdadero con PC, de lo contrario falso
Subido. Solo para la sincronización con el tiempo de la PC debe la variable por un corto tiempo SYNCONFIRSTSTARTT = VERDADEROser establecido

Construcción con ESP32

Heureka. Eso fue arreglado.

Aquí el boceto para el ESP32 para Descargar

ESP8266

¿Y ahora? Solucionar el problema con el ESP8266? ¿O primero, descargue la hora desde un servidor NTP directamente en Internet?

Me tengo para la solución rápida con un ejemplo de ejemplo de la biblioteca. Timelib.h decidió. En el ejemplo, el boceto Timentp_esp8266wifi.ino, solo necesitaba mi pasta inalámbrica SSID y contraseña y la hora actual se mostró en el monitor en serie.

Muestra

El otro problema todavía no había sido resuelto por sí mismo. Incluso para subir el boceto, tuve que resolver la conexión CS CS a CMD, de lo contrario hubo un mensaje de error al conectarse. Entonces, busque en Internet la interfaz SPI en el ESP8266. Para mi asombro, vi una configuración experimental con el convertidor analógico a digital MCP3008, que conocía bien de Frambuesa PI. Sin embargo, que se conectó a los pasadores en los que en el diagrama de pinout en frente de las abreviaturas conocidas, cada una de la parte, es decir, HSCLK = D5 = GPIO14, HMISO = D6 = GPIO12, HMOSI = D7 = GPIO13 y HCS = D8 = GPIO15. Tan pronto, DIN, CS y CLK, el indicador LED de matriz conectado allí, adaptado al boceto, y he aquí: funcionó.

ESP8266 PINOUT

Construcción con ESP8266

Aquí están los cambios en el boceto del Sr. Süster:

 #define cs_pin 15
 #define clock_pin 14
 #define mosi_pin 13
 #define miso_pin 12// no es necesario en la pantalla
 
 // scl to d1 = gpio5
 // SDA a D2 = GPIO4

Y aquí todo el boceto a Descargar.

Sincronización con servidor NTP

La idea de usar el micro controlador habilitado para WLAN vino a mí porque subo el doble del boceto para sincronizar el reloj en tiempo real con la hora del sistema de la computadora, una vez Bool synconfirststart = verdadero; una vez con BOOL SYNCONFIRSTSTARTT = FALSO; Para mejorar e incluso el reloj de tiempo real significativamente mejor, DS3231 se detuvo después de varias semanas, ya no indica la hora exacta. Así que quería combinar el boceto del Sr. Küster con la pantalla grande con el ejemplo del boceto de ejemplo para el tiempo NTP.

Esencialmente, el boceto para el tiempo de Internet es "rechazado" solo para el problema en el monitor en serie y luego se inserta en el boceto del Sr. Küster. Y luego, por supuesto, la fuente de sincronización debe cambiarse. Esto sucede en Línea 159:

 Rtc.ajustar(Fecha y hora(uint16_t(S.M()), Uint8_t(Montroy()), Uint8_t(día()), Uint8_t(hora()), Uint8_t(minuto()), Uint8_t(segundo())));
 
 // antiguo: rtc.adjust (DateTime (F (__ FAT__), F (__ tiempo__)));

Éste Descargar del boceto para el ESP8266 con la sincronización de tiempo desde el servidor NTP. Tenga en cuenta que usted en el Líneas 35 y 36. Sus "credenciales de WLAN", es decir, SSID (nombre) y la contraseña deben ingresar. Y el cambio entre el horario de verano y el invierno se realiza comentando en las líneas 40 o 41.

Diviértete con la reconstrucción. Si tiene una conexión a Internet estable y una buena recepción de Wi-Fi en el dormitorio, puede omitir la RTC y sincronizará la hora con más frecuencia con el servidor NTP.

MuestraEsp-32Precipitador electrostático - 8266Proyectos para avanzados.Casa inteligente

5 comentarios

Ruediger Ebert

Ruediger Ebert

Da mir die Anzeige zu hell war, habe ich ein Potentiometer zur Helligkeitsregelung angeschlossen.
Wer dies auch realisieren möchte, nachfolgende eine kurze Anleitung:

Potentiometer Anschluss zwischen 3.3V und 0V. Abgriff an Analog-Input des ESP8266 anschliessen.
Wert des Potis: 10K

Im Definitionsteil des Sketches folgende Zeilen hinzufügen:
const int analogInPin = A0; // ESP8266 Analog Pin ADC0 = A0
int brightnessPotValue = 0;

Zum Loop folgende Zeilen hinzufügen:
brightnessPotValue = analogRead(analogInPin);
int c = map(brightnessPotValue, 0, 1023, 0, 15);
uhr.control(MD_MAX72XX::INTENSITY, c);

Rüdiger

Ruediger Ebert

Ruediger Ebert

@ Bernd Albrecht: Danke :-)

Bernd Albrecht

Bernd Albrecht

@ Ruediger Ebert: Grundsätzlich ist die Internetzeit in Universal Time Coordinated (UTC) angegeben. Deshalb ist bei dem Sketch „Uhr_2_X_Anzeige_ESP8266_WLAN_NTP.ino“
in den Zeilen 38-41 die Korrektur für die jeweilige Zeitzone angegeben, zurzeit 2 Stunden für MESZ. Der Wert wird in der Variablen timeZone gespeichert. Die Korrektur wird in Zeile 98 addiert.
Schnellste Möglichkeit für die Anzeige in UTC:
Zeile 40 auskommentieren und eine weitere Zeile einfügen:
//const int timeZone = 2; // Central European Summer Time (MESZ)
const int timeZone = 0; // Universal Time Coordinated (UTC)

Nils Sappok

Nils Sappok

Vielen Dank für diesen – wie immer – exzellenten Beitrag!
Da möchte ich es gleich mal nach bauen….
Wie wäre es noch mit einer WS2812B 5050 RGB LED Matrix? Ich habe noch die 8×8 von Euch und zusätzlich gerade eines der flexiblen 8×32 Panels erhalten. Mit dem Uno läuft es problemlos, aber mit dem ESP32 NodeMCU habe ich es noch nicht geschafft. Obwohl es Beispiele im Netz ohne gibt, muss ich wohl einen Pegelwandler einsetzen.
Bleibt gesund! :)

Ruediger Ebert

Ruediger Ebert

Für ein Projekt benötige ich die Anzeige der Uhrzeit in UTC. Dies dies mit dem vorgestellten Projekt möglich?

Rüdiger

Deja un comentario

Todos los comentarios son moderados antes de ser publicados

Artículos de blog

  1. Ahora instalamos el esp32 a través de la administración.
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. Transporte Aéreo - programación de ESP mediante redes locales inalámbricas