Sisällysluettelo:

Internet -kello: Näytä päivämäärä ja kellonaika OLED -tekniikalla käyttämällä ESP8266 -solmuaMCU ja NTP -protokolla: 6 vaihetta
Internet -kello: Näytä päivämäärä ja kellonaika OLED -tekniikalla käyttämällä ESP8266 -solmuaMCU ja NTP -protokolla: 6 vaihetta

Video: Internet -kello: Näytä päivämäärä ja kellonaika OLED -tekniikalla käyttämällä ESP8266 -solmuaMCU ja NTP -protokolla: 6 vaihetta

Video: Internet -kello: Näytä päivämäärä ja kellonaika OLED -tekniikalla käyttämällä ESP8266 -solmuaMCU ja NTP -protokolla: 6 vaihetta
Video: Extract GPS location in Arduino with NEO-6m or NEO-7M module 2024, Marraskuu
Anonim
Internet -kello: Näytä päivämäärä ja kellonaika OLED: llä käyttämällä ESP8266 NodeMCU: ta ja NTP -protokollaa
Internet -kello: Näytä päivämäärä ja kellonaika OLED: llä käyttämällä ESP8266 NodeMCU: ta ja NTP -protokollaa

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

Tarvitsemasi asiat
Tarvitsemasi asiat
Tarvitsemasi asiat
Tarvitsemasi asiat
Tarvitsemasi asiat
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

Liitännät
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

Lataa kirjastot
Lataa kirjastot
Lataa kirjastot
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

Mikä on NTP
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

Koodausosa
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

Päivämäärän ja ajan saaminen
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: