Inhoudsopgave:

Internetklok: datum en tijd weergeven met een OLED met ESP8266 NodeMCU met NTP-protocol - Ajarnpa
Internetklok: datum en tijd weergeven met een OLED met ESP8266 NodeMCU met NTP-protocol - Ajarnpa

Video: Internetklok: datum en tijd weergeven met een OLED met ESP8266 NodeMCU met NTP-protocol - Ajarnpa

Video: Internetklok: datum en tijd weergeven met een OLED met ESP8266 NodeMCU met NTP-protocol - Ajarnpa
Video: Deze 6 WhatsApp tricks kende je waarschijnlijk nog niet! 2024, November
Anonim
Internetklok: datum en tijd weergeven met een OLED met ESP8266 NodeMCU met NTP-protocol
Internetklok: datum en tijd weergeven met een OLED met ESP8266 NodeMCU met NTP-protocol

Hallo jongens in deze instructables zullen we een internetklok bouwen die tijd van internet haalt, dus dit project heeft geen RTC nodig om te draaien, het heeft alleen een werkende internetverbinding nodig

En voor dit project heb je een esp8266 nodig die wifi heeft om internettoegang te krijgen en een display om de tijd erop weer te geven en esp8266 haalt de tijd van internet op met behulp van het NTP-protocol, ntp staat voor netwerktijdprotocol, dus eigenlijk zijn er ntp-servers op het web die worden gebruikt om computerklokken te synchroniseren en we zullen deze servers gebruiken om tijd in ons project te krijgen.

Stap 1: Dingen die je nodig hebt

Dingen die je nodig hebt
Dingen die je nodig hebt
Dingen die je nodig hebt
Dingen die je nodig hebt
Dingen die je nodig hebt
Dingen die je nodig hebt

voor dit project heb je de volgende dingen nodig:

Esp8266/nodemcu

Oled ssd1306 0.96"

Doorverbindingsdraden

Breadboard

USB-kabel

Stap 2: Aansluitingen

Verbindingen
Verbindingen

Dit 4-pins OLED-scherm communiceert met de ESP8266-module met behulp van het I2C-protocol, hieronder vindt u het schakelschema en de verbindingstabel om OLED I2C-pinnen te verbinden met NodeMCU om internettijd weer te geven.

Stap 3: Bibliotheken downloaden

Bibliotheken downloaden
Bibliotheken downloaden
Bibliotheken downloaden
Bibliotheken downloaden

Zorg ervoor dat je SD1306-bibliotheken hebt gedownload in je Arduino-idee zoals weergegeven in de afbeelding en zorg ervoor dat je ook de Adafruit GFX-bibliotheek hebt, zo niet, installeer dan deze twee bibliotheken.

Ga in je Arduino IDE naar Bibliothekenbeheer en zoek naar NTP en download gewoon de NTP-clientbibliotheek zoals ik heb gedownload, raadpleeg de afbeelding voor meer hulp.

Stap 4: Wat is NTP

Wat is NTP
Wat is NTP

NTP is een van de oudste netwerk-internetprotocollen (IP) voor het synchroniseren van klokken tussen computernetwerken. Het werd in 1981 ontworpen door David L. Mills van de Universiteit van Delaware. Dit protocol kan worden gebruikt om veel netwerken binnen enkele milliseconden te synchroniseren met Coordinated Universal Time (UTC). UTC is de primaire tijdstandaard waarmee de wereld klok en tijd regelt. UTC verandert niet en varieert voor verschillende geografische locaties. NTP gebruikt UTC als tijdreferentie en biedt nauwkeurige en gesynchroniseerde tijd op internet.

NTP werkt volgens een hiërarchisch client-servermodel. Topmodel heeft referentieklokken die bekend staan als "stratum0" zoals atoomklokken, radiogolven, GPS, GSM die tijd ontvangt van de satelliet. De servers die tijd ontvangen van stratum0 worden "stratum1" genoemd en servers die tijd ontvangen van stratum1 worden "stratum2" genoemd, enzovoort. Dit gaat zo door en de nauwkeurigheid van de tijd wordt steeds kleiner na elke fase. NTP selecteert automatisch het beste van verschillende beschikbare tijdbronnen om te synchroniseren, wat het een fouttolerant protocol maakt. Dus hier in dit project krijgen we tijd van de NTP-server met behulp van ESP8266 NodeMCU en tonen deze op OLED-display. Deze zelfde soort internetklok is gebouwd met behulp van ESP32 in de vorige tutorial.

Stap 5: Codeergedeelte

Codeergedeelte
Codeergedeelte

Om datum en tijd op te vragen, initialiseert u de tijdclient met het adres van de NTP-servers. Kies voor een betere nauwkeurigheid het adres van NTP-servers die zich dicht bij uw geografische gebied bevinden. Hier gebruiken we "pool.ntp.org" die servers van over de hele wereld geeft. Als u servers uit Azië wilt kiezen, kunt u "asia.pool.ntp.org" gebruiken. timeClient neemt ook UTC-tijdverschuiving in milliseconden van uw tijdzone. UTC-offset voor India is bijvoorbeeld +5:30, dus we converteren deze offset in milliseconden, wat gelijk is aan 5*60*60+30*60 = 19800.

Gebied. UTC-tijdverschuiving (uren en minuten). UTC-tijdverschuiving (seconden)

INDIA +5:30 1800

LONDEN 0:00. 0

NEW YORK -5:00 -18000

Kopieer de volgende code en voer uw wifi en wachtwoord in de code in en voer de tijdverschuiving in de code in en upload deze vervolgens naar uw esp8266-borden.:

#include "NTPClient.h"#include "ESP8266WiFi.h" // biedt ESP8266 specifieke wifi-routines die we bellen om verbinding te maken met het netwerk #include "WiFiUdp.h" //verzorgt het verzenden en ontvangen van UDP-pakketten

#include "SPI.h" // SPI voor het koppelen van OLED met NodeMCu

#include "Adafruit_GFX.h"

#include "Adafruit_SSD1306.h"

#define SCREEN_WIDTH 128 // OLED-schermbreedte, in pixels

#define SCREEN_HEIGHT 64 // OLED-schermhoogte, in pixels

#define OLED_RESET -1

Adafruit_SSD1306-display (SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

constchar *ssid = "uw wifissid";

const char *wachtwoord = "uwwifipass";

WiFiUDP ntpUDP;

NTPClient timeClient(ntpUDP, "pool.ntp.org", 19800, 60000);

String arr_days={"zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"};

Tekenreeks datum_tijd; // U kunt de tijdserverpool en de offset specificeren (in seconden, kan // later worden gewijzigd met setTimeOffset()). Daarnaast kunt u het // update-interval specificeren (in milliseconden, kan worden gewijzigd met setUpdateInterval()).

ongeldige setup()

{

Serieel.begin(115200);

WiFi.begin(ssid, wachtwoord);

while (WiFi.status() != WL_CONNECTED)

{

vertraging (500);

Serieafdruk (".");

}

if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))

{

Serial.println (F ("SSD1306-toewijzing mislukt"));

voor(;;); // Ga niet verder, loop voor altijd door

}

display.clearDisplay();

display.setTextSize(2); // Teken tekst op 2X-schaal

display.setTextColor(WIT);

display.setCursor(5, 2);

display.println("WELKOM BIJ");

display.println ("instructables");

display.println(" Project");

weergave.weergave();

vertraging (3000);

timeClient.begin();

}

lege lus()

{

timeClient.update();

display.clearDisplay();

Serial.println(timeClient.getFormattedTime());

display.setTextSize(2); // Teken tekst op 2X-schaal

display.setTextColor(BLAUW);

display.setCursor(0, 2);

int hh = timeClient.getHours();

int mm = timeClient.getMinutes();

int ss = timeClient.getSeconds();

als(uu>12)

{

hh=hh-12;

display.print(uu);

display.print(":");

weergave.afdruk (mm);

display.print(":");

display.print(ss);

display.println ("PM");

}

anders

{

display.print(uu);

display.print(":");

weergave.afdruk (mm);

display.print(":");

display.print(ss);

display.println ("AM");

}

int dag = timeClient.getDay();

display.println("'"+arr_days[day]+"'");

date_time = timeClient.getFormattedDate();

int index_date = date_time.indexOf("T");

String datum = date_time.substring (0, index_date);

Serial.println(datum);

display.println(datum);

weergave.weergave();

// Toon begintekst }

Stap 6: Datum en tijd ophalen

Datum en tijd ophalen
Datum en tijd ophalen

als je alles goed hebt aangesloten en de code ook correct hebt geüpload, kun je je ntp-klok op het oled-display zien lopen als de mijne in het oled-display. Raadpleeg de afbeelding voor uitvoer.

Aanbevolen: