Სარჩევი:
- ნაბიჯი 1: დემონსტრაცია
- ნაბიჯი 2: შეკრება
- ნაბიჯი 3: შეკრება - მაგიდა
- ნაბიჯი 4: ადაფრუტის GFX ბიბლიოთეკა
- ნაბიჯი 5: ადაფრუტის ST7735 ბიბლიოთეკა
- ნაბიჯი 6: NTP კლიენტის ბიბლიოთეკა
- ნაბიჯი 7: ESP32_NTP.ino
- ნაბიჯი 8: ფაილები
ვიდეო: ნუ დაკარგავთ დროს: გამოიყენეთ NTP!: 8 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:19
დაითვალეთ თქვენი დრო! ეს არის ხშირად განხილული თემა ჩემს გამომწერებს შორის და რა მიზეზით? იმ მარტივი და შეუცვლელი ფაქტის გამო, რომ როდესაც თქვენ აკეთებთ მონაცემთა დამრიგებელს და ყველაფრისთვის, რაც მოიცავს ავტომატიზაციას, გჭირდებათ სწორი დრო! და დროის გაზომვის რამდენიმე გზა არსებობს: საათი ბატარეით, RTC (რეალური დროის საათი), სხვათა შორის. მაგრამ ის, რაც დღეს მინდა გაჩვენოთ (რომელიც აცნობებს თარიღს, კვირის დღეს და დროს) არის NTP (ქსელის დროის პროტოკოლი), რომელიც არის ონლაინ რეჟიმში. ამ ვიდეოში ჩვენ ვიღებთ თარიღისა და დროის ინფორმაციას ინტერნეტით და აჩვენებთ ინფორმაციას ეკრანზე.
ნაბიჯი 1: დემონსტრაცია
ნაბიჯი 2: შეკრება
ნაბიჯი 3: შეკრება - მაგიდა
ნაბიჯი 4: ადაფრუტის GFX ბიბლიოთეკა
Arduino IDE– ში გადადით ჩანახატზე-> ბიბლიოთეკის ჩართვა-> ბიბლიოთეკების მართვა…
დააინსტალირეთ Adafruit GFX ბიბლიოთეკა
ნაბიჯი 5: ადაფრუტის ST7735 ბიბლიოთეკა
Arduino IDE– ში გადადით ჩანახატზე-> ბიბლიოთეკის ჩართვა-> ბიბლიოთეკების მართვა…
დააინსტალირეთ Adafruit ST7735
ნაბიჯი 6: NTP კლიენტის ბიბლიოთეკა
გადადით https://github.com/taranais/NTPClient და ჩამოტვირთეთ taranais მოდიფიცირებული NTPClient ბიბლიოთეკა.
გახსენით ფაილი და განათავსეთ საქაღალდე C: / Users / Documents / Arduino / ბიბლიოთეკებში
ნაბიჯი 7: ESP32_NTP.ino
მოიცავს და განსაზღვრავს
#მოიცავს #მოიცავს // ბიბლიოთეკა NTP კლიენტის მოდიფიკაცია #ჩართვა // სოკეტი UDP #ჩართვა // ჩვენება #ჩართვა // ჩვენება #ჩართვა // პინოების ჩვენება #განსაზღვრეთ DISPLAY_DC 12 // A0 #განსაზღვრეთ DISPLAY_CS 13 // CS #განსაზღვრეთ DISPLAY_MOSI 14 // SDA #განსაზღვრეთ DISPLAY_CLK 27 // SCK #განსაზღვრეთ DISPLAY_RST 0 // Fuso Horário, no caso horário de verão de Brasília int timeZone = -2; // Struct com os dados do dia e hora struct თარიღი {int dayOfWeek; int დღე; int თვეში; int წელს; int საათი; int წუთი; ინ წამი; }; // სოკეტი UDP, რომელიც ითვალისწინებს სარგებლობის აღდგენას WiFiUDP udp– ს შესახებ; // Objecto respondável for recuperar dados sobre hororio NTPClient ntpClient (udp, // socket udp "0.br.pool.ntp.org", // URL do servwer NTP timeZone*3600, // Deslocamento do horário em relacão ao GMT 0 60000); // Intervalo entre verificações online // Nomes dos dias da semana char* dayOfWeekNames = {"კვირა", "ორშაბათი", "სამშაბათი", "ოთხშაბათი", "ხუთშაბათი", "პარასკევი", "შაბათი"}; // Objeto responsável pelo ჩვენება Adafruit_ST7735 ჩვენება = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);
Აწყობა
void setup () {Serial.begin (115200); setupDisplay (); connectWiFi (); setupNTP (); // Cria uma nova tarefa no core 0 xTaskCreatePinnedToCore (wifiConnectionTask, // Funchão que será შესრულება "wifiConnectionTask", // Nome da tarefa 10000, // Tamanho da memória disponível (em WORDs) NULlum პარამეტრი, // 2 პაროლი, // prioridade NULL, // Não precisamos de referência para a tarefa 0); // Número do core}
SetupNTP
void setupNTP () {// Inicializa ან client NTP ntpClient.begin (); // Espera pelo primeiro განახლება ონლაინ Serial.println ("ველოდები პირველ განახლებას"); ხოლო (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); დაგვიანება (500); } Serial.println (); Serial.println ("პირველი განახლება დასრულებულია"); }
WifiConnectionTask
// Tarefa que verifica se a conexão caiu e tenta reconectarvoid wifiConnectionTask (void* param) {while (true) {// Se a WiFi não está conectada if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // 100 ტკივილის გადადება vTaskDelay (100); }}
ConnectWiFi
void connectWiFi () {Serial.println ("დაკავშირება"); // Troque pelo nome e senha da sua rede WiFi WiFi.begin ("SSID", "12345678"); // Espera enquanto não estiver conectado while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); დაგვიანება (500); } Serial.println (); Serial.print ("დაკავშირებულია"); Serial.println (WiFi. SSID ()); }
SetupDisplay
void setupDisplay () {display.initR (INITR_BLACKTAB); // Inicializa o display display.setRotation (3); // Rotaciona display.setTextSize (2); // Tamanho do texto display.fillScreen (ST77XX_BLACK); // Preenche com a cor preta display.setCursor (0, 0); // კოლოკა ან კურსორი არ არის ნაჩვენები. SetTextColor (ST77XX_WHITE, ST77XX_BLACK); // Texto branco com fundo preto display.setTextWrap (false); // Não pula linha automatamente}
მარყუჟი
void loop () {// Recupera os dados sobre a data e horário თარიღი თარიღი = getDate (); // გადატვირთვა ან კურსორის ჩვენება. SetCursor (0, 0); // Exibe os dados არ აქვს ჩვენება display.printf (" %s / n / n %s / n / n %02d/ %02d/ %d / n / n %02d: %02d: %02d", WiFi. SSID ().c_str (), dayOfWeekNames [date.dayOfWeek], date.day, date.month, date.year, date.hours, date.minutes, date.seconds); დაგვიანება (100); }
GetDate
თარიღი getDate () {// Recupera os dados de data e horário usando or an client or NTP char* strDate = (char*) ntpClient.getFormattedDate (). C_str (); // Passa os dados da string para a struct თარიღი თარიღი; sscanf (strDate, "%d-%d-%dT%d:%d:%dZ", & date.year, & date.month, & date.day, & date.hours, & date.minutes, & date.seconds); // დია სემანა de 0 a 6, sendo 0 o domingo date.dayOfWeek = ntpClient.getDay (); დაბრუნების თარიღი; }
ნაბიჯი 8: ფაილები
ჩამოტვირთეთ ფაილები
ინო
გირჩევთ:
როგორ გახადოთ თქვენი კომპიუტერი ავტომატურად ჩართული ყოველდღე ან ნებისმიერ დროს: 5 ნაბიჯი
როგორ გახადოთ თქვენი კომპიუტერი ავტომატურად გაშვებული ყოველდღე ან ნებისმიერ დროს: ამ ინსტრუქციაში თქვენ ისწავლით თუ როგორ უნდა დაიწყოთ თქვენი კომპიუტერი ავტომატურად ყოველ დღე გარკვეულ დროს, ასევე ეს არის ჩემი პირველი სასწავლო
ავტომატური ონკანი (შეხების გარეშე) არდუინოს გამოყენებით - დაიბანეთ ხელები და იყავით უსაფრთხოდ COVID -19 კრიზისის დროს: 4 ნაბიჯი
Arduino– ს გამოყენებით ავტომატური ონკანი (ხელუხლებელი) - დაიბანეთ ხელები და იყავით უსაფრთხოდ COVID -19 კრიზისის დროს: გამარჯობა მეგობრებო! ვიმედოვნებ, რომ თქვენ ყველანი კარგად იქნებით და დაცული ხართ ახლა. ამ პოსტში მე აგიხსნით ჩემს პროტოტიპს, რომელიც მე შევიმუშავე ხელების უსაფრთხოდ დასაბანად. ეს პროექტი შეზღუდული რესურსებით გავაკეთე. დაინტერესებულ პირებს შეუძლიათ გადააკეთონ ეს პრო
მოძრავი ოლოიდი - განსხვავებული შინაური ცხოველი სხვადასხვა დროს: 10 ნაბიჯი (სურათებით)
მოძრავი OLOID - განსხვავებული შინაური ცხოველი სხვადასხვა დროს: კორონამ შეცვალა ჩვენი ცხოვრება: ის მოითხოვს ჩვენგან ფიზიკურ დისტანციას, რაც თავის მხრივ იწვევს სოციალურ დისტანცირებას. მაშ რა შეიძლება იყოს გამოსავალი? იქნებ შინაური ცხოველი? არა, კორონა ცხოველებიდან მოდის. მოდით გადავარჩინოთ თავი სხვა კორონა 2.0 -ისგან. მაგრამ თუ ჩვენ გვაქვს
წყლის დაზოგვა წვიმის დროს: 6 ნაბიჯი
წყლის დაზოგვა წვიმის დროს: ბოლო წვიმასთან ერთად შევამჩნიე, რომ ჩემმა სასხურებელმა სისტემამ განაგრძო თავისი საქმე, მაშინაც კი, როდესაც ბაღს საკმარისზე მეტი წყალი ჰქონდა. რატომ არ ავტომატურად გამორთეთ სპრინლერი წვიმის დროს
გასაღები! მოწყობილობა, რომლის საშუალებითაც თქვენ არ დაკარგავთ გასაღებებს!: 3 ნაბიჯი (სურათებით)
გასაღები! მოწყობილობა, რომლის საშუალებითაც თქვენ არ დაკარგავთ გასაღებებს!: ეს მოწყობილობა დაგეხმარებათ არ დაკარგოთ გასაღებები! თუ თქვენ ჩემნაირი ხართ, როდესაც სამსახურიდან შინ ბრუნდებით, მაშინვე დაკარგავთ თქვენს გასაღებებს კარის გაღების შემდეგ და თქვენ დაელოდებით მეორე დღეს, სანამ არ უნდა წავიდეთ მათ მოსაძებნად. ჰო შეიძლება გქონდეს