Sisällysluettelo:
- Vaihe 1: Tarvitsemasi asiat
- Vaihe 2: Liitännät
- Vaihe 3: Lataa kirjastot
- Vaihe 4: Mikä on NTP
- Vaihe 5: Koodausosa
- Vaihe 6: Päivämäärän ja ajan saaminen
Video: Internet -kello: Näytä päivämäärä ja kellonaika OLED -tekniikalla käyttämällä ESP8266 -solmuaMCU ja NTP -protokolla: 6 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
Hei kaverit tässä ohjeessa, rakennamme Internet -kellon, joka saa aikaa Internetistä, joten tämä projekti ei tarvitse RTC: tä suoritettavaksi, se tarvitsee vain toimivan Internet -yhteyden
Ja tähän projektiin tarvitset esp8266: n, jossa on wifi Internet -yhteyden saamiseksi ja näyttö, joka näyttää sen ajan, ja esp8266 hakee aikaa Internetistä NTP -protokollan avulla, ntp tarkoittaa verkon aikaprotokollaa, joten pohjimmiltaan on olemassa ntp -palvelimia verkossa, joita käytetään tietokoneiden kellojen synkronointiin, ja käytämme näitä palvelimia saadaksemme aikaa projektissamme.
Vaihe 1: Tarvitsemasi asiat
tätä projektia varten tarvitset seuraavat asiat:
Esp8266/nodemcu
Oled SSD1306 0,96"
Hyppyjohdot
Leipälauta
USB kaapeli
Vaihe 2: Liitännät
Tämä 4-nastainen OLED-näyttö kommunikoi ESP8266-moduulin kanssa käyttäen I2C-protokollaa, alla on kytkentäkaavio ja liitäntätaulukko OLED I2C-nastojen liittämiseksi NodeMCU: n kanssa Internet-ajan näyttämiseksi.
Vaihe 3: Lataa kirjastot
Varmista, että olet ladannut SD1306 -kirjastoja Arduino -ideasi, kuten kuvassa näkyy, ja varmista, että olet myös Adafruit GFX -kirjasto, jos et, asenna nämä kaksi kirjastoa.
Siirry Arduino IDE: ssä kirjastojenhallintaan ja etsi NTP ja lataa vain NTP -asiakaskirjasto ladatessani, katso lisätietoja kuvasta.
Vaihe 4: Mikä on NTP
NTP on yksi vanhimmista verkkoprotokollista (IP) kellojen synkronoimiseksi tietokoneverkkojen välillä. Sen suunnitteli David L. Mills Delawaren yliopistosta vuonna 1981. Tätä protokollaa voidaan käyttää monien verkkojen synkronoimiseen UTC -aikaan (Coordinated Universal Time) muutaman millisekunnin kuluessa. UTC on ensisijainen aikastandardi, jolla maailma säätelee kelloa ja aikaa. UTC ei muutu ja vaihtelee eri maantieteellisten sijaintien mukaan. NTP käyttää UTC: tä aikaviitteenä ja tarjoaa tarkan ja synkronoidun ajan Internetissä.
NTP toimii hierarkkisessa asiakas-palvelin-mallissa. Huippumallissa on viitekelloja, jotka tunnetaan nimellä”stratum0”, kuten atomikellot, radioaallot, GPS, GSM, joka vastaanottaa aikaa satelliitista. Palvelimia, jotka vastaanottavat aikaa stratum0: lta, kutsutaan stratum1: ksi ja palvelimia, jotka saavat aikaa stratum1: ltä, kutsutaan stratum2: ksi ja niin edelleen. Tämä jatkuu ja ajan tarkkuus laskee jokaisen vaiheen jälkeen. NTP valitsee automaattisesti parhaan useista käytettävissä olevista aikalähteistä synkronoitavaksi, mikä tekee siitä vikasietoisen protokollan. Joten tässä tässä projektissa saamme aikaa NTP -palvelimelta ESP8266 NodeMCU: n avulla ja näytämme sen OLED -näytöllä. Tämä samanlainen Internet -kello on rakennettu käyttämällä ESP32: ta edellisessä opetusohjelmassa.
Vaihe 5: Koodausosa
Jos haluat pyytää päivämäärää ja kellonaikaa, alusta aikasovellus NTP -palvelimien osoitteella. Valitse parempi maantieteellistä aluettasi lähellä olevien NTP -palvelimien osoite. Täällä käytämme”pool.ntp.org”, joka antaa palvelimia kaikkialta maailmasta. Jos haluat valita palvelimet Aasiasta, voit käyttää”asia.pool.ntp.org”. timeClient ottaa myös UTC -ajan siirtymän aikavyöhykkeesi millisekunteina. Esimerkiksi Intian UTC -poikkeama on +5: 30, joten muunnamme tämän siirtymän millisekunteina, joka on 5*60*60 +30*60 = 19800.
Alue. UTC -ajan siirtymä (tunnit ja minuutit). UTC -ajan siirtymä (sekuntia)
INTIA +5: 30 19800
LONDON 0:00. 0
NEW YORK -5: 00-18000
Kopioi seuraava koodi ja kirjoita wifi ja salasana koodiin ja kirjoita koodin aikaero ja lataa se sitten esp8266 -levyillesi.:
#include "NTPClient.h" #include "ESP8266WiFi.h" // tarjoaa ESP8266-spesifiset Wi-Fi-rutiinit, joihin soitamme muodostaaksesi yhteyden verkkoon #include "WiFiUdp.h" // hoitaa UDP-pakettien lähettämisen ja vastaanottamisen
#include "SPI.h" // SPI OLED: n liittämiseksi NodeMCu: n kanssa
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
#define SCREEN_WIDTH 128 // OLED -näytön leveys pikseleinä
#define SCREEN_HEIGHT 64 // OLED -näytön korkeus pikseleinä
#define OLED_RESET -1
Adafruit_SSD1306 -näyttö (SCREEN_WIDTH, SCREEN_HEIGHT & Wire, OLED_RESET);
constchar *ssid = "sinun vaimosi";
const char *password = "oma wifipassisi";
WiFiUDP ntpUDP;
NTPClient timeClient (ntpUDP, "pool.ntp.org", 19800, 60000);
String arr_days = {"sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"};
Merkkijono date_time; // Voit määrittää aikapalvelimen poolin ja siirtymän (sekunneissa, voidaan // muuttaa myöhemmin setTimeOffset () -toiminnolla). Lisäksi voit määrittää // päivitysvälin (millisekunteina, voidaan muuttaa käyttämällä setUpdateInterval ()).
mitätön asennus ()
{
Sarja.alku (115200);
WiFi.begin (ssid, salasana);
while (WiFi.status ()! = WL_CONNECTED)
{
viive (500);
Serial.print (".");
}
if (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println (F ("SSD1306 varaus epäonnistui"));
(;;); // Älä jatka, silmukka ikuisesti
}
display.clearDisplay ();
display.setTextSize (2); // Piirrä 2X-mittakaavan teksti
display.setTextColor (VALKOINEN);
display.setCursor (5, 2);
display.println ("TERVETULOA");
display.println ("ohjeet");
display.println ("Projekti");
display.display ();
viive (3000);
timeClient.begin ();
}
tyhjä silmukka ()
{
timeClient.update ();
display.clearDisplay ();
Serial.println (timeClient.getFormattedTime ());
display.setTextSize (2); // Piirrä 2X-mittakaavan teksti
display.setTextColor (SININEN);
display.setCursor (0, 2);
int hh = timeClient.getHours ();
int mm = timeClient.getMinutes ();
int ss = timeClient.getSeconds ();
jos (hh> 12)
{
hh = hh-12;
näyttö. tulostus (hh);
display.print (":");
näyttö. painatus (mm);
display.print (":");
display.print (ss);
display.println ("PM");
}
muu
{
näyttö. tulostus (hh);
display.print (":");
näyttö. painatus (mm);
display.print (":");
display.print (ss);
display.println ("AM");
}
int day = timeClient.getDay ();
display.println ("" "+saapumispäivät [päivä]+" "");
date_time = timeClient.getFormattedDate ();
int index_date = date_time.indexOf ("T");
Merkkijonopäivämäärä = date_time.substring (0, index_date);
Serial.println (päivämäärä);
display.println (päivämäärä);
display.display ();
// Näytä alkuperäinen teksti}
Vaihe 6: Päivämäärän ja ajan saaminen
jos liitit kaiken oikein ja latasit myös koodin oikein, näet, että ntp -kellosi toimii olet -näytöllä, kun olen käynnissä olet -näytössä. Katso tulostusta kuvasta.
Suositeltava:
ESP8266 OLED - Hae aika ja päivämäärä Internetistä: 8 vaihetta
ESP8266 OLED - Hae aika ja päivämäärä Internetistä: Tässä opetusohjelmassa opimme päivämäärän ja kellonajan saamisen NIST TIME -palvelimelta ESP8266 OLED- ja Visuino -tekniikan avulla. Katso esittelyvideo
Näytä teksti OLED -verkossa Internetin kautta: 9 vaihetta
Näytä teksti OLED -verkossa Internetin kautta: Hei ja tervetuloa! Tämä lyhyt opetusohjelma opettaa näyttämään tekstiä Magicbitillä Magicblocks -tekniikan avulla. Käyttämällä Inject Blockia. Käytä Dashboardia.Ensinnäkin kirjaudu sisään Magicb -laitteeseesi
Hae aika ja päivämäärä Internetistä - opetusohjelma: 9 vaihetta
Hae aika ja päivämäärä Internetistä - opetusohjelma: Tässä opetusohjelmassa opimme päivämäärän ja kellonajan saamisen NIST TIME -palvelimelta M5Stack StickC: n ja Visuinon avulla. Katso esittelyvideo
Näytä suorittimen aika ESP Wemos D1 OLED -laitteessa: 7 vaihetta
Näytä suorittimen aika ESP Wemos D1 OLED: Tässä opetusohjelmassa käytämme ESP Wemos D1 OLED: ää ja Visuinoa CPU -ajan näyttämiseen OLED -näytöllä
Näytä hallintapaneelit Emoncms & ESP8266 + Arduino #IoT: 7 vaihetta (kuvilla)
Näytä koontinäytöt Emoncms & ESP8266 + Arduino #IoT: Olen pitkään testannut Emoncms -alustaa ja tässä tilaisuudessa näytän sinulle lopputuloksen ja koontinäyttöjen ja / tai visualisointien laadun. visualisoimme