Hvordan og hvorfor tilføje et ur i realtid til Arduino

Hvordan og hvorfor tilføje et ur i realtid til Arduino

Det er ikke så let at holde tid på Arduino -projekter, som du måske tror: Når computertilslutningen ikke er der, stopper din Arduino uden strøm simpelthen med at køre, inklusive dens interne ticker.





hvordan man kan se, hvem der følger mig på facebook

For at holde din Arduino synkroniseret med omverdenen får du brug for det, der kaldes et 'Real Time Clock -modul'. Sådan bruges en.





Hvad er meningen med et realtidsur (RTC)?

Din computer synkroniserer sandsynligvis sin tid med internettet, men den har stadig et internt ur, der bliver ved med at køre selv uden en internetforbindelse, eller strømmen er slukket. Når du bruger en Arduino, der er tilsluttet en computer, har den adgang til nøjagtig tid fra dit systemur. Det er ret nyttigt, men de fleste Arduino -projekter er designet til at blive brugt væk fra en computer - på hvilket tidspunkt, når strømmen er afbrudt, eller Arduino genstartes, har den absolut ingen idé om, hvad klokken er. Det interne ur nulstilles og begynder at tælle fra nul igen, næste gang det tændes.





Hvis dit projekt har noget at gøre med at have brug for tiden - f.eks. Mit natlys og solopgangsur - vil dette helt klart være et problem. I det projekt kom vi uden om problemet ved manuelt at indstille tiden hver nat på en temmelig grov måde - brugeren ville trykke på nulstillingsknappen lige før de gik i seng, hvilket gav en manuel tidssynkronisering. Det er klart, at det ikke er en ideel løsning i lang tid.

Et RTC -modul er en ekstra bit af kredsløb, der kræver et lille møntcellebatteri, som fortsat tæller tiden, selv når din Arduino er slukket. Efter at være blevet indstillet en gang - vil den holde den tid i batteriets levetid, normalt et godt år eller deromkring.



TinyRTC

Den mest populære RTC for Arduino hedder TinyRTC og kan købes for omkring $ 5- $ 10 på eBay. Du skal højst sandsynligt levere dit eget batteri (det er ulovligt at sende disse til udlandet mange steder) og nogle overskrifter (stifterne, der sidder i hullerne, som du skal lodde i dig selv).

Dette er det modul, jeg har:





Det har endda en indbygget temperatursensor, selvom batteriet holder længere, hvis du ikke bruger det.

Antallet af huller på den ting ser temmelig skræmmende ud, men du skal kun bruge fire af dem; GND, VCC, SCL og SDA - du kan bruge de relevante stifter på hver side af RTC -modulet. Du taler til uret ved hjælp af I2C -protokol , hvilket betyder, at der kun bruges to ben - en til 'uret' (et serielt kommunikationsdataur, intet at gøre med tiden) og en til dataene. Faktisk kæder du endda op til 121 I2C -enheder på de samme to ben - tjek denne Adafruit -side for et udvalg af andre I2C -enheder, du kan tilføje, fordi der er mange!





Kom godt i gang

Tilslut dit TinyRTC -modul i henhold til diagrammet herunder - den lyserøde DS -linje er ikke nødvendig, da det er for temperatursensoren.

Download derefter Tid og DS1307RTC biblioteker, og placer de resulterende mapper i din /biblioteker folder.

Afslut og genstart Arduino -miljøet for at indlæse bibliotekerne og eksemplerne.

Du finder to eksempler i DS1307RTC -menuen: Upload og kør Fastsat tidspunkt eksempel først - dette vil indstille RTC til det korrekte tidspunkt. Den egentlige kode er ikke værd at gå i detaljer med, bare ved, at du skal køre den en gang for at udføre den indledende tidssynkronisering.

Se derefter på eksemplets brug med ReadTest .

hvad kan du bruge itunes -kort til

#include
#include
#include
void setup() {
Serial.begin(9600);
while (!Serial) ; // wait for serial
delay(200);
Serial.println('DS1307RTC Read Test');
Serial.println('-------------------');
}
void loop() {
tmElements_t tm;
if (RTC.read(tm)) {
Serial.print('Ok, Time = ');
print2digits(tm.Hour);
Serial.write(':');
print2digits(tm.Minute);
Serial.write(':');
print2digits(tm.Second);
Serial.print(', Date (D/M/Y) = ');
Serial.print(tm.Day);
Serial.write('/');
Serial.print(tm.Month);
Serial.write('/');
Serial.print(tmYearToCalendar(tm.Year));
Serial.println();
} else {
if (RTC.chipPresent()) {
Serial.println('The DS1307 is stopped. Please run the SetTime');
Serial.println('example to initialize the time and begin running.');
Serial.println();
} else {
Serial.println('DS1307 read error! Please check the circuitry.');
Serial.println();
}
delay(9000);
}
delay(1000);
}
void print2digits(int number) {
if (number >= 0 && number <10) {
Serial.write('0');
}
Serial.print(number);
}

Bemærk, at vi også har inkluderet kernen Wire.h bibliotek - dette leveres med Arduino og bruges til kommunikation over I2C. Upload koden, åbn den serielle konsol på 9600 baud, og se, og din Arduino udsender den aktuelle tid hvert sekund. Vidunderlig!

Den vigtigste kode i eksemplet er at oprette en tmElements_t tm - det struktur at vi vil udfylde med den aktuelle tid; og RTC. Læsning (tm) funktion, som får den aktuelle tid fra RTC -modulet, sætter den ind i vores tm struktur og returnerer sandt, hvis alt gik godt. Tilføj din fejlfindings- eller logikkode i denne 'if' -erklæring, f.eks. At udskrive tiden eller reagere på den.

skal du betale for microsoft word

Nu hvor du ved, hvordan du får det rigtige tidspunkt med Arduino, kan du prøve at omskrive solopgangs alarmprojektet eller oprette et LED -ordur - mulighederne er uendelige! Hvad vil du lave?

Billedkreditter: Snootlab Via Flickr

Del Del Tweet E -mail Sådan ændres udseendet og følelsen af ​​dit Windows 10 -skrivebord

Vil du vide, hvordan du får Windows 10 til at se bedre ud? Brug disse enkle tilpasninger til at gøre Windows 10 til din egen.

Læs Næste
Relaterede emner
  • gør det selv
  • Arduino
Om forfatteren James Bruce(707 artikler udgivet)

James har en bachelor i kunstig intelligens og er CompTIA A+ og Network+ certificeret. Når han ikke har travlt som Hardware Reviews Editor, nyder han LEGO, VR og brætspil. Inden han kom til MakeUseOf, var han belysningstekniker, engelsklærer og datacenteringeniør.

Mere fra James Bruce

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for at få tekniske tips, anmeldelser, gratis e -bøger og eksklusive tilbud!

Klik her for at abonnere