Mundarija:
- 1 -qadam: kerakli komponentlar
- 2 -qadam: Arduino soatining ulanishi
- 3 -qadam: Arduino RTC bilan soat kodi
Video: Arduino bilan real vaqt soati: 3 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
Ushbu loyihada biz Arduino va RTC moduli yordamida soat yasaymiz. Ma'lumki, Arduino haqiqiy vaqtni ko'rsatolmaydi, shuning uchun biz LCD displeyda kerakli vaqtni ko'rsatish uchun RTC modulidan foydalanamiz. Har bir qadamni diqqat bilan o'qing, bu sizga soat mexanizmini yaratishga yordam beradi.
DS3231 Arduino kodi DS1307 kodiga o'xshaydi va u ikkala RTC chiplari bilan ishlaydi.
Pastdagi Arduino kodi DS3231 RTC uchun hech qanday kutubxonadan foydalanmaydi, Wire kutubxonasi I2C konventsiyasidan foydalangan holda Arduino va DS3231 o'rtasidagi yozishmalar uchun.
Ha! Ko'pgina elektron muhandislar o'z vaqtiga asoslangan loyihalariga ishonishadi, lekin RTC to'liq ishonchli emas. U batareya bilan ishlaydi va uni tez yoki kech almashtirish kerak. IoT loyihalariga keladigan bo'lsak, u qimmatli SPI (Serial Periferik Interfeys) pinlarini egallaydi va atrofidagi simlar chalkashib ketadi. Yechim…. Mana bizning qahramonimiz NTP (Tarmoq vaqt protokoli). NTP juda aniq, chunki u internetdan vaqt oladi. Biz ushbu protokolni mijoz-server rejimidan foydalanamiz. jarayon shu qadar oddiyki, bizning Nodemcu mijoz vazifasini bajaradi va UDP yordamida serverdan NTP paketini so'raydi. Buning evaziga server mijozga ma'lumotlarni tahlil qiladigan paket yuboradi. NTP - bu universal sinxronizatsiya protokoli. Keling, laboratoriyalarimizning ish joyini yoritib beraylik
1 -qadam: kerakli komponentlar
- Arduino taxtasi
- DS3231 RTC platasi
- 16x2 LCD displey
- 2 marta bosish tugmasi
- 10K ohmli o'zgaruvchan qarshilik (yoki potansiyometr)
- 330 ohmli qarshilik
- 3V tanga batareyasi
- Non paneli
- Jumper simlari
RTC mokulasi DS3231
Vaqt-bu insoniyat tez rivojlanayotgan dunyoda zaruriy tuyg'u. Haqiqiy vaqtda loyihada
Biz RTC-dan foydalanamiz (A. K. A real vaqtda soat)
RTC Real-time-clock (RTC)-bu joriy vaqtni kuzatib boradigan, elektron rejim (IC). RTC vaqtni real rejimda boshqaradi. O'z vaqtida kirishni talab qilish uchun RTC odatda kompyuter anakartlarida va o'rnatilgan tizimlarda bo'ladi.
2 -qadam: Arduino soatining ulanishi
- SCL pinini RTC moduliga Arduino A5 ga ulang
- SDA pinini RTC moduliga Arduino A4 ga ulang
- VCC ni 5v ga va GND ni GND ga ulang
- Tugmani pin 8 ga ulang
- Boshqa tugmani pin 9 ga ulang
- LCD displeyini Arduino -ning 2 -piniga ulang
- LCD E -ni Arduino -ning 3 -piniga ulang
- LCD D7 -ni Arduino -ning 7 -piniga ulang
- LCD D6 -ni Arduino -ning 6 -piniga ulang
- LCD D5 -ni Arduino -ning 5 -piniga ulang
- LCD D4 -ni Arduino -ning 4 -piniga ulang
- VSS & K ni GND ga ulang
- VDD va A ni 5v ga ulang
- Vo -ni potentsiometr chiqish piniga ulang
3 -qadam: Arduino RTC bilan soat kodi
DS3231 faqat BCD formatida ishlaydi va BCDni kasrli va teskari tomonga aylantirish uchun men quyidagi 2 satrdan foydalanganman (misol uchun daqiqa): // BCDni o'nli daqiqaga aylantirish = (daqiqa >> 4) * 10 + (daqiqa va 0x0F);
// O'nli kasrni BCDminute ga aylantirish = ((daqiqa / 10) << 4) + (daqiqa % 10); void DS3231_display (): vaqt va taqvimni ko'rsatadi, vaqt va kalendar ma'lumotlarini ko'rsatishdan oldin BCD dan o'nlik formatga o'tkaziladi. void blink_parameter ():
// DS3231 va Arduino -dan foydalangan holda tugmachalari bo'lgan real vaqtda soat va taqvim // LCD kutubxona kodini o'z ichiga oladi #include // simli kutubxona kodini o'z ichiga oladi (I2C protokoli qurilmalari uchun kerak) #kiritish // LCD modul ulanishlari (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) piniga ulangan; // tugma 2 pin 9 ga ulangan // LCD displeyidagi ustunlar va qatorlar sonini sozlash lcd.begin (16, 2); Wire.begin (); // i2c avtobusiga qo'shilish} char Time = "TIME:::"; char Calendar = "DATE: / / 20"; bayt i, ikkinchi, daqiqa, soat, sana, oy, yil; void DS3231_display () {// BCDni o'nli soniyaga aylantirish = (soniya >> 4) * 10 + (ikkinchi va 0x0F); daqiqa = (daqiqa >> 4) * 10 + (daqiqa & 0x0F); soat = (soat >> 4) * 10 + (soat & 0x0F); sana = (sana >> 4) * 10 + (sana va 0x0F); oy = (oy >> 4) * 10 + (oy va 0x0F); yil = (yil >> 4) * 10 + (yil & 0x0F); // Oxirgi konvertatsiya vaqti [12] = ikkinchi % 10 + 48; Vaqt [11] = soniya / 10 + 48; Vaqt [9] = daqiqa % 10 + 48; Vaqt [8] = daqiqa / 10 + 48; Vaqt [6] = soat % 10 + 48; Vaqt [5] = soat / 10 + 48; Kalendar [14] = yil % 10 + 48; Kalendar [13] = yil / 10 + 48; Kalendar [9] = oy % 10 + 48; Kalendar [8] = oy / 10 + 48; Kalendar [6] = sana % 10 + 48; Taqvim [5] = sana / 10 + 48; lcd.setCursor (0, 0); lcd.print (Vaqt); // Vaqtni ko'rsatish lcd.setCursor (0, 1); lcd.print (taqvim); // Taqvimni ko'rsatish} void blink_parameter () {bayt j = 0; while (j 23) // Agar soat> 23 ==> soat = 0 parametr = 0 bo'lsa; if (i == 1 && parametr> 59) // Agar daqiqa> 59 ==> daqiqa = 0 parametr = 0; if (i == 2 && parametr> 31) // Agar sana> 31 ==> sana = 1 parametr = 1; if (i == 3 && parametr> 12) // Agar oy> 12 ==> oy = 1 parametr = 1; if (i == 4 && parametr> 99) // Agar yil> 99 ==> yil = 0 parametr = 0; sprintf (matn, "%02u", parametr); lcd.setCursor (x, y); lcd.print (matn); kechikish (200); // 200ms kuting} lcd.setCursor (x, y); lcd.print (""); // ikkita bo'sh joyni ko'rsatish blink_parameter (); sprintf (matn, "%02u", parametr); lcd.setCursor (x, y); lcd.print (matn); blink_parametr (); if (! digitalRead (8)) {// Agar tugma (pin #8) i ++ bosilsa; // Keyingi parametr qaytish parametri uchun 'i' balandligi; // Parametr qiymatini qaytaring va}}} void loop () {if (! DigitalRead (8)) {// If (pin #8) tugmasi bosilsa i = 0; soat = tahrir (5, 0, soat); daqiqa = tahrir (8, 0, daqiqa); sana = tahrirlash (5, 1, sana); oy = tahrir (8, 1, oy); yil = tahrir (13, 1, yil); // O'nli kasrni BCD daqiqasiga aylantirish = ((daqiqa / 10) << 4) + (daqiqa % 10); soat = ((soat / 10) << 4) + (soat % 10); sana = ((sana / 10) << 4) + (sana % 10); oy = ((oy / 10) << 4) + (oy % 10); yil = ((yil / 10) << 4) + (yil % 10); // Konversiyani tugatish // DS3231 RTC Wire.beginTransmission -ga ma'lumotlarni yozish (0x68); // Wire.write (0) DS3231 manzili bilan I2C protokolini ishga tushiring; // Ro'yxatdan o'tish manzilini yuboring Wire.write (0); // Sesondlarni qayta o'rnating va Wire.write osilatorini ishga tushiring (daqiqa); // Wire.write daqiqasini yozing (soat); // Yozish vaqti Wire.write (1); // Yozish kuni (ishlatilmaydi) Wire.write (sana); // Wire.write sanasini yozish (oy); // Wire.write oyini yozing (yil); // Wire.endTransmission yilini yozing (); // uzatishni to'xtating va I2C avtobusining kechikishini bo'shating (200); // 200ms kuting} Wire.beginTransmission (0x68); // Wire.write (0) DS3231 manzili bilan I2C protokolini ishga tushiring; // Wire.endTransmission ro'yxatdan o'tish manzilini yuborish (noto'g'ri); // I2Cni qayta ishga tushirish Wire.requestFrom (0x68, 7); // DS3231 -dan 7 bayt talab qiling va ikkinchi o'qish oxirida I2C avtobusini chiqaring = Wire.read (); // Registrdan soniyani o'qing 0 daqiqa = Wire.read (); // Registrdan minutlarni o'qish 1 soat = Wire.read (); // 2 Wire.read () registridan o'qish vaqti; // 3 -registrdan o'qish kuni (ishlatilmaydi) sana = Wire.read (); // Ro'yxatdan o'tilgan sanani o'qish 4 oy = Wire.read (); // Ro'yxatdan o'tish oyini o'qing 5 yil = Wire.read (); // Ro'yxatdan o'tish yilini o'qing 6 DS3231_display (); // Diaplay vaqti va taqvim kechikishi (50); // 50 daqiqa kuting}
Tavsiya:
NEO-6M moduli yordamida mahalliy vaqt bilan Arduino GPS-soati: 9 qadam
NEO-6M moduli yordamida mahalliy vaqt bilan Arduino GPS-soati: Ushbu qo'llanmada biz sun'iy yo'ldoshlardan arduino yordamida joriy vaqtni olishni bilib olamiz. Videoni tomosha qiling
Java (+-1s) yordamida DS3231 RTC (real vaqt soati) ni aniq, tez va avtomatik sozlash: 3 qadam
Java (+-1s) yordamida DS3231 RTC (real vaqt soati) ni aniq, tez va avtomatlashtirilgan tarzda sozlash: Bu ko'rsatma sizga Arduino va kichik Java dasturidan foydalangan holda DS3231 real vaqtda soatni qanday sozlash kerakligini ko'rsatib beradi. Arduino -ning ketma -ket ulanishi. Ushbu dasturning asosiy mantig'i: 1. Arduino ketma -ket so'rov yuboradi
Minitel real vaqt soati: 5 qadam
Minitel Real Time Clock: 1978 yilda France Telecom tomonidan yaratilgan, Minitel axborot qidirish va yozish xizmati edi. Internet tarmog'idan oldin eng muvaffaqiyatli tarmoq deb hisoblanadi. 30 yil o'tgach, 2008 yilda tarmoq nihoyat yopildi. (Bu haqda juda ko'p ma'lumotlar bor
Arduino IDE yordamida M5stick C yordamida soat yasash - M5stack M5stick-C bilan RTC real vaqt soati: 4 qadam
Arduino IDE yordamida M5stick C yordamida soat yasash | M5stack M5stick-C bilan RTC Real Time Clock: Salom bolalar, bu ko'rsatmalarni o'qib, biz Arduino IDE yordamida m5stack-ning m5stick-C rivojlanish taxtasi bilan soat yasashni o'rganamiz.So m5stick sana, vaqt va ampni ko'rsatadi; displeyda oyning haftasi
Wibos D1 Mini bilan Ribba so'z soati (Internet -vaqt serveri): 8 qadam (rasmlar bilan)
Ribba Wemos D1 Mini bilan so'z soati (Internet -vaqt serveri): O'ylaymanki, hamma barmoqlari qichqiradigan joyga keladi va u so'z soati qurmoqchi. Bu mening urinishim va uni iloji boricha samaraliroq qilish bo'yicha umumiy xulosam. Birinchidan, men o'zim 3D -printerga egaman va unga kirishim mumkin