Სარჩევი:

ნუ დაკარგავთ დროს: გამოიყენეთ NTP!: 8 ნაბიჯი
ნუ დაკარგავთ დროს: გამოიყენეთ NTP!: 8 ნაბიჯი

ვიდეო: ნუ დაკარგავთ დროს: გამოიყენეთ NTP!: 8 ნაბიჯი

ვიდეო: ნუ დაკარგავთ დროს: გამოიყენეთ NTP!: 8 ნაბიჯი
ვიდეო: ჩვენ გვინდა გნახოთ ევროკავშირში,ნუ დაკარგავთ დროს და შეასრულეთ რეკომენდაციები 2024, ნოემბერი
Anonim
Image
Image

დაითვალეთ თქვენი დრო! ეს არის ხშირად განხილული თემა ჩემს გამომწერებს შორის და რა მიზეზით? იმ მარტივი და შეუცვლელი ფაქტის გამო, რომ როდესაც თქვენ აკეთებთ მონაცემთა დამრიგებელს და ყველაფრისთვის, რაც მოიცავს ავტომატიზაციას, გჭირდებათ სწორი დრო! და დროის გაზომვის რამდენიმე გზა არსებობს: საათი ბატარეით, RTC (რეალური დროის საათი), სხვათა შორის. მაგრამ ის, რაც დღეს მინდა გაჩვენოთ (რომელიც აცნობებს თარიღს, კვირის დღეს და დროს) არის NTP (ქსელის დროის პროტოკოლი), რომელიც არის ონლაინ რეჟიმში. ამ ვიდეოში ჩვენ ვიღებთ თარიღისა და დროის ინფორმაციას ინტერნეტით და აჩვენებთ ინფორმაციას ეკრანზე.

ნაბიჯი 1: დემონსტრაცია

შეკრება
შეკრება

ნაბიჯი 2: შეკრება

ნაბიჯი 3: შეკრება - მაგიდა

ასამბლეა - მაგიდა
ასამბლეა - მაგიდა

ნაბიჯი 4: ადაფრუტის GFX ბიბლიოთეკა

ადაფრუტის GFX ბიბლიოთეკა
ადაფრუტის GFX ბიბლიოთეკა

Arduino IDE– ში გადადით ჩანახატზე-> ბიბლიოთეკის ჩართვა-> ბიბლიოთეკების მართვა…

დააინსტალირეთ Adafruit GFX ბიბლიოთეკა

ნაბიჯი 5: ადაფრუტის ST7735 ბიბლიოთეკა

ადაფრუტის ST7735 ბიბლიოთეკა
ადაფრუტის ST7735 ბიბლიოთეკა

Arduino IDE– ში გადადით ჩანახატზე-> ბიბლიოთეკის ჩართვა-> ბიბლიოთეკების მართვა…

დააინსტალირეთ Adafruit ST7735

ნაბიჯი 6: NTP კლიენტის ბიბლიოთეკა

NTP კლიენტის ბიბლიოთეკა
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: ფაილები

ჩამოტვირთეთ ფაილები

ინო

PDF

გირჩევთ: