Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Reloj LED Matrix NTP con DS3231, BME280, BH1750 y ESP01

Componentes y suministros

Arduino Nano R3
× 1
Módulo periférico Maxim Integrated DS3231MPMB1
El barato en Ebay, con la resistencia retirada para evitar que la batería explote
× 1
Desglose del sensor atmosférico SparkFun - BME280
El barato de Ebay
× 1
Sensor de luz BH1750
De Ebay
× 1
Matriz de LED Max7219 32x8
× 1
Condensador 10 µF
× 2
Espressif ESP8266 ESP-01
Opcional si desea configurar la hora a través de NTP
× 1
LM3940IT3.3
Regulador LDO de 3.3v para ESP01
× 1
Tablero de cambio de nivel SparkFun
Necesario por ESP01
× 1

Acerca de este proyecto

Esto es lo que me metió en Arduino. Me encontré con el LED Word Clock de Nick y pensé que quería hacerlo.

Desde que descargué su código, lo modifiqué para incluir sensores y botones adicionales, además de agregar un ESP01.

El BH1750 se utiliza para atenuar automáticamente la pantalla, según las condiciones de luz, y puede apagar la pantalla por la noche. El BME280 muestra la temperatura, la humedad y la presión. El ESP01 se usa para obtener la hora de pool.ntp.org.

Los botones adicionales están ahí para facilitar el ajuste de la configuración. Puede ajustar la configuración del sensor de luz con los botones, así como cambiar las fuentes y la configuración de NTP / DST / UTC.

Se han agregado seis fuentes nuevas, las hice usando:http://dotmatrixtool.com/.

Hice algunos cambios en el reloj de palabras, ahora tiene más palabras y me he movido bastante a PROGMEM para ahorrar RAM.

Página del proyecto de Nick:https://123led.wordpress.com/mini-led-clock/

Mi código:https://github.com/Ratti3/miniclock

El código ahora está completo, aparte de errores desconocidos y un ajuste aquí y allá, lo justificaré.

Deberá ajustar el código del sensor de luz para que coincida con sus condiciones de luz, lo codifiqué durante la luz del sol brillante sentado junto a una ventana.

Un ESP01 se usa para obtener la hora a través de NTP, el ESP01 está codificado para dormir (wifi apagado) cuando no se necesita y se activa a través de una serie para obtener la hora en formato UNIX. El nombre SSID y la contraseña se pasan a través del código Arduino para mayor comodidad.

Esta versión también tiene cálculos DST / UTC y BST. Estas configuraciones se pueden ajustar o deshabilitar a través del menú.

Las configuraciones se guardan en EEPROM, esto significa que si apaga y vuelve a encender, los cambios realizados a través del menú se guardan.

Estos son los archivos de código en Github:

  Código en Github [https://github.com/Ratti3/miniclock]:Arduino LEDClock32x8.ino ProgmemData.hArduino ESP-01_NTP.ino LEDClock32x8_ESP01-NTP.ino ProgmemData.h  

Cuando el ESP01 se está ejecutando, Arduino Serial mostrará esto:

  Arduino:Solicitud NTP enviada a ESP01ESP01:Solicitud NTP recibida de Arduino [intento 1 de 3] Conectando a SSID:TheInternets .... connectedSSID:TheInternets, Dirección IP:192.168.0.135 Intensidad de la señal (RSSI):-42 dBm Envío de paquete NTP a:195.195.221.100 [intento 1] Envío de paquete NTP a:195.195.221.100 [intento 2] UNIX1562848457 Desactivación de WiFi .... ok  

Más imágenes e instrucciones por venir ...

Poniéndolo todo junto:

Cableado:

  DS3231, BH1750 y BME280:SCL PINS =A5 SDA PINS =A4 VCC =3.3v Matriz LED:CLK =D11 CS =D10 DIN =D12 VCC =5v Interruptores:D2 - Menú D3 - Fecha / + D4 - Temp / - D5 - Opciones de visualización ESP01 - Opcional D7 - Pin TX de ESP01 D6 - Pin RX de ESP01  

Estas son las variables globales que puede cambiar:

  // Variables globales (valores predeterminados modificables), los números entre corchetes [] son ​​la ubicación de almacenamiento EEPROM para ese valor // Configuración del reloj // [200] Intensidad / brillo predeterminado (0-15), se puede configurar vía menubyte intensidad =2; // [201] Modo reloj por defecto. Predeterminado =0 (modo_básico) byte clock_mode =0; // [206] Definir modo aleatorio:cambia el tipo de visualización cada pocas horas. Predeterminado =0 (desactivado) bool modo_aleatorio =0; // [207] Definir modo aleatorio de fuente:cambia la fuente cada pocas horas. 1 =fuente aleatoria onbool random_font_mode =0; // [208] Defina el tiempo de 12 o 24 horas. 0 =24 horas. 1 =12 hbool ampm =0; // Configuración de luz // [202] Modo de visualización por defecto encendido / apagado, utilizado por el sensor de luz. 0 =normal, 1 =siempre encendido, 2 - siempre apagado, 3-5 =definido por hour_off_1,2,3byte display_mode =5; // [209] Ajuste predeterminado de intensidad de luz automática bool auto_intensity =1; // Estos tres definen la hora en que el sensor de luz puede apagar la pantalla si está lo suficientemente oscuro, el formato es de 24 horas, la rutina para // esto verifica entre 8.00 y uno de estos valoresbyte hour_off_1 =21; byte hour_off_2 =22; byte hour_off_3 =23; // Configuración de fuentes:se establecen a través del menú de configuración de fuentes, consulte la rutina set_font_case () para conocer todos los valores predeterminados:// [203] Reloj predeterminado fuente grande stylebyte font_style =2; // [204] Ajuste de desplazamiento de fuente grande del reloj predeterminado byte font_offset =1; // [205] Columnas de fuente grande del reloj por defecto ajustebyte font_cols =6; // DST Configuración de NTP y UTC // [210] Habilitar la función DST, 1 =habilitar, 0 =deshabilitar bool dst_mode =1; // [211] Habilitar la función NTP, 1 =habilitar, 0 =deshabilitar bool ntp_mode =1; // Número de segundos para ajustar el valor NTP antes de aplicarlo a DS3231, toma unos cientos de milisegundos procesar el byte de datos ESP01 ntp_adjust =1; // [213] Ajuste de compensación UTC, hoursint8_t utc_offset =0; // La hora diaria en que se produce la sincronización NTP / DST, debe dejarse a las 2 a. M. Si se usa el modo DST ntp_dst_hour =2; // Número de tiempo para reintentar la solicitud NTP 1 =35 segundos (ish) en total, valores 1 - 9byte ntp_max_retry =3; // Se usa para calcular cuándo salir de ntp () cuando no está recibiendo datos, valor en segundos, se multiplica por ntp_max_retrybyte ntp_timeout =45; // Constantes globales:SSID y contraseña para WiFi, pasados ​​a ESP01 a través de SoftwareSerial // La longitud combinada de SSID y contraseña no puede exceder los 72 caracteres // La longitud de su nombre SSID, por ejemplo, SSID =MyWifi, ssid_len =6const byte ssid_len =8; // Su nombre SSID, por ejemplo, MyWificonst char ssid [] ="YourSSID"; // La longitud de su contraseña SSID, por ejemplo, contraseña =contraseña, pass_len =8const byte pass_len =12; // Su contraseña SSID, por ejemplo, passwordconst char pass [] ="YourPassword";  

Código

Github de Ratti3
https://github.com/Ratti3/miniclock

Esquemas

No había BH1750, se conecta de la misma manera que BME280

Proceso de manufactura

  1. Reloj Arduino con tiempos de oración islámicos
  2. ¡Arduino con Bluetooth para controlar un LED!
  3. Reloj POV LED de estilo analógico
  4. Lámpara de matriz LED Hot Glue
  5. Controla tu LED con Cortana
  6. Reloj Flip Arduino de matriz de un solo LED
  7. Controlar una matriz de LED con Arduino Uno
  8. Un reloj barato y preciso basado en GPS
  9. Matriz controlada por Bluetooth Arduino con texto en movimiento
  10. Juego de asteroides con pantalla de matriz LED MAX72XX
  11. Reloj despertador simple con DS1302 RTC