Kaip ir kodėl prie „Arduino“ pridėti laikrodį realiuoju laiku

Kaip ir kodėl prie „Arduino“ pridėti laikrodį realiuoju laiku

Laikyti laiką „Arduino“ projektuose nėra taip paprasta, kaip galėtumėte pagalvoti: kai nebus kompiuterio ryšio, jūsų „Arduino“, neturintis energijos, tiesiog nustoja veikti, įskaitant vidinį žymeklį.





programa, skirta žaisti žaidimus naudojant imessage

Kad jūsų „Arduino“ būtų sinchronizuojamas su aplinkiniu pasauliu, jums reikės to, kas vadinama „realaus laiko laikrodžio moduliu“. Štai kaip naudoti vieną.





Kokia yra realaus laiko laikrodžio (RTC) prasmė?

Jūsų kompiuteris greičiausiai sinchronizuoja savo laiką su internetu, tačiau vis tiek turi vidinį laikrodį, kuris veikia net ir be interneto ryšio arba išjungus maitinimą. Kai naudojate „Arduino“, prijungtą prie kompiuterio, jis turi prieigą prie tikslaus jūsų sistemos laikrodžio pateikto laiko. Tai gana naudinga, tačiau dauguma „Arduino“ projektų yra skirti naudoti toli nuo kompiuterio - bet kuriuo metu, kai tik maitinimas bus atjungtas arba „Arduino“ bus paleistas iš naujo, jis visiškai neįsivaizduos, kiek dabar yra laiko. Vidinis laikrodis bus nustatytas iš naujo ir kitą kartą pradėjus skaičiuoti, jis vėl pradės skaičiuoti nuo nulio.





Jei jūsų projektas turi ką nors bendro su tuo, kad reikia laiko, pavyzdžiui, mano naktinė šviesa ir saulėtekio žadintuvas, tai tikrai bus problema. Tame projekte mes išsprendėme problemą rankiniu būdu nustatydami laiką kiekvieną vakarą gana grubiai - vartotojas paspausdavo iš naujo nustatymo mygtuką prieš pat eidamas miegoti ir suteiks rankinį laiko sinchronizavimą. Akivaizdu, kad tai nėra idealus ilgalaikis sprendimas.

RTC modulis yra papildoma grandinė, kuriai reikalinga maža monetų elementų baterija, kuri ir toliau skaičiuoja laiką net tada, kai jūsų „Arduino“ yra išjungtas. Vieną kartą nustačius - akumuliatoriaus tarnavimo laikas, paprastai geri metai.



„TinyRTC“

Populiariausias „Arduino“ RTC yra vadinamas „TinyRTC“ ir jį galima nusipirkti už maždaug 5–10 USD „eBay“. Labiausiai tikėtina, kad turėsite tiekti savo bateriją (tai yra neteisėta gabenti užsienyje į daugelį vietų) ir kai kurias antraštes (kaiščius, kurie įkišami į skyles, kurias turėsite lituoti patys).

Štai mano turimas modulis:





Jame netgi yra įmontuotas temperatūros jutiklis, nors akumuliatorius tarnaus ilgiau, jei jo nenaudosite.

To daikto skylių skaičius atrodo gana bauginantis, tačiau jums reikia tik keturių iš jų; GND, VCC, SCL ir SDA - galite naudoti atitinkamus kaiščius abiejose RTC modulio pusėse. Jūs kalbate su laikrodžiu naudodami I2C protokolas , o tai reiškia, kad naudojami tik du kaiščiai - vienas „laikrodžiui“ (nuoseklaus ryšio duomenų laikrodis, nieko bendro su laiku) ir vienas - duomenims. Tiesą sakant, prie tų pačių dviejų kaiščių galite prijungti net iki 121 I2C įrenginio - patikrinkite šį „Adafruit“ puslapį prie kitų I2C įrenginių, kuriuos galite pridėti, nes jų yra daug!





Darbo pradžia

Prijunkite „TinyRTC“ modulį pagal žemiau pateiktą schemą - rožinė DS linija nereikalinga, kaip ir temperatūros jutikliui.

Tada atsisiųskite Laikas ir DS1307RTC bibliotekos ir įdėkite gautus aplankus į savo /bibliotekos aplanką.

Išeikite iš „Arduino“ aplinkos ir paleiskite ją iš naujo, kad galėtumėte įkelti į bibliotekas ir pavyzdžius.

DS1307RTC meniu rasite du pavyzdžius: įkelkite ir paleiskite Nustatyti laiką pavyzdys pirmiausia - tai nustatys teisingą RTC laiką. Tikrojo kodo neverta gilintis, tiesiog žinokite, kad jį turite paleisti vieną kartą, kad atliktumėte pradinį laiko sinchronizavimą.

Toliau pažvelkite į naudojimo pavyzdį su „ReadTest“ .

Kaip padaryti, kad „Windows XP“ atrodytų kaip „Windows 7“

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

Atminkite, kad mes taip pat įtraukėme pagrindą Viela.h biblioteka - tai yra „Arduino“ ir naudojama bendrauti per „I2C“. Įkelkite kodą, atidarykite serijos konsolę 9600 baudų greičiu ir žiūrėkite, o jūsų „Arduino“ kas sekundę išves dabartinį laiką. Nuostabu!

Svarbiausias pavyzdyje esantis kodas yra sukurti tmElements_t tm - tai a struktūra kad mes užpildysime dabartiniu laiku; ir RTC.read (tm) funkcija, kuri gauna dabartinį laiką iš RTC modulio, įtraukia jį į mūsų tm struktūrą, ir grįžta tiesa, jei viskas klostėsi gerai. Įtraukite derinimo ar logikos kodą į teiginį „jei“, pvz., Išspausdinkite laiką arba reaguokite į jį.

Raskite savo grafikos plokštę windows 10

Dabar, kai žinote, kaip tinkamai pasiekti laiką su „Arduino“, galite pabandyti perrašyti saulėtekio žadintuvo projektą arba sukurti LED žodinį laikrodį - galimybės yra begalinės! Ką gaminsi?

Vaizdo kreditai: Snootlab Per „Flickr“

Dalintis Dalintis „Tweet“ Paštu Kaip pakeisti „Windows 10“ darbalaukio išvaizdą

Norite sužinoti, kaip „Windows 10“ atrodyti geriau? Naudokite šiuos paprastus pritaikymus, kad padarytumėte „Windows 10“ savo.

Skaityti toliau
Susijusios temos
  • Pasidaryk pats
  • Arduino
Apie autorių Jamesas Bruce'as(Paskelbti 707 straipsniai)

Jamesas turi dirbtinio intelekto bakalauro laipsnį ir yra „CompTIA A+“ ir „Network+“ sertifikuotas. Kai jis nėra užsiėmęs aparatūros apžvalgų redaktoriumi, jam patinka LEGO, VR ir stalo žaidimai. Prieš pradėdamas dirbti „MakeUseOf“, jis buvo apšvietimo technikas, anglų kalbos mokytojas ir duomenų centro inžinierius.

Daugiau iš Jameso Bruce'o

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia