Სარჩევი:
- ნაბიჯი 1: ის, რაც გჭირდებათ
- ნაბიჯი 2: კავშირები
- ნაბიჯი 3: ჩამოტვირთეთ ბიბლიოთეკები
- ნაბიჯი 4: რა არის NTP
- ნაბიჯი 5: კოდირების ნაწილი
- ნაბიჯი 6: მიიღეთ თარიღი და დრო
ვიდეო: ინტერნეტ საათი: ჩვენება თარიღი და დრო OLED გამოყენებით ESP8266 NodeMCU NTP პროტოკოლით: 6 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:17
გამარჯობა ბიჭებო ამ ინსტრუქციებში ჩვენ ავაშენებთ ინტერნეტ საათს რომელიც მიიღებს დროს ინტერნეტიდან ამ პროექტს არ დასჭირდება არანაირი RTC გაშვება, მას დასჭირდება მხოლოდ სამუშაო ინტერნეტ კავშირი
და ამ პროექტისათვის გჭირდებათ esp8266 რომელსაც ექნება wifi ინტერნეტის მისაღებად და ჩვენება მასზე დროის გამოსაჩენად და esp8266 მიიღებს დროს ინტერნეტიდან NTP პროტოკოლის გამოყენებით, ntp ნიშნავს ქსელის დროის პროტოკოლს, ასე რომ ძირითადად არსებობს ntp სერვერები ინტერნეტში, რომელიც გამოიყენება კომპიუტერის საათების სინქრონიზაციისთვის და ჩვენ ვიყენებთ ამ სერვერებს, რომ მივიღოთ დრო ჩვენს პროექტში.
ნაბიჯი 1: ის, რაც გჭირდებათ
ამ პროექტისთვის დაგჭირდებათ შემდეგი ნივთები:
Esp8266/nodemcu
ოლედი ssd1306 0.96"
ჯუმბერის მავთულები
პურის დაფა
USB კაბელი
ნაბიჯი 2: კავშირები
ეს 4 პინიანი OLED ეკრანი ESP8266 მოდულთან კომუნიკაციას ახდენს I2C პროტოკოლის გამოყენებით, ქვემოთ მოცემულია წრიული დიაგრამა და კავშირების ცხრილი OLED I2C ქინძისთავების დასაკავშირებლად NodeMCU– სთან ინტერნეტის დროის საჩვენებლად.
ნაბიჯი 3: ჩამოტვირთეთ ბიბლიოთეკები
დარწმუნდით, რომ გადმოწერილი გაქვთ SD1306 ბიბლიოთეკები თქვენს Arduino ide– ში, როგორც ეს მოცემულია სურათზე და დარწმუნდით, რომ თქვენ ასევე გაქვთ Adafruit GFX ბიბლიოთეკა, თუ არა, მაშინ დააინსტალირეთ ეს ორი ბიბლიოთეკა.
თქვენს Arduino IDE- ში გადადით ბიბლიოთეკების მენეჯერში და მოძებნეთ NTP და გადმოწერეთ NTP კლიენტის ბიბლიოთეკა გადმოწერილი სახით, მიმართეთ სურათს შემდგომი დახმარებისთვის.
ნაბიჯი 4: რა არის NTP
NTP არის ერთ – ერთი უძველესი ინტერნეტ პროტოკოლი (IP) კომპიუტერული ქსელებისთვის საათის სინქრონიზაციისათვის. ის შეიქმნა დევიდ ლ. მილსის მიერ დელავერის უნივერსიტეტიდან 1981 წელს. ეს პროტოკოლი შეიძლება გამოყენებულ იქნას მრავალი ქსელის სინქრონიზაციისათვის კოორდინირებულ უნივერსალურ დროზე (UTC) რამდენიმე მილიწამში. UTC არის დროის ძირითადი სტანდარტი, რომლის მიხედვითაც სამყარო არეგულირებს საათს და დროს. UTC არ იცვლება და განსხვავდება სხვადასხვა გეოგრაფიული მდებარეობისთვის. NTP იყენებს UTC როგორც დროის მითითებას და უზრუნველყოფს ზუსტ და სინქრონიზებულ დროს ინტერნეტში.
NTP მუშაობს იერარქიულ კლიენტ-სერვერის მოდელზე. ტოპ მოდელს აქვს საცნობარო საათები, რომლებიც ცნობილია როგორც "stratum0", როგორიცაა ატომური საათები, რადიოტალღები, GPS, GSM, რომელიც იღებს დროს თანამგზავრიდან. სერვერებს, რომლებიც დროს იღებენ stratum0– დან, ეწოდება „stratum1“, ხოლო სერვერებს, რომლებიც იღებენ დროს stratum1– დან, ეწოდება „stratum2“და ასე შემდეგ. ეს გრძელდება და დროის სიზუსტე მცირდება ყოველი ეტაპის შემდეგ. NTP ავტომატურად ირჩევს სინქრონიზაციისათვის არსებული დროის რამდენიმე წყაროდან საუკეთესოს, რაც მას შეცდომების შემწყნარებლურ პროტოკოლად აქცევს. ასე რომ, ამ პროექტში, ჩვენ ვიღებთ დროს NTP სერვერისგან 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" #მოიცავს "ESP8266WiFi.h" // უზრუნველყოფს ESP8266 სპეციფიკურ Wi-Fi რუტინას, რომელსაც ჩვენ ვიძახებთ ქსელთან დასაკავშირებლად #მოიცავს "WiFiUdp.h" // ამუშავებს UDP პაკეტების გაგზავნას და მიღებას
#ჩართეთ "SPI.h" // SPI OLED– თან ინტერფეისისათვის NodeMCu– სთან
#მოიცავს "Adafruit_GFX.h"
#მოიცავს "Adafruit_SSD1306.h"
#განსაზღვრეთ SCREEN_WIDTH 128 // OLED ჩვენების სიგანე, პიქსელებში
#განსაზღვრეთ SCREEN_HEIGHT 64 // OLED ჩვენების სიმაღლე, პიქსელებში
#განსაზღვრეთ OLED_RESET -1
Adafruit_SSD1306 ჩვენება (SCREEN_WIDTH, SCREEN_HEIGHT, & Wire, OLED_RESET);
constchar *ssid = "yourwifissid";
const char *პაროლი = "yourwifipass";
WiFiUDP ntpUDP;
NTP კლიენტის დრო კლიენტი (ntpUDP, "pool.ntp.org", 19800, 60000);
სიმებიანი arr_days = {"კვირა", "ორშაბათი", "სამშაბათი", "ოთხშაბათი", "ხუთშაბათი", "პარასკევი", "შაბათი"};
სიმებიანი თარიღი_დრო; // თქვენ შეგიძლიათ მიუთითოთ დროის სერვერის აუზი და ოფსეტური (წამებში, შეიძლება // შეიცვალოს მოგვიანებით setTimeOffset ()). დამატებით შეგიძლიათ მიუთითოთ // განახლების ინტერვალი (მილიწამებში, შეიძლება შეიცვალოს setUpdateInterval ()) გამოყენებით.
ბათილად დაყენება ()
{
Serial.begin (115200);
WiFi.begin (ssid, პაროლი);
ხოლო (WiFi.status ()! = WL_CONNECTED)
{
დაგვიანება (500);
Serial.print (".");
}
თუ (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println (F ("SSD1306 გამოყოფა ვერ მოხერხდა"));
for (;;); // ნუ გააგრძელებ, მარყუჟი სამუდამოდ
}
display.clearDisplay ();
display.setTextSize (2); // დახაზეთ 2X მასშტაბის ტექსტი
display.setTextColor (WHITE);
display.setCursor (5, 2);
display.println ("WELCOME TO");
display.println ("ინსტრუქციები");
display.println ("პროექტი");
ჩვენება. ჩვენება ();
დაგვიანება (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 ();
თუ (სთ> 12)
{
hh = hh-12;
ჩვენება. ბეჭდვა (სთ);
display.print (":");
ჩვენება. ბეჭდვა (მმ);
display.print (":");
ჩვენება. ბეჭდვა (ss);
display.println ("PM");
}
სხვა
{
ჩვენება. ბეჭდვა (სთ);
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");
სიმებიანი თარიღი = date_time.substring (0, index_date);
Serial.println (თარიღი);
ჩვენება. ბეჭდვა (თარიღი);
ჩვენება. ჩვენება ();
// საწყისი ტექსტის ჩვენება}
ნაბიჯი 6: მიიღეთ თარიღი და დრო
თუ ყველაფერი სწორად დააკავშირე და კოდიც სწორად ატვირთე, მაშინ შეგიძლია ნახო შენი ntp საათი გაშვებული oled ეკრანზე, როგორც ჩემი oled ეკრანზე. გთხოვთ მიმართოთ სურათს გამომავალი.
გირჩევთ:
ESP8266 OLED - მიიღეთ დრო და თარიღი ინტერნეტიდან: 8 ნაბიჯი
ESP8266 OLED - მიიღეთ დრო და თარიღი ინტერნეტიდან: ამ გაკვეთილში ჩვენ ვისწავლით თუ როგორ უნდა მიიღოთ თარიღი და დრო NIST TIME სერვერისგან ESP8266 OLED და Visuino გამოყენებით, უყურეთ სადემონსტრაციო ვიდეოს
Visuino - მიიღეთ ზუსტი დრო ინტერნეტ NIST სერვერიდან NodeMCU გამოყენებით: 8 ნაბიჯი
Visuino - მიიღეთ ზუსტი დრო ინტერნეტ NIST სერვერიდან NodeMCU– ს გამოყენებით: ამ გაკვეთილში ჩვენ გამოვიყენებთ NodeMCU Mini, OLED Lcd და Visuino– ს, რათა გამოვავლინოთ ინტერნეტის პირდაპირი დრო NIST სერვერიდან Lcd– ზე. უყურეთ სადემონსტრაციო ვიდეოს. შთაგონების დამსახურებაა youtube– ის მომხმარებელი " Ciprian Balalau "
ESP8266 ქსელის საათი ყოველგვარი RTC - Nodemcu NTP საათი არა RTC - პროექტი ინტერნეტ საათზე: 4 ნაბიჯი
ESP8266 ქსელის საათი ყოველგვარი RTC | Nodemcu NTP საათი არ არის RTC | ინტერნეტის საათის პროექტი: პროექტში იქნება საათის პროექტი RTC– ის გარეშე, ის მიიღებს დროს ინტერნეტიდან wifi– ს გამოყენებით და ის გამოჩნდება st7735 ეკრანზე
Arduino თარიღი/დრო შეთქმულება/ჩაწერა Millis () და PfodApp გამოყენებით: 11 ნაბიჯი
Arduino თარიღი/დრო შედგენა/ჩაწერა Millis () და PfodApp გამოყენებით: არ არის საჭირო Arduino ან Android პროგრამირება. RTC და GPS მოდულები ასევე მხარს უჭერს. ავტომატური კორექტირება დროის ზონებისთვის, RTC დრიფტი და GPS დაკარგული ნახტომი წამი შესავალი ეს გაკვეთილი გიჩვენებთ თუ როგორ გამოიყენოთ თქვენი Arduino millis ( ) დროის ნიშნულები მონაცემების შედგენისთვის
თარიღი, დრო და ტემპერატურა ჩვენება XinaBox– ის გამოყენებით: 8 ნაბიჯი
თარიღი, დრო და ტემპერატურის ჩვენება XinaBox– ის გამოყენებით: მაგარი OLED ჩვენება აჩვენებს თარიღს, დროს და ტემპერატურას ცელსიუსსა და ფარენჰეიტში Xinabox xChips– ის გამოყენებით ESP8266– ის საფუძველზე