Sadržaj:
- Korak 1: Povezivanje vašeg modula s Arduinom
- Korak 2: Čitanje i zapisivanje vremena iz vašeg RTC modula
- 3. korak:
Video: Korištenje DS1307 i DS3231 modula sata u stvarnom vremenu s Arduinom: 3 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
Stalno dobivamo zahtjeve o tome kako koristiti module sata sa realnim vremenom DS1307 i DS3231 s Arduinom iz različitih izvora-pa je ovo prvi od dva dijela vodiča o tome kako ih koristiti. Za ovaj Arduino vodič imamo dva modula sata u stvarnom vremenu za korištenje, jedan temeljen na Maxim DS1307 (kvadratni modul) i DS3231 (pravokutni modul).
Postoje dvije glavne razlike između IC-a na modulima sata u stvarnom vremenu, a to je točnost mjerenja vremena. DS1307 korišten u prvom modulu radi vrlo dobro, međutim vanjska temperatura može utjecati na frekvenciju oscilatornog kruga koji pokreće unutarnji brojač DS1307.
Ovo može zvučati kao problem, no obično će rezultirati time da sat ne radi otprilike pet -ak minuta mjesečno. DS3231 mnogo je točniji jer ima unutarnji oscilator na koji ne utječu vanjski čimbenici - pa je točan najviše do nekoliko minuta godišnje. Ako imate modul DS1307- nemojte se osjećati loše, to je i dalje velika vrijednost i dobro će vam poslužiti. Za oba modula potrebna je pomoćna baterija.
Bilo bi dobro kupiti novu bateriju CR2032 i postaviti je na modul. Uz praćenje vremena i datuma, ti moduli također imaju mali EEPROM, funkciju alarma (samo DS3231) i mogućnost generiranja kvadratnog vala različitih frekvencija-a sve će to biti predmet drugog vodiča.
Korak 1: Povezivanje vašeg modula s Arduinom
Oba modula koriste I2C sabirnicu, što povezivanje čini vrlo lakim.
Prvo ćete morati identificirati koje pinove na vašem Arduinu ili kompatibilne ploče koriste za I2C sabirnicu - to će biti poznate kao SDA (ili podaci) i SCL (ili sat). Na Arduino Uno ili kompatibilnim pločama ove su igle A4 i A5 za podatke i sat; na Arduino Mega su igle D20 i D21 za podatke i sat; a ako koristite Pro Mini kompatibilne, pinovi su A4 i A5 za podatke i sat koji su paralelni s glavnim pinovima.
DS1307 modul
Ako imate modul DS1307, morat ćete lemiti žice na ploči ili lemiti na nekim umetnutim iglama zaglavlja kako biste mogli koristiti kratkospojne žice. Zatim spojite SCL i SDA pinove na svoj Arduino, a Vcc pin na 5V pin i GND na GND.
DS3231 modul
Spajanje ovog modula jednostavno je jer su igle zaglavlja tvornički instalirane na ploči. Možete jednostavno ponovno pokrenuti kratkospojne žice od SCL -a i SDA -a do Arduina, a zatim opet od pinova Vcc i GND modula do 5V ili 3.3. V i GND vaše ploče. Međutim, oni se s druge strane dupliciraju za lemljenje vlastitih žica. Oba ova modula imaju potrebne pull-up otpornike, pa ne morate dodavati svoje. Kao i svi uređaji spojeni na I2C sabirnicu, pokušajte svesti duljinu SDA i SCL žica na minimum.
Korak 2: Čitanje i zapisivanje vremena iz vašeg RTC modula
Nakon što ste povezali svoj RTC modul. unesite i prenesite sljedeću skicu. Iako se bilješke i funkcije na skici odnose samo na DS3231, kôd radi i s DS1307.
#include "Wire.h" #define DS3231_I2C_ADDRESS 0x68 // Pretvorite normalne decimalne brojeve u binarno kodirane decimalne bajte decToBcd (byte val) {return ((val/10*16) + (val%10)); } // Pretvorimo binarno kodirane decimalne brojeve u normalne decimalne brojeve bajt bcdToDec (bajt val) {return ((val/16*10) + (val%16)); } void setup () {Wire.begin (); Serial.begin (9600); // ovdje postavljamo početno vrijeme: // DS3231 sekunde, minute, sati, dan, datum, mjesec, godina // setDS3231time (30, 42, 21, 4, 26, 11, 14); } void setDS3231time (sekunda bajta, minuta bajta, sat bajta, dan dayOfWeek, bajt dayOfMonth, mjesec bajta, godina bajtova) {// postavlja podatke o vremenu i datumu na DS3231 Wire.beginTransmission (DS3231_I2C_ADDRESS); Wire.write (0); // postavljanje sljedećeg ulaza za početak u registru sekundi Wire.write (decToBcd (drugi)); // postavljanje sekundi Wire.write (decToBcd (minuta)); // postavljanje minuta Wire.write (decToBcd (sat)); // postavljanje sati Wire.write (decToBcd (dayOfWeek)); // postavljanje dana u tjednu (1 = nedjelja, 7 = subota) Wire.write (decToBcd (dayOfMonth)); // postavljanje datuma (1 do 31) Wire.write (decToBcd (mjesec)); // postavljanje mjeseca Wire.write (decToBcd (godina)); // postavljanje godine (0 do 99) Wire.endTransmission (); } void readDS3231time (byte *second, byte *minute, byte *hour, byte *dayOfWeek, byte *dayOfMonth, byte *month, byte *year) {Wire.beginTransmission (DS3231_I2C_ADDRESS); Wire.write (0); // postavimo pokazivač registra DS3231 na 00h Wire.endTransmission (); Wire.requestFrom (DS3231_I2C_ADDRESS, 7); // tražimo sedam bajtova podataka od DS3231 počevši od registra 00h *second = bcdToDec (Wire.read () & 0x7f); *minuta = bcdToDec (Wire.read ()); *sat = bcdToDec (Wire.read () & 0x3f); *dayOfWeek = bcdToDec (Wire.read ()); *dayOfMonth = bcdToDec (Wire.read ()); *mjesec = bcdToDec (Wire.read ()); *godina = bcdToDec (Wire.read ()); } void displayTime () {byte second, minute, hour, dayOfWeek, dayOfMonth, mjesec, godina; // dohvaćanje podataka iz DS3231 readDS3231time (& second, & minute, & hour, & dayOfWeek, & dayOfMonth, & month, & year); // šalje ga na serijski monitor Serial.print (sat, DEC); // pretvara varijablu bajta u decimalni broj kada se prikaže Serial.print (":"); if (minuta <10) {Serial.print ("0"); } Serial.print (minuta, DEC); Serial.print (":"); if (drugo <10) {Serial.print ("0"); } Serial.print (drugi, DEC); Serial.print (""); Serial.print (dayOfMonth, DEC); Serial.print ("/"); Serijski.ispis (mjesec, DEC); Serial.print ("/"); Serijski.tisak (godina, DEC); Serial.print ("Dan u tjednu:"); switch (dayOfWeek) {slučaj 1: Serial.println ("nedjelja"); pauza; slučaj 2: Serial.println ("ponedjeljak"); pauza; slučaj 3: Serial.println ("utorak"); pauza; slučaj 4: Serial.println ("srijeda"); pauza; slučaj 5: Serial.println ("četvrtak"); pauza; slučaj 6: Serial.println ("petak"); pauza; slučaj 7: Serial.println ("subota"); pauza; }} void loop () {displayTime (); // prikaz podataka sata u stvarnom vremenu na serijskom monitoru, kašnjenje (1000); // svake sekunde }
Koda može biti puno, no on se dobro razlaže na dijelove kojima se može upravljati.
Prvo uključuje knjižnicu Wire, koja se koristi za komunikaciju I2C sabirnicom, nakon čega slijedi definiranje adrese sabirnice za RTC kao 0x68. Slijede dvije funkcije koje pretvaraju decimalne brojeve u BCD (binarno kodirani decimalni broj) i obrnuto. To je potrebno jer RTC IC -ovi rade u BCD -u, a ne decimalni.
Za postavljanje sata koristi se funkcija setDS3231time (). Korištenje je vrlo jednostavno, jednostavno umetnite vrijednosti od godine do sekunde, a RTC će početi od tog vremena. Na primjer, ako želite postaviti sljedeći datum i vrijeme - srijeda, 26. studenog 2014. i 21:42 te 30 sekundi - upotrijebili biste:
setDS3231time (30, 42, 21, 4, 26, 11, 14);
3. korak:
Imajte na umu da se vrijeme postavlja pomoću 24-satnog vremena, a četvrti parametar je "dan u tjednu". Ovo pada između 1 i 7, odnosno od nedjelje do subote. Ovi parametri su vrijednosti bajtova ako zamjenjujete vlastite varijable.
Nakon što pokrenete funkciju, pametno je dodati joj // i ponovno učitati kôd, tako da neće poništiti vrijeme nakon uključivanja napajanja ili resetiranja mikrokontrolera. Čitanje vremena s vašeg RTC -a jednako je jednostavno, zapravo se proces može uredno pratiti unutar funkcije displayTime (). Morat ćete definirati sedam bajtnih varijabli za spremanje podataka iz RTC -a, a one se zatim ubacuju u funkciju readDS3231time (). Na primjer, ako su vaše varijable:
byte second, minute, hour, dayOfWeek, dayOfMonth, mjesec, godina;
… osvježili biste ih trenutnim podacima iz RTC -a koristeći:
readDS3232time (& second, & minute, & hour, & dayOfWeek, & dayOfMonth, & month, & year);
Tada možete koristiti varijable kako smatrate prikladnim, od slanja vremena i datuma na serijski monitor kao što je prikazano na primjeru skice - do pretvaranja podataka u prikladan oblik za sve vrste izlaznih uređaja.
Samo da provjerite radi li sve, unesite odgovarajuće vrijeme i datum u demonstracijsku skicu, prenesite je, komentirajte funkciju setDS3231time () i prenesite je ponovo. Zatim otvorite serijski monitor i trebali biste dobiti tekući prikaz trenutnog vremena i datuma.
Od ovog trenutka sada imate softverske alate za postavljanje podataka i njihovo preuzimanje iz vašeg modula sata u stvarnom vremenu, i nadamo se da razumijete kako koristiti ove jeftine module.
Više o pojedinim IC-ovima sata u stvarnom vremenu možete saznati s web stranice proizvođača-DS1307 i DS3231.
Ovaj post vam donosi pmdway.com - sve za proizvođače i ljubitelje elektronike, uz besplatnu dostavu diljem svijeta.
Preporučeni:
Kako koristiti modul sata u stvarnom vremenu (DS3231): 5 koraka
Kako koristiti modul sata u stvarnom vremenu (DS3231): DS3231 je jeftin, iznimno točan I2C sat u stvarnom vremenu (RTC) s integriranim temperaturno kompenziranim kristalnim oscilatorom (TCXO) i kristalom. Uređaj ima ulaz za bateriju i održava točno mjerenje vremena kada je glavno napajanje
Postavljanje DS3231 RTC (sata u stvarnom vremenu) točno, brzo i automatizirano pomoću Jave (+-1 s): 3 koraka
Postavljanje DS3231 RTC (sata u stvarnom vremenu) točno, brzo i automatizirano pomoću Jave (+-1 s): Ova instrukcija će vam pokazati kako postaviti vrijeme na satu DS3231 u stvarnom vremenu pomoću Arduina i male Java aplikacije koja koristi serijska veza Arduina. Osnovna logika ovog programa: 1. Arduino šalje serijski zahtjev
DS1307 Sat u stvarnom vremenu RTC sa Arduinom: 4 koraka
DS1307 RTC sat sa stvarnim vremenom sa Arduinom: U ovom vodiču ćemo naučiti o satu sa stvarnim vremenom (RTC) i kako Arduino & IC DS1307 sata u stvarnom vremenu sastavljeni su kao vremenski uređaj. Sat stvarnog vremena (RTC) koristi se za praćenje vremena i održavanje kalendara. Da biste koristili RTC, w
Sat baziran na Arduinu koji koristi DS1307 modul sata u stvarnom vremenu (RTC) i 0,96: 5 koraka
Arduino sat sa DS1307 modulom sata u realnom vremenu (RTC) i 0.96: Zdravo dečki, u ovom ćemo vodiču vidjeti kako napraviti radni sat pomoću modula sata realnog vremena DS1307 & OLED displeji. Dakle, očitavat ćemo vrijeme iz modula sata DS1307. I ispišite ga na OLED ekranu
Stvaranje sata s M5stick C pomoću Arduino IDE -a - RTC sat u stvarnom vremenu s M5stack M5stick-C: 4 koraka
Stvaranje sata s M5stick C pomoću Arduino IDE -a | RTC sat u stvarnom vremenu s M5stack M5stick-C: Zdravo dečki, u ovim uputama naučit ćemo kako napraviti sat s m5stick-C razvojnom pločom m5stack koristeći Arduino IDE. Dakle, m5stick će prikazati datum, vrijeme i amp; tjedan u mjesecu na ekranu