Cuprins:
- Pasul 1: Componente necesare
- Pasul 2: Conexiunea ceasului Arduino
- Pasul 3: Cod pentru ceasul Arduino cu RTC
Video: Ceas în timp real cu Arduino: 3 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
În acest proiect, vom realiza un ceas cu ajutorul modulului Arduino și RTC. După cum știm, Arduino nu poate afișa ora reală, așa că vom folosi modulul RTC pentru a afișa ora potrivită pe ecranul LCD. Citiți cu atenție tot pasul, vă va ajuta foarte mult să faceți ceasul.
Codul DS3231 Arduino este ca și codul DS1307 și funcționează cu ambele cipuri RTC.
Codul Arduino de dedesubt nu folosește nicio bibliotecă pentru DS3231 RTC, biblioteca Wire este pentru corespondența dintre Arduino și DS3231 utilizând convenția I2C.
Da! Mulți ingineri electronici depind de aceasta pentru proiectele lor bazate pe timp, dar RTC nu este complet fiabil. Este alimentat cu baterie și trebuie înlocuit în curând sau mai târziu. Venind la proiecte IoT, acesta ocupă pini valoroși SPI (Serial Peripheral Interface) și se încurcă cu firele încurcate în jur. Soluție … Aici vine eroul nostru NTP (Network time protocol). NTP este atât de precis, deoarece primește timp de pe internet. Vom opera acest protocol folosind un mod client-server. procesul este atât de simplu încât Nodemcu nostru acționează ca un client și solicită un pachet NTP de la server utilizând UDP. În schimb, serverul trimite un pachet către client care analizează datele. NTP este protocolul universal de sincronizare a timpului. Acum să ne aprindem stația de lucru din laboratoare
Pasul 1: Componente necesare
- Placa Arduino
- Placă RTC DS3231
- Ecran LCD 16x2
- 2 x buton
- Rezistor variabil (sau potențiometru) de 10K ohm
- Rezistor de 330 ohmi
- Baterie cu celule monede de 3V
- Pană de pâine
- Sârme de jumper
Mocula RTC DS3231
Timpul este un sens esențial necesar în această lume rapidă a ființelor umane. În proiect în timp real
Folosim RTC (A. K. A ceas în timp real)
RTC-Ceasul în timp real (RTC) este un circuit integrat (IC) care ține evidența timpului curent. RTC are grijă de timp în modul real. RTC-ul se găsește de obicei în plăcile de bază ale computerelor și în sistemele încorporate pentru a necesita acces în timp util.
Pasul 2: Conexiunea ceasului Arduino
- Conectați pinul SCL la modulul RTC la Arduino A5
- Conectați pinul SDA la modulul RTC la Arduino A4
- Conectați VCC la 5v și GND la GND
- Conectați un buton la pinul 8
- Conectați un alt buton la pinul 9
- Conectați RS-ul LCD la pinul 2 al Arduino
- Conectați E-ul LCD la pinul 3 al Arduino
- Conectați D7 de la LCD la pinul 7 al Arduino
- Conectați D6 de la LCD la pinul 6 al Arduino
- Conectați D5 de la LCD la pinul 5 al Arduino
- Conectați D4 de la LCD la pinul 4 al Arduino
- Conectați VSS & K la GND
- Conectați VDD & A la 5v
- Conectați vo la pinul de ieșire al potențiometrului
Pasul 3: Cod pentru ceasul Arduino cu RTC
DS3231 funcționează numai în format BCD și pentru a converti BCD în zecimal și vice versa Am folosit cele 2 linii de mai jos (exemplu pentru minut): // Conversia BCD în zecimalminut = (minut >> 4) * 10 + (minut și 0x0F);
// Convertiți zecimal în BCDminute = ((minut / 10) << 4) + (minut% 10); void DS3231_display (): afișează ora și calendarul, înainte de afișarea orei și datele calendarului sunt convertite din format BCD în format zecimal.
// Ceas și calendar în timp real cu butoane setate folosind DS3231 și Arduino // includ cod bibliotecă LCD #include // include cod bibliotecă fir (necesar pentru dispozitivele de protocol I2C) #include // Conexiuni modul LCD (RS, E, D4, D5, D6, D7) LiquidCrystal lcd (2, 3, 4, 5, 6, 7); void setup () {pinMode (8, INPUT_PULLUP); // butonul 1 este conectat la pinul 8 pinMode (9, INPUT_PULLUP); // butonul 2 este conectat la pinul 9 // configurați numărul LCD de coloane și rânduri lcd.begin (16, 2); Wire.begin (); // Join i2c bus} char Time = "TIME:::"; char Calendar = "DATA: / / 20"; octet i, al doilea, minutul, ora, data, luna, anul; void DS3231_display () {// Convertiți BCD în secundă zecimală = (second >> 4) * 10 + (second & 0x0F); minut = (minut >> 4) * 10 + (minut & 0x0F); ora = (ora >> 4) * 10 + (ora & 0x0F); data = (data >> 4) * 10 + (data & 0x0F); luna = (luna >> 4) * 10 + (luna & 0x0F); year = (year >> 4) * 10+ (year & 0x0F); // Ora de încheiere a conversiei [12] = a doua% 10 + 48; Timpul [11] = secunda / 10 + 48; Timp [9] = minut% 10 + 48; Timp [8] = minut / 10 + 48; Timpul [6] = ora% 10 + 48; Timp [5] = oră / 10 + 48; Calendar [14] = anul% 10 + 48; Calendar [13] = an / 10 + 48; Calendar [9] = lună% 10 + 48; Calendar [8] = lună / 10 + 48; Calendar [6] = data% 10 + 48; Calendar [5] = data / 10 + 48; lcd.setCursor (0, 0); lcd.print (Timp); // Afișare timp lcd.setCursor (0, 1); lcd.print (Calendar); // Afișați calendarul} void blink_parameter () {octet j = 0; while (j 23) // Dacă ore> 23 ==> ore = 0 parametru = 0; if (i == 1 && parametru> 59) // If minutes> 59 ==> minutes = 0 parameter = 0; if (i == 2 && parametru> 31) // If date> 31 ==> date = 1 parametru = 1; if (i == 3 && parametru> 12) // If luna> 12 ==> luna = 1 parametru = 1; if (i == 4 && parametru> 99) // If year> 99 ==> year = 0 parametru = 0; sprintf (text, "% 02u", parametru); lcd.setCursor (x, y); lcd.print (text); întârziere (200); // Așteptați 200ms} lcd.setCursor (x, y); lcd.print (""); // Afișează două spații blink_parameter (); sprintf (text, "% 02u", parametru); lcd.setCursor (x, y); lcd.print (text); blink_parameter (); if (! digitalRead (8)) {// Dacă butonul (pinul # 8) este apăsat i ++; // Creșterea 'i' pentru următorul parametru returnează parametrul; // Întoarceți valoarea parametrului și ieșiți}}} void loop () {if (! DigitalRead (8)) {// Dacă butonul (pinul # 8) este apăsat i = 0; ora = editare (5, 0, oră); minut = editare (8, 0, minut); data = edit (5, 1, data); lună = editare (8, 1, lună); an = editare (13, 1, an); // Conversia zecimalului în minut BCD = ((minut / 10) << 4) + (minut% 10); ora = ((ora / 10) << 4) + (ora% 10); data = ((data / 10) << 4) + (data% 10); luna = ((luna / 10) << 4) + (luna% 10); year = ((year / 10) << 4) + (year% 10); // Încheie conversia // Scrie date în DS3231 RTC Wire.beginTransmission (0x68); // Porniți protocolul I2C cu adresa DS3231 Wire.write (0); // Trimiteți adresa de înregistrare Wire.write (0); // Resetați sesondele și porniți oscilatorul Wire.write (minut); // Scrie minut Wire.write (ora); // Scrie ora Wire.write (1); // Scrie ziua (nu se folosește) Wire.write (data); // Scrie data Wire.write (luna); // Scrie luna Wire.write (anul); // Scrie anul Wire.endTransmission (); // Opriți transmisia și eliberați întârzierea autobuzului I2C (200); // Așteptați 200ms} Wire.beginTransmission (0x68); // Porniți protocolul I2C cu adresa DS3231 Wire.write (0); // Trimiteți adresa de înregistrare Wire.endTransmission (fals); // I2C reporniți Wire.requestFrom (0x68, 7); // Solicitați 7 octeți de la DS3231 și eliberați magistrala I2C la sfârșitul citirii a doua = Wire.read (); // Citiți secunde din registru 0 minut = Wire.read (); // Citește minute din registru 1 oră = Wire.read (); // Citește ora din registrul 2 Wire.read (); // Citește ziua din registrul 3 (neutilizat) data = Wire.read (); // Data citirii din registru 4 luni = Wire.read (); // Citeste luna din registru 5 ani = Wire.read (); // Citiți anul din registrul 6 DS3231_display (); // Diaplay time & calendar delay (50); // Așteptați 50 ms}
Recomandat:
Utilizarea modulelor de ceas DS1307 și DS3231 în timp real cu Arduino: 3 pași
Utilizarea modulelor de ceas DS1307 și DS3231 în timp real cu Arduino: continuăm să primim solicitări despre modul de utilizare a modulelor de ceas DS1307 și DS3231 în timp real cu Arduino din diverse surse - deci acesta este primul dintr-un tutorial în două părți despre modul de utilizare a acestora. Pentru acest tutorial Arduino avem două module de ceas în timp real pentru noi
DS1307 Ceas în timp real RTC cu Arduino: 4 pași
DS1307 Ceas în timp real RTC cu Arduino: În acest tutorial, vom afla despre Ceas în timp real (RTC) și modul în care Arduino & Ceasul în timp real IC DS1307 este pus împreună ca un dispozitiv de sincronizare. Ceasul în timp real (RTC) este utilizat pentru monitorizarea timpului și menținerea unui calendar. Pentru a utiliza un RTC, w
Ceas Arduino bazat pe modulul DS1307 Ceas în timp real (RTC) și 0.96: 5 pași
Ceas bazat pe Arduino folosind modulul DS1307 Ceas în timp real (RTC) și 0.96: Bună băieți, în acest tutorial vom vedea cum să facem un ceas de lucru folosind un modul de ceas în timp real DS1307 & Afișaje OLED. Deci, vom citi ora din modulul de ceas DS1307. Și tipăriți-l pe ecranul OLED
Realizarea unui ceas cu M5stick C folosind Arduino IDE - Ceas RTC în timp real cu M5stack M5stick-C: 4 pași
Realizarea unui ceas cu M5stick C folosind Arduino IDE | Ceas RTC în timp real cu M5stack M5stick-C: Bună băieți, în acest instructables vom învăța cum să facem un ceas cu placa de dezvoltare m5stick-C a m5stack folosind Arduino IDE. Deci, m5stick va afișa data, ora și amp; săptămână a lunii pe ecran
Cum să creați ceas în timp real folosind afișajul Arduino și TFT - Arduino Mega RTC cu afișaj TFT de 3,5 inci: 4 pași
Cum să faci ceas în timp real folosind afișajul Arduino și TFT | Arduino Mega RTC cu afișaj TFT de 3,5 inci: Vizitează canalul meu de YouTube. Modulul 2560 și DS3231 RTC … Înainte de a începe … verificați videoclipul de pe canalul meu YouTube..Notă: - Dacă utilizați Arduin