Hur och varför lägga till en realtidsklocka till Arduino

Hur och varför lägga till en realtidsklocka till Arduino

Att hålla tid på Arduino -projekt är inte så enkelt som du kanske tror: när datoranslutningen inte finns där, slutar din Arduino utan ström helt enkelt att köra, inklusive dess interna ticker.





hur man gör anpassade ikoner för Windows 10

För att hålla din Arduino synkroniserad med omvärlden behöver du det som kallas en 'Real Time Clock -modul'. Så här använder du en.





Vad är poängen med en Real Time Clock (RTC)?

Din dator synkroniserar troligen sin tid med internet, men den har fortfarande en intern klocka som håller igång även utan internetanslutning eller strömmen är avstängd. När du använder en Arduino som är ansluten till en dator har den tillgång till exakt tid från systemklockan. Det är ganska användbart, men de flesta Arduino -projekt är utformade för att användas på avstånd från en dator - när som helst när strömmen kopplas bort eller Arduino startas om, kommer den absolut inte att ha någon aning om vad klockan är. Den interna klockan återställs och börjar räkna från noll igen nästa gång den startas.





Om ditt projekt har något att göra med att behöva tid - till exempel mitt nattljus och väckarklocka - kommer detta helt klart att bli ett problem. I det projektet löste vi problemet genom att manuellt ställa in tiden varje kväll på ett ganska grovt sätt - användaren skulle trycka på återställningsknappen strax innan de gick till sängs, vilket ger en manuell tidssynkronisering. Det är uppenbarligen inte en idealisk långtidslösning.

En RTC -modul är en extra krets, som kräver ett litet myntcellsbatteri, som fortsätter att räkna tiden även när din Arduino är avstängd. Efter att ha ställts in en gång - kommer den att hålla den tiden under batteriets livslängd, vanligtvis ett bra år eller så.



TinyRTC

Den mest populära RTC för Arduino heter TinyRTC och kan köpas för cirka $ 5- $ 10 på eBay. Du kommer sannolikt att behöva leverera ditt eget batteri (det är olagligt att transportera dessa utomlands till många ställen) och några rubriker (stiften som går in i hålen, som du måste lödda i dig själv).

Det här är modulen jag har:





Den har till och med en inbyggd temperatursensor, även om batteriet räcker längre om du inte använder det.

Antalet hål på den saken ser ganska skrämmande ut, men du behöver bara fyra av dem; GND, VCC, SCL och SDA - du kan använda de relevanta stiften på vardera sidan av RTC -modulen. Du pratar med klockan med I2C -protokoll , vilket innebär att endast två stift används - en för 'klockan' (en seriell kommunikationsklocka, inget att göra med tiden) och en för data. Faktum är att du till och med kedjer upp till 121 I2C -enheter på samma två stift - kolla in denna Adafruit -sida för ett urval av andra I2C -enheter du kan lägga till, för det finns mycket!





Komma igång

Anslut din TinyRTC -modul enligt diagrammet nedan - den rosa DS -linjen behövs inte, eftersom det är för temperaturgivaren.

Ladda sedan ner Tid och DS1307RTC bibliotek och placera de resulterande mapparna i din /bibliotek mapp.

Avsluta och starta om Arduino -miljön för att ladda i biblioteken och exemplen.

Du hittar två exempel i DS1307RTC -menyn: ladda upp och kör Ställ klockan exempel först - detta kommer att ställa in RTC till rätt tid. Den faktiska koden är inte värd att gå in i detalj med, bara veta att du måste köra den en gång för att utföra den första tidssynkroniseringen.

Titta sedan på exempelanvändningen med ReadTest .

varför är min cpu -användning 100

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

Observera att vi också har inkluderat kärnan Wire.h bibliotek - detta kommer med Arduino och används för kommunikation över I2C. Ladda upp koden, öppna seriekonsolen vid 9600 baud och titta på och din Arduino matar ut den aktuella tiden varje sekund. Underbar!

Den viktigaste koden i exemplet är att skapa en tmElements_t tm - detta a strukturera att vi ska fylla med den aktuella tiden; och den RTC. Läsning (tm) funktion, som får den aktuella tiden från RTC -modulen, lägger den i vår tm struktur och returnerar sant om allt gick bra. Lägg till din felsöknings- eller logikkod i det 'if' -uttalandet, till exempel att skriva ut tiden eller reagera på den.

hur man använder microsoft office gratis

Nu när du vet hur du får rätt tid med Arduino kan du försöka skriva om soluppgångslarmprojektet eller skapa en LED -ordklocka - möjligheterna är oändliga! Vad ska du göra?

Bildkrediter: Snootlab Via Flickr

Dela med sig Dela med sig Tweet E-post Så här ändrar du utseende och känsla på ditt Windows 10 -skrivbord

Vill du veta hur du får Windows 10 att se bättre ut? Använd dessa enkla anpassningar för att göra Windows 10 till din egen.

Läs Nästa
Relaterade ämnen
  • DIY
  • Arduino
Om författaren James Bruce(707 artiklar publicerade)

James har en BSc i artificiell intelligens och är CompTIA A+ och Network+ -certifierad. När han inte är upptagen som Hardware Reviews Editor, gillar han LEGO, VR och brädspel. Innan han började på MakeUseOf var han belysningstekniker, engelsklärare och datacenteringenjör.

Mer från James Bruce

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e -böcker och exklusiva erbjudanden!

Klicka här för att prenumerera