Hammad Iqbal
Published © LGPL

Internet Clock (NTP)

This project will help you to get time from Internet for IoT projects, without requiring any extra RTC hardware.

IntermediateFull instructions provided1 hour2,032
Internet Clock (NTP)

Things used in this project

Hardware components

NodeMCU ESP8266 Breakout Board
NodeMCU ESP8266 Breakout Board
×1
Nokia 5110 LCD
×1

Software apps and online services

Arduino IDE
Arduino IDE

Hand tools and fabrication machines

10 Pc. Jumper Wire Kit, 5 cm Long
10 Pc. Jumper Wire Kit, 5 cm Long
Breadboard, 170 Pin
Breadboard, 170 Pin

Story

Read more

Custom parts and enclosures

NTP library

Time Library

Schematics

Circuit Diagram

Code

Program

C/C++
//hammadiqbal12@gmail.com


#include <Time.h>
#include <TimeLib.h>
#include <NTPClient.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>

const char *ssid     = "";
const char *password = "";

const int8_t RST_PIN = D1;
const int8_t CE_PIN = D2;
const int8_t DC_PIN = D0;
Adafruit_PCD8544 display = Adafruit_PCD8544(DC_PIN, CE_PIN, RST_PIN);
int GMT = 5;
int DAY, MONTH, YEAR, Seconds, Hours;
long int time_now;
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP);

void setup() {
  Serial.begin(115200);

  WiFi.begin(ssid, password);

  display.begin();
  display.setContrast(40);              // Adjust for your display

  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(BLACK);
  display.setCursor(0, 0);
  display.println("Unicorn");
  display.setCursor(0, 20);
  display.println("Devices");
  display.display();
  delay(2000);
  display.clearDisplay();

  while ( WiFi.status() != WL_CONNECTED ) {
    delay ( 500 );
    Serial.print ( "." );
  }

  timeClient.begin();
}

void loop() {
  timeClient.update();
  time_now = timeClient.getEpochTime() + (GMT * 3600);                            //get epoch time and adjust it according to your GMT
  DAY = day(time_now);
  MONTH = month(time_now);
  YEAR = year(time_now);
  Hours = hourFormat12(time_now);
  Seconds = second(time_now);

  LCD_DISPLAY(String(DAY), String(MONTH), String(YEAR));
  display.display();

  delay(1000);

}

void LCD_DISPLAY(String DAY, String MONTH, String YEAR)
{
  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(BLACK);
  display.setCursor(0, 5);
  if (Hours > 9)
    display.println(String(Hours) + ":" + timeClient.getMinutes());
  if (Hours < 10)
    display.println("0" + String(Hours) + ":" + timeClient.getMinutes());

  display.setTextSize(1);
  display.setTextColor(BLACK);
  display.setCursor(65, 5);
  display.println(String(Seconds));

  display.setTextSize(1);
  display.setTextColor(BLACK);
  display.setCursor(65, 14);
  if (isPM(time_now))
    display.println("PM");
  if (isAM(time_now))
    display.println("AM");


  display.setTextSize(1);
  display.setTextColor(BLACK);
  display.setCursor(15, 35);
  display.println(DAY + ":" + MONTH + ":" + YEAR);

}

Credits

Hammad Iqbal

Hammad Iqbal

6 projects • 41 followers
I'm an Electrical Engineer and here I'm to share my knowledge about Embedded system.

Comments