Innehållsförteckning:
- Steg 1: Obligatoriska komponenter
- Steg 2: Anslutning av Arduino Clock
- Steg 3: Kod för Arduino -klocka med RTC
Video: Realtidsklocka med Arduino: 3 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:41
I detta projekt kommer vi att göra en klocka med hjälp av Arduino- och RTC -modulen. Som vi vet kan Arduino inte visa den verkliga tiden så vi kommer att använda RTC -modulen för att visa rätt tid på LCD -skärmen. Läs igenom hela steget noga, det kommer att hjälpa dig mycket att göra klockan.
DS3231 Arduino -koden är som DS1307 -koden och den fungerar med båda RTC -chipsen.
Arduino -koden nedan använder inte något bibliotek för DS3231 RTC, Wire -biblioteket är för korrespondensen mellan Arduino och DS3231 som använder I2C -konventionen.
Ja! Många elektronikingenjörer är beroende av det för sina tidsbaserade projekt men RTC är inte helt pålitlig. Den är batteridriven och måste bytas ut snart eller senare. När det kommer till IoT -projekt upptar det värdefulla SPI -stift (Serial Peripheral Interface) och blir rörigt med trådar som trasslar runt. Lösning…. Här kommer vår hjälte NTP (Network time protocol). NTP är så korrekt eftersom det får tid från internet. Vi kommer att använda detta protokoll med ett klient-server-läge. processen är så enkel att vår Nodemcu fungerar som en klient och begär ett NTP -paket från servern med UDP. I gengäld skickar servern ett paket till klienten som analyserar data. NTP är det universella tidssynkroniseringsprotokollet. Låt oss nu lysa upp våra labs arbetsstation
Steg 1: Obligatoriska komponenter
- Arduino -bräda
- DS3231 RTC -kort
- 16x2 LCD -skärm
- 2 x tryckknapp
- 10K ohm variabelt motstånd (eller potentiometer)
- 330-ohm motstånd
- 3V myntcellsbatteri
- Bakbord
- Bygelkablar
RTC -mokul DS3231
Tid är en viktig känsla som krävs i denna snabba värld av människor. I realtidsprojekt
Vi använder RTC (A. K. A realtidsklocka)
RTC Real-time-clock (RTC) är en integrerad krets (IC) som håller reda på aktuell tid. RTC tar hand om tid i realläge. RTC finns vanligtvis i datorns moderkort och inbyggda system som kräver snabb åtkomst.
Steg 2: Anslutning av Arduino Clock
- Anslut SCL -stift till RTC -modulen till Arduino A5
- Anslut SDA -stift till RTC -modulen till Arduino A4
- Anslut VCC TO 5v och GND TO GND
- Anslut en tryckknapp till stiftet 8
- Anslut en annan tryckknapp till stiftet 9
- Anslut RS på LCD till stift 2 på Arduino
- Anslut E på LCD till stift 3 på Arduino
- Anslut D7 på LCD till stift 7 på Arduino
- Anslut D6 på LCD till stift 6 på Arduino
- Anslut D5 på LCD till stift 5 på Arduino
- Anslut D4 på LCD till stift 4 på Arduino
- Anslut VSS & K till GND
- Anslut VDD & A till 5v
- Anslut vo till potentiometerns utgångsstift
Steg 3: Kod för Arduino -klocka med RTC
DS3231 fungerar bara med BCD -format och för att konvertera BCD till decimal och vice versa använde jag de två raderna nedan (exempel för minut): // Konvertera BCD till decimalminute = (minut >> 4) * 10 + (minut och 0x0F);
// Konvertera decimal till BCDminute = ((minut / 10) << 4) + (minut % 10); void DS3231_display (): visar tid och kalender, innan visningstid och kalenderdata konverteras från BCD till decimalformat. ogiltig blink_parameter ():
// Realtidsklocka och kalender med inställda knappar med DS3231 och Arduino // inkluderar LCD -bibliotekskod #inkludera // inkludera trådbibliotekskod (behövs för I2C -protokollsenheter) #inkludera // LCD -modulanslutningar (RS, E, D4, D5, D6, D7) LiquidCrystal lcd (2, 3, 4, 5, 6, 7); void setup () {pinMode (8, INPUT_PULLUP); // knapp1 är ansluten till pin 8 pinMode (9, INPUT_PULLUP); // knapp2 är ansluten till stift 9 // ställ in LCD -skärmens antal kolumner och rader lcd.begin (16, 2); Wire.begin (); // Anslut i2c -buss} char Time = "TIME:::"; char Calendar = "DATE: / / 20"; byte i, andra, minut, timme, datum, månad, år; void DS3231_display () {// Konvertera BCD till decimal sekund = (andra >> 4) * 10 + (andra & 0x0F); minut = (minut >> 4) * 10 + (minut & 0x0F); timme = (timme >> 4) * 10 + (timme & 0x0F); datum = (datum >> 4) * 10 + (datum & 0x0F); månad = (månad >> 4) * 10 + (månad & 0x0F); år = (år >> 4) * 10 + (år & 0x0F); // Slutkonverteringstid [12] = andra % 10 + 48; Tid [11] = andra / 10 + 48; Tid [9] = minut % 10 + 48; Tid [8] = minut / 10 + 48; Tid [6] = timme % 10 + 48; Tid [5] = timme / 10 + 48; Kalender [14] = år % 10 + 48; Kalender [13] = år / 10 + 48; Kalender [9] = månad % 10 + 48; Kalender [8] = månad / 10 + 48; Kalender [6] = datum % 10 + 48; Kalender [5] = datum / 10 + 48; lcd.setCursor (0, 0); lcd.print (tid); // Visningstid lcd.setCursor (0, 1); lcd.print (kalender); // Visa kalender} void blink_parameter () {byte j = 0; medan (j 23) // Om timmar> 23 ==> timmar = 0 parameter = 0; if (i == 1 && parameter> 59) // Om minuter> 59 ==> minuter = 0 parameter = 0; if (i == 2 && parameter> 31) // If date> 31 ==> date = 1 parameter = 1; if (i == 3 && parameter> 12) // If månad> 12 ==> månad = 1 parameter = 1; if (i == 4 && parameter> 99) // Om år> 99 ==> år = 0 parameter = 0; sprintf (text, "%02u", parameter); lcd.setCursor (x, y); lcd.print (text); fördröjning (200); // Vänta 200ms} lcd.setCursor (x, y); lcd.print (""); // Visa två mellanslag blink_parameter (); sprintf (text, "%02u", parameter); lcd.setCursor (x, y); lcd.print (text); blink_parameter (); om (! digitalRead (8)) {// Om knappen (pin #8) trycks in i ++; // Ökning 'i' för nästa parameterreturparameter; // Returnera parametervärdet och avsluta}}} void loop () {if (! DigitalRead (8)) {// If button (pin #8) is tryckt i = 0; timme = redigera (5, 0, timme); minut = redigera (8, 0, minut); datum = redigera (5, 1, datum); månad = redigera (8, 1, månad); år = redigera (13, 1, år); // Konvertera decimal till BCD minut = ((minut / 10) << 4) + (minut % 10); timme = ((timme / 10) << 4) + (timme % 10); datum = ((datum / 10) << 4) + (datum % 10); månad = ((månad / 10) << 4) + (månad % 10); år = ((år / 10) << 4) + (år % 10); // Avsluta konvertering // Skriv data till DS3231 RTC Wire.beginTransmission (0x68); // Starta I2C -protokollet med DS3231 -adressen Wire.write (0); // Skicka registeradress Wire.write (0); // Återställ sesonger och starta oscillatorn Wire.write (minut); // Skriv minut Wire.write (timme); // Skriv timme Wire.write (1); // Skriv dag (används inte) Wire.write (datum); // Skriv datum Wire.write (månad); // Skriv månad Wire.write (år); // Skriv år Wire.endTransmission (); // Stoppa överföringen och släpp I2C -bussfördröjningen (200); // Vänta 200 ms} Wire.beginTransmission (0x68); // Starta I2C -protokollet med DS3231 -adressen Wire.write (0); // Skicka registeradress Wire.endTransmission (false); // I2C starta om Wire.requestFrom (0x68, 7); // Begär 7 byte från DS3231 och släpp I2C -bussen i slutet av läsningen sekund = Wire.read (); // Läs sekunder från register 0 minut = Wire.read (); // Läs protokoll från registret 1 timme = Wire.read (); // Läs timme från register 2 Wire.read (); // Läs dag från register 3 (används inte) datum = Wire.read (); // Läs datum från register 4 månader = Wire.read (); // Läs månad från register 5 år = Wire.read (); // Läs år från register 6 DS3231_display (); // Diaplay -tid och kalenderfördröjning (50); // Vänta 50 ms}
Rekommenderad:
Ställa in DS3231 RTC (realtidsklocka) exakt, snabbt och automatiserat med Java (+-1s): 3 steg
Ställa in DS3231 RTC (realtidsklocka) exakt, snabbt och automatiserat med hjälp av Java (+-1s): Denna instruktion kommer att visa dig hur du ställer in tiden på en DS3231 realtidsklocka med en Arduino och ett litet Java-program som använder den seriella anslutningen av Arduino. programmets grundläggande logik: 1. Arduino skickar en serieförfrågan
DS1307 Realtidsklocka RTC med Arduino: 4 steg
DS1307 Real Time Clock RTC With Arduino: I den här självstudien kommer vi att lära oss om Real Time Clock (RTC) och hur Arduino & Real Time Clock IC DS1307 sätts ihop som en timing -enhet. Real Time Clock (RTC) används för att övervaka tid och underhålla en kalender.För att använda en RTC, w
Gör en klocka med M5stick C med Arduino IDE - RTC Realtidsklocka med M5stack M5stick-C: 4 steg
Gör en klocka med M5stick C med Arduino IDE | RTC Real Time Clock Med M5stack M5stick-C: Hej killar i denna instruktioner kommer vi att lära oss hur man gör en klocka med m5stick-C utvecklingskort av m5stack med Arduino IDE. Så m5stick kommer att visa datum, tid & veckan i månaden på displayen
NODEMCU Lua ESP8266 med realtidsklocka (RTC) och EEPROM: 7 steg
NODEMCU Lua ESP8266 Med Real Time Clock (RTC) & EEPROM: Att få rätt tid är viktigt om du vill föra en datalogg. Det finns olika sätt att få tid från källor på Internet. Du kan fråga varför inte använda ESP8266 för att hålla tid åt dig? Du kan väl, den har sin egen interna RTC (Real Time
Hur man gör realtidsklocka med Arduino och TFT -skärm - Arduino Mega RTC med 3,5 tums TFT -skärm: 4 steg
Hur man gör realtidsklocka med Arduino och TFT-skärm | Arduino Mega RTC med 3,5 tums TFT-skärm: Besök min Youtube-kanal. Introduktion:- I det här inlägget ska jag göra “Real time Clock” med 3,5 tums TFT touch LCD, Arduino Mega 2560 och DS3231 RTC-modul …. Innan du börjar … kolla videon från min YouTube-kanal..OBS:- Om du använder Arduin