Sadržaj:
Video: Sat u stvarnom vremenu s Arduinom: 3 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:34
U ovom projektu napravit ćemo sat uz pomoć Arduino i RTC modula. Kao što znamo, Arduino ne može prikazati stvarno vrijeme, pa ćemo koristiti RTC modul za prikaz pravog vremena na LCD -u. Pažljivo pročitajte sve korake koji će vam puno pomoći da napravite sat.
Arduino kod DS3231 je poput koda DS1307 i radi s oba RTC čipa.
Arduino kôd ispod ne koristi nikakvu knjižnicu za DS3231 RTC, knjižnica Wire služi za dopisivanje između Arduina i DS3231 koristeći I2C konvenciju.
Da! Mnogi elektronički inženjeri ovise o tome za svoje vremenski zasnovane projekte, ali RTC nije potpuno pouzdan. Radi na baterije i mora se zamijeniti uskoro ili kasnije. Dolazeći na IoT projekte, zauzima vrijedne SPI (Serijsko periferno sučelje) pinove i postaje neuredan sa žicama isprepletenim. Rješenje …. Ovdje dolazi naš heroj NTP (mrežni vremenski protokol). NTP je toliko precizan jer dobiva vrijeme s interneta. Ovim ćemo protokolom upravljati u načinu rada klijent-poslužitelj. proces je toliko jednostavan da naš Nodemcu djeluje kao klijent i traži NTP paket od poslužitelja koristeći UDP. Zauzvrat, poslužitelj šalje paket klijentu koji analizira podatke. NTP je univerzalni protokol za sinkronizaciju vremena. Osvijetlimo sada našu laboratorijsku radnu stanicu
Korak 1: Potrebne komponente
- Arduino ploča
- DS3231 RTC ploča
- 16x2 LCD zaslon
- 2 x tipkalo
- 10K ohmski promjenjivi otpornik (ili potenciometar)
- 330-ohmski otpornik
- 3V dugmasta baterija
- Oglasna ploča
- Kratkospojne žice
RTC mokula DS3231
Vrijeme je bitan smisao potreban u ovom brzom svijetu ljudskih bića. U projektu u stvarnom vremenu
Koristimo RTC (A. K. A sat u stvarnom vremenu)
RTC sat u stvarnom vremenu (RTC) je integrirani sklop (IC) koji prati trenutno vrijeme. RTC se brine o vremenu u stvarnom načinu rada. RTC se obično nalazi u računalnim matičnim pločama i ugrađenim sustavima kako bi zahtijevao pravovremeni pristup.
Korak 2: Spajanje Arduino sata
- Spojite SCL pin na RTC modul na Arduino A5
- Spojite SDA pin na RTC modul na Arduino A4
- Spojite VCC na 5v i GND na GND
- Spojite gumb na pin 8
- Spojite drugi gumb na pin 9
- Spojite RS LCD na pin 2 Arduina
- Spojite E LCD -a na pin 3 Arduina
- Spojite D7 LCD -a na pin 7 Arduina
- Spojite D6 LCD -a na pin 6 Arduina
- Spojite D5 LCD -a na pin 5 Arduina
- Spojite D4 LCD -a na pin 4 Arduina
- Spojite VSS & K na GND
- Spojite VDD & A na 5v
- Spojite vo na izlazni pin potenciometra
Korak 3: Kôd za Arduino sat sa RTC -om
DS3231 radi samo s BCD formatom i za pretvaranje BCD -a u decimalni i obrnuto koristio sam 2 retka ispod (primjer za minute): // Pretvorim BCD u decimalnu minutu = (minuta >> 4) * 10 + (minuta & 0x0F);
// Pretvorimo decimalu u BCDminute = ((minute / 10) << 4) + (minuta % 10); void DS3231_display (): prikazuje vrijeme i kalendar, prije nego što se prikaže vrijeme i podaci kalendara se pretvore iz BCD u decimalni format. void blink_parameter ():
// Sat u stvarnom vremenu i kalendar s postavljenim gumbima pomoću DS3231 i Arduina // uključuju kôd LCD knjižnice #include // uključuju kôd knjižnice Wire (potreban za uređaje s protokolom I2C) #include // veze LCD modula (RS, E, D4, D5, D6, D7) LCD s tekućim kristalom (2, 3, 4, 5, 6, 7); void setup () {pinMode (8, INPUT_PULLUP); // button1 je spojen na pin 8 pinMode (9, INPUT_PULLUP); // button2 je spojen na pin 9 // postavlja LCD broj stupaca i redaka lcd.begin (16, 2); Wire.begin (); // Pridruži se i2c sabirnici} char Time = "TIME:::"; char Calendar = "DATUM: / / 20"; bajt i, drugi, minut, sat, datum, mjesec, godina; void DS3231_display () {// Pretvori BCD u decimalnu sekundu = (druga >> 4) * 10 + (druga & 0x0F); minuta = (minuta >> 4) * 10 + (minuta & 0x0F); sat = (sat >> 4) * 10 + (sat & 0x0F); datum = (datum >> 4) * 10 + (datum & 0x0F); mjesec = (mjesec >> 4) * 10 + (mjesec & 0x0F); godina = (godina >> 4) * 10 + (godina & 0x0F); // Vrijeme završetka pretvorbe [12] = drugi % 10 + 48; Vrijeme [11] = drugo / 10 + 48; Vrijeme [9] = minuta % 10 + 48; Vrijeme [8] = minuta / 10 + 48; Vrijeme [6] = sat % 10 + 48; Vrijeme [5] = sat / 10 + 48; Kalendar [14] = godina % 10 + 48; Kalendar [13] = godina / 10 + 48; Kalendar [9] = mjesec % 10 + 48; Kalendar [8] = mjesec / 10 + 48; Kalendar [6] = datum % 10 + 48; Kalendar [5] = datum / 10 + 48; lcd.setCursor (0, 0); lcd.print (vrijeme); // Vrijeme prikaza lcd.setCursor (0, 1); lcd.print (Kalendar); // Prikaz kalendara} void blink_parameter () {bajt j = 0; while (j 23) // Ako su sati> 23 ==> sati = 0 parametar = 0; if (i == 1 && parameter> 59) // Ako minute> 59 ==> minute = 0 parametar = 0; if (i == 2 && parametar> 31) // Ako je datum> 31 ==> datum = 1 parametar = 1; if (i == 3 && parametar> 12) // Ako je mjesec> 12 ==> mjesec = 1 parametar = 1; if (i == 4 && parametar> 99) // Ako je godina> 99 ==> godina = 0 parametar = 0; sprintf (tekst, "%02u", parametar); lcd.setCursor (x, y); lcd.print (tekst); kašnjenje (200); // Pričekajte 200 ms} lcd.setCursor (x, y); lcd.print (""); // Prikaz dva razmaka blink_parameter (); sprintf (tekst, "%02u", parametar); lcd.setCursor (x, y); lcd.print (tekst); blink_parameter (); if (! digitalRead (8)) {// Ako je pritisnuta tipka (pin #8) i ++; // Povećanje 'i' za sljedeći parametar vraćanja parametra; // Vrati vrijednost parametra i izađi}}} void loop () {if (! DigitalRead (8)) {// Ako je pritisnuta tipka (pin #8) i = 0; sat = uredi (5, 0, sat); minuta = uređivanje (8, 0, minuta); datum = uredi (5, 1, datum); mjesec = uredi (8, 1, mjesec); godina = uredi (13, 1, godina); // Pretvorimo decimalu u BCD minutu = ((minuta / 10) << 4) + (minuta % 10); sat = ((sat / 10) << 4) + (sat % 10); datum = ((datum / 10) << 4) + (datum % 10); mjesec = ((mjesec / 10) << 4) + (mjesec % 10); godina = ((godina / 10) << 4) + (godina % 10); // Završetak pretvorbe // Zapisivanje podataka na DS3231 RTC Wire.beginTransmission (0x68); // Pokretanje I2C protokola s DS3231 adresom Wire.write (0); // Pošaljite adresu registra Wire.write (0); // Resetiraj sesonde i pokreni oscilator Wire.write (minuta); // Zapišite minutu Wire.write (sat); // Zapisati sat Wire.write (1); // Upiši dan (ne koristi se) Wire.write (datum); // Upiši datum Wire.write (mjesec); // Napiši mjesec Wire.write (godina); // Napiši godinu Wire.endTransmission (); // Zaustavljanje prijenosa i otpuštanje kašnjenja sabirnice I2C (200); // Pričekajte 200 ms} Wire.beginTransmission (0x68); // Pokretanje I2C protokola s DS3231 adresom Wire.write (0); // Pošaljite adresu registra Wire.endTransmission (false); // I2C ponovno pokretanje Wire.requestFrom (0x68, 7); // Zatražite 7 bajtova od DS3231 i pustite I2C sabirnicu na kraju sekunde čitanja = Wire.read (); // Očitavanje sekundi iz registra 0 minuta = Wire.read (); // Čitanje minuta iz registra 1 sat = Wire.read (); // Očitavanje sata iz registra 2 Wire.read (); // Dan čitanja iz registra 3 (ne koristi se) datum = Wire.read (); // Čitanje datuma iz registra 4 mjeseca = Wire.read (); // Očitavanje mjeseca iz registra 5 godina = Wire.read (); // Očitavanje godine iz registra 6 DS3231_display (); // Vrijeme reprodukcije i kašnjenje kalendara (50); // Pričekajte 50 ms}
Preporučeni:
Minitel sat u stvarnom vremenu: 5 koraka
Minitel sat u stvarnom vremenu: Minitel je 1978. godine stvorio France Telecom, a bio je usluga za pretraživanje i slanje poruka. Smatra se najuspješnijom mrežom prije svjetskog weba. Nakon 30 godina 2008. mreža se napokon zatvorila. (Postoji mnogo informacija o ovome
Korištenje DS1307 i DS3231 modula sata u stvarnom vremenu s Arduinom: 3 koraka
Korištenje DS1307 i DS3231 modula satova u stvarnom vremenu s Arduinom: Stalno dobivamo zahtjeve o tome kako koristiti module satova u stvarnom vremenu DS1307 i DS3231 s Arduinom iz različitih izvora-pa je ovo prvi od dva dijela vodiča o tome kako ih koristiti. Za ovaj Arduino vodič imamo dva modula sata u stvarnom vremenu
DS1307 Sat u stvarnom vremenu RTC sa Arduinom: 4 koraka
DS1307 RTC sat sa stvarnim vremenom sa Arduinom: U ovom vodiču ćemo naučiti o satu sa stvarnim vremenom (RTC) i kako Arduino & IC DS1307 sata u stvarnom vremenu sastavljeni su kao vremenski uređaj. Sat stvarnog vremena (RTC) koristi se za praćenje vremena i održavanje kalendara. Da biste koristili RTC, w
Sat baziran na Arduinu koji koristi DS1307 modul sata u stvarnom vremenu (RTC) i 0,96: 5 koraka
Arduino sat sa DS1307 modulom sata u realnom vremenu (RTC) i 0.96: Zdravo dečki, u ovom ćemo vodiču vidjeti kako napraviti radni sat pomoću modula sata realnog vremena DS1307 & OLED displeji. Dakle, očitavat ćemo vrijeme iz modula sata DS1307. I ispišite ga na OLED ekranu
Zapis podataka MPU-6050/A0 u stvarnom vremenu s Arduinom i Androidom: 7 koraka (sa slikama)
Zapisivanje podataka u stvarnom vremenu MPU-6050/A0 s Arduinom i Androidom: Zanimalo me korištenje Arduina za strojno učenje. Kao prvi korak, želim izgraditi prikaz podataka i zapisnik podataka u stvarnom vremenu (ili prilično blizu njega) s Android uređajem. Želim snimiti podatke akcelerometra s MPU-6050 pa sam dizajnirao