Kuinka ja miksi lisätä reaaliaikainen kello Arduinolle

Kuinka ja miksi lisätä reaaliaikainen kello Arduinolle

Arduino -projekteihin liittyvän ajan pitäminen ei ole niin helppoa kuin luulisi: kun tietokoneyhteys ei ole olemassa, tehoton Arduino lakkaa toimimasta, sisältäen sen sisäisen tikerin.





voitko jakaa näytön discord -mobiililaitteella

Jotta Arduino pysyisi synkronoituna ympäröivän maailman kanssa, tarvitset niin kutsutun `` reaaliaikaisen kellomoduulin ''. Käytä yhtä.





Mikä on tosiaikaisen kellon (RTC) tarkoitus?

Tietokone synkronoi aikansa todennäköisesti Internetin kanssa, mutta siinä on silti sisäinen kello, joka jatkaa toimintaansa myös ilman Internet -yhteyttä tai virta katkaistaan. Kun käytät tietokoneeseen kytkettyä Arduinoa, sillä on pääsy järjestelmän kellon antamaan tarkkaan aikaan. Se on melko hyödyllistä, mutta useimmat Arduino -projektit on suunniteltu käytettäväksi kaukana tietokoneesta - missä vaiheessa, aina kun virta katkaistaan ​​tai Arduino käynnistetään uudelleen, sillä ei ole aavistustakaan siitä, paljonko kello on. Sisäinen kello nollataan ja alkaa laskea uudelleen nollasta seuraavan kerran, kun se käynnistetään.





Jos projektillasi on jotain tekemistä ajan tarvitsemisen kanssa - kuten yövaloni ja auringonnousun herätyskello - tämä on selvä ongelma. Tässä projektissa pääsimme ongelmaan asettamalla manuaalisesti kellonajan joka ilta melko karkealla tavalla - käyttäjä painaa nollauspainiketta juuri ennen nukkumaanmenoa ja tarjoaa manuaalisen ajan synkronoinnin. Se ei selvästikään ole ihanteellinen pitkäaikainen ratkaisu.

RTC -moduuli on lisäpiiri, joka vaatii pienen nappipariston, joka laskee edelleen aikaa, vaikka Arduino -laitteesi olisi sammutettu. Kun olet asettanut sen kerran - se pitää akun käyttöiän, yleensä hyvän vuoden.



TinyRTC

Arduinon suosituin RTC on nimeltään TinyRTC, ja sen voi ostaa noin 5–10 dollarilla eBayssa. Sinun on todennäköisesti toimitettava oma akku (on laitonta lähettää näitä ulkomaille moniin paikkoihin) ja jotkut otsikot (reiät, jotka joutuvat reikiin, jotka sinun on juotettava itse).

Minulla on tämä moduuli:





Siinä on jopa sisäänrakennettu lämpötila-anturi, vaikka akku kestää pidempään, jos et käytä sitä.

Reiän määrä tuossa asiassa näyttää melko pelottavalta, mutta tarvitset vain neljä; GND, VCC, SCL ja SDA - voit käyttää asiaankuuluvia nastoja RTC -moduulin kummallakin puolella. Puhut kellolle käyttämällä I2C -protokolla , mikä tarkoittaa, että käytetään vain kahta nastaa - yhtä kelloa varten (sarjaliikenteen datakello, ei mitään tekemistä ajan kanssa) ja toista dataa varten. Itse asiassa voit jopa ketjuttaa jopa 121 I2C -laitetta samoihin kahteen nastaan ​​- tutustu tämä Adafruit -sivu valikoima muita I2C -laitteita, joita voit lisätä, koska niitä on paljon!





Päästä alkuun

Liitä TinyRTC -moduuli alla olevan kaavion mukaisesti - vaaleanpunaista DS -viivaa ei tarvita, koska se koskee lämpötila -anturia.

Lataa seuraavaksi Aika ja DS1307RTC kirjastot ja aseta tuloksena olevat kansiot kansioon /kirjastot kansio.

Poistu ja käynnistä uudelleen Arduino -ympäristö ladataksesi kirjastot ja esimerkit.

Löydät kaksi esimerkkiä DS1307RTC -valikosta: lataa ja suorita Asettaa aika esimerkki ensin - tämä asettaa RTC: n oikeaan aikaan. Varsinaisen koodin kanssa ei kannata mennä yksityiskohtiin. Tiedä vain, että sinun on suoritettava se kerran suorittaaksesi ensimmäisen ajan synkronoinnin.

Katso seuraavaksi esimerkin käyttöä ReadTest .

mikä on älykäs wifi -reititin

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

Huomaa, että olemme sisällyttäneet myös ytimen Johto. H kirjasto - tämä tulee Arduinon mukana ja sitä käytetään kommunikointiin I2C: n kautta. Lataa koodi, avaa sarjakonsoli 9600 baudilla ja katso, ja Arduino näyttää nykyisen ajan joka sekunti. Ihmeellistä!

Tärkein koodi esimerkissä on a tmElements_t tm - Tämä rakenne että täytetään nykyinen aika; ja RTC.read (tm) -toiminto, joka saa nykyisen ajan RTC -moduulista, asettaa sen meidän tm rakenne ja palauttaa totuuden, jos kaikki meni hyvin. Lisää virheenkorjaus- tai logiikkakoodisi if -lausekkeen sisälle, kuten tulostamalla aika tai reagoimalla siihen.

sovellus, jonka avulla voit käyttää koulun wifi -yhteyttä

Nyt kun tiedät kuinka saada oikea aika Arduinon kanssa, voit yrittää kirjoittaa auringonnousun hälytysprojektin uudelleen tai luoda LED -sanakellon - mahdollisuudet ovat rajattomat! Mitä teet?

Kuvaluotot: Snootlab Flickrin kautta

Jaa Jaa Tweet Sähköposti Kuinka muuttaa Windows 10 -työpöydän ulkoasua

Haluatko tietää, miten Windows 10 näyttää paremmalta? Näiden yksinkertaisten mukautusten avulla voit tehdä Windows 10: stä oman.

Lue seuraava
Liittyvät aiheet
  • tee-se-itse
  • Arduino
Kirjailijasta James Bruce(707 artikkelia julkaistu)

Jamesilla on BSc tekoälyssä ja CompTIA A+ ja Network+ -sertifioitu. Kun hän ei ole kiireinen laitteistoarvostelujen editorina, hän nauttii LEGO-, VR- ja lautapeleistä. Ennen MakeUseOfiin tuloaan hän oli valaistustekniikka, englannin opettaja ja konesali -insinööri.

Lisää James Brucelta

tilaa uutiskirjeemme

Liity uutiskirjeeseemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia ​​e -kirjoja ja ainutlaatuisia tarjouksia!

Klikkaa tästä tilataksesi