Բովանդակություն:

Մի վատնեք ձեր ժամանակը. Օգտագործեք NTP: 8 քայլ
Մի վատնեք ձեր ժամանակը. Օգտագործեք NTP: 8 քայլ

Video: Մի վատնեք ձեր ժամանակը. Օգտագործեք NTP: 8 քայլ

Video: Մի վատնեք ձեր ժամանակը. Օգտագործեք NTP: 8 քայլ
Video: Վաչիկ եղբայր Ժամանակը ծախու առեք մի վատնեք ձեր ժամանակը ինտերնետի վրա: 2021 թ. 2024, Նոյեմբեր
Anonim
Image
Image

Թող ձեր ժամանակը հաշվարկվի: Սա հաճախ քննարկվող թեմա է իմ բաժանորդների շրջանում, և ի՞նչ պատճառով: Այն պարզ և անփոխարինելի փաստի շնորհիվ, երբ դուք ստեղծում եք տվյալների ցուցիչ և այն ամենի համար, ինչը ներառում է ավտոմատացում, ձեզ հարկավոր է ճիշտ ժամանակ: Եվ ժամանակը չափելու մի քանի եղանակ կա ՝ մարտկոցով ժամացույց, ի թիվս այլոց ՝ RTC (իրական ժամանակի ժամացույց): Բայց այն, ինչ ես ուզում եմ ձեզ այսօր ցույց տալ (որը տեղեկացնում է ամսաթիվը, շաբաթվա օրը և ժամը) NTP- ն է (ցանցի ժամանակի արձանագրություն), որն առցանց է: Այս տեսանյութում մենք առցանց կվերցնենք ամսաթվի և ժամի տեղեկատվությունը և կցուցադրենք այն տեղեկատվությունը էկրանին:

Քայլ 1: rationուցադրություն

Ժողով
Ժողով

Քայլ 2: Հավաքում

Քայլ 3. Հավաքում - Աղյուսակ

Ժողով - սեղան
Ժողով - սեղան

Քայլ 4: Adafruit GFX գրադարան

Adafruit GFX գրադարան
Adafruit GFX գրադարան

Arduino IDE- ում գնացեք Sketch-> Include Library-> Manage Libraries…

Տեղադրեք Adafruit GFX գրադարանը

Քայլ 5. Adafruit ST7735 գրադարան

Adafruit ST7735 գրադարան
Adafruit ST7735 գրադարան

Arduino IDE- ում գնացեք Sketch-> Include Library-> Manage Libraries…

Տեղադրեք Adafruit ST7735

Քայլ 6: NTPClient Library

NTPClient գրադարան
NTPClient գրադարան

Գնացեք https://github.com/taranais/NTPClient և ներբեռնեք taranais- ով փոփոխված NTPClient գրադարանը:

Անջատեք և թղթապանակը տեղադրեք C: / Users / Documents / Arduino / գրադարաններում

Քայլ 7: ESP32_NTP.ino

Ներառում է և սահմանում

#ներառել #ներառել // Biblioteca NTPClient modificada #include // Socket UDP #include // Display #include // Display #include // Pinos do display #define DISPLAY_DC 12 // A0 #define DISPLAY_CS 13 // CS #define 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 վայրկյան; }; // Socket UDP- ն, որն օգտագործում է իր օգտագործումը, WiFiUDP udp- ի սարքի արագ վերականգնման համար; // Objecto responsável for recuperar dados sobre horário 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 display 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, // Função que será შესრულություն «wifiConnectionTask», // Nome da tarefa 10000, // Tamanho da memória disponível (em WORDs) Nullam, // 2ãnhum պարամետր,, // 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 («Սպասում ենք առաջին թարմացման»); while (! 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 հետաձգում ticks 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); // Coloca o cursor no começo display.setTextColor (ST77XX_WHITE, ST77XX_BLACK); // Texto branco com fundo preto display.setTextWrap (կեղծ); // Não pula linha automatamente}

Օղակ

void loop () {// Recupera os dados sobre a data e horário Ամսաթիվ ամսաթիվ = getDate (); // Վերագործարկիչ կամ կուրսորը display.setCursor (0, 0); // Exibe os dados no 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 client 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); // Dia da semana de 0 a 6, sendo 0 o domingo date.dayOfWeek = ntpClient.getDay (); վերադարձի ամսաթիվը; }

Քայլ 8: Ֆայլեր

Ներբեռնեք ֆայլերը

ԻՆՈ

PDF

Խորհուրդ ենք տալիս: