ዝርዝር ሁኔታ:
ቪዲዮ: በእውነተኛ ሰዓት ከአርዲኖ ጋር 3 ደረጃዎች
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:30
በዚህ ፕሮጀክት ውስጥ በአርዱዲኖ እና በ RTC ሞዱል እገዛ አንድ ሰዓት እንሠራለን። እኛ እንደምናውቀው አርዱዲኖ ትክክለኛውን ሰዓት ማሳየት አይችልም ስለዚህ በ LCD ላይ ትክክለኛውን ጊዜ ለማሳየት የ RTC ሞዱሉን እንጠቀማለን። ሁሉንም እርምጃ በጥንቃቄ ያንብቡ ሰዓቱን ለመሥራት ብዙ ይረዳዎታል።
DS3231 አርዱinoኖ ኮድ እንደ DS1307 ኮድ ነው እና ከሁለቱም የ RTC ቺፖች ጋር ይሠራል።
ከስር ያለው የአርዱዲኖ ኮድ ለ DS3231 RTC ማንኛውንም ቤተ -መጽሐፍት አይጠቀምም ፣ የሽቦ ቤተ -መጽሐፍት በአርዱዲኖ እና በ DS3231 መካከል የ I2C ስብሰባን በመጠቀም ነው።
አዎ! ብዙ የኤሌክትሮኒክስ መሐንዲሶች በጊዜ-ተኮር ፕሮጄክቶቻቸው ላይ በእሱ ላይ ይወሰናሉ ፣ ግን RTC ሙሉ በሙሉ አስተማማኝ አይደለም። በባትሪ የሚሠራ እና በቅርቡ ወይም በኋላ መተካት አለበት። ወደ IoT ፕሮጄክቶች ሲመጣ ጠቃሚ የ SPI (ተከታታይ Peripheral በይነገጽ) ፒኖችን ይይዛል እና ከተጣበቁ ሽቦዎች ጋር ይረበሻል። መፍትሄ….እኛ የእኛ ጀግና NTP (የአውታረ መረብ ጊዜ ፕሮቶኮል) ይመጣል። NTP ከበይነመረቡ ጊዜ ስለሚያገኝ በጣም ትክክለኛ ነው። የደንበኛ-አገልጋይ ሁነታን በመጠቀም ይህንን ፕሮቶኮል እንሠራለን። ሂደቱ በጣም ቀላል ስለሆነ የእኛ Nodemcu እንደ ደንበኛ ሆኖ UDP ን በመጠቀም ከአገልጋዩ የ NTP ፓኬጅ ይጠይቃል። በምላሹ አገልጋዩ ውሂቡን ለሚተነተን ፓኬት ለደንበኛው ይልካል። NTP ሁለንተናዊ የጊዜ ማመሳሰል ፕሮቶኮል ነው። አሁን የላቦራቶሪ ሥራ ጣቢያችንን እናበራ
ደረጃ 1 - አስፈላጊ አካላት
- አርዱዲኖ ቦርድ
- DS3231 RTC ቦርድ
- 16x2 ኤልሲዲ ማያ ገጽ
- 2 x የግፊት አዝራር
- 10 ኬ ohm ተለዋዋጭ resistor (ወይም ፖታቲሞሜትር)
- 330-ohm resistor
- 3V ሳንቲም ሴል ባትሪ
- የዳቦ ሰሌዳ
- ዝላይ ሽቦዎች
የ RTC ሞለኪውል DS3231
በዚህ ፈጣን የሰው ልጅ ዓለም ውስጥ ጊዜ አስፈላጊ ስሜት ነው። በእውነተኛ ጊዜ ፕሮጀክት ውስጥ
እኛ RTC ን እንጠቀማለን (ኤኬ የእውነተኛ ጊዜ ሰዓት)
RTC ሪል-ሰዓት-ሰዓት (RTC) የአሁኑን ጊዜ የሚከታተል የተቀናጀ ወረዳ (አይሲሲ) ነው። RTC በእውነተኛ ሁኔታ ጊዜን ይንከባከባል። RTC ብዙውን ጊዜ ወቅታዊ መዳረሻን ለመፈለግ በኮምፒተር ማዘርቦርዶች እና በተካተቱ ስርዓቶች ውስጥ ይገኛል።
ደረጃ 2 የአርዱዲኖ ሰዓት ግንኙነት
- የ SCL ፒን ከ RTC ሞዱል ወደ አርዱዲኖ ኤ 5 ያገናኙ
- ኤስዲኤ ፒን ከ RTC ሞዱል ወደ አርዱዲኖ ኤ 4 ያገናኙ
- VCC ን ወደ 5v እና GND ን ከ GND ጋር ያገናኙ
- የግፊት ቁልፍን ከፒን 8 ጋር ያገናኙ
- ሌላ የግፊት ቁልፍን ከፒን 9 ጋር ያገናኙ
- የአርዲኖን ፒን 2 ከፒሲዲ ጋር ያገናኙ
- የአርዱዲኖን 3 ለመሰካት ኤል ዲ ኤልን ያገናኙ
- ኤልዲዲውን D7 ከ Arduino ፒን 7 ጋር ያገናኙ
- ኤልዲዲውን D6 ከ Arduino ፒን 6 ጋር ያገናኙ
- ኤልዲዲውን D5 ን ከአርዲኖን ፒን 5 ጋር ያገናኙ
- የአርዲኖን 4 ፒን ከፒዲኤፍ ጋር ያገናኙ
- VSS & K ን ከ GND ጋር ያገናኙ
- VDD እና A ን ከ 5 ቪ ጋር ያገናኙ
- ቮን ከ potentiometer ውፅዓት ፒን ጋር ያገናኙ
ደረጃ 3: የአርዱዲኖ ሰዓት ኮድ ከ RTC ጋር
DS3231 የሚሠራው በቢሲዲ ቅርጸት ብቻ ነው እና ቢሲሲድን ወደ አስርዮሽ እና ቪዛ ለመለወጥ ከዚህ በታች ያሉትን 2 መስመሮች ተጠቅሜአለሁ (ለምሳሌ ለደቂቃ) ፦ // BCD ን ወደ አስርዮሽ ደቂቃ = (ደቂቃ >> 4) * 10 + (ደቂቃ እና 0x0F) ይለውጡ;
// አስርዮሽ ወደ BCDminute = ((ደቂቃ / 10) << 4) + (ደቂቃ % 10) ይለውጡ። ባዶ DS3231_display (): ጊዜን እና የቀን መቁጠሪያን ያሳያል ፣ ጊዜ ከማሳየቱ በፊት እና የቀን መቁጠሪያ ውሂብ ከቢሲሲ ወደ አስርዮሽ ቅርጸት ይቀየራል። blink_parameter ():
// የእውነተኛ ሰዓት ሰዓት እና የቀን መቁጠሪያ DS3231 ን እና አርዱinoኖን በመጠቀም ከተቀመጡ አዝራሮች ጋር // የ LCD ቤተ -መጽሐፍትን ኮድ ያካትቱ #ያካትቱ // የሽቦ ቤተመፃሕፍት ኮድ (ለ I2C ፕሮቶኮል መሣሪያዎች ያስፈልጋል) #ያካትቱ/ // የ LCD ሞዱል ግንኙነቶች (RS ፣ E ፣ D4 ፣ D5), D6, D7) LiquidCrystal lcd (2, 3, 4, 5, 6, 7); ባዶነት ማዋቀር () {pinMode (8 ፣ INPUT_PULLUP) ፤ // button1 ከፒን 8 ፒን ሞዶ (9 ፣ INPUT_PULLUP) ጋር ተገናኝቷል ፤ // button2 ከፒን 9 ጋር ተገናኝቷል // የ LCD ን የአምዶች እና የረድፎች ብዛት lcd.begin (16 ፣ 2) ፣ Wire.begin (); // i2c አውቶቡስ} ቻር ሰዓት ይቀላቀሉ = "ጊዜ::"; char የቀን መቁጠሪያ = "DATE: / / 20"; ባይት i ፣ ሁለተኛ ፣ ደቂቃ ፣ ሰዓት ፣ ቀን ፣ ወር ፣ ዓመት ፣ ባዶ DS3231_display () {// BCD ን ወደ አስርዮሽ ሁለተኛ = (ሁለተኛ >> 4) * 10 + (ሁለተኛ እና 0x0F) ይለውጡ ፤ ደቂቃ = (ደቂቃ >> 4) * 10 + (ደቂቃ & 0x0F); ሰዓት = (ሰዓት >> 4) * 10 + (ሰዓት & 0x0F); ቀን = (ቀን >> 4) * 10 + (ቀን & 0x0F); ወር = (ወር >> 4) * 10 + (ወር & 0x0F); ዓመት = (ዓመት >> 4) * 10 + (ዓመት & 0x0F); // ማብቂያ ጊዜ [12] = ሰከንድ % 10 + 48; ጊዜ [11] = ሰከንድ / 10 + 48; ጊዜ [9] = ደቂቃ % 10 + 48; ጊዜ [8] = ደቂቃ / 10 + 48; ጊዜ [6] = ሰዓት % 10 + 48; ጊዜ [5] = ሰዓት / 10 + 48; የቀን መቁጠሪያ [14] = ዓመት % 10 + 48; የቀን መቁጠሪያ [13] = ዓመት / 10 + 48; የቀን መቁጠሪያ [9] = ወር % 10 + 48; የቀን መቁጠሪያ [8] = ወር / 10 + 48; የቀን መቁጠሪያ [6] = ቀን % 10 + 48; የቀን መቁጠሪያ [5] = ቀን / 10 + 48; lcd.setCursor (0, 0); lcd.print (ሰዓት); // የማሳያ ጊዜ lcd.setCursor (0, 1); lcd.print (የቀን መቁጠሪያ); // የቀን መቁጠሪያ አሳይ} ባዶ blink_parameter () {byte j = 0; ሳለ (j 23) // ሰዓታት ከሆነ - 23 ==> ሰዓታት = 0 መለኪያ = 0; ከሆነ (i == 1 && parameter> 59) // ደቂቃዎች ከሆኑ 59 ==> ደቂቃዎች = 0 መለኪያ = 0; ከሆነ (i == 2 && parameter> 31) // ቀን ከሆነ 31 ==> ቀን = 1 መለኪያ = 1; ከሆነ (i == 3 && parameter> 12) // ወር ከሆነ> 12 ==> ወር = 1 መለኪያ = 1; ከሆነ (i == 4 && parameter> 99) // ዓመት ከሆነ 99 ==> ዓመት = 0 መለኪያ = 0; sprintf (ጽሑፍ ፣ “%02u” ፣ ግቤት); lcd.setCursor (x, y); lcd.print (ጽሑፍ); መዘግየት (200); // 200ms ይጠብቁ} lcd.setCursor (x, y); lcd.print (""); // ሁለት ቦታዎችን blink_parameter () ያሳዩ ፤ sprintf (ጽሑፍ ፣ “%02u” ፣ ግቤት); lcd.setCursor (x, y); lcd.print (ጽሑፍ); blink_parameter (); ከሆነ (! digitalRead (8)) {// አዝራር (ፒን #8) ከተጫነ i ++; // ለቀጣዩ ግቤት የመመለሻ ልኬት መጨመሪያ ‹i› ፤ // የመለኪያ እሴት ይመልሱ እና ይውጡ}}} ባዶ ቦታ () (ከሆነ (! DigitalRead (8)) {// አዝራር (ፒን #8) ተጭኖ ከሆነ i = 0; ሰዓት = አርትዕ (5 ፣ 0 ፣ ሰዓት); ደቂቃ = አርትዕ (8 ፣ 0 ፣ ደቂቃ); ቀን = አርትዕ (5 ፣ 1 ፣ ቀን); ወር = አርትዕ (8 ፣ 1 ፣ ወር); ዓመት = አርትዕ (13 ፣ 1 ፣ ዓመት); // አስርዮሽ ወደ BCD ደቂቃ = ((ደቂቃ / 10) << 4) + (ደቂቃ % 10); ሰዓት = ((ሰዓት / 10) << 4) + (ሰዓት % 10); ቀን = ((ቀን / 10) << 4) + (ቀን % 10); ወር = ((ወር / 10) << 4) + (ወር % 10); ዓመት = ((ዓመት / 10) << 4) + (ዓመት % 10); // ልወጣ ጨርስ // ውሂብ ወደ DS3231 RTC Wire.begin ማስተላለፍ (0x68) ይፃፉ ፤ // የ I2C ፕሮቶኮል በ DS3231 አድራሻ Wire.write (0) ይጀምሩ። // የመመዝገቢያ አድራሻ ላክ Wire.write (0); // ሴኮንድን ዳግም ያስጀምሩ እና oscillator Wire.write (ደቂቃ) ይጀምሩ። // ደቂቃ ይፃፉ Wire.write (ሰዓት); // ሰዓት ይፃፉ Wire.write (1); // ቀን ይፃፉ (ጥቅም ላይ ያልዋለ) Wire.write (ቀን); // ቀን ይፃፉ Wire.write (ወር); // ወር ይፃፉ Wire.write (ዓመት); // ዓመት ይፃፉ Wire.endTransmission (); // ስርጭትን ያቁሙ እና የ I2C አውቶቡስ መዘግየትን (200) ይልቀቁ። // 200ms ይጠብቁ} Wire.begin ማስተላለፊያ (0x68); // I2C ፕሮቶኮል በ DS3231 አድራሻ Wire.write (0) ይጀምሩ። // የመመዝገቢያ አድራሻ ላክ Wire.endTransmission (ሐሰት); // I2C Wire.requestFrom ን እንደገና ያስጀምሩ (0x68 ፣ 7); // ከ DS3231 7 ባይቶችን ይጠይቁ እና በንባብ ሁለተኛ = Wire.read () ላይ I2C አውቶቡስን ይልቀቁ። // ከምዝገባ 0 ሴኮንድ አንብብ = Wire.read (); // ደቂቃዎችን ከምዝገባ ያንብቡ 1 ሰዓት = Wire.read (); // ከምዝገባ 2 ሰዓት ያንብቡ። Wire.read (); // ቀን ከመዝገቡ አንብብ 3 (ጥቅም ላይ ያልዋለ) ቀን = Wire.read (); // የተነበበበት ቀን ከምዝገባ 4 ወር = Wire.read (); // ወር ከመዝገብ አንብብ 5 ዓመት = Wire.read (); // ዓመቱን ከመዝገቡ ያንብቡ 6 DS3231_display (); // የንግግር ጊዜ እና የቀን መቁጠሪያ መዘግየት (50); // 50ms ይጠብቁ}
የሚመከር:
በእውነተኛ ሰዓት የሰዓት ሞዱል (DS3231) እንዴት እንደሚጠቀሙ 5 ደረጃዎች
የእውነተኛ ሰዓት ሞዱል (DS3231) እንዴት እንደሚጠቀሙ-DS3231 ከተዋሃደ የሙቀት-ማካካሻ ክሪስታል oscillator (TCXO) እና ክሪስታል ጋር ዝቅተኛ ዋጋ ያለው ፣ እጅግ በጣም ትክክለኛ I2C የእውነተኛ ሰዓት ሰዓት (RTC) ነው። መሣሪያው የባትሪ ግቤትን ያካተተ ሲሆን ዋናው ኃይል ወደ
የማይክሮ ፓይቶን ፕሮግራም የኮሮናቫይረስ በሽታ (COVID-19) መረጃን በእውነተኛ ሰዓት ያዘምኑ 10 ደረጃዎች (ከስዕሎች ጋር)
የማይክሮ ፓይቶን ፕሮግራም የኮሮናቫይረስ በሽታን (COVID-19) መረጃን በእውነተኛ ሰዓት ያዘምኑ-ባለፉት ጥቂት ሳምንታት ውስጥ በዓለም ዙሪያ የተረጋገጡ የኮሮናቫይረስ በሽታ (ኮቪድ 19) ቁጥር ከ 100,000 በላይ ሲሆን የዓለም ጤና ድርጅት (WHO) እ.ኤ.አ. አዲስ የኮሮናቫይረስ የሳንባ ምች ወረርሽኝ ዓለም አቀፍ ወረርሽኝ ይሆናል። በጣም ነበርኩ
DS1307 እና DS3231 ን በእውነተኛ ሰዓት የሰዓት ሞጁሎችን ከአርዱዲኖ ጋር መጠቀም-3 ደረጃዎች
DS1307 እና DS3231 ቅጽበታዊ ሰዓት ሞጁሎችን ከአርዱዲኖ ጋር በመጠቀም እኛ DS1307 ን እና DS3231 ቅጽበታዊ ሰዓት ሞጁሎችን ከአርዱዲኖ ጋር ከተለያዩ ምንጮች እንዴት እንደሚጠቀሙ ጥያቄዎችን እንቀጥላለን-ስለዚህ ይህ እንዴት እንደሚጠቀሙባቸው የሁለት ክፍል አጋዥ ስልጠና የመጀመሪያው ነው። ለዚህ የአርዱዲኖ አጋዥ ስልጠና ለእኛ ሁለት የእውነተኛ ሰዓት የሰዓት ሞጁሎች አሉን
NODEMCU Lua ESP8266 በእውነተኛ ሰዓት ሰዓት (RTC) እና EEPROM: 7 ደረጃዎች
NODEMCU Lua ESP8266 በእውነተኛ ሰዓት ሰዓት (RTC) እና EEPROM: የውሂብ ምዝግብ ማስታወሻ ለመያዝ ከፈለጉ ትክክለኛውን ሰዓት ማግኘት አስፈላጊ ነው። በበይነመረብ ላይ ካሉ ምንጮች ጊዜን ለማግኘት የተለያዩ መንገዶች አሉ። ለእርስዎ ጊዜ ለማቆየት ለምን ESP8266 ን አይጠቀሙም ብለው ሊጠይቁ ይችላሉ? ይችላሉ ፣ እሱ የራሱ የውስጥ RTC አለው (እውነተኛ ጊዜ
በእውነተኛ ሞተር ውስጥ ባለ 2 ዲ ገጸ -ባህሪን በእውነተኛ ሞተር ውስጥ እንዴት መፍጠር እንደሚቻል 4 ለፒሲ የእይታ ስክሪፕት በመጠቀም 11 ደረጃዎች
በእውነተኛ ሞተር ውስጥ ባለ 2 ዲ ገጸ -ባህሪን በእውነተኛ ሞተር ውስጥ እንዴት መፍጠር እንደሚቻል 4 ለፒሲ የእይታ ስክሪፕት በመጠቀም - ለፒሲ ሰላም የእይታ ስክሪፕት በመጠቀም በእውነተኛ ሞተር 4 ውስጥ የቁምፊ ተቆጣጣሪ ያለው የ 2 ዲ ገጸ -ባህሪን እንዴት መፍጠር እንደሚቻል ፣ እኔ ዮርዳኖስ Steltz ነኝ። እኔ ከ 15 ዓመቴ ጀምሮ የቪዲዮ ጨዋታዎችን እያዳበርኩ ነው። ይህ ትምህርት መሠረታዊ ቁምፊን በ ውስጥ እንዴት መፍጠር እንደሚችሉ ያስተምርዎታል