Mündəricat:
- Addım 1: Tələb olunan komponentlər
- Addım 2: Arduino Saat Bağlantısı
- Addım 3: RTC ilə Arduino Saatı üçün Kod
Video: Arduino ilə Real Zaman Saatı: 3 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:45
Bu layihədə Arduino və RTC modulunun köməyi ilə bir saat düzəldəcəyik. Bildiyimiz kimi, Arduino həqiqi vaxtı göstərə bilmir, buna görə də LCD -də doğru vaxtı göstərmək üçün RTC modulundan istifadə edəcəyik. Bütün addımları diqqətlə oxuyun, saat işini qurmağınıza çox kömək edəcək.
DS3231 Arduino kodu DS1307 koduna bənzəyir və hər iki RTC çipi ilə işləyir.
Altındakı Arduino kodu, DS3231 RTC üçün heç bir kitabxanadan istifadə etmir, Wire kitabxanası I2C konvensiyasından istifadə edərək Arduino ilə DS3231 arasındakı yazışmalar üçündür.
Bəli! Bir çox elektronika mühəndisi zamana əsaslanan layihələrindən asılıdır, lakin RTC tamamilə etibarlı deyil. Batareya ilə işləyir və tez və ya gec dəyişdirilməlidir. IoT layihələrinə gəldikdə, dəyərli SPI (Serial Periferik İnterfeys) pinlərini tutur və ətrafında dolanan tellərlə qarışıq olur. Həll…. Burada qəhrəmanımız NTP (Şəbəkə vaxtı protokolu) gəlir. İnternetdən vaxt aldığı üçün NTP çox dəqiqdir. Bu protokolu müştəri-server rejimində işlədəcəyik. proses o qədər sadədir ki, Nodemcu müştəri kimi çıxış edir və UDP istifadə edərək serverdən NTP paketi tələb edir. Bunun müqabilində, server müştəriyə məlumatları təhlil edən bir paket göndərir. NTP universal vaxt sinxronizasiya protokoludur. İndi laboratoriyalarımızın iş stansiyasını işıqlandıraq
Addım 1: Tələb olunan komponentlər
- Arduino lövhəsi
- DS3231 RTC lövhəsi
- 16x2 LCD ekran
- 2 x düymə
- 10K ohm dəyişən müqavimət (və ya potansiometr)
- 330 ohm müqavimət
- 3V sikkə hüceyrəli batareya
- Çörək lövhəsi
- Jumper telləri
RTC mokulu DS3231
Zaman, bu sürətli insan dünyasında tələb olunan vacib bir mənadır. Real vaxt layihəsində
RTC (A. K. A Real vaxt saatı) istifadə edirik
RTC Real-time-clock (RTC), cari vaxtı izləyən inteqrasiya edilmiş bir dövrədir (RTC), real rejimdə vaxta diqqət yetirir. RTC ümumiyyətlə kompüter anakartlarında və quraşdırılmış sistemlərdə olur və vaxtında giriş tələb olunur.
Addım 2: Arduino Saat Bağlantısı
- SCL pinini RTC moduluna Arduino A5 -ə qoşun
- SDA pinini RTC moduluna Arduino A4 -ə qoşun
- VCC -ni 5v -ə və GND -ni GND -ə qoşun
- 8 düyməsinə bir düyməni bağlayın
- Pin 9 -a başqa bir düyməni bağlayın
- LCD RS -ni Arduinonun 2 -ci pininə qoşun
- LCD E -ni Arduinonun 3 -cü pininə qoşun
- LCD D7 -ni Arduinonun 7 -ci pininə qoşun
- LCD D6'yı Arduino'nun 6 pininə bağlayın
- LCD D5 -i Arduinonun 5 -ci pininə qoşun
- LCD D4 -ü Arduinonun 4 -cü pininə qoşun
- VSS & K -ni GND -ə qoşun
- VDD və A -ni 5v -ə qoşun
- Vo potensiometr çıxış pininə qoşun
Addım 3: RTC ilə Arduino Saatı üçün Kod
DS3231 yalnız BCD formatı ilə işləyir və BCD -ni onluğa və əksinə çevirmək üçün aşağıdakı 2 sətri istifadə etdim (dəqiqə üçün nümunə): // BCD -ni onluq dəqiqəyə çevirin = (dəqiqə >> 4) * 10 + (dəqiqə & 0x0F);
// Onluğu BCDminute -a çevirin = ((dəqiqə / 10) << 4) + (dəqiqə % 10); void DS3231_display (): vaxtı və təqvimi göstərməzdən əvvəl vaxtı və təqvimi göstərir, BCD -dən onlu formata çevrilir. void blink_parameter ():
// DS3231 və Arduino istifadə edərək düymələri olan real vaxt saatı və təqvim // LCD kitabxana kodunu daxil edin #daxil edin // Tel kitabxana kodunu daxil edin (I2C protokol cihazları üçün lazımdır) #daxil edin/ LCD modul əlaqələri (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) pininə bağlıdır; // düymə2 pin 9 -a bağlıdır // LCD -nin sütun və satır sayını təyin edin lcd.begin (16, 2); Wire.begin (); // i2c avtobusuna qoşul} char Time = "TIME:::"; char Calendar = "DATE: / / 20"; bayt i, ikinci, dəqiqə, saat, tarix, ay, il; void DS3231_display () {// BCD -ni ondalık saniyəyə çevirin = (ikinci >> 4) * 10 + (ikinci & 0x0F); dəqiqə = (dəqiqə >> 4) * 10 + (dəqiqə & 0x0F); saat = (saat >> 4) * 10 + (saat & 0x0F); date = (date >> 4) * 10 + (date & 0x0F); ay = (ay >> 4) * 10 + (ay & 0x0F); il = (il >> 4) * 10 + (il & 0x0F); // Bitirmə müddəti [12] = ikinci % 10 + 48; Zaman [11] = saniyə / 10 + 48; Vaxt [9] = dəqiqə % 10 + 48; Zaman [8] = dəqiqə / 10 + 48; Vaxt [6] = saat % 10 + 48; Zaman [5] = saat / 10 + 48; Təqvim [14] = il % 10 + 48; Təqvim [13] = il / 10 + 48; Təqvim [9] = ay % 10 + 48; Təqvim [8] = ay / 10 + 48; Təqvim [6] = tarix % 10 + 48; Təqvim [5] = tarix / 10 + 48; lcd.setCursor (0, 0); lcd.print (Zaman); // Ekran vaxtı lcd.setCursor (0, 1); lcd.print (Təqvim); // Təqvimi göstər} void blink_parameter () {byte j = 0; while (j 23) // Saat> 23 ==> saat = 0 parametri = 0 olarsa; if (i == 1 && parametresi> 59) // If minutes> 59 ==> minutes = 0 parameter = 0; if (i == 2 && parametresi> 31) // Əgər tarix> 31 ==> tarix = 1 parametr = 1; if (i == 3 && parametresi> 12) // Ay> 12 ==> ay = 1 parametr = 1; if (i == 4 && parametresi> 99) // Əgər il> 99 ==> il = 0 parametri = 0; sprintf (mətn, "%02u", parametr); lcd.setCursor (x, y); lcd.print (mətn); gecikmə (200); // Gözləyin 200ms} lcd.setCursor (x, y); lcd.print (""); // İki boşluğu göstər blink_parameter (); sprintf (mətn, "%02u", parametr); lcd.setCursor (x, y); lcd.print (mətn); blink_parametr (); if (! digitalRead (8)) {// Əgər düyməyə (pin #8) basılırsa i ++; // Növbəti parametr qaytarma parametri üçün 'i' artır; // Parametr dəyərini qaytarın və}}} void loop () {if (! DigitalRead (8)) {// If (pin #8) düyməsinə basıldıqda i = 0; saat = redaktə (5, 0, saat); dəqiqə = redaktə (8, 0, dəqiqə); tarix = düzəliş (5, 1, tarix); ay = düzəliş (8, 1, ay); il = düzəliş (13, 1, il); // Onluğu BCD dəqiqəsinə çevirin = ((dəqiqə / 10) << 4) + (dəqiqə % 10); saat = ((saat / 10) << 4) + (saat % 10); tarix = ((tarix / 10) << 4) + (tarix % 10); ay = ((ay / 10) << 4) + (ay % 10); il = ((il / 10) << 4) + (il % 10); // Dönüşümü bitirin // DS3231 RTC Wire.beginTransmission (0x68) məlumatlarını yazın; // Wire.write (0) DS3231 ünvanı ilə I2C protokoluna başlayın; // Qeydiyyat ünvanı göndər Wire.write (0); // Sesondları sıfırlayın və Wire.write osilatorunu işə salın (dəqiqə); // Dəqiqə yaz Wire.write (saat); // Saat yaz Wire.write (1); // Yazma günü (istifadə olunmur) Wire.write (tarix); // Tarix yaz Wire.write (ay); // Ay yaz Wire.write (il); // Wire.endTransmission ilini yazın (); // Ötürməni dayandırın və I2C avtobus gecikməsini buraxın (200); // Gözləyin 200ms} Wire.beginTransmission (0x68); // Wire.write (0) DS3231 ünvanı ilə I2C protokoluna başlayın; // Qeydiyyat ünvanı göndər Wire.endTransmission (yalan); // I2C Wire.requestFrom -dan yenidən başladın (0x68, 7); // DS3231 -dən 7 bayt istəyin və oxu sonunda I2C avtobusunu buraxın = Wire.read (); // Qeyddən saniyələri oxu 0 dəqiqə = Wire.read (); // Qeyddən 1 dəqiqəni oxuyun = Wire.read (); // 2 Wire.read () qeydindən saatı oxuyun. // Qeyd 3 -dən oxunan gün (istifadə olunmur) tarix = Wire.read (); // Qeydiyyat tarixindən oxu tarixi 4 ay = Wire.read (); // Qeydiyyatdan ay oxu 5 il = Wire.read (); // Qeydiyyatdan 6 il oxuyun DS3231_display (); // Diaplay vaxtı və təqvim gecikməsi (50); // 50ms gözləyin}
Tövsiyə:
Zaman Ölçüsü (Bant Ölçmə Saatı): 5 Addım (Şəkillərlə)
Zaman Ölçüsü (Bant Ölçmə Saatı): Bu layihə üçün biz (Alex Fiel & Anna Lynton) gündəlik ölçmə aləti götürüb saata çevirdik! Orijinal plan mövcud bir lent ölçüsünü motorlaşdırmaq idi. Bunu edərkən, öz qabığımızı yaratmağın daha asan olacağına qərar verdik
Arduino UNO və SD-Card ilə Nəmlik və Temperaturu Real Zaman Məlumat Kaydedicisi necə etmək olar - DHT11 Proteusda Data Logger Simulyasiyası: 5 Addım
Arduino UNO və SD-Card ilə Nəmlik və Temperaturu Real Zaman Məlumat Kaydedicisi necə etmək olar | DHT11 Proteusda Data Logger Simulyasiyası: Giriş: salam, bu Liono Maker, burada YouTube bağlantısı var. Arduino ilə yaradıcı bir layihə hazırlayırıq və quraşdırılmış sistemlərdə işləyirik. Data Logger: Məlumat qeyd edən (eyni zamanda məlumat qeyd edən və ya məlumat yazan), məlumatları zamanla yazan elektron cihazdır
İnternet Saatı: NTP Protokolu ilə ESP8266 NodeMCU istifadə edərək OLED ilə Tarixi və Saatı Göstərin: 6 Addım
İnternet Saatı: NTP Protokolu ilə ESP8266 NodeMCU istifadə edərək OLED ilə Tarixi və Saatı Göstərin: Salam uşaqlar, bu təlimatlarda internetdən vaxt alacaq bir internet saatı quracağıq, bu layihənin işləməsi üçün heç bir RTC lazım olmayacaq, yalnız işləyən internet bağlantısı Və bu layihə üçün bir esp8266 ehtiyacınız olacaq
Arduino IDE -dən istifadə edərək M5stick C ilə Saat Yaratmaq - M5stack M5stick-C ilə RTC Real Zaman Saatı: 4 addım
Arduino IDE -dən istifadə edərək M5stick C ilə Saat Yaratmaq | M5stack M5stick-C ilə RTC Real Time Clock: Salam uşaqlar bu təlimatlarda Arduino IDE istifadə edərək m5stack-in m5stick-C inkişaf lövhəsi ilə bir saat düzəltməyi öyrənəcəyik. Beləliklə m5stick tarix, vaxt və amp göstərəcək; ekranda ayın həftəsi
Wemos D1 Mini ilə Ribba Söz Saatı (İnternet Zaman Serveri): 8 Addım (Şəkillərlə)
Wemos D1 Mini ilə Ribba Söz Saatı (İnternet Saatı Serveri): Düşünürəm ki, hər kəs barmaqlarında qıdıqlandığı yerə gəlir və bir Söz Saatı qurmaq istəyir. Yaxşı bu mənim mümkün qədər səmərəli qurmaq cəhdlərim və ümumi qənaətimdir. Hər şeydən əvvəl özüm 3D printerə sahibəm və girişim var