INHOUDSOPGAWE:
- Stap 1: Vereiste komponente
- Stap 2: Aansluiting van die Arduino -klok
- Stap 3: Kode vir Arduino -klok met RTC
Video: Real -time klok met Arduino: 3 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
In hierdie projek maak ons 'n horlosie met behulp van die Arduino- en RTC -module. Soos ons weet, kan die Arduino nie die werklike tyd wys nie, daarom gebruik ons die RTC -module om die regte tyd op die LCD te vertoon. Lees die hele stap noukeurig, dit sal u baie help om die klok te verwerk.
Die DS3231 Arduino -kode is soos die DS1307 -kode en dit werk met beide RTC -skyfies.
Die Arduino -kode hieronder gebruik geen biblioteek vir die DS3231 RTC nie, die Wire -biblioteek is vir die korrespondensie tussen die Arduino en die DS3231 wat die I2C -konvensie gebruik.
Ja! Baie elektroniese ingenieurs is daarvan afhanklik vir hul tydgebaseerde projekte, maar RTC is nie heeltemal betroubaar nie. Dit werk op batterye en moet binnekort of later vervang word. As ek by IoT -projekte kom, beslaan dit waardevolle SPI -penne (Serial Peripheral Interface) en word dit deurmekaar met drade wat inmekaar sit. Oplossing … Hier kom ons held NTP (Network time protocol). NTP is so akkuraat, aangesien dit tyd van die internet kry. Ons gaan hierdie protokol gebruik met behulp van 'n kliënt-bedienermodus. die proses is so eenvoudig dat ons Nodemcu as 'n kliënt optree en 'n NTP -pakkie van die bediener versoek deur UDP te gebruik. In ruil daarvoor stuur die bediener 'n pakkie na die kliënt wat die data ontleed. NTP is die universele tydsynchronisasie protokol. Laat ons nou ons laboratoriums se werkstasie verlig
Stap 1: Vereiste komponente
- Arduino bord
- DS3231 RTC -bord
- 16x2 LCD skerm
- 2 x drukknop
- 10K ohm veranderlike weerstand (of potensiometer)
- Weerstand van 330 ohm
- 3V muntstuk battery
- Broodbord
- Springdrade
RTC -mokule DS3231
Tyd is 'n noodsaaklike sin wat nodig is in hierdie vinnige wêreld van mense. In real -time projek
Ons gebruik RTC (A. K. A Real-time klok)
RTC Real-time-clock (RTC) is 'n geïntegreerde stroombaan (IC) wat tred hou met die huidige tyd. RTC sorg vir tyd in reële modus. Die RTC word gewoonlik in rekenaar moederborde en ingeboude stelsels gevind om tydige toegang te vereis.
Stap 2: Aansluiting van die Arduino -klok
- Koppel die SCL -pen aan die RTC -module op die Arduino A5
- Koppel die SDA -pen aan die RTC -module op die Arduino A4
- Koppel VCC TO 5v en GND TO GND
- Koppel 'n drukknop aan die pen 8
- Koppel nog 'n drukknop aan die pen 9
- Koppel RS van LCD aan pen 2 van Arduino
- Koppel E van LCD aan pen 3 van Arduino
- Koppel D7 van LCD aan pen 7 van Arduino
- Koppel D6 van LCD aan pen 6 van Arduino
- Koppel D5 van LCD aan pen 5 van Arduino
- Koppel D4 van LCD aan pen 4 van Arduino
- Koppel VSS & K aan die GND
- Koppel VDD & A aan die 5v
- Koppel vo aan op die uitgangspen van die potensiometer
Stap 3: Kode vir Arduino -klok met RTC
Die DS3231 werk slegs met BCD -formaat en om die BCD na desimale om te skakel en omgekeerd gebruik ek die 2 reëls hieronder (voorbeeld vir minuut): // Skakel BCD om na desimale minuut = (minuut >> 4) * 10 + (minuut en 0x0F);
// Skakel desimale om na BCDminute = ((minuut / 10) << 4) + (minuut % 10); void DS3231_display (): vertoon tyd en kalender, voordat tyd en kalenderdata omgeskakel word van BCD na desimale formaat.void blink_parameter ():
// Real -time klok en kalender met ingestelde knoppies met behulp van DS3231 en Arduino // sluit LCD -biblioteekkode in #sluit in // sluit draadbiblioteekkode in (benodig vir I2C -protokol -toestelle) #sluit in // LCD -moduleverbindings (RS, E, D4, D5, D6, D7) LiquidCrystal lcd (2, 3, 4, 5, 6, 7); ongeldige opstelling () {pinMode (8, INPUT_PULLUP); // knoppie1 is gekoppel aan pen 8 pinMode (9, INPUT_PULLUP); // knoppie2 is gekoppel aan pen 9 // stel die aantal kolomme en rye van die LCD op. lcd.begin (16, 2); Wire.begin (); // Sluit aan by i2c bus} char Tyd = "TYD:::"; char Kalender = "DATE: / / 20"; greep i, tweede, minuut, uur, datum, maand, jaar; void DS3231_display () {// Skakel BCD om na desimale sekonde = (tweede >> 4) * 10 + (tweede & 0x0F); minuut = (minuut >> 4) * 10 + (minuut & 0x0F); uur = (uur >> 4) * 10 + (uur en 0x0F); datum = (datum >> 4) * 10 + (datum & 0x0F); maand = (maand >> 4) * 10 + (maand & 0x0F); jaar = (jaar >> 4) * 10 + (jaar & 0x0F); // Eindomskakelingstyd [12] = tweede % 10 + 48; Tyd [11] = tweede / 10 + 48; Tyd [9] = minuut % 10 + 48; Tyd [8] = minuut / 10 + 48; Tyd [6] = uur % 10 + 48; Tyd [5] = uur / 10 + 48; Kalender [14] = jaar % 10 + 48; Kalender [13] = jaar / 10 + 48; Kalender [9] = maand % 10 + 48; Kalender [8] = maand / 10 + 48; Kalender [6] = datum % 10 + 48; Kalender [5] = datum / 10 + 48; lcd.setCursor (0, 0); lcd.print (Tyd); // Vertoon tyd lcd.setCursor (0, 1); lcd.print (kalender); // Vertoon kalender} leeg blink_parameter () {greep j = 0; terwyl (j 23) // As ure> 23 ==> ure = 0 parameter = 0; if (i == 1 && parameter> 59) // As minute> 59 ==> minute = 0 parameter = 0; if (i == 2 && parameter> 31) // As datum> 31 ==> datum = 1 parameter = 1; if (i == 3 && parameter> 12) // As maand> 12 ==> maand = 1 parameter = 1; if (i == 4 && parameter> 99) // As jaar> 99 ==> jaar = 0 parameter = 0; sprintf (teks, "%02u", parameter); lcd.setCursor (x, y); lcd.print (teks); vertraging (200); // Wag 200 ms} lcd.setCursor (x, y); lcd.print (""); // Wys twee spasies blink_parameter (); sprintf (teks, "%02u", parameter); lcd.setCursor (x, y); lcd.print (teks); blink_parameter (); as (! digitalRead (8)) {// As knoppie (pen #8) in ++ gedruk word; // Toename 'i' vir die volgende parameteropgawe -parameter; // Gee parameterwaarde terug en verlaat}}} leemte lus () {as (! DigitalRead (8)) {// As knoppie (pen #8) ingedruk word i = 0; uur = wysig (5, 0, uur); minuut = wysig (8, 0, minuut); datum = wysig (5, 1, datum); maand = wysig (8, 1, maand); jaar = wysig (13, 1, jaar); // Skakel desimale om na BCD -minuut = ((minuut / 10) << 4) + (minuut % 10); uur = ((uur / 10) << 4) + (uur % 10); datum = ((datum / 10) << 4) + (datum % 10); maand = ((maand / 10) << 4) + (maand % 10); jaar = ((jaar / 10) << 4) + (jaar % 10); // Beëindig omskakeling // Skryf data na DS3231 RTC Wire.beginTransmission (0x68); // Begin I2C -protokol met DS3231 -adres Wire.write (0); // Stuur registeradres Wire.write (0); // Herstel sesondes en begin die ossillator Wire.write (minuut); // Skryf minuut Wire.write (uur); // Skryf uur Wire.write (1); // Skryf dag (nie gebruik nie) Wire.write (datum); // Skryf datum Wire.write (maand); // Skryf maand Wire.write (jaar); // Skryf jaar Wire.endTransmission (); // Stop oordrag en laat die I2C -busvertraging (200) los; // Wag 200 ms} Wire.beginTransmission (0x68); // Begin I2C -protokol met DS3231 -adres Wire.write (0); // Stuur registeradres Wire.endTransmission (vals); // I2C herbegin Wire.requestFrom (0x68, 7); // Versoek 7 grepe van DS3231 en laat I2C -bus los aan die einde van die tweede lesing = Wire.read (); // Lees sekondes uit register 0 minute = Wire.read (); // Lees notule uit register 1 uur = Wire.read (); // Lees uur uit register 2 Wire.read (); // Lees dag uit register 3 (nie gebruik nie) datum = Wire.read (); // Lees datum uit register 4 maande = Wire.read (); // Lees maand uit register 5 jaar = Wire.read (); // Lees jaar uit register 6 DS3231_display (); // Diaplay -tyd en kalendervertraging (50); // Wag 50 ms}
Aanbeveel:
Arduino GPS-klok met plaaslike tyd met behulp van NEO-6M-module: 9 stappe
Arduino GPS-klok met plaaslike tyd met behulp van NEO-6M-module: in hierdie tutoriaal leer ons hoe u die huidige tyd van die satelliete kan kry met behulp van arduino. Kyk na die video
Maak Nixie -klok met Arduino in MDF -houtkas: 11 stappe (met foto's)
Maak 'n Nixie -klok met Arduino in MDF -houtkas: in hierdie instruksie sal ek wys hoe u 'n Nixie -klok met Arduino met 'n kring kan maak, so eenvoudig as moontlik. Almal word in 'n MDF -houtkas geplaas. Na voltooiing lyk die horlosie soos 'n produk: mooi en stewig. Kom ons kyk
Maak 'n horlosie met M5stick C Met Arduino IDE - RTC-intydse klok met M5stack M5stick-C: 4 stappe
Maak 'n horlosie met M5stick C Met Arduino IDE | RTC Real Time Clock Met M5stack M5stick-C: Hallo ouens in hierdie instruksies, ons sal leer hoe om 'n horlosie te maak met 'n m5stick-C ontwikkelbord van m5stack met behulp van Arduino IDE. So m5stick sal datum, tyd en amp vertoon; week van die maand op die skerm
Hoe om 'n intydse klok te maak met Arduino en TFT -skerm - Arduino Mega RTC met 3,5 duim TFT -skerm: 4 stappe
Hoe om 'n intydse horlosie te maak met behulp van Arduino en TFT-skerm | Arduino Mega RTC met 3,5 duim TFT-skerm: Besoek my Youtube-kanaal 2560 en DS3231 RTC-module … .Voordat u begin … kyk na die video van my YouTube-kanaal..Let op:- As u Arduin gebruik
Bou 'n regte klok vir u rekenaar en 'n brandblusser-klok: 3 stappe (met foto's)
Bou 'n regte klok vir u rekenaar en 'n brandblusser-horlosie: 'n Messingklokkie, 'n klein relais, nog 'n paar dinge en 'n regte klok kan die ure op u lessenaar slaan, alhoewel hierdie projek op Windows en Mac werk OS X, ek het ook besluit om Ubuntu Linux te installeer op 'n rekenaar wat ek in die asblik gevind het en daaraan werk: ek het nog nooit