جدول المحتويات:

لا تضيع وقتك: استخدم NTP !: 8 خطوات
لا تضيع وقتك: استخدم NTP !: 8 خطوات

فيديو: لا تضيع وقتك: استخدم NTP !: 8 خطوات

فيديو: لا تضيع وقتك: استخدم NTP !: 8 خطوات
فيديو: شوف الندم في تضييع الوقت 2024, شهر نوفمبر
Anonim
Image
Image

اجعل وقتك مهمًا! هذا موضوع يتم مناقشته بشكل متكرر بين المشتركين في قناتي ، ولأي سبب؟ نظرًا للحقيقة البسيطة التي لا غنى عنها وهي أنه عند إنشاء أداة تسجيل البيانات ، ولكل شيء يتعلق بالأتمتة ، فإنك تحتاج إلى الوقت الصحيح! وهناك عدة طرق لقياس الوقت: ساعة مع بطارية ، RTC (ساعة الوقت الحقيقي) ، من بين أمور أخرى. لكن الشيء الذي أريد أن أعرضه عليكم اليوم (والذي يُعلمكم بالتاريخ ويوم الأسبوع والوقت) هو NTP (بروتوكول وقت الشبكة) ، وهو متصل بالإنترنت. في هذا الفيديو ، سنسترجع معلومات التاريخ والوقت عبر الإنترنت ، ونعرض المعلومات على الشاشة.

الخطوة 1: العرض التوضيحي

المجسم
المجسم

الخطوة 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

مكتبة NTPClient
مكتبة NTPClient

انتقل إلى https://github.com/taranais/NTPClient وقم بتنزيل مكتبة NTPClient المعدلة من taranais.

قم بفك ضغط المجلد ووضعه في C: / Users / Documents / Arduino / libraries

الخطوة 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 #define DISPLAY_CLK 27 // SCK #define 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 Date {int dayOfWeek؛ يوم int شهر int سنة int ساعات int دقائق كثافة العمليات ثواني int } ؛ // Socket UDP que a lib utiliza para recuperar dados sobre o horário WiFiUDP udp؛ // Objeto responsável por 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 = {"Sunday"، "Monday"، "Tuesday"، "Wednesday"، "Thursday"، "Friday"، "Saturday"}؛ // Objeto responsável pelo display Adafruit_ST7735 display = Adafruit_ST7735 (DISPLAY_CS، DISPLAY_DC، DISPLAY_MOSI، DISPLAY_CLK، DISPLAY_RST) ؛

اقامة

إعداد باطل () {Serial.begin (115200) ؛ setupDisplay () ؛ connectWiFi () ، setupNTP () ، // Cria uma nova tarefa no core 0 xTaskCreatePinnedToCore (wifiConnectionTask، // Função que será exátexada "wifiConnectionTask"، // Nome da tarefa 10000، // Tamanho da memória disponível (em WORDs) NULL، // Não vamos passetro nenh ، // premidade NULL، // Não precisamos de Referência para a tarefa 0) ؛ // Número do core}

الإعداد

إعداد باطل NTP () {// Inicializa o client NTP ntpClient.begin () ؛ // تحديث Espera pelo primeiro عبر الإنترنت Serial.println ("في انتظار التحديث الأول") ؛ while (! ntpClient.update ()) {Serial.print (".") ؛ ntpClient.forceUpdate () ، تأخير (500) ؛ } Serial.println () ، Serial.println ("اكتمال التحديث الأول") ؛ }

واي فاي

// Tarefa que verifica se a conexão caiu e tenta recectarvoid wifiConnectionTask (void * param) {while (true) {// Se a WiFi não está conectada if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi () ؛ } // Delay de 100 ticks vTaskDelay (100) ؛ }}

ConnectWiFi

باطل connectWiFi () {Serial.println ("Connecting") ؛ // Troque pelo nome e senha da sua rede 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 () باطل {display.initR (INITR_BLACKTAB) ، // Inicializa o 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 (false) ؛ // Não pula linha automaticamente}

حلقة

الحلقة الفارغة () {// Recupera os dados sobre a data e horário Date date = getDate () ؛ // Reseta o cursor 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 o client NTP char * strDate = (char *) ntpClient.getFormattedDate (). c_str ()؛ // Passa os dados da string para a Struct Date date؛ 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: الملفات

قم بتنزيل الملفات

انا لا

بي دي إف

موصى به: