Sisällysluettelo:
- Vaihe 1: Tarvittavat komponentit
- Vaihe 2: Arduino -kellon liittäminen
- Vaihe 3: Arduino -kellon koodi RTC: llä
Video: Reaaliaikainen kello Arduinolla: 3 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
Tässä projektissa teemme kellon Arduino- ja RTC -moduulin avulla. Kuten tiedämme, Arduino ei voi näyttää todellista aikaa, joten käytämme RTC -moduulia oikean ajan näyttämiseen nestekidenäytössä. Lue kaikki vaiheet huolellisesti, se auttaa sinua paljon tekemään kellokoneiston.
DS3231 Arduino -koodi on kuin DS1307 -koodi ja se toimii molempien RTC -sirujen kanssa.
Alla oleva Arduino -koodi ei käytä mitään kirjastoa DS3231 RTC: lle, Wire -kirjasto on tarkoitettu Arduinon ja DS3231: n väliselle kirjeenvaihdolle I2C -sopimuksen mukaisesti.
Joo! Monet elektroniikkainsinöörit ovat riippuvaisia siitä aikapohjaisissa projekteissaan, mutta RTC ei ole täysin luotettava. Se toimii paristolla ja se on vaihdettava ennemmin tai myöhemmin. IoT -projekteissa se käyttää arvokkaita SPI -sarjoja (Serial Peripheral Interface) ja sotkeutuu, kun johdot ovat sotkeutuneet. Ratkaisu… Tässä on sankarimme NTP (Network Time Protocol). NTP on niin tarkka, koska se saa aikaa Internetistä. Aiomme käyttää tätä protokollaa asiakas-palvelin-tilassa. prosessi on niin yksinkertainen, että Nodemcu toimii asiakkaana ja pyytää NTP -paketin palvelimelta UDP: tä käyttäen. Vastineeksi palvelin lähettää paketin asiakkaalle, joka jäsentää tiedot. NTP on universaali ajan synkronointiprotokolla. Valaistetaan nyt laboratoriomme työpiste
Vaihe 1: Tarvittavat komponentit
- Arduino -levy
- DS3231 RTC -kortti
- 16x2 LCD -näyttö
- 2 x painike
- 10K ohmin muuttuva vastus (tai potentiometri)
- 330 ohmin vastus
- 3V nappiparisto
- Leipälauta
- Hyppyjohdot
RTC -molekyyli DS3231
Aika on olennainen tunne, jota vaaditaan tässä nopeatempoisessa ihmismaailmassa. Reaaliaikaisessa projektissa
Käytämme RTC: tä (A. K. A Real-time clock)
RTC Real-time-clock (RTC) on integroitu piiri (IC), joka seuraa nykyistä aikaa. RTC löytyy yleensä tietokoneen emolevyistä ja sulautetuista järjestelmistä, jotka vaativat ajoissa pääsyä.
Vaihe 2: Arduino -kellon liittäminen
- Liitä SCL -nasta RTC -moduuliin Arduino A5: een
- Liitä SDA -nasta RTC -moduuliin Arduino A4 -laitteeseen
- Kytke VCC 5V ja GND GND
- Kytke painike tappiin 8
- Liitä toinen painike tappiin 9
- Liitä nestekidenäytön RS Arduinon nastaan 2
- Liitä nestekidenäytön E Arduinon nastaan 3
- Liitä nestekidenäytön D7 Arduinon nastaan 7
- Liitä nestekidenäytön D6 Arduinon nastaan 6
- Liitä nestekidenäytön D5 Arduinon nastaan 5
- Liitä nestekidenäytön D4 Arduinon nastaan 4
- Liitä VSS & K GND: hen
- Kytke VDD & A 5 V: iin
- Liitä vo potentiometrin ulostulonappiin
Vaihe 3: Arduino -kellon koodi RTC: llä
DS3231 toimii vain BCD -muodossa ja muuntaaksesi BCD: n desimaaliksi ja päinvastoin, käytin alla olevia 2 riviä (esimerkki minuutista): // Muunna BCD desimaaliminuutiksi = (minuutti >> 4) * 10 + (minuutti & 0x0F);
// Muunna desimaali BCDminute = ((minuutti / 10) << 4) + (minuutti % 10); void DS3231_display (): näyttää ajan ja kalenterin, ennen kuin näyttöaika ja kalenteritiedot muunnetaan BCD: stä desimaalimuotoon. void blink_parameter ():
// Reaaliaikainen kello ja kalenteri asetuspainikkeilla käyttäen DS3231: tä ja Arduinoa // sisällytä LCD -kirjaston koodi #include // sisälly langallisen kirjaston koodi (tarvitaan I2C -protokollalaitteisiin) #sisällytä // LCD -moduuliliitännät (RS, E, D4, D5, D6, D7) LiquidCrystal lcd (2, 3, 4, 5, 6, 7); void setup () {pinMode (8, INPUT_PULLUP); // painike1 on kytketty nastaan 8 pinMode (9, INPUT_PULLUP); // painike2 on kytketty nastaan 9 // LCD -näytön sarakkeiden ja rivien määrän asettaminen lcd.begin (16, 2); Wire.begin (); // Liity i2c -väylään} char Time = "TIME:::"; char -kalenteri = "DATE: / / 20"; tavu i, toinen, minuutti, tunti, päivämäärä, kuukausi, vuosi; void DS3231_display () {// Muunna BCD desimaalisekundiksi = (toinen >> 4) * 10 + (toinen & 0x0F); minuutti = (minuutti >> 4) * 10 + (minuutti & 0x0F); tunti = (tunti >> 4) * 10 + (tunti & 0x0F); päivämäärä = (päivämäärä >> 4) * 10 + (päivämäärä & 0x0F); kuukausi = (kuukausi >> 4) * 10 + (kuukausi & 0x0F); vuosi = (vuosi >> 4) * 10 + (vuosi & 0x0F); // Lopetusaika [12] = toinen % 10 + 48; Aika [11] = sekunti / 10 + 48; Aika [9] = minuutti % 10 + 48; Aika [8] = minuutti / 10 + 48; Aika [6] = tunti % 10 + 48; Aika [5] = tunti / 10 + 48; Kalenteri [14] = vuosi % 10 + 48; Kalenteri [13] = vuosi / 10 + 48; Kalenteri [9] = kuukausi % 10 + 48; Kalenteri [8] = kuukausi / 10 + 48; Kalenteri [6] = päivämäärä % 10 + 48; Kalenteri [5] = päivämäärä / 10 + 48; lcd.setCursor (0, 0); lcd.print (aika); // Näyttöaika lcd.setCursor (0, 1); lcd.print (kalenteri); // Näytä kalenteri} void blink_parameter () {tavu j = 0; while (j 23) // Jos tuntia> 23 ==> tuntia = 0 parametri = 0; if (i == 1 && parametri> 59) // Jos minuutit> 59 ==> minuutit = 0 parametri = 0; if (i == 2 && parametri> 31) // Jos päivämäärä> 31 ==> päivämäärä = 1 parametri = 1; if (i == 3 && parametri> 12) // Jos kuukausi> 12 ==> kuukausi = 1 parametri = 1; if (i == 4 && parametri> 99) // Jos vuosi> 99 ==> vuosi = 0 parametri = 0; sprintf (teksti, "%02u", parametri); lcd.setCursor (x, y); lcd.print (teksti); viive (200); // Odota 200 ms} lcd.setCursor (x, y); lcd.print (""); // Näytä kaksi välilyöntiä blink_parameter (); sprintf (teksti, "%02u", parametri); lcd.setCursor (x, y); lcd.print (teksti); blink_parameter (); if (! digitalRead (8)) {// Jos painiketta (nasta #8) painetaan i ++; // Virheellinen 'i' seuraavan parametrin palautusparametrille; // Palauta parametrin arvo ja poistu}}} void loop () {if (! DigitalRead (8)) {// Jos painiketta (nasta #8) painetaan i = 0; tunti = muokkaa (5, 0, tunti); minuutti = muokkaa (8, 0, minuutti); päivämäärä = muokkaa (5, 1, päivämäärä); kuukausi = muokkaa (8, 1, kuukausi); vuosi = muokkaa (13, 1, vuosi); // Muunna desimaali BCD minuutiksi = ((minuutti / 10) << 4) + (minuutti % 10); tunti = ((tunti / 10) << 4) + (tunti % 10); päivämäärä = ((päivämäärä / 10) << 4) + (päivämäärä % 10); kuukausi = ((kuukausi / 10) << 4) + (kuukausi % 10); vuosi = ((vuosi / 10) << 4) + (vuosi % 10); // Lopeta muuntaminen // Kirjoita tiedot DS3231 RTC Wire -järjestelmään. AlkuTransmission (0x68); // Käynnistä I2C -protokolla DS3231 -osoitteella Wire.write (0); // Lähetä rekisteriosoite Wire.write (0); // Nollaa sesondit ja käynnistä oskillaattori Wire.write (minuutti); // Kirjoita minuutti Wire.write (tunti); // Kirjoita tunti Wire.write (1); // Kirjoita päivä (ei käytössä) Wire.write (päivämäärä); // Kirjoita päivämäärä Wire.write (kuukausi); // Kirjoita kuukausi Wire.write (vuosi); // Kirjoita vuosi Wire.endTransmission (); // Pysäytä lähetys ja vapauta I2C -väylän viive (200); // Odota 200 ms} Wire.beginTransmission (0x68); // Käynnistä I2C -protokolla DS3231 -osoitteella Wire.write (0); // Lähetä rekisteriosoite Wire.endTransmission (false); // I2C käynnistä uudelleen Wire.requestFrom (0x68, 7); // Pyydä 7 tavua DS3231: ltä ja vapauta I2C -väylä lukemisen lopussa toinen = Wire.read (); // Lue sekuntia rekisteristä 0 minuutti = Wire.read (); // Lue minuutit rekisteristä 1 tunti = Wire.read (); // Lukuaika rekisteristä 2 Wire.read (); // Lukupäivä rekisteristä 3 (ei käytössä) päivämäärä = Wire.read (); // Lukupäivä rekisteristä 4 kuukautta = Wire.read (); // Lue kuukausi rekisteristä 5 vuosi = Wire.read (); // Lue vuosi rekisteristä 6 DS3231_display (); // Näyttöaika ja kalenteriviive (50); // Odota 50 ms}
Suositeltava:
DS3231 RTC (reaaliaikainen kello) -asetuksen määrittäminen tarkasti, nopeasti ja automaattisesti Javan avulla (+-1 s): 3 vaihetta
DS3231 RTC: n (reaaliaikainen kello) asettaminen tarkasti, nopeasti ja automatisoidusti Javan avulla (+-1 s): Tämä opas näyttää sinulle kuinka asettaa aika DS3231-reaaliaikakellolle käyttämällä Arduinoa ja pientä Java-sovellusta, joka käyttää Ohjelman peruslogiikka: 1. Arduino lähettää sarjapyynnön
DS1307 Reaaliaikainen kello RTC Arduinolla: 4 vaihetta
DS1307 Reaaliaikainen kello RTC Arduinolla: Tässä opetusohjelmassa opimme reaaliaikaisesta kellosta (RTC) ja siitä, miten Arduino & Real Time Clock IC DS1307 on koottu ajoituslaitteeksi.Real Time Clock (RTC) -kelloa käytetään ajan seurantaan ja kalenterin ylläpitoon
Kellon tekeminen M5stick C: llä Arduino IDE: n avulla - RTC-reaaliaikainen kello M5stack M5stick-C: 4 vaihetta
Kellon tekeminen M5stick C: llä Arduino IDE: n avulla | RTC-reaaliaikainen kello M5stack M5stick-C: Hei kaverit, tässä ohjeessa opimme tekemään kellon m5stick-C-kehityskortilla m5stackista Arduino IDE: n avulla, joten m5stick näyttää päivämäärän, ajan ja amp; kuukauden viikko näytössä
NODEMCU Lua ESP8266, jossa on reaaliaikainen kello (RTC) ja EEPROM: 7 vaihetta
NODEMCU Lua ESP8266, jossa on reaaliaikainen kello (RTC) ja EEPROM: Oikean ajan saaminen on välttämätöntä, jos haluat pitää datalokia. On useita tapoja saada aikaa Internetin lähteistä. Voit kysyä, miksi et käytä ESP8266 -laitetta pitääksesi aikaa sinulle? Voit, sillä on oma sisäinen RTC (reaaliaikainen
Ympäristön reaaliaikainen kello: 4 vaihetta
Ympäristön reaaliaikainen kello: Tavoitteena tein tämän kellon, koska minulla on osoitettava LED -nauha ja haluan käyttää sitä. Sitten näin, että huoneessani ei ole hyvää kelloa, joka sopii sen seiniin. Joten päätin tehdä kellon, joka voi muuttaa värejään käyttäjien mielialan tai