Мазмуну:
- 1 -кадам: Сизге керектүү нерселер
- 2 -кадам: Байланыштар
- 3 -кадам: Китепканаларды жүктөп алыңыз
- 4 -кадам: NTP деген эмне?
- 5 -кадам: Коддоо бөлүгү
- 6 -кадам: Дата жана Убакыт алуу
Video: Интернет сааты: NTP протоколу менен ESP8266 NodeMCU колдонуп OLED менен күндү жана убакытты көрсөтүү: 6 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:39
Салам балдар, бул көрсөтмөлөрдө биз интернеттен убакыт ала турган интернет саатын курабыз, андыктан бул проектти иштетүү үчүн эч кандай РТКнын кереги жок, болгону иштей турган интернет байланышы керек
Бул долбоор үчүн сизге esp8266 керек, ал интернетке кирүү үчүн Wi -Fiга ээ болот жана анда убакытты көрсөтүү үчүн дисплей бар жана esp8266 NTP протоколу менен интернеттен убакытты алат, ntp тармак убактысынын протоколун билдирет, андыктан негизинен ntp серверлери бар Интернетте компьютердик сааттарды синхрондоштуруу үчүн колдонулат жана биз долбоорубузга убакыт алуу үчүн бул серверлерди колдонобуз.
1 -кадам: Сизге керектүү нерселер
бул долбоор үчүн сизге төмөнкү нерселер керек болот:
Esp8266/nodemcu
Олед ssd1306 0.96"
Өткөргүч зымдар
Breadboard
USB кабели
2 -кадам: Байланыштар
Бул 4-пин OLED дисплей I2C протоколун колдонуп ESP8266 модулу менен байланышат, төмөндө OLED I2C казыктарын Интернет убактысын көрсөтүү үчүн NodeMCU менен туташтыруу үчүн схема жана туташуу таблицасы.
3 -кадам: Китепканаларды жүктөп алыңыз
Сүрөттө көрсөтүлгөндөй сиздин Arduino ide SD1306 китепканаларын жүктөп алганыңызды текшериңиз жана Adafruit GFX китепканасы экениңизге ишениңиз, эгер болбосо, анда бул эки китепкананы орнотуңуз.
Сиздин Arduino IDEде Libraries менеджерине барып NTPти издеп, мен жүктөгөндөй эле NTP кардар китепканасын жүктөп алыңыз, андан ары жардам алуу үчүн сүрөттү караңыз.
4 -кадам: NTP деген эмне?
NTP компьютер тармактарынын ортосундагы сааттарды синхрондоштуруу үчүн эң эски тармактык Интернет протоколунун (IP) бири. Ал 1981 -жылы Делавэр университетинин Дэвид Л. Миллс тарабынан иштелип чыккан. Бул протокол көптөгөн тармактарды бир нече миллисекунд ичинде Координацияланган Убакыт Убактысына (UTC) синхрондоштуруу үчүн колдонулушу мүмкүн. UTC - бул дүйнөлүк саат менен убакытты жөнгө салуучу негизги убакыт стандарты. UTC өзгөрбөйт жана ар кандай географиялык аймактар үчүн өзгөрөт. NTP убакытты маалымдама катары UTC колдонот жана Интернет боюнча так жана мезгилдештирилген убакытты камсыз кылат.
NTP иерархиялык кардар-сервер моделинде иштейт. Топ моделдин спутниктен убакыт алган атомдук сааттар, радио толкундары, GPS, GSM сыяктуу "stratum0" деп аталган маалымдама сааттары бар. 0 катмарынан убакыт алган серверлер "катмар1" деп аталат жана 1 катмынан убакыт алган серверлер "катмар2" ж.б.у.с. Бул улана берет жана убакыттын тактыгы ар бир этаптан кийин төмөндөйт. NTP автоматтык түрдө синхрондоштуруу үчүн бир нече жеткиликтүү убакыт булактарынын эң жакшысын тандайт, бул аны катачылыкка чыдамдуу протоколго айландырат. Бул жерде, бул долбоордо, биз NSP серверинен ESP8266 NodeMCU колдонуп, аны OLED дисплейинде көрсөтөбүз. Ушул эле интернет сааты мурунку окуу куралында ESP32 колдонуу менен курулган.
5 -кадам: Коддоо бөлүгү
Күндү жана убакытты сурап алуу үчүн, NTP серверлеринин дареги менен убакыт кардарын инициалдаңыз. Жакшыраак тактык үчүн географиялык аймакка жакын NTP серверлеринин дарегин тандаңыз. Бул жерде биз "pool.ntp.org" колдонобуз, ал дүйнө жүзү боюнча серверлерди берет. Эгерде сиз Азиядан серверлерди тандагыңыз келсе, "asia.pool.ntp.org" колдоно аласыз. timeClient ошондой эле UTC убактысын сиздин убакыт алкагыңыздын миллисекундунда алмаштырат. Мисалы, Индия үчүн UTC офсети +5: 30, ошондуктан биз бул офсетти 5*60*60 +30*60 = 19800 барабар болгон миллисекундтарга которобуз.
Аймак. UTC убактысы (саат жана мүнөт). UTC убактысы (секунд)
Индия +5: 30 19800
ЛОНДОН 0:00. 0
НЬЮ -ЙОРК -5: 00 -18000
Сураныч, төмөнкү кодду көчүрүп, кодуңузга wifi менен сырсөзүңүздү киргизиңиз жана кодго убакытты киргизиңиз, андан кийин esp8266 такталарына жүктөңүз.:
#"NTPClient.h" кошуу
#"SPI.h" // SPIди NodeMCu менен OLED менен иштөө үчүн
#"Adafruit_GFX.h" кошуу
#кошуу "Adafruit_SSD1306.h"
#define SCREEN_WIDTH 128 // OLED дисплейдин туурасы, пиксел менен
#define SCREEN_HEIGHT 64 // OLED дисплейдин бийиктиги, пиксел менен
#аныктоо OLED_RESET -1
Adafruit_SSD1306 дисплейи (SCREEN_WIDTH, SCREEN_HEIGHT, & Wire, OLED_RESET);
constchar *ssid = "yourwifissid";
const char *password = "yourwifipass";
WiFiUDP ntPUDP;
NTPClient timeClient (ntPUDP, "pool.ntp.org", 19800, 60000);
String arr_days = {"жекшемби", "дүйшөмбү", "шейшемби", "шаршемби", "бейшемби", "жума", "ишемби"};
String date_time; // Сиз убакыт серверинин бассейнин жана жылышын көрсөтө аласыз (секунда менен // кийинчерээк setTimeOffset () менен өзгөртүлүшү мүмкүн). Кошумча түрдө сиз // жаңыртуу интервалын көрсөтө аласыз (миллисекундтарда, setUpdateInterval () аркылуу өзгөртүлүшү мүмкүн).
жараксыз орнотуу ()
{
Serial.begin (115200);
WiFi.begin (ssid, сырсөз);
while (WiFi.status ()! = WL_CONNECTED)
{
кечигүү (500);
Serial.print (".");
}
эгер (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println (F ("SSD1306 бөлүштүрүлбөй калды"));
үчүн (;;); // Улантпаңыз, түбөлүккө айлантыңыз
}
display.clearDisplay ();
display.setTextSize (2); // 2X масштабдуу текстти тартыңыз
display.setTextColor (АК);
display.setCursor (5, 2);
display.println ("WELCOME TO");
display.println ("көрсөтмөлөр");
display.println ("Долбоор");
display.display ();
кечигүү (3000);
timeClient.begin ();
}
боштук цикл ()
{
timeClient.update ();
display.clearDisplay ();
Serial.println (timeClient.getFormattedTime ());
display.setTextSize (2); // 2X масштабдуу текстти тартыңыз
display.setTextColor (КӨК);
display.setCursor (0, 2);
int hh = timeClient.getHours ();
int mm = timeClient.getMinutes ();
int ss = timeClient.getSeconds ();
эгер (hh> 12)
{
hh = hh-12;
display.print (hh);
display.print (":");
көрсөтүү.басуу (мм);
display.print (":");
display.print (ss);
display.println ("PM");
}
башка
{
display.print (hh);
display.print (":");
көрсөтүү.басуу (мм);
display.print (":");
display.print (ss);
display.println ("AM");
}
int күнү = timeClient.getDay ();
display.println ("'"+arr_days [day]+"'");
date_time = timeClient.getFormattedDate ();
int index_date = date_time.indexOf ("T");
String date = date_time.substring (0, index_date);
Serial.println (дата);
display.println (дата);
display.display ();
// Баштапкы текстти көрсөтүү}
6 -кадам: Дата жана Убакыт алуу
эгер сиз бардыгын туура туташтырсаңыз жана кодду туура жүктөсөңүз, анда сиз ntp саатыңыздын дисплейде меникиндей болуп иштегенин көрө аласыз. Сураныч, чыгаруу үчүн сүрөттү караңыз.
Сунушталууда:
DIY Visuino колдонуп M5StickC ESP32де убакытты кантип көрсөтүү керек - Оңой жасоо: 9 кадам
DIY кантип M5StickC ESP32де Visuino аркылуу убакытты көрсөтөт - Оңой жасалат: Бул үйрөткүчтө биз ESP32 M5Stack StickCти Arduino IDE жана Visuino менен ЖКда көрсөтүү үчүн программалоону үйрөнөбүз
Күндү жана убакытты кантип жазуу керек - Liono Maker: 5 кадам
Күндү жана убакытты кантип жазуу керек | Liono Maker: Киришүү: -Бул үйрөткүчтө биз Arduino менен күндү жана убакытты жазууну үйрөнөбүз. Бул үчүн мен DS3231 колдонуп жатам & Micro SD Card Modules.The негизги модул убакыт үчүн колдонулат & датаны каттоо DS3231. DS3231 - бул RTC (чыныгы ти
Макей Макей көрсөтүү жана көрсөтүү: 12 кадам (сүрөттөр менен)
Макей Макей Шоу жана Айтуу Дисплейи: 19 жыл окуткандан кийин, мен эч качан жаңы, жаркыраган, кызыктуу маалымат тактасына болгон сүйүүмдү жоготкон жокмун! Менин маалымат тактасынын стили көп жылдар бою кооз, дүкөндөн сатып алынган, майрамдык тематикалык кесимдерден баштап, студенттеримдин эмгектеринин маанисине чейин өзгөрдү. Мен
Visuino - NodeMCU колдонуп Интернет NIST серверинен так убакытты алыңыз: 8 кадам
Visuino - Интернет NIST серверинен NodeMCU аркылуу так убакытты алыңыз: Бул окуу куралында биз NodeMCU Mini, OLED Lcd жана Visuino аркылуу NIST Serverден Lcdдеги жандуу интернетти көрсөтүү үчүн колдонобуз. Демонстрациялык видеону көрүңүз. Илхам үчүн кредит youtube колдонуучусуна " Ciprian Balalau "
Сүйкүмдүү датаны, убакытты жана температураны көрсөтүү бирдиги: 3 кадам
Сүйкүмдүү датаны, убакытты жана температураны көрсөтүү бирдиги: Салам достор, бул көрсөтмөдө мен Arduino pro mini, RTC жана сегиз орундуу жети сегменттүү дисплейди колдонуу менен күндү, убакытты жана учурдагы температураны көрсөтүү бирдигин түзүүнүн жол -жобосун түшүндүрөм. абдан компакт бирдикте, бул пайдалуу түзмөк