Inhoudsopgave:
- Stap 1: Dingen die je nodig hebt
- Stap 2: Aansluitingen
- Stap 3: Bibliotheken downloaden
- Stap 4: Wat is NTP
- Stap 5: Codeergedeelte
- Stap 6: Datum en tijd ophalen
Video: Internetklok: datum en tijd weergeven met een OLED met ESP8266 NodeMCU met NTP-protocol - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
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
voor dit project heb je de volgende dingen nodig:
Esp8266/nodemcu
Oled ssd1306 0.96"
Doorverbindingsdraden
Breadboard
USB-kabel
Stap 2: Aansluitingen
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
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
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
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
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:
Tekst weergeven op OLED via internet: 9 stappen
Tekst weergeven op OLED via internet: Hallo en welkom, deze korte tutorial leert je om tekst op een Magicbit weer te geven met behulp van Magicblocks. Er zijn 2 hoofdmethoden om dit doel te bereiken; Door Inject Block te gebruiken. Door gebruik te maken van Dashboard. Log eerst in op uw Magicb
Tijd en datum ophalen van internet - zelfstudie: 9 stappen
Tijd en datum van internet halen - Zelfstudie: In deze zelfstudie leren we hoe u de datum en tijd van de NIST TIME-server kunt krijgen met behulp van M5Stack StickC en Visuino, Bekijk een demonstratievideo
Verspil geen tijd: gebruik NTP!: 8 stappen
Verspil uw tijd niet: gebruik NTP!: laat uw tijd tellen! Dit is een veelbesproken onderwerp onder mijn abonnees, en om welke reden? Vanwege het simpele en onmisbare feit dat wanneer je een datalogger maakt, en voor alles wat met automatisering te maken heeft, je de juiste tijd nodig hebt! En d
Een bericht op een SenseHat weergeven: 5 stappen
Hoe een bericht op een SenseHat te tonen: Hallo, vandaag laat ik je zien hoe je een bericht op een Raspberry Pi SenseHat kunt weergeven
Rechte kopteksten omzetten in haakse kopteksten (in een mum van tijd): 4 stappen
Converteer rechte headers naar rechthoekige headers (in een mum van tijd): na het zien van de aankondiging voor de arduino-wedstrijd, zei ik, hey waarom niet proberen. uit en kreeg de barebones arduino-kit, met de bedoeling "het op mijn manier te maken". Een van die veranderingen was een van de eerste dingen die je