Cuprins:
- Pasul 1: demonstrație
- Pasul 2: Asamblare
- Pasul 3: Asamblare - Tabel
- Pasul 4: Biblioteca Adafruit GFX
- Pasul 5: Biblioteca Adafruit ST7735
- Pasul 6: Biblioteca NTPClient
- Pasul 7: ESP32_NTP.ino
- Pasul 8: Fișiere
Video: Nu vă pierdeți timpul: folosiți NTP !: 8 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
Faceți-vă timpul să conteze! Acesta este un subiect frecvent discutat în rândul abonaților mei și din ce motiv? Datorită faptului simplu și indispensabil că atunci când creați un datalogger și pentru tot ceea ce implică automatizarea, aveți nevoie de ora corectă! Și există mai multe moduri de măsurare a timpului: ceas cu baterie, RTC (Real Time Clock), printre altele. Dar cel pe care vreau să vi-l arăt astăzi (care informează data, ziua săptămânii și ora) este NTP (Network Time Protocol), care este online. În acest videoclip, vom prelua informațiile despre dată și oră online și vom afișa informațiile pe ecran.
Pasul 1: demonstrație
Pasul 2: Asamblare
Pasul 3: Asamblare - Tabel
Pasul 4: Biblioteca Adafruit GFX
În IDE-ul Arduino, accesați Schiță-> Includeți bibliotecă-> Gestionați bibliotecile …
Instalați Biblioteca Adafruit GFX
Pasul 5: Biblioteca Adafruit ST7735
În IDE-ul Arduino, accesați Schiță-> Includeți bibliotecă-> Gestionați bibliotecile …
Instalați Adafruit ST7735
Pasul 6: Biblioteca NTPClient
Accesați https://github.com/taranais/NTPClient și descărcați biblioteca NTPClient modificată de taranais.
Dezarhivați și puneți folderul în bibliotecile C: / Users / Documents / Arduino
Pasul 7: ESP32_NTP.ino
Include și definește
#include #include // 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; zi int; int luna; int an; orele int; minute int; secunde int; }; // Socket UDP care a lib utilizează pentru a recupera date despre orar WiFiUDP udp; // Obiecțiunea de recuperare a datelor recuperate asupra orarului NTPClient ntpClient (udp, // socket udp "0.br.pool.ntp.org", // URL servire NTP timeZone * 3600, // Deslocamento do horario in relacão ao GMT 0 60000); // Intervalo între verificări 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);
Înființat
void setup () {Serial.begin (115200); setupDisplay (); connectWiFi (); setupNTP (); // Cria uma nova tarefa no core 0 xTaskCreatePinnedToCore (wifiConnectionTask, // Funcția care va fi executată "wifiConnectionTask", // Numele da tarefa 10000, // Tamanho da memória disponível (em WORDs) NULL, // Não vamos passar nenhum parametro 2, // prioritate NULL, // Não precisamos de referência para a tarefa 0); // Número do core}
SetupNTP
void setupNTP () {// Inicializa o client NTP ntpClient.begin (); // Espera pelo primul update online Serial.println ("Se așteaptă prima actualizare"); while (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); întârziere (500); } Serial.println (); Serial.println („Prima actualizare finalizată”); }
WifiConnectionTask
// Tarefa care verifica se a conexiune caiu e tenta reconectarvoid wifiConnectionTask (void * param) {while (true) {// Se a WiFi não está conectada if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // Întârziere de 100 de căpușe vTaskDelay (100); }}
ConnectWiFi
void connectWiFi () {Serial.println ("Conectare"); // 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 ("."); întârziere (500); } Serial.println (); Serial.print („Conectat la”); 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 (false); // Não pula linha automat}
Buclă
void loop () {// Recupera os dados sobre a data e horário Date date = getDate (); // Resetați cursorul display.setCursor (0, 0); // Exibe os dados no display 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); întârziere (100); }
GetDate
Date getDate () {// Recupera os dados de data e horario folosind clientul 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 (); data returului; }
Pasul 8: Fișiere
Descărcați fișierele
EU NU
Recomandat:
Folosiți butoanele Push pe Magicbit [Magicblocks]: 5 pași
Utilizați butoanele Push pe Magicbit [Magicblocks]: Acest tutorial vă va învăța să utilizați Butoanele Push pe Magicbit folosind Magicblocks. Folosim magicbit ca placă de dezvoltare în acest proiect care se bazează pe ESP32. Prin urmare, orice placă de dezvoltare ESP32 poate fi utilizată în acest proiect
Folosiți Fusion pentru a realiza acest instrument din lemn !: 4 pași
Folosiți Fusion pentru a crea acest instrument de lemn !: Acesta este unul dintre cele mai simple proiecte pe care le-am făcut folosind Fusion 360 pentru a ajuta începătorii să înceapă cu software-ul. Afișează câteva funcții de bază ale software-ului și este prea ușor să dureze mult timp. Software necesar: Fusion 360 by Autodesk Cerințe preliminare
Folosiți forța și creați-vă propriul sabie laser (lamă): 9 pași (cu imagini)
Folosiți forța și creați-vă propriul sabie laser (lamă): Această instrucțiune este specifică pentru realizarea unei lame pentru o sabie laser Ben Solo Legacy achiziționată de la Disney's Galaxy's Edge din Anaheim, CA, cu toate acestea, pot fi luați pași similari pentru a vă face propria lamă pentru un alt sabie laser. Urmăriți pentru
Creați-vă propriile discuri de duel pe care să le folosiți într-un Battle Arena: 4 pași
Creați-vă propriile discuri de duel pe care să le folosiți într-un Battle Arena: am fost întotdeauna pe jumătate fascinat de discurile de duel găsite în seria de desene animate Yugioh. Cât de grozav ar fi să invoci o creatură folosind un pachet de cărți și apoi să-i faci să o ducă într-un fel de arenă de luptă holografică? Aici voi trece peste h
Folosiți Arduino CLI pentru a plasa Flash Arduino: 4 pași
Folosiți Arduino CLI pentru a plăti Flash Arduino: În prezent, producătorii, dezvoltatorii preferă Arduino pentru dezvoltarea rapidă a prototipurilor de proiecte. Arduino este o platformă electronică open-source bazată pe hardware și software ușor de utilizat. Arduino are o comunitate de utilizatori foarte bună. Mistretul Arduino