Orodha ya maudhui:
- Hatua ya 1: Vipengele vinavyohitajika
- Hatua ya 2: Uunganisho wa Saa ya Arduino
- Hatua ya 3: Nambari ya Saa ya Arduino na RTC
Video: Saa Saa Halisi Na Arduino: Hatua 3
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:50
Katika mradi huu, tutafanya saa kwa msaada wa moduli ya Arduino na RTC. Kama tunavyojua Arduino haiwezi kuonyesha wakati halisi kwa hivyo tutatumia moduli ya RTC kuonyesha wakati unaofaa kwenye LCD. Soma hatua zote kwa uangalifu itakusaidia sana kutengeneza saa ya saa.
Nambari ya DS3231 Arduino ni kama nambari ya DS1307 na inafanya kazi na chipsi zote mbili za RTC.
Nambari ya Arduino chini haitumii maktaba yoyote kwa DS3231 RTC, maktaba ya waya ni ya mawasiliano kati ya Arduino na DS3231 inayotumia mkutano wa I2C.
Ndio! Wahandisi wengi wa vifaa vya elektroniki hutegemea miradi yao ya wakati lakini RTC haiaminiki kabisa. Ni betri inayoendeshwa na inapaswa kubadilishwa hivi karibuni au baadaye. Kuja kwenye miradi ya IoT inachukua pini muhimu za SPI (Serial Peripheral Interface) na inavuruga na waya zilizobanwa kote. Suluhisho…. Hapa anakuja shujaa wetu NTP (Itifaki ya wakati wa Mtandao). NTP ni sahihi kwani inapata wakati kutoka kwa wavuti. Tutafanya itifaki hii kwa kutumia hali ya mteja-seva. mchakato ni rahisi sana kwamba Nodemcu yetu hufanya kama mteja na inauliza pakiti ya NTP kutoka kwa seva inayotumia UDP. Kwa kurudi, seva hutuma pakiti kwa mteja ambayo inachambua data. NTP ni itifaki ya maingiliano ya wakati wote. Sasa wacha tuangaze kituo chetu cha kazi cha maabara
Hatua ya 1: Vipengele vinavyohitajika
- Bodi ya Arduino
- Bodi ya DS3231 RTC
- Skrini ya 16x2 LCD
- 2 x kifungo cha kushinikiza
- Kinga ya kutofautisha ya 10K ohm (au potentiometer)
- 330-ohm kupinga
- 3V sarafu ya betri ya seli
- Bodi ya mkate
- Waya za jumper
Mocule ya RTC DS3231
Wakati ni maana muhimu inayohitajika katika ulimwengu huu wa wanadamu wenye kasi. Katika mradi wa wakati halisi
Tunatumia RTC (AKK Saa ya wakati halisi)
RTC Real-time-clock (RTC) ni mzunguko uliounganishwa (IC) ambao hufuatilia wakati wa sasa. RTC inachukua wakati katika hali halisi. RTC kawaida hupatikana kwenye bodi za mama za kompyuta na mifumo iliyowekwa ili kuhitaji ufikiaji wa wakati unaofaa.
Hatua ya 2: Uunganisho wa Saa ya Arduino
- Unganisha pini ya SCL kwa moduli ya RTC kwa Arduino A5
- Unganisha pini ya SDA kwenye moduli ya RTC kwa Arduino A4
- Unganisha VCC TO 5v na GND TO GND
- Unganisha kitufe cha kushinikiza kwa pini 8
- Unganisha kitufe kingine cha kushinikiza kwa pini 9
- Unganisha RS ya LCD kubandika 2 ya Arduino
- Unganisha E ya LCD kubandika 3 ya Arduino
- Unganisha D7 ya LCD kubandika 7 ya Arduino
- Unganisha D6 ya LCD kubandika 6 ya Arduino
- Unganisha D5 ya LCD kubandika 5 ya Arduino
- Unganisha D4 ya LCD kubandika 4 ya Arduino
- Unganisha VSS & K kwa GND
- Unganisha VDD & A kwa 5v
- Unganisha vo kwenye pini ya pato ya potentiometer
Hatua ya 3: Nambari ya Saa ya Arduino na RTC
DS3231 inafanya kazi na muundo wa BCD tu na kubadilisha BCD kuwa decimal na kinyume chake nilitumia mistari 2 hapa chini (mfano kwa dakika): // Badilisha BCD kuwa decimalminute = (dakika >> 4) * 10 + (dakika & 0x0F);
// Badilisha decimal kuwa BCDminute = ((dakika / 10) << 4) + (dakika% 10); batili DS3231_display (): maonyesho wakati na kalenda, kabla ya kuonyesha data ya wakati na kalenda inabadilishwa kutoka BCD hadi fomati ya desimali.
// Saa ya muda halisi na kalenda iliyo na vifungo vilivyowekwa kutumia DS3231 na Arduino // ni pamoja na nambari ya maktaba ya LCD # pamoja na // ni pamoja na nambari ya maktaba ya waya (inahitajika kwa vifaa vya itifaki ya I2C) # pamoja na unganisho la moduli ya LCD (RS, E, D4, D5, D6, D7) LiquidCrystal LCD (2, 3, 4, 5, 6, 7); kuanzisha batili () {pinMode (8, INPUT_PULLUP); // kifungo1 imeunganishwa na pinMode 8 (9, INPUT_PULLUP); // kifungo2 kimeunganishwa kubandika 9 // kuanzisha idadi ya nguzo za LCD na safu lcd. anza (16, 2); Wire.begin (); // Jiunge na i2c bus} char Wakati = "TIME::" "; Kalenda ya char = "TAREHE: / / 20"; byte i, pili, dakika, saa, tarehe, mwezi, mwaka; batili DS3231_display () {// Badilisha BCD hadi sekunde ya pili = (pili >> 4) * 10 + (pili & 0x0F); dakika = (dakika >> 4) * 10 + (dakika & 0x0F); saa = (saa >> 4) * 10 + (saa & 0x0F); tarehe = (tarehe >> 4) * 10 + (tarehe & 0x0F); mwezi = (mwezi >> 4) * 10 + (mwezi & 0x0F); mwaka = (mwaka >> 4) * 10 + (mwaka & 0x0F); // Muda wa kubadilisha [12] = pili% 10 + 48; Wakati [11] = sekunde / 10 + 48; Wakati [9] = dakika% 10 + 48; Wakati [8] = dakika / 10 + 48; Wakati [6] = saa% 10 + 48; Wakati [5] = saa / 10 + 48; Kalenda [14] = mwaka% 10 + 48; Kalenda [13] = mwaka / 10 + 48; Kalenda [9] = mwezi% 10 + 48; Kalenda [8] = mwezi / 10 + 48; Kalenda [6] = tarehe% 10 + 48; Kalenda [5] = tarehe / 10 + 48; lcd.setCursor (0, 0); lcd.print (Wakati); // Wakati wa kuonyesha LCD.setCursor (0, 1); lcd.print (Kalenda); // Onyesha kalenda} batili blink_parameter () {byte j = 0; wakati (j 23) // Ikiwa masaa> 23 ==> masaa = 0 parameter = 0; ikiwa (i == 1 && parameter> 59) // Ikiwa dakika> 59 ==> dakika = 0 parameter = 0; ikiwa (i == 2 && parameter> 31) // Ikiwa tarehe> 31 ==> tarehe = 1 parameter = 1; ikiwa (i == 3 && parameter> 12) // Ikiwa mwezi> 12 ==> mwezi = 1 parameter = 1; ikiwa (i == 4 && parameter> 99) // Ikiwa mwaka> 99 ==> mwaka = 0 parameter = 0; sprintf (maandishi, "% 02u", parameter); lcd.setCursor (x, y); lcd.print (maandishi); kuchelewesha (200); // Subiri 200ms} lcd.setCursor (x, y); lcd.print (""); // Onyesha nafasi mbili blink_parameter (); sprintf (maandishi, "% 02u", parameter); lcd.setCursor (x, y); lcd.print (maandishi); blink_parameter (); ikiwa (! digitalRead (8)) {// Ikiwa kifungo (pin # 8) imesisitizwa i ++; // Kuongeza 'i' kwa parameta inayofuata ya kurudi; // Kurudisha thamani ya parameta na kutoka}}} kitanzi batili () {if (! DigitalRead (8)) {// If button (pin # 8) is pressed i = 0; saa = hariri (5, 0, saa); dakika = hariri (8, 0, dakika); tarehe = hariri (5, 1, tarehe); mwezi = hariri (8, 1, mwezi); mwaka = hariri (13, 1, mwaka); // Badilisha decimal kuwa BCD dakika = ((dakika / 10) << 4) + (dakika% 10); saa = ((saa / 10) << 4) + (saa% 10); tarehe = ((tarehe / 10) << 4) + (tarehe% 10); mwezi = ((mwezi / 10) << 4) + (mwezi% 10); mwaka = ((mwaka / 10) << 4) + (mwaka% 10); // Mwisho wa ubadilishaji // Andika data kwa DS3231 RTC Wire.beginTransmission (0x68); // Anzisha itifaki ya I2C na anwani ya DS3231 Wire.write (0); // Tuma anwani ya rejista Wire.write (0); // Rudisha sesonds na uanze waya wa oscillator. Andika (dakika); // Andika dakika ya waya.andika (saa); // Andika saa Waya.andika (1); // Andika siku (haitumiwi) Waya.andika (tarehe); // Tarehe ya kuandika Wire.write (mwezi); // Andika mwezi waya.andika (mwaka); // Andika mwaka Wire.endUsambazaji (); // Acha usambazaji na uachilie ucheleweshaji wa basi ya I2C (200); // Subiri 200ms} Waya. Anza Uwasilishaji (0x68); // Anzisha itifaki ya I2C na anwani ya DS3231 Wire.write (0); // Tuma anwani ya rejista Wire.endUsambazaji (uwongo); // I2C kuanzisha tena Wire.requestFrom (0x68, 7); // Omba ka 7 kutoka DS3231 na uachilie basi ya I2C mwisho wa kusoma pili = Wire.read (); // Soma sekunde kutoka daftari dakika 0 = Wire.read (); // Soma dakika kutoka rejista saa 1 = Wire.read (); // Soma saa kutoka kwa rejista 2 Wire.read (); // Soma siku kutoka kwa rejista 3 (haitumiki) tarehe = Wire.read (); // Tarehe ya kusoma kutoka kwa usajili wa mwezi wa 4 = Wire.read (); // Soma mwezi kutoka daftari la miaka 5 = Wire.read (); // Soma mwaka kutoka kwa rejista 6 DS3231_display (); // Wakati wa Diaplay & kuchelewesha kalenda (50); // Subiri 50ms}
Ilipendekeza:
DS1307 Saa Saa Saa RTC Na Arduino: Hatua 4
DS1307 Saa Saa Saa RTC Na Arduino: Katika Mafunzo haya, tutajifunza juu ya Saa Saa Saa (RTC) na jinsi Arduino & Saa Saa Saa IC DS1307 imewekwa pamoja kama kifaa cha wakati.Real Time Clock (RTC) hutumiwa kwa ufuatiliaji wa wakati na kudumisha kalenda.Ili kutumia RTC, w
Saa ya Arduino inayotumia DS1307 Moduli ya Saa Saa (RTC) & 0.96: 5 Hatua
Saa ya Arduino inayotumia DS1307 Saa Saa Saa (RTC) Moduli & 0.96: Halo jamani katika mafunzo haya tutaona jinsi ya kutengeneza saa ya kufanya kazi kwa kutumia moduli ya saa halisi ya DS1307 & Maonyesho ya OLED Kwa hivyo tutasoma wakati kutoka kwa moduli ya saa DS1307. Na ichapishe kwenye skrini ya OLED
Kutengeneza Saa na M5stick C Kutumia Arduino IDE - RTC Saa Saa Saa Na M5stack M5stick-C: Hatua 4
Kutengeneza Saa na M5stick C Kutumia Arduino IDE | RTC Saa Saa Saa Na M5stack M5stick-C: Halo jamani katika mafundisho haya tutajifunza jinsi ya kutengeneza saa na bodi ya maendeleo ya m5stick-C ya m5stack kutumia Arduino IDE.So m5stick itaonyesha tarehe, saa & wiki ya mwezi kwenye maonyesho
Saa rahisi ya Arduino / Saa ya saa: Hatua 6 (na Picha)
Saa rahisi / Saa ya saa Arduino: Hii " inafundishwa " itakuonyesha na kukufundisha jinsi ya kutengeneza saa rahisi ya Arduino Uno ambayo pia hufanya kama saa ya kusimama kwa hatua chache rahisi
Jenga Saa ya Kupiga Kengele halisi kwa PC yako na Saa ya kushangaza ya Kizima moto. 3 Hatua (na Picha)
Jenga Saa ya Kugonga Kengele halisi kwa PC yako na Saa ya kushangaza ya Kizima moto. OS X pia, niliamua kusanikisha Ubuntu Linux kwenye PC niliyoipata kwenye takataka na kuifanyia kazi hiyo: sikuwahi