Tabla de contenido:
- Paso 1: Cosas que necesita
- Paso 2: conexiones
- Paso 3: descargar bibliotecas
- Paso 4: ¿Qué es NTP?
- Paso 5: Parte de codificación
- Paso 6: Obtener fecha y hora
Video: Reloj de Internet: muestra la fecha y la hora con un OLED usando ESP8266 NodeMCU con protocolo NTP: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
Hola chicos, en este instructables, construiremos un reloj de Internet que obtendrá tiempo de Internet, por lo que este proyecto no necesitará ningún RTC para ejecutarse, solo necesitará una conexión a Internet que funcione.
Y para este proyecto, necesita un esp8266 que tendrá wifi para obtener acceso a Internet y una pantalla para mostrar la hora y esp8266 obtendrá el tiempo de Internet mediante el protocolo NTP, ntp significa protocolo de tiempo de red, así que básicamente hay servidores ntp en la web que se utilizan para sincronizar los relojes de las computadoras y usaremos esos servidores para obtener tiempo en nuestro proyecto.
Paso 1: Cosas que necesita
para este proyecto necesitará lo siguiente:
Esp8266 / nodemcu
Oled ssd1306 0.96"
Cables de puente
Tablero de circuitos
Cable USB
Paso 2: conexiones
Esta pantalla OLED de 4 pines se comunica con el módulo ESP8266 mediante el protocolo I2C, a continuación se muestra el diagrama de circuito y la tabla de conexiones para conectar los pines OLED I2C con NodeMCU para mostrar la hora de Internet.
Paso 3: descargar bibliotecas
Asegúrese de haber descargado las bibliotecas SD1306 en su Arduino ide como se muestra en la imagen y asegúrese de que su biblioteca Adafruit GFX también, si no, instale estas dos bibliotecas.
En su IDE de Arduino, vaya al administrador de Bibliotecas y busque NTP y simplemente descargue la biblioteca del cliente NTP como la descargué, consulte la imagen para obtener más ayuda.
Paso 4: ¿Qué es NTP?
NTP es uno de los protocolos de Internet (IP) de red más antiguos para sincronizar relojes entre redes de computadoras. Fue diseñado por David L. Mills de la Universidad de Delaware en 1981. Este protocolo se puede utilizar para sincronizar muchas redes con la Hora Universal Coordinada (UTC) en unos pocos milisegundos. UTC es el estándar de tiempo principal por el cual el mundo regula el reloj y la hora. UTC no cambia y varía para diferentes ubicaciones geográficas. NTP utiliza UTC como referencia de tiempo y proporciona una hora precisa y sincronizada a través de Internet.
NTP funciona en un modelo cliente-servidor jerárquico. El modelo superior tiene relojes de referencia conocidos como "stratum0" como relojes atómicos, ondas de radio, GPS, GSM que recibe la hora del satélite. Los servidores que reciben la hora de stratum0 se denominan "stratum1" y los servidores que reciben la hora de stratum1 se denominan "stratum2" y así sucesivamente. Esto continúa y la precisión del tiempo continúa disminuyendo después de cada etapa. NTP selecciona automáticamente lo mejor de varias fuentes de tiempo disponibles para sincronizar, lo que lo convierte en un protocolo capaz de tolerancia a fallas. Entonces, aquí en este proyecto, estamos obteniendo tiempo del servidor NTP usando ESP8266 NodeMCU y mostrándolo en la pantalla OLED. Este mismo tipo de reloj de Internet se crea utilizando ESP32 en el tutorial anterior.
Paso 5: Parte de codificación
Para solicitar la fecha y la hora, inicialice el cliente de hora con la dirección de los servidores NTP. Para mayor precisión, elija la dirección de los servidores NTP que están cerca de su área geográfica. Aquí usamos "pool.ntp.org" que proporciona servidores de todo el mundo. Si desea elegir servidores de Asia, puede utilizar “asia.pool.ntp.org”. timeClient también toma la diferencia horaria UTC en milisegundos de su zona horaria. Por ejemplo, el desplazamiento UTC para India es +5: 30, por lo que convertimos este desplazamiento en milisegundos, que es igual a 5 * 60 * 60 + 30 * 60 = 19800.
Zona. Desplazamiento de la hora UTC (horas y minutos). Desplazamiento de hora UTC (segundos)
INDIA +5: 30 19800
LONDRES 0:00. 0
NUEVA YORK -5: 00-18000
Copie el siguiente código e ingrese su wifi y contraseña en el código e ingrese la compensación de tiempo en el código y luego cárguelo en sus tableros esp8266.:
#include "NTPClient.h" #include "ESP8266WiFi.h" // proporciona rutinas Wi-Fi específicas de ESP8266 a las que llamamos para conectarnos a la red #include "WiFiUdp.h" // maneja el envío y la recepción de paquetes UDP
#include "SPI.h" // SPI para interconectar OLED con NodeMCu
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
#define SCREEN_WIDTH 128 // Ancho de pantalla OLED, en píxeles
#define SCREEN_HEIGHT 64 // Altura de la pantalla OLED, en píxeles
#define OLED_RESET -1
Pantalla Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, & Wire, OLED_RESET);
constchar * ssid = "yourwifissid";
const char * contraseña = "tuwifipass";
WiFiUDP ntpUDP;
NTPClient timeClient (ntpUDP, "pool.ntp.org", 19800, 60000);
String arr_days = {"Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"};
String date_time; // Puede especificar el grupo de servidores de tiempo y el desplazamiento (en segundos, // se puede cambiar más tarde con setTimeOffset ()). Además, puede especificar el // intervalo de actualización (en milisegundos, se puede cambiar usando setUpdateInterval ()).
configuración vacía ()
{
Serial.begin (115200);
WiFi.begin (ssid, contraseña);
mientras (WiFi.status ()! = WL_CONNECTED)
{
retraso (500);
Serial.print (".");
}
si (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println (F ("Falló la asignación SSD1306"));
por(;;); // No continúes, bucle para siempre
}
display.clearDisplay ();
display.setTextSize (2); // Dibujar texto a escala 2X
display.setTextColor (BLANCO);
display.setCursor (5, 2);
display.println ("BIENVENIDO A");
display.println ("instructables");
display.println ("Proyecto");
display.display ();
retraso (3000);
timeClient.begin ();
}
bucle vacío ()
{
timeClient.update ();
display.clearDisplay ();
Serial.println (timeClient.getFormattedTime ());
display.setTextSize (2); // Dibujar texto a escala 2X
display.setTextColor (AZUL);
display.setCursor (0, 2);
int hh = timeClient.getHours ();
int mm = timeClient.getMinutes ();
int ss = timeClient.getSeconds ();
si (hh> 12)
{
hh = hh-12;
display.print (hh);
display.print (":");
display.print (mm);
display.print (":");
display.print (ss);
display.println ("PM");
}
demás
{
display.print (hh);
display.print (":");
display.print (mm);
display.print (":");
display.print (ss);
display.println ("AM");
}
int día = timeClient.getDay ();
display.println ("'" + arr_days [día] + "'");
fecha_hora = timeClient.getFormattedDate ();
int index_date = date_time.indexOf ("T");
String date = date_time.substring (0, index_date);
Serial.println (fecha);
display.println (fecha);
display.display ();
// Mostrar texto inicial}
Paso 6: Obtener fecha y hora
si conectó todo correctamente y también cargó el código correctamente, entonces podrá ver su reloj ntp ejecutándose en la pantalla oled como el mío al ejecutarse en la pantalla oled. Consulte la imagen para ver la salida.
Recomendado:
OLED ESP8266 - Obtener la fecha y la hora de Internet: 8 pasos
ESP8266 OLED - Obtener la hora y la fecha de Internet: en este tutorial aprenderemos cómo obtener la fecha y la hora del servidor NIST TIME usando ESP8266 OLED y Visuino. Vea un video de demostración
Obtenga la hora y la fecha de Internet - Tutorial: 9 pasos
Obtener la fecha y la hora de Internet - Tutorial: En este tutorial aprenderemos cómo obtener la fecha y la hora del servidor NIST TIME usando M5Stack StickC y Visuino. Vea un video de demostración
Reloj de red ESP8266 sin ningún RTC - Reloj Nodemcu NTP Sin RTC - PROYECTO RELOJ DE INTERNET: 4 Pasos
Reloj de red ESP8266 sin ningún RTC | Reloj Nodemcu NTP Sin RTC | PROYECTO DE RELOJ DE INTERNET: En el proyecto se realizará un proyecto de reloj sin RTC, se tomará tiempo de Internet usando wifi y lo mostrará en la pantalla st7735
Trazado / registro de fecha / hora de Arduino usando Millis () y PfodApp: 11 pasos
Trazado / registro de fecha / hora de Arduino usando Millis () y PfodApp: No se requiere programación de Arduino o Android. También se admiten módulos RTC y GPS. Corrección automática para zonas horarias, deriva de RTC y segundos intercalares faltantes de GPS. Introducción Este tutorial le muestra cómo usar su Arduino millis ( ) marcas de tiempo para trazar datos ag
Reloj con control remoto por infrarrojos para ajustes de fecha / hora: 5 pasos
Reloj con control remoto por infrarrojos para ajustes de fecha / hora: este es un reloj simple hecho con componentes fácilmente disponibles. El microcontrolador utilizado es un STM32F030F4P6 económico. La pantalla es una pantalla LCD de 16x2 con mochila I2C (PCF8574). El circuito del reloj se puede construir utilizando pequeñas placas de prototipos y un TSSOP