Სარჩევი:
- ნაბიჯი 1: საჭირო კომპონენტები
- ნაბიჯი 2: Arduino საათის დაკავშირება
- ნაბიჯი 3: კოდი Arduino საათისათვის RTC– ით
ვიდეო: რეალურ დროში საათი არდუინოთი: 3 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:17
ამ პროექტში ჩვენ გავაკეთებთ საათს Arduino და RTC მოდულის დახმარებით. როგორც ვიცით, Arduino– ს არ შეუძლია აჩვენოს რეალური დრო, ამიტომ ჩვენ გამოვიყენებთ RTC მოდულს LCD– ზე სწორი დროის ჩვენების მიზნით. ყურადღებით წაიკითხეთ ყველა ნაბიჯი, ეს ძალიან დაგეხმარებათ საათის მექანიზმის შედგენაში.
DS3231 Arduino კოდი ჰგავს DS1307 კოდს და მუშაობს ორივე RTC ჩიპით.
Arduino კოდი ქვემოთ არ იყენებს ბიბლიოთეკას DS3231 RTC– სთვის, მავთულის ბიბლიოთეკა არის Arduino– სა და DS3231– ს შორის კორესპონდენციისათვის I2C კონვენციის გამოყენებით.
ჰო! ბევრი ელექტრონიკის ინჟინერი დამოკიდებულია მასზე დროზე დაფუძნებული პროექტებისთვის, მაგრამ RTC არ არის მთლიანად საიმედო. ის მუშაობს ბატარეაზე და უნდა შეიცვალოს ადრე თუ გვიან. IoT პროექტებზე მისვლისას იგი იკავებს მნიშვნელოვან SPI (სერიული პერიფერიული ინტერფეისი) ქინძისთავებს და არეულდება მავთულხლართებით. გამოსავალი….აქ მოდის ჩვენი გმირი NTP (ქსელის დროის პროტოკოლი). NTP იმდენად ზუსტია, რომ დრო იღებს ინტერნეტიდან. ჩვენ ვაპირებთ ამ პროტოკოლის მუშაობას კლიენტ-სერვერის რეჟიმის გამოყენებით. პროცესი იმდენად მარტივია, რომ ჩვენი Nodemcu მოქმედებს როგორც კლიენტი და ითხოვს NTP პაკეტს სერვერისგან UDP გამოყენებით. სანაცვლოდ, სერვერი უგზავნის პაკეტს კლიენტს, რომელიც აანალიზებს მონაცემებს. NTP არის დროის სინქრონიზაციის უნივერსალური პროტოკოლი. მოდით, გავანათოთ ჩვენი ლაბორატორიების სამუშაო ადგილი
ნაბიჯი 1: საჭირო კომპონენტები
- არდუინოს დაფა
- DS3231 RTC დაფა
- 16x2 LCD ეკრანი
- 2 x ღილაკი
- 10K ohm ცვლადი რეზისტორი (ან პოტენომეტრი)
- 330 ohm რეზისტორი
- 3 ვ მონეტის ელემენტის ბატარეა
- პურის დაფა
- ჯუმბერის მავთულები
RTC მოკულა DS3231
დრო არის აუცილებელი გრძნობა, რომელიც საჭიროა ადამიანთა ამ სწრაფ სამყაროში. რეალურ დროში განხორციელებულ პროექტში
ჩვენ ვიყენებთ RTC (A. K. A რეალურ დროში საათს)
RTC რეალურ დროში საათი (RTC) არის ინტეგრირებული წრე (IC), რომელიც თვალყურს ადევნებს მიმდინარე დროს. RTC ზრუნავს დროზე რეალურ რეჟიმში. RTC ჩვეულებრივ გვხვდება კომპიუტერის დედაპლატებსა და ჩაშენებულ სისტემებში, რომლებიც საჭიროებენ დროულ წვდომას.
ნაბიჯი 2: Arduino საათის დაკავშირება
- შეაერთეთ SCL პინი RTC მოდულთან Arduino A5
- შეაერთეთ SDA პინი RTC მოდულთან Arduino A4- თან
- შეაერთეთ VCC TO 5v და GND TO GND
- შეაერთეთ ღილაკი პინ 8 -თან
- შეაერთეთ სხვა ღილაკი პინ 9 -თან
- შეაერთეთ LCD დისკი Arduino– ს პინ 2 – თან
- შეაერთეთ LCD ეკრანი Arduino– ს პინ 3 – თან
- შეაერთეთ LCD– ის D7 Arduino– ს პინ 7 – თან
- შეაერთეთ LCD D6 არდუინოს პინ 6 -თან
- შეაერთეთ LCD– ის D5 Arduino– ს პინ 5 – თან
- შეაერთეთ LCD D4 არდუინოს 4 პინთან
- შეაერთეთ VSS & K GND– თან
- შეაერთეთ VDD & A 5 ვ
- შეაერთეთ vo პოტენციომეტრის გამომავალ პინთან
ნაბიჯი 3: კოდი Arduino საათისათვის RTC– ით
DS3231 მუშაობს მხოლოდ BCD ფორმატით და BCD- ის ათწილადზე გადასაყვანად და პირიქით მე გამოვიყენე ქვემოთ მოცემული 2 სტრიქონი (მაგალითი წუთისთვის): // გადააქციე BCD ათწუთიან = (წუთი >> 4) * 10 + (წუთი და 0x0F);
// ათწილადის გადაყვანა BCDminute = ((წუთი / 10) << 4) + (წუთი % 10); void DS3231_display (): აჩვენებს დროს და კალენდარს, სანამ დრო და კალენდარული მონაცემები გამოისახება BCD– დან ათობით ფორმატში. მოხსნას blink_parameter ():
// რეალური დრო და საათი, D6, D7) LiquidCrystal LCD (2, 3, 4, 5, 6, 7); void setup () {pinMode (8, INPUT_PULLUP); // button1 დაკავშირებულია pin 8 pinMode- თან (9, INPUT_PULLUP); // ღილაკი 2 დაკავშირებულია პინ 9 -თან // დააყენეთ LCD- ის სვეტებისა და რიგების რაოდენობა lcd.begin (16, 2); Wire.begin (); // შეუერთდით i2c bus} char დრო = "TIME:::"; char კალენდარი = "DATE: / / 20"; ბაიტი i, მეორე, წუთი, საათი, თარიღი, თვე, წელი; ბათილია 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 () {byte j = 0; ხოლო (j 23) // თუ საათი> 23 ==> საათი = 0 პარამეტრი = 0; თუ (i == 1 && პარამეტრი> 59) // თუ წუთი> 59 ==> წუთი = 0 პარამეტრი = 0; თუ (i == 2 && პარამეტრი> 31) // თუ თარიღი> 31 ==> თარიღი = 1 პარამეტრი = 1; თუ (i == 3 && პარამეტრი> 12) // თუ თვე> 12 ==> თვე = 1 პარამეტრი = 1; თუ (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 (); თუ (! digitalRead (8)) {// თუ ღილაკი (პინი #8) დაჭერილია i ++; // მომდევნო პარამეტრის დაბრუნების პარამეტრი 'i'; // პარამეტრების მნიშვნელობის დაბრუნება და გასვლა}}} void loop () {if (! DigitalRead (8)) {// თუ ღილაკზე (პინ #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); // დაიწყეთ I2C პროტოკოლი DS3231 მისამართით Wire.write (0); // რეგისტრაციის მისამართის გაგზავნა Wire.write (0); // sesonds- ის გადატვირთვა და დაიწყოს oscillator Wire.write (წუთი); // ჩაწერეთ წუთი Wire.write (საათი); // ჩაწერეთ საათი Wire.write (1); // ჩაწერეთ დღე (არ გამოიყენება) Wire.write (თარიღი); // ჩაწერეთ თარიღი Wire.write (თვე); // ჩაწერეთ თვის Wire.write (წელი); // ჩაწერეთ წელი Wire.endTransmission (); // გადაცემის შეჩერება და გათავისუფლება I2C ავტობუსის დაგვიანებით (200); // დაელოდეთ 200ms} Wire.beginTransmission (0x68); // დაიწყეთ I2C პროტოკოლი DS3231 მისამართით Wire.write (0); // რეგისტრაციის მისამართის გაგზავნა Wire.endTransmission (ყალბი); // I2C გადატვირთეთ Wire.requestFrom (0x68, 7); // მოითხოვეთ 7 ბაიტი DS3231– დან და გაუშვით 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 წმ}
გირჩევთ:
მინიტელის რეალურ დროში საათი: 5 ნაბიჯი
Minitel Real Time Clock: შეიქმნა 1978 წელს France Telecom– ის მიერ, Minitel იყო ინფორმაციის მოძიებისა და ტექსტური შეტყობინების სერვისი. ითვლებოდა ყველაზე წარმატებული ქსელი მსოფლიო ქსელის წინ. 30 წელი გავიდა 2008 წელს, ქსელი საბოლოოდ დაიხურა. (ამის შესახებ ბევრი ინფორმაციაა
DS1307 რეალურ დროში საათი RTC არდუინოსთან ერთად: 4 ნაბიჯი
DS1307 რეალურ დროში საათის RTC არდუინოსთან ერთად: ამ გაკვეთილში ჩვენ შევისწავლით რეალური დროის საათს (RTC) და როგორ არდუინოს & რეალურ დროში IC IC DS1307 შედგენილია როგორც დროის მოწყობილობა. უძრავი დროის საათი (RTC) გამოიყენება დროის მონიტორინგისთვის და კალენდრის შესანარჩუნებლად. RTC- ს გამოსაყენებლად, w
Arduino დაფუძნებული საათი DS1307 რეალურ დროში საათის გამოყენებით (RTC) მოდული და 0.96: 5 ნაბიჯი
Arduino დაფუძნებული საათი DS1307 რეალურ დროში საათის გამოყენებით (RTC) მოდული & 0.96: გამარჯობა ბიჭებო ამ გაკვეთილში ჩვენ ვნახავთ როგორ გავაკეთოთ სამუშაო საათი რეალურ დროში DS1307 საათის მოდულის გამოყენებით & OLED მონიტორები. ასე რომ, ჩვენ წავიკითხავთ დროს საათის მოდულიდან DS1307. და დაბეჭდეთ იგი OLED ეკრანზე
საათის დამზადება M5stick C გამოყენებით Arduino IDE - RTC რეალურ დროში საათი M5stack M5stick-C: 4 ნაბიჯი
საათის დამზადება M5stick C გამოყენებით Arduino IDE | RTC რეალურ დროში საათი M5stack M5stick-C: გამარჯობა ბიჭებო ამ ინსტრუქციებში ჩვენ ვისწავლით თუ როგორ უნდა გავაკეთოთ საათი m5stick-C განვითარების დაფით m5stack– ით Arduino IDE– ს გამოყენებით. ასე რომ m5stick გამოჩნდება თარიღი, დრო და amp; თვის კვირა ჩვენებაზე
გარემოს რეალურ დროში საათი: 4 ნაბიჯი
Ambient Real Time Clock: AimI ეს საათი გავაკეთე იმიტომ, რომ მე მაქვს მოსახსნელი LED ზოლები და მინდა გამოვიყენო. შემდეგ დავინახე, რომ ჩემს ოთახს არ აქვს კარგი საათი, რომელიც შეესაბამება მის კედლებს. ასე რომ, მე გადავწყვიტე შემექმნა საათი, რომელსაც შეუძლია შეცვალოს მისი ფერები მომხმარებლების განწყობის შესაბამისად