Hvordan og hvorfor legge en sanntidsklokke til Arduino

Hvordan og hvorfor legge en sanntidsklokke til Arduino

Å holde tid på Arduino -prosjekter er ikke så enkelt som du kanskje tror: Når datamaskinforbindelsen ikke er der, slutter den upakkede Arduino ganske enkelt å kjøre, inkludert den interne tickeren.





nox google play -tjenester har stoppet

For å holde Arduinoen din synkronisert med verden rundt den, trenger du det som kalles en 'sanntidsklokke -modul'. Slik bruker du en.





Hva er poenget med en sanntidsklokke (RTC)?

Datamaskinen din synkroniserer sannsynligvis tiden sin med internett, men den har fortsatt en intern klokke som fortsetter å gå selv uten en Internett -tilkobling eller strømmen er slått av. Når du bruker en Arduino koblet til en datamaskin, har den tilgang til nøyaktig tid fra systemklokken. Det er ganske nyttig, men de fleste Arduino -prosjekter er designet for å brukes vekk fra en datamaskin - når som helst når strømmen kobles fra eller Arduino startes på nytt, har den absolutt ingen anelse om hva klokken er. Den interne klokken blir tilbakestilt og begynner å telle fra null igjen neste gang den slås på.





Hvis prosjektet ditt har noe å gjøre med å trenge tiden - for eksempel nattlys og vekkerklokke - vil dette helt klart bli et problem. I dette prosjektet løste vi problemet ved å stille klokken manuelt hver natt på en ganske grov måte - brukeren ville trykke på tilbakestillingsknappen like før de la seg, og ga en manuell tidssynkronisering. Det er tydeligvis ikke en ideell løsning for lang tid.

En RTC -modul er en ekstra krets, som krever et lite myntcellebatteri, som fortsetter å telle tiden selv når Arduino er slått av. Etter å ha blitt satt en gang - vil den beholde den tiden i batteriets levetid, vanligvis et godt år eller så.



TinyRTC

Den mest populære RTC for Arduino heter TinyRTC og kan kjøpes for rundt $ 5- $ 10 på eBay. Du må mest sannsynlig levere ditt eget batteri (det er ulovlig å sende disse til utlandet mange steder), og noen overskrifter (pinnene som sitter i hullene, som du må lodde i selv).

Dette er modulen jeg har:





Den har til og med en innebygd temperatursensor, selv om batteriet vil vare lenger hvis du ikke bruker den.

Antall hull på den tingen ser ganske skummelt ut, men du trenger bare fire av dem; GND, VCC, SCL og SDA - du kan bruke de relevante pinnene på hver side av RTC -modulen. Du snakker til klokken med I2C -protokoll , som betyr at bare to pins brukes - en for 'klokken' (en seriell kommunikasjonsklokke, ingenting å gjøre med tiden) og en for dataene. Faktisk kjeder du opp til 121 I2C -enheter på de samme to pinnene - sjekk ut denne Adafruit -siden for et utvalg av andre I2C -enheter du kan legge til, fordi det er mange!





Starter

Koble til TinyRTC -modulen din i henhold til diagrammet nedenfor - den rosa DS -linjen er ikke nødvendig, da det er for temperatursensoren.

Last deretter ned Tid og DS1307RTC biblioteker og plasser de resulterende mappene i /biblioteker mappe.

Avslutt og start Arduino -miljøet på nytt for å laste det inn i bibliotekene og eksemplene.

Du finner to eksempler i DS1307RTC -menyen: last opp og kjør SetTime eksempel først - dette vil sette RTC til riktig tid. Den faktiske koden er ikke verdt å gå i detalj med, bare vet at du må kjøre den en gang for å utføre den første tidssynkroniseringen.

Se deretter på eksempelbruken med ReadTest .

hvordan koble til en ny xbox one -kontroller

#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);
}

Vær oppmerksom på at vi også har inkludert kjernen Wire.h bibliotek - dette kommer med Arduino og brukes til kommunikasjon over I2C. Last opp koden, åpne seriekonsollen på 9600 baud, og se og Arduino sender ut gjeldende tid hvert sekund. Strålende!

Den viktigste koden i eksemplet er å lage en tmElements_t tm - dette er struktur at vi skal fylle ut med gjeldende tid; og RTC. Lese (tm) funksjonen, som får den nåværende tiden fra RTC -modulen, legger den inn i vår tm struktur, og returnerer sant hvis alt gikk bra. Legg til feilsøkings- eller logikkoden i den 'if' -setningen, for eksempel å skrive ut tiden eller reagere på den.

hvordan se etter skjulte kameraer

Nå som du vet hvordan du får riktig tid med Arduino, kan du prøve å skrive om soloppgangsalarmprosjektet eller lage en LED -ordklokke - mulighetene er uendelige! Hva vil du lage?

Bildekreditter: Snootlab Via Flickr

Dele Dele kvitring E -post Slik endrer du utseendet på Windows 10 -skrivebordet

Vil du vite hvordan du får Windows 10 til å se bedre ut? Bruk disse enkle tilpasningene for å gjøre Windows 10 til din egen.

Les neste
Relaterte temaer
  • DIY
  • Arduino
Om forfatteren James Bruce(707 artikler publisert)

James har en BSc i kunstig intelligens og er CompTIA A+ og Network+ sertifisert. Når han ikke er opptatt som Hardware Reviews Editor, liker han LEGO, VR og brettspill. Før han begynte i MakeUseOf, var han belysningstekniker, engelsklærer og datasenteringeniør.

Mer fra James Bruce

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis ebøker og eksklusive tilbud!

Klikk her for å abonnere