Innholdsfortegnelse:
- Trinn 1: Nødvendige komponenter
- Trinn 2: Tilkobling av Arduino -klokke
- Trinn 3: Kode for Arduino -klokke med RTC
Video: Sanntidsklokke med Arduino: 3 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
I dette prosjektet skal vi lage en klokke ved hjelp av Arduino og RTC -modulen. Som vi vet kan Arduino ikke vise den faktiske tiden, så vi vil bruke RTC -modulen til å vise riktig tid på LCD -skjermen. Les hele trinnet nøye, det vil hjelpe deg mye med å gjøre uret.
DS3231 Arduino -koden er som DS1307 -koden, og den fungerer med begge RTC -brikkene.
Arduino -koden under bruker ikke noe bibliotek for DS3231 RTC, Wire -biblioteket er for korrespondansen mellom Arduino og DS3231 som bruker I2C -konvensjonen.
Ja! Mange elektronikkingeniører er avhengige av det for sine tidsbaserte prosjekter, men RTC er ikke helt pålitelig. Det er batteridrevet og må byttes ut snart eller senere. Når det kommer til IoT -prosjekter, opptar det verdifulle SPI -pinner (Serial Peripheral Interface) og blir rotete med ledninger som er viklet rundt. Løsning…. Her kommer vår helt NTP (Network time protocol). NTP er så nøyaktig siden det får tid fra internett. Vi skal bruke denne protokollen ved hjelp av en klient-server-modus. prosessen er så enkel at vår Nodemcu fungerer som en klient og ber om en NTP -pakke fra serveren ved hjelp av UDP. Til gjengjeld sender serveren en pakke til klienten som analyserer dataene. NTP er den universelle tidssynkroniseringsprotokollen. La oss nå lyse opp laboratoriets arbeidsstasjon
Trinn 1: Nødvendige komponenter
- Arduino bord
- DS3231 RTC -kort
- 16x2 LCD -skjerm
- 2 x trykknapp
- 10K ohm variabel motstand (eller potensiometer)
- 330 ohm motstand
- 3V myntcellebatteri
- Brødbrett
- Jumper ledninger
RTC mocule DS3231
Tid er en essensiell følelse som kreves i denne fartsfylte verden av mennesker. I sanntidsprosjekt
Vi bruker RTC (A. K. A sanntidsklokke)
RTC Real-time-clock (RTC) er en integrert krets (IC) som holder oversikt over gjeldende tid. RTC tar seg av tiden i realmodus. RTC finnes vanligvis i datamaskinens hovedkort og innebygde systemer for å kreve rettidig tilgang.
Trinn 2: Tilkobling av Arduino -klokke
- Koble SCL -pinnen til RTC -modulen til Arduino A5
- Koble SDA -pinnen til RTC -modulen til Arduino A4
- Koble VCC TO 5v og GND TO GND
- Koble en trykknapp til pinnen 8
- Koble en annen trykknapp til pinnen 9
- Koble RS på LCD til pinne 2 på Arduino
- Koble E på LCD til pin 3 på Arduino
- Koble D7 på LCD til pinne 7 på Arduino
- Koble D6 på LCD til pin 6 på Arduino
- Koble D5 på LCD til pin 5 på Arduino
- Koble D4 på LCD til pin 4 på Arduino
- Koble VSS & K til GND
- Koble VDD & A til 5v
- Koble vo til potensiometerets utgangspinne
Trinn 3: Kode for Arduino -klokke med RTC
DS3231 fungerer bare med BCD -format og for å konvertere BCD til desimal og omvendt brukte jeg de to linjene nedenfor (eksempel for minutt): // Konverter BCD til desimalminutt = (minutt >> 4) * 10 + (minutt og 0x0F);
// Konverter desimal til BCDminute = ((minutt / 10) << 4) + (minutt % 10); void DS3231_display (): viser tid og kalender, før visningstid og kalenderdata konverteres fra BCD til desimalformat. ugyldig blink_parameter ():
// Sanntidsklokke og kalender med innstilte knapper ved bruk av DS3231 og Arduino // inkluderer LCD -bibliotekskode #inkluder // inkluderer trådbibliotekskode (nødvendig for I2C -protokollenheter) #inkluder // LCD -modultilkoblinger (RS, E, D4, D5, D6, D7) LiquidCrystal lcd (2, 3, 4, 5, 6, 7); ugyldig oppsett () {pinMode (8, INPUT_PULLUP); // knapp1 er koblet til pin 8 pinMode (9, INPUT_PULLUP); // knapp2 er koblet til pin 9 // konfigurer LCD -displayets antall kolonner og rader lcd.begin (16, 2); Wire.begin (); // Bli med i2c buss} char Time = "TIME:::"; char Calendar = "DATE: / / 20"; byte i, andre, minutt, time, dato, måned, år; void DS3231_display () {// Konverter BCD til desimal sekund = (andre >> 4) * 10 + (andre og 0x0F); minutt = (minutt >> 4) * 10 + (minutt & 0x0F); time = (time >> 4) * 10 + (time & 0x0F); dato = (dato >> 4) * 10 + (dato & 0x0F); måned = (måned >> 4) * 10 + (måned & 0x0F); år = (år >> 4) * 10 + (år & 0x0F); // Slutt konverteringstid [12] = andre % 10 + 48; Tid [11] = andre / 10 + 48; Tid [9] = minutt % 10 + 48; Tid [8] = minutt / 10 + 48; Tid [6] = time % 10 + 48; Tid [5] = time / 10 + 48; Kalender [14] = år % 10 + 48; Kalender [13] = år / 10 + 48; Kalender [9] = måned % 10 + 48; Kalender [8] = måned / 10 + 48; Kalender [6] = dato % 10 + 48; Kalender [5] = dato / 10 + 48; lcd.setCursor (0, 0); lcd.print (Tid); // Vis tid lcd.setCursor (0, 1); lcd.print (kalender); // Vis kalender} ugyldig blink_parameter () {byte j = 0; mens (j 23) // Hvis timer> 23 ==> timer = 0 parameter = 0; if (i == 1 && parameter> 59) // Hvis minutter> 59 ==> minutter = 0 parameter = 0; if (i == 2 && parameter> 31) // Hvis dato> 31 ==> dato = 1 parameter = 1; if (i == 3 && parameter> 12) // Hvis måned> 12 ==> måned = 1 parameter = 1; if (i == 4 && parameter> 99) // Hvis år> 99 ==> år = 0 parameter = 0; sprintf (tekst, "%02u", parameter); lcd.setCursor (x, y); lcd.print (tekst); forsinkelse (200); // Vent 200ms} lcd.setCursor (x, y); lcd.print (""); // Vis to mellomrom blink_parameter (); sprintf (tekst, "%02u", parameter); lcd.setCursor (x, y); lcd.print (tekst); blink_parameter (); hvis (! digitalRead (8)) {// Hvis knappen (pin #8) trykkes i ++; // Økning 'i' for neste parameterreturparameter; // Return parameterverdi og avslutt}}} void loop () {if (! DigitalRead (8)) {// If button (pin #8) is trykt i = 0; time = rediger (5, 0, time); minutt = rediger (8, 0, minutt); dato = rediger (5, 1, dato); måned = rediger (8, 1, måned); år = rediger (13, 1, år); // Konverter desimal til BCD minutt = ((minutt / 10) << 4) + (minutt % 10); time = ((time / 10) << 4) + (time % 10); dato = ((dato / 10) << 4) + (dato % 10); måned = ((måned / 10) << 4) + (måned % 10); år = ((år / 10) << 4) + (år % 10); // Avslutt konvertering // Skriv data til DS3231 RTC Wire.beginTransmission (0x68); // Start I2C -protokollen med DS3231 -adressen Wire.write (0); // Send registeradresse Wire.write (0); // Tilbakestill sesonger og start oscillator Wire.write (minutt); // Skriv minutt Wire.write (time); // Skriv time Wire.write (1); // Skriv dag (ikke brukt) Wire.write (dato); // Skriv dato Wire.write (måned); // Skriv måned Wire.write (år); // Skriv år Wire.endTransmission (); // Stopp overføringen og slipp I2C -bussforsinkelsen (200); // Vent 200ms} Wire.beginTransmission (0x68); // Start I2C -protokollen med DS3231 -adressen Wire.write (0); // Send registeradresse Wire.endTransmission (false); // I2C restart Wire.requestFrom (0x68, 7); // Be om 7 byte fra DS3231 og slipp I2C -bussen ved slutten av lesingen sekund = Wire.read (); // Les sekunder fra register 0 minutt = Wire.read (); // Les minutter fra register 1 time = Wire.read (); // Les time fra register 2 Wire.read (); // Les dag fra register 3 (ikke brukt) date = Wire.read (); // Les dato fra register 4 måneder = Wire.read (); // Les måned fra register 5 år = Wire.read (); // Les år fra register 6 DS3231_display (); // Diaplay tid og kalenderforsinkelse (50); // Vent 50 ms}
Anbefalt:
DS1307 sanntidsklokke RTC med Arduino: 4 trinn
DS1307 Sanntidsklokke RTC med Arduino: I denne opplæringen lærer vi om sanntidsklokke (RTC) og hvordan Arduino & Real Time Clock IC DS1307 er satt sammen som en timing -enhet. Real Time Clock (RTC) brukes til å overvåke tid og vedlikeholde en kalender.For å bruke en RTC, må
Arduino -basert klokke ved bruk av DS1307 sanntidsklokke (RTC) -modul og 0,96: 5 trinn
Arduino -basert klokke ved bruk av DS1307 sanntidsklokke (RTC) -modul & 0.96: Hei folkens i denne opplæringen skal vi se hvordan du lager en fungerende klokke ved hjelp av en DS1307 sanntidsklokke -modul og amp; OLED -skjermer. Så vi vil lese tiden fra klokkemodulen DS1307. Og skriv den ut på OLED -skjermen
Lage en klokke med M5stick C ved hjelp av Arduino IDE - RTC sanntidsklokke med M5stack M5stick-C: 4 trinn
Lage en klokke med M5stick C ved hjelp av Arduino IDE | RTC sanntidsklokke med M5stack M5stick-C: Hei folkens i denne instruksen vil vi lære å lage en klokke med m5stick-C utviklingsbord av m5stack ved hjelp av Arduino IDE. Så m5stick vil vise dato, tid og amp; uke i måneden på displayet
NODEMCU Lua ESP8266 med sanntidsklokke (RTC) og EEPROM: 7 trinn
NODEMCU Lua ESP8266 Med sanntidsklokke (RTC) og EEPROM: Det er viktig å få riktig tid hvis du vil beholde en datalogg. Det er forskjellige måter å få tid fra kilder på Internett. Du kan spørre hvorfor ikke bruke ESP8266 til å holde tid for deg? Vel, du kan, den har sin egen interne RTC (sanntid
Hvordan lage sanntidsklokke ved hjelp av Arduino og TFT -skjerm - Arduino Mega RTC med 3,5 tommers TFT -skjerm: 4 trinn
Hvordan lage sanntidsklokke ved hjelp av Arduino og TFT-skjerm | Arduino Mega RTC med 3,5 tommers TFT-skjerm: Besøk min Youtube-kanal. Introduksjon:- I dette innlegget skal jeg lage “Real time Clock” ved å bruke 3,5 tommers TFT touch LCD, Arduino Mega 2560 og DS3231 RTC-modul …. Før du starter … sjekk videoen fra YouTube-kanalen min..Merk:- Hvis du bruker Arduin