Satura rādītājs:
- 1. darbība. Nepieciešamās sastāvdaļas
- 2. darbība: Arduino pulksteņa savienošana
- 3. darbība: kods Arduino pulkstenim ar RTC
Video: Reālā laika pulkstenis ar Arduino: 3 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:54
Šajā projektā mēs izgatavosim pulksteni ar Arduino un RTC moduļa palīdzību. Kā mēs zinām, Arduino nevar parādīt faktisko laiku, tāpēc mēs izmantosim RTC moduli, lai parādītu pareizo laiku LCD. Uzmanīgi izlasiet visu soli, tas jums ļoti palīdzēs izveidot pulksteņrādītāju.
DS3231 Arduino kods ir līdzīgs DS1307 kodam, un tas darbojas ar abām RTC mikroshēmām.
Zemāk esošais Arduino kods neizmanto DS3231 RTC bibliotēku, Wire bibliotēka ir paredzēta korespondencei starp Arduino un DS3231, izmantojot I2C konvenciju.
Jā! Daudzi elektronikas inženieri ir atkarīgi no saviem laika projektiem, taču RTC nav pilnīgi uzticams. Tas darbojas ar akumulatoru, un agrāk vai vēlāk tas ir jānomaina. Sākot ar IoT projektiem, tas aizņem vērtīgas SPI (seriālās perifērijas saskarnes) tapas un kļūst netīrs, jo vadi ir sapinušies. Risinājums…. Šeit nāk mūsu varonis NTP (tīkla laika protokols). NTP ir tik precīzs, jo iegūst laiku no interneta. Mēs izmantosim šo protokolu, izmantojot klienta-servera režīmu. process ir tik vienkāršs, ka mūsu Nodemcu darbojas kā klients un pieprasa NTP paketi no servera, izmantojot UDP. Savukārt serveris nosūta klientam paketi, kas analizē datus. NTP ir universāls laika sinhronizācijas protokols. Tagad iedegsim laboratorijas darba staciju
1. darbība. Nepieciešamās sastāvdaļas
- Arduino dēlis
- DS3231 RTC plate
- 16x2 LCD ekrāns
- 2 x spiedpoga
- 10K omu mainīgs rezistors (vai potenciometrs)
- 330 omu rezistors
- 3V monētu šūnu baterija
- Maizes dēlis
- Jumper vadi
RTC molekula DS3231
Laiks ir būtiska sajūta, kas nepieciešama šajā straujajā cilvēku pasaulē. Reāllaika projektā
Mēs izmantojam RTC (A. K. A reālā laika pulkstenis)
RTC reālā laika pulkstenis (RTC) ir integrēta shēma (IC), kas seko pašreizējam laikam. RTC rūpējas par laiku reālajā režīmā. RTC parasti ir atrodams datoru mātesplatēs un iegultās sistēmās, lai tām būtu nepieciešama savlaicīga piekļuve.
2. darbība: Arduino pulksteņa savienošana
- Pievienojiet SCL tapu RTC modulim Arduino A5
- Pievienojiet SDA tapu RTC modulim Arduino A4
- Savienojiet VCC ar 5v un GND uz GND
- Pievienojiet spiedpogu tapai 8
- Pievienojiet taustiņam 9 citu pogu
- Savienojiet LCD RS ar Arduino 2. tapu
- Savienojiet LCD E ar Arduino 3. tapu
- Savienojiet LCD D7 ar Arduino 7. tapu
- Savienojiet LCD D6 ar Arduino 6. tapu
- Savienojiet LCD D5 ar Arduino 5. tapu
- Savienojiet LCD D4 ar Arduino 4. tapu
- Savienojiet VSS & K ar GND
- Savienojiet VDD & A ar 5v
- Pievienojiet vo potenciometra izejas tapai
3. darbība: kods Arduino pulkstenim ar RTC
DS3231 darbojas tikai ar BCD formātu, un, lai pārvērstu BCD par decimāldaļu un otrādi, es izmantoju divas tālāk norādītās rindiņas (piemēram, minūtes): // Konvertēt BCD uz decimālminūti = (minūte >> 4) * 10 + (minūte un 0x0F);
// Pārvērst decimālo uz BCDminute = ((minūte / 10) << 4) + (minūte % 10); void DS3231_display (): parāda laiku un kalendāru, pirms tiek parādīti laika un kalendāra dati no BCD uz decimāldaļu formātu. void blink_parameter ():
// Reālā laika pulkstenis un kalendārs ar iestatīšanas pogām, izmantojot DS3231 un Arduino // iekļaujiet LCD bibliotēkas kodu #include // iekļaujiet vadu bibliotēkas kodu (nepieciešams I2C protokola ierīcēm) #iekļaut // LCD moduļu savienojumus (RS, E, D4, D5, D6, D7) LiquidCrystal lcd (2, 3, 4, 5, 6, 7); void setup () {pinMode (8, INPUT_PULLUP); // poga1 ir savienota ar tapu 8 pinMode (9, INPUT_PULLUP); // poga2 ir savienota ar tapu 9 // iestatiet LCD kolonnu un rindu skaitu lcd.begin (16, 2); Wire.begin (); // Join i2c bus} char Time = "TIME:::"; char kalendārs = "DATE: / / 20"; baits i, otrais, minūte, stunda, datums, mēnesis, gads; void DS3231_display () {// Pārvērst BCD par decimālo sekundi = (otrais >> 4) * 10 + (otrais & 0x0F); minūte = (minūte >> 4) * 10 + (minūte & 0x0F); stunda = (stunda >> 4) * 10 + (stunda un 0x0F); datums = (datums >> 4) * 10 + (datums & 0x0F); mēnesis = (mēnesis >> 4) * 10 + (mēnesis un 0x0F); gads = (gads >> 4) * 10 + (gads un 0x0F); // Reklāmguvuma beigu laiks [12] = otrais % 10 + 48; Laiks [11] = sekunde / 10 + 48; Laiks [9] = minūte % 10 + 48; Laiks [8] = minūte / 10 + 48; Laiks [6] = stunda % 10 + 48; Laiks [5] = stunda / 10 + 48; Kalendārs [14] = gads % 10 + 48; Kalendārs [13] = gads / 10 + 48; Kalendārs [9] = mēnesis % 10 + 48; Kalendārs [8] = mēnesis / 10 + 48; Kalendārs [6] = datums % 10 + 48; Kalendārs [5] = datums / 10 + 48; lcd.setCursor (0, 0); lcd.print (laiks); // Displeja laiks lcd.setCursor (0, 1); lcd.print (kalendārs); // Parādīt kalendāru} void blink_parameter () {baits j = 0; while (j 23) // Ja stundas> 23 ==> stundas = 0 parametrs = 0; ja (i == 1 && parametrs> 59) // Ja minūtes> 59 ==> minūtes = 0 parametrs = 0; ja (i == 2 && parametrs> 31) // Ja datums> 31 ==> datums = 1 parametrs = 1; ja (i == 3 && parametrs> 12) // Ja mēnesis> 12 ==> mēnesis = 1 parametrs = 1; ja (i == 4 && parametrs> 99) // Ja gads> 99 ==> gads = 0 parametrs = 0; sprintf (teksts, "%02u", parametrs); lcd.setCursor (x, y); lcd.print (teksts); kavēšanās (200); // Pagaidiet 200 ms} lcd.setCursor (x, y); lcd.print (""); // Parādīt divas atstarpes blink_parameter (); sprintf (teksts, "%02u", parametrs); lcd.setCursor (x, y); lcd.print (teksts); mirgot_parametrs (); ja (! digitalRead (8)) {// Ja tiek nospiesta poga (pin #8) i ++; // nepareizs “i” nākamajam parametra atgriešanās parametram; // Atgriezt parametra vērtību un iziet}}} void loop () {if (! DigitalRead (8)) {// Ja tiek nospiesta poga (pin #8) i = 0; stunda = rediģēt (5, 0, stunda); minūte = rediģēt (8, 0, minūte); datums = rediģēt (5, 1, datums); mēnesis = rediģēt (8, 1, mēnesis); gads = rediģēt (13, 1, gads); // Pārvērst decimāldaļu uz BCD minūti = ((minūte / 10) << 4) + (minūte % 10); stunda = ((stunda / 10) << 4) + (stunda % 10); datums = ((datums / 10) << 4) + (datums % 10); mēnesis = ((mēnesis / 10) << 4) + (mēnesis % 10); gads = ((gads / 10) << 4) + (gads % 10); // Beigt konvertēšanu // Rakstīt datus uz DS3231 RTC Wire.beginTransmission (0x68); // Sākt I2C protokolu ar DS3231 adresi Wire.write (0); // Sūtīt reģistra adresi Wire.write (0); // Atiestatīt sesondus un sākt oscilatoru Wire.write (minūte); // Rakstīt minūtes Wire.write (stunda); // Rakstīt stundu Wire.write (1); // Rakstīt dienu (neizmanto) Wire.write (datums); // Rakstīt datumu Wire.write (mēnesis); // Rakstīt mēnesi Wire.write (gads); // Uzrakstiet gadu Wire.endTransmission (); // Apturiet pārraidi un atlaidiet I2C kopnes aizturi (200); // Pagaidiet 200 ms} Wire.beginTransmission (0x68); // Sākt I2C protokolu ar DS3231 adresi Wire.write (0); // Sūtīt reģistra adresi Wire.endTransmission (false); // I2C restart Wire.requestFrom (0x68, 7); // Pieprasīt 7 baitus no DS3231 un atbrīvot I2C kopni lasīšanas beigās otrais = Wire.read (); // Lasīt sekundes no reģistra 0 minūte = Wire.read (); // Lasīt minūtes no reģistra 1 stunda = Wire.read (); // Lasīšanas stunda no reģistra 2 Wire.read (); // Lasīšanas diena no reģistra 3 (netiek izmantota) datums = Wire.read (); // Lasīšanas datums no reģistra 4 mēneši = Wire.read (); // Lasīt mēnesi no reģistra 5 gads = Wire.read (); // Lasīt gadu no reģistra 6 DS3231_display (); // Displeja laiks un kalendāra aizkave (50); // Pagaidiet 50 ms}
Ieteicams:
Minitel reālā laika pulkstenis: 5 soļi
Minitel reālā laika pulkstenis: 1978. gadā izveidoja France Telecom, Minitel bija informācijas izguves un īsziņu sūtīšanas pakalpojums. Tiek uzskatīts par visveiksmīgāko tīklu pirms globālā tīmekļa. Pēc 30 gadiem 2008. gadā tīkls beidzot tika slēgts. (Par to ir daudz informācijas
DS1307 reālā laika pulkstenis RTC ar Arduino: 4 soļi
DS1307 reālā laika pulkstenis RTC ar Arduino: šajā apmācībā mēs uzzināsim par reālā laika pulksteni (RTC) un to, kā Arduino & Reālā laika pulkstenis IC DS1307 ir salikts kopā kā laika ierīce. Reālā laika pulkstenis (RTC) tiek izmantots laika uzraudzībai un kalendāra uzturēšanai. Lai izmantotu RTC, izmantojiet
Arduino balstīts pulkstenis, izmantojot DS1307 reālā laika pulksteņa (RTC) moduli un 0.96: 5 soļus
Arduino balstīts pulkstenis, izmantojot DS1307 reālā laika pulksteņa (RTC) moduli un 0.96: Sveiki, puiši, šajā apmācībā mēs redzēsim, kā izveidot darba pulksteni, izmantojot DS1307 reālā laika pulksteņa moduli & OLED displeji. Tātad mēs nolasīsim laiku no pulksteņa moduļa DS1307. Un izdrukājiet to OLED ekrānā
Pulksteņa izgatavošana, izmantojot M5stick C, izmantojot Arduino IDE - RTC reālā laika pulkstenis ar M5stack M5stick-C: 4 soļi
Pulksteņa izgatavošana, izmantojot M5stick C, izmantojot Arduino IDE | RTC reālā laika pulkstenis ar M5stack M5stick-C: Sveiki, puiši, šajā pamācībā mēs iemācīsimies izveidot pulksteni ar m5stick-C izstrādes dēli, izmantojot Arduino IDE. Tātad m5stick parādīs datumu, laiku un amp; displejā mēneša nedēļa
Apkārtējais reālā laika pulkstenis: 4 soļi
Apkārtējais reālā laika pulkstenis: Mērķis Es izveidoju šo pulksteni, jo man ir uzlikta adresējama LED sloksne un es vēlos to izmantot. Tad es redzēju, ka manā istabā nav labs pulkstenis, kas atbilst tā sienām. Tāpēc es nolēmu izveidot pulksteni, kas var mainīt krāsas atbilstoši lietotāju noskaņojumam vai