Мазмұны:
- 1 -қадам: Қажетті компоненттер
- 2 -қадам: Arduino сағатын қосу
- 3 -қадам: RTC бар Arduino сағаттарының коды
Бейне: Arduino көмегімен нақты уақыт сағаты: 3 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Бұл жобада біз Arduino мен RTC модулінің көмегімен сағат жасаймыз. Біз білетіндей, Arduino нақты уақытты көрсете алмайды, сондықтан СКД -де дұрыс уақытты көрсету үшін RTC модулін қолданамыз. Барлық қадамдарды мұқият оқып шығыңыз, ол сізге сағатты жасауға көмектеседі.
DS3231 Arduino коды DS1307 коды сияқты және ол екі RTC чипімен жұмыс істейді.
Астындағы Arduino коды DS3231 RTC үшін ешқандай кітапхананы пайдаланбайды, Wire кітапханасы I2C конвенциясын қолдана отырып Arduino мен DS3231 арасындағы хат алмасуға арналған.
Иә! Көптеген электроника инженерлері олардың уақытқа негізделген жобаларына тәуелді, бірақ RTC толық сенімді емес. Ол аккумулятормен жұмыс істейді, оны тез арада ауыстыру керек. IoT жобаларына келер болсақ, ол SPI (сериялық перифериялық интерфейс) бағалы түйреуіштерін алады және айналасында оралған сымдармен араласады. Шешім…. Міне біздің кейіпкеріміз NTP (желідегі уақыт протоколы). NTP дәл, себебі ол интернеттен уақыт алады. Біз бұл протоколды клиент-сервер режимі арқылы басқарамыз. процесс соншалықты қарапайым, біздің Nodemcu клиент ретінде әрекет етеді және UDP арқылы серверден NTP пакетін сұрайды. Өз кезегінде, сервер клиентке деректерді талдайтын пакет жібереді. NTP - әмбебап уақыт синхрондау хаттамасы. Енді зертхананың жұмыс орнын жарықтандырайық
1 -қадам: Қажетті компоненттер
- Arduino тақтасы
- DS3231 RTC тақтасы
- 16x2 СКД экраны
- 2 x түймесі
- 10К Ом ауыспалы резистор (немесе потенциометр)
- 330 Ом резисторы
- 3В монеталық батарея
- Нан тақтасы
- Өткізгіш сымдар
RTC модемесі DS3231
Уақыт-бұл адамзаттың тез дамып келе жатқан әлемінде қажет маңызды сезім. Нақты уақыттағы жобада
Біз RTC (A. K. A нақты уақыт сағаты) қолданамыз
RTC Real-time-clock (RTC)-бұл ағымдағы уақытты бақылайтын интегралды схема. RTC әдетте компьютерлік аналық платалар мен кіріктірілген жүйелерде уақытылы кіруді талап етеді.
2 -қадам: Arduino сағатын қосу
- SCL түйреуішін RTC модуліне Arduino A5 -ке қосыңыз
- SDA түйреуішін RTC модуліне Arduino A4 жалғаңыз
- VCC -ты 5v -ке және GND -ден GND -ге қосыңыз
- 8 түйреуішіне түймені жалғаңыз
- Басқа түймені түйреуішке 9 жалғаңыз
- СКД RS -ті Arduino 2 -ші істігіне қосыңыз
- LCD E -ді Arduino 3 -ші істігіне қосыңыз
- LCD D7 -ді Arduino -ның 7 -пиніне қосыңыз
- LCD D6 -ны Arduino 6 -шы істігіне қосыңыз
- LCD D5 -ті Arduino 5 -ші істігіне қосыңыз
- LCD D4 -ті Arduino 4 -ші істігіне қосыңыз
- VSS & K -ті GND -ге қосыңыз
- VDD & A 5V желісіне қосыңыз
- Во потенциометрдің шығыс түйреуішіне қосыңыз
3 -қадам: RTC бар Arduino сағаттарының коды
DS3231 тек BCD форматында жұмыс істейді және BCD -ді ондыққа және керісінше түрлендіру үшін мен төмендегі 2 жолды қолдандым (минут үшін мысал): // BCD -ді ондық минутқа түрлендіру = (минут >> 4) * 10 + (минут & 0x0F);
// Ондықты BCDminute -ге түрлендіру = ((минут / 10) << 4) + (минут % 10); void DS3231_display (): уақыт пен күнтізбені көрсетеді, уақыт пен күнтізбе деректері BCD -ден ондық форматқа көшірілмес бұрын. void blink_parameter ():
// DS3231 және Arduino көмегімен батырмалары бар нақты уақыт сағаты мен күнтізбе // СКД кітапханасының кодын қосады #қосу // Сымды кітапхана кодын қосады (I2C протокол құрылғыларына қажет) #қосу // СКД модулінің қосылымдары (RS, E, D4, D5), D6, D7) LiquidCrystal lcd (2, 3, 4, 5, 6, 7); void setup () {pinMode (8, INPUT_PULLUP); // button1 8 pinMode (9, INPUT_PULLUP) түйреуішіне қосылған; // түйме2 түйреуіш 9 -ға қосылған // СКД lcd.begin бағандары мен жолдарының санын орнату (16, 2); Wire.begin (); // Қосылу i2c bus} char Time = «УАҚЫТ:::»; char Calendar = «DATE: / / 20»; байт i, секунд, минут, сағат, күн, ай, жыл; void 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 (күнтізбе); // Күнтізбені көрсету} void blink_parameter () {байт j = 0; while (j 23) // Егер сағат> 23 ==> сағат = 0 параметр = 0 болса; if (i == 1 && parameter> 59) // If minutes> 59 ==> minutes = 0 parameter = 0; if (i == 2 && parameter> 31) // If date> 31 ==> date = 1 параметр = 1; if (i == 3 && параметрі> 12) // Егер ай> 12 ==> ай = 1 параметр = 1; if (i == 4 && параметрі> 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 (); if (! digitalRead (8)) {// If (8 -түйреуіш) түймесі i ++ басылса; // Келесі параметр қайтару параметрі үшін 'i' ұлғайтылуы; // Параметр мәнін қайтарыңыз және}}} void loop () {if (! DigitalRead (8)) {// If (түйреуіш #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.beginTransmission (0x68) жазыңыз; // Wire.write (0) DS3231 адресі бар I2C хаттамасын іске қосыңыз; // Wire.write регистрінің мекенжайын жіберу (0); // Сезондтарды қалпына келтіріп, Wire.write осцилляторын іске қосыңыз (минут); // Wire.write минут жазу (сағат); // Жазу сағаты Wire.write (1); // Жазу күні (қолданылмайды) Wire.write (күн); // Жазу күні Wire.write (ай); // Жазу айы Wire.write (жыл); // Wire.endTransmission жылын жазыңыз (); // Беруді тоқтатыңыз және I2C шинасының кешігуін босатыңыз (200); // 200ms күтіңіз} Wire.beginTransmission (0x68); // Wire.write (0) DS3231 адресімен I2C протоколын іске қосыңыз; // Wire.endTransmission регистрлік мекенжайды жіберу (жалған); // I2C қайта іске қосу Wire.requestFrom (0x68, 7); // DS3231 -ден 7 байтты сұраңыз және I2C шинасын екінші секундтың соңында шығарыңыз = Wire.read (); // Регистрден секундтарды оқу 0 минут = Wire.read (); // регистрден минуттарды оқу 1 сағат = Wire.read (); // 2 Wire.read () регистрінен оқу сағаты; // Оқу күні регистрден 3 (қолданылмайды) күн = Wire.read (); // Тіркеуден оқу күні 4 ай = Wire.read (); // Тіркеуден айды оқу 5 жыл = Wire.read (); // 6 DS3231_display () регистрінен оқу жылы. // Диаплей уақыты мен күнтізбелік кідіріс (50); // 50 минут күтіңіз}
Ұсынылған:
Ылғалдылық пен температураны нақты уақыт режимінде Arduino UNO және SD-карта көмегімен қалай жасауға болады - DHT11 Proteus-та деректерді тіркеуші модельдеу: 5 қадам
Ылғалдылық пен температураны нақты уақыт режимінде Arduino UNO және SD-карта көмегімен қалай жасауға болады | DHT11 Proteus-та деректерді тіркеуші модельдеу: Кіріспе: сәлем, бұл Liono Maker, міне YouTube сілтемесі. Біз Arduino-мен шығармашылық жоба жасаймыз және енгізілген жүйелерде жұмыс жасаймыз. Деректерді тіркеуші: Деректерді тіркеуші (сонымен қатар деректерді тіркеуші немесе деректерді тіркеуші)-бұл уақыт бойынша деректерді жазатын электрондық құрылғы
ESP8266 көмегімен Интернеттен уақыт алу - ESP8266 Nodemcu көмегімен NTP сағаты жобасы: 5 қадам
ESP8266 көмегімен Интернеттен уақыт алу | ESP8266 Nodemcu көмегімен NTP сағаттары жобасы: Бұл оқулықта біз Arduino IDE көмегімен ESP8266/nodemcu көмегімен уақытты қалай алуға болатынын көреміз. Уақытты алу, әсіресе, оқылымдардың уақыт белгісін қою үшін деректерді тіркеуде пайдалы. Егер сіздің ESP8266 жобаңызда Интернетке кіру мүмкіндігі болса, сіз Network T арқылы уақыт ала аласыз
Java (+-1s) көмегімен DS3231 RTC (нақты уақыт сағаты) дәл, жылдам және автоматтандырылған түрде орнату: 3 қадам
Java (+-1s) көмегімен DS3231 RTC (нақты уақыт сағаты) дәл, жылдам және автоматтандырылған түрде орнату: Бұл нұсқаулық сізге Arduino мен шағын Java қосымшасын қолдана отырып, DS3231 нақты уақыттағы сағатты қалай орнату керектігін көрсетеді. Arduino сериялық қосылымы. Бұл бағдарламаның негізгі логикасы: 1. Arduino сериялық сұрау жібереді
Minitel нақты уақыт сағаты: 5 қадам
Minitel нақты уақыт сағаты: 1978 жылы France Telecom жасаған Minitel ақпаратты іздеу және мәтін алмасу қызметі болды. Бүкіләлемдік желіге дейін ең табысты желі болып саналады. 30 жылдан кейін 2008 жылы желі біржола жабылды. (Бұл туралы көптеген мәліметтер бар
Arduino IDE көмегімен M5stick C көмегімен сағат жасау - M5stack M5stick-C бар RTC нақты уақыт сағаты: 4 қадам
Arduino IDE көмегімен M5stick C көмегімен сағат жасау | M5stack M5stick-C бар RTC нақты уақыт сағаты: Сәлеметсіздер ме, балалар, біз m5stack m5stack тақтасын Arduino IDE көмегімен қалай жасау керектігін білеміз. дисплейде айдың аптасы