Სარჩევი:
- ნაბიჯი 1: Google დრო
- ნაბიჯი 2: SNTP დროის სერვერები
- ნაბიჯი 3: მიიღეთ დრო RTC მოდულიდან
- ნაბიჯი 4: RTC მომხმარებლის მეხსიერება
- ნაბიჯი 5: გარე RTC მოდულები
- ნაბიჯი 6: მონაცემების აღრიცხვა
- ნაბიჯი 7: დასკვნა
ვიდეო: NODEMCU Lua ESP8266 რეალურ დროში (RTC) და EEPROM: 7 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:18
სწორი დროის მიღება აუცილებელია, თუ გსურთ მონაცემების ჟურნალის შენარჩუნება. ინტერნეტის წყაროებიდან დროის გამოსაყენებლად სხვადასხვა გზა არსებობს.
თქვენ შეიძლება გკითხოთ, რატომ არ გამოიყენოთ ESP8266 დროის შესანარჩუნებლად? კარგად შეგიძლიათ, მას აქვს საკუთარი შიდა RTC (რეალურ დროში საათი), მაგრამ ESP8266– ს აქვს 3 განსხვავებული სამუშაო საათის სიხშირე - 52 მჰც, როდესაც ის ჩადის, 80 მჰც რეგულარული მუშაობისას და 160 მჰც თუ გაძლიერდება. თუ თქვენ გჭირდებათ დროის ზუსტი შენახვა, განსაკუთრებით უფრო ხანგრძლივი პერიოდის განმავლობაში, მაშინ გარე RTC– მა შეიძლება მოგცეთ გამოსავალი. ამ მოდულებს ასევე აქვთ ბატარეის სარეზერვო საშუალება ენერგიის დაკარგვის შემთხვევაში. RTC არ არის საშინლად ზუსტი, რადგან ითვლის დაყენებიდან გასულ დროს და მიუხედავად იმისა, რომ ეს შეიძლება გაკეთდეს უმეტეს აპლიკაციებში, ის არ შეიძლება იყოს საკმარისად კარგი კრიტიკული დროის შესანახად. შესაძლებელია მიიღოთ ზუსტი დრო SNTP დროის სერვერისგან, საიდანაც RTC შეიძლება განახლდეს რეგულარული ინტერვალებით, საჭიროების შემთხვევაში.
DS1307 Tiny RTC I2C მოდული (ზემოთ) არის ამ ნივთების მაგალითი და მისი შეძენა შესაძლებელია Ebay– ზე და სხვა მომწოდებლებზე 2 ფუნტზე ნაკლებ ფასად. ასევე არსებობს სხვა მსგავსი DS1302 და DS3231, რომლებიც მუშაობენ ანალოგიურად და ღირს 99p– დან ზემოთ.
DS1307 მოდული იყენებს I2C ინტერფეისს და ESP-01– ისთვის უნდა იყოს დაკავშირებული როგორც:
Vcc - 3.3v, Gnd - Gnd, SDA - D3, SCL - D4
SDA და SCL შეიძლება იყოს დაკავშირებული ნებისმიერ I/O პინთან უფრო დიდ ESP8266– ზე (შეცვალეთ კოდი შესაბამისად). ამ მოდულზე უნდა იყოს დაკავშირებული მხოლოდ მარცხენა მხარის ქინძისთავები.
ნაბიჯი 1: Google დრო
უამრავი მაგალითია იმისა, თუ როგორ უნდა მიიღოთ დრო Google- დან და გამოიყურებოდეს მსგავსი რამ. GoogleTime.lua პროგრამის გაშვებისას თქვენ მიიღებთ შემდეგ შედეგს:
dofile ("GoogleTime.lua")> დრო: პარ, 15 დეკემბერი 2017 11:19:45 GMT
ამ მეთოდის პრობლემა ის არის, რომ თქვენ იღებთ დროს სიმების ფორმატში და თქვენ უნდა გაყოთ სტრიქონი მის ინდივიდუალურ ბიტებად საათების, წუთების, წამების და ა.შ. ლაიკური თვალსაზრისით, ეს არის წამის რაოდენობა, რომელიც გავიდა 1970 წლის ხუთშაბათიდან 1 იანვრიდან დღემდე და დღემდე. UNIX ეპოქა (1970/01/01 00:00:00) გამოიყენება კომპიუტერული ოპერაციული სისტემების უმეტესობის მიერ და გასული დრო ინახება ხელმოწერილი 32 ბიტიანი ნომრის სახით. ეს ნიშნავს, რომ ეს სისტემა იმუშავებს 2038 წლის 19 იანვრამდე, როდესაც რიცხვი ძალიან დიდი გახდება ამ გზით შესანახად. ერთი გამოსავალი არის რიცხვის შენახვა 64 ბიტად, მაგრამ ჯერჯერობით 32 ბიტიანი მეთოდი საკმარისი იქნება.
შიდა RTC– ზე 2015 წლის 9 ივლისისთვის 18:29:49 დროის დასადგენად თქვენ გამოიყენებთ კოდის ამ ხაზს:
rtctime.set (1436430589, 0)
2 პარამეტრია წამი და მიკრო წამი.
თქვენ შეგიძლიათ იპოვოთ მეტი ინფორმაცია NodeMCU დოკუმენტაციის კითხვისას.
ნაბიჯი 2: SNTP დროის სერვერები
ქსელის დროის მარტივი პროტოკოლი (SNTP) მოწოდებულია ინტერნეტის მრავალი წყაროდან და მსოფლიოს ბევრ ქვეყანას აქვს ეს სერვისი.
პროგრამა, SNTPTime2.lua ადგენს დროს შიდა RTC- ზე. თქვენ უნდა გქონდეთ rtctime & sntp მოდულები თქვენს მშენებლობაში, როდესაც აანთებთ თქვენს ESP8266. პროგრამა იღებს დროს სერვერის წამებში და მიკრო წამებში და ადგენს შიდა RTC rtctime.set (sec, usec).
პროგრამა აჩვენებს თარიღსა და დროს სხვადასხვა ფორმატში.
მსოფლიოში ბევრი SNTP სერვერია და ზოგი ასეთია:
- sntp.sync ({"216.239.35.0"},
- sntp.sync ({"0.uk.pool.ntp.org", "0.uk.pool.ntp.org"},
- sntp.sync ({"3.uk.pool.ntp.org", "143.210.16.201"},
- sntp.sync ({"0.uk.pool.ntp.org", "1.uk.pool.ntp.org", "3.uk.pool.ntp.org"},
კოდის ყველა ზემოაღნიშნული ხაზი შეიძლება შეიცვალოს SNTPTime2.lua პროგრამაში.
უფრო მეტი SNTP სერვერია ქვემოთ მოცემულ მისამართებზე, რომელთა ხელახლა გამოყენება შესაძლებელია პროგრამაში.
93.170.62.252, 130.88.202.49, 79.135.97.79, ntp.exnet.com
Google ასევე გთავაზობთ დროის სერვერებს ამ მისამართებზე:
216.239.35.0, 216.239.35.4, 216.239.35.8, 216.239.35.12
თქვენ უნდა გახსოვდეთ, რომ მიიღოთ დრო იმ ქვეყნიდან, სადაც იმყოფებით, ან შეიძლება დაგჭირდეთ მისი შეცვლა მსოფლიოს სხვადასხვა დროის ზონებისთვის. ასევე ზოგიერთ ქვეყანას აქვს დღის დაზოგვის დრო, ასე რომ თქვენ შეიძლება ასევე მოგიწიოთ ამის მოგვარება.
ნაბიჯი 3: მიიღეთ დრო RTC მოდულიდან
პროგრამა GetRTCTime.lua კითხულობს დროს შიდა RTC– დან.
პირველი ნაწილი კითხულობს დროს და აჩვენებს მას წამებში და მიკროწამებში.
მეორე ნაწილი გარდაქმნის მას ადამიანის უფრო წაკითხვად ფორმატში.
tm = rtctime.epoch2cal (rtctime.get ()) გამოძახებისას ბრუნდება:
- წელი - 1970 ~ 2038
- ორ თვე - მიმდინარე წელს 1 ~ 12
- დღე - დღე 1 ~ 31 მიმდინარე თვეში
- საათი
- მინ
- წამი
- დღე - დღე 1 ~ 366 მიმდინარე წელს
- დღე - დღე 1 ~ 7 მიმდინარე კვირაში (კვირა არის 1)
თითოეულ პუნქტზე წვდომა შესაძლებელია როგორც tm ["დღე"], tm ["წელი"]…
თქვენ შეგიძლიათ იპოვოთ მეტი ინფორმაცია NodeMCU დოკუმენტაციის კითხვისას.
DisplaySNTPtime.lua არის უფრო დახვეწილი მეთოდი, რომ აჩვენოთ თარიღი და დრო LCD 128 x 64 OLED ეკრანზე, რადგან ის ადვილად არის დაკავშირებული და მისი გამოყენება შესაძლებელია ამ პროგრამებთან.
ნაბიჯი 4: RTC მომხმარებლის მეხსიერება
მცირე გადახვევა დროის შენახვისგან არის შიდა RTC ESP8266– ზე, რომელსაც აქვს 128 x 32 ბიტიანი მეხსიერების მისამართები, რომელთა წვდომა შესაძლებელია პროგრამისტმა. ისინი განსაკუთრებით სასარგებლოა, რადგან მათ შეუძლიათ გაუძლონ ESP8266– ის ღრმა ძილის ციკლს. პროგრამისტს ევალება გააკონტროლოს მათი გამოყენება და უზრუნველყოს, რომ ისინი შემთხვევით არ გადაიწერონ.
მე ჩავრთე RTCmem.lua, მარტივი პროგრამა, რომელიც აჩვენებს მის გამოყენებას. თქვენ უნდა გქონდეთ rtcmem მოდული თქვენს აშენებაში.
ნაბიჯი 5: გარე RTC მოდულები
გარე RTC მოდულები უკავშირდება ESP8266– ს I2C ინტერფეისის საშუალებით, რომელიც იყენებს მხოლოდ ორ I/O პინს და მუშაობს ESP-01– თან, ისევე როგორც სხვა ESP8266 მოწყობილობების უმეტესობასთან.
RTC მოდულის მისამართი არის 0x68 და მასზე წვდომა ნორმალური I2C ბრძანებების გამოყენებით. ამასთან, გასათვალისწინებელია რაღაც, RTC რეგისტრებში მონაცემები ინახება BCD ფორმატში (ბაზა 16), ასე რომ თქვენს პროგრამებს უნდა გაუმკლავდეთ ამას. დრო და თარიღი ინახება 7 რეგისტრში RTC– ში. შიდა RTC– ზე, BCD– ის გარდაქმნებზე ზრუნავს rtctime მოდული.
SetExtRTC.lua გარდაქმნის მონაცემებს BCD- ში და ადგენს დროს.
ReadExtRTC.lua კითხულობს დროის მონაცემებს და ბეჭდავს მას. შენიშვნა: მონაცემები დაბეჭდილია თექვსმეტობით.
მე ბევრი დრო არ დამიხარებია ეკრანის ფორმატირებაზე, რადგან თქვენ შეიძლება გქონდეთ საკუთარი იდეები იმის შესახებ, თუ რისი გაკეთება გსურთ თარიღთან და დროსთან ერთად. ეს არის ძირითადი ძრავა მისი უმარტივესი ფორმით, ასე რომ თქვენ შეგიძლიათ განავითაროთ იგი შემდგომში.
ნაბიჯი 6: მონაცემების აღრიცხვა
თუ ყურადღებით დააკვირდებით RTC მოდულებს, შეამჩნევთ, რომ მათ აქვთ ჩამონტაჟებული AT24C32 EEPROM IC ან მსგავსი, ან შეგიძლიათ გამოიყენოთ 24C256 დაფა, როგორც ზემოთ. ამ EEPROM IC– ების უმეტესობას აქვს მსგავსი pin outs, როგორც ზემოთ. მათ აქვთ სხვადასხვა რაოდენობის საცავი, მაგრამ ყველა მათგანზე წვდომა ერთნაირად ხდება. იმის გამო, რომ AT24C32 უკვე დაფარულია დაფაზე, ის შეიძლება გამოყენებულ იქნას უშუალოდ გარე RTC I2C– დან.
თუ თქვენ გაქვთ მხოლოდ 24C256 IC ან მსგავსი, შეგიძლიათ დააყენოთ ის პურის დაფაზე, დაუკავშიროთ A1, A2 და A3 Gnd- ს, Vcc 3.3V- ს და SDA AND SCL I2C- ს, WP შეიძლება დარჩეს მცურავი. ზოგიერთი EEPROM IC მუშაობს მხოლოდ 5 ვ -ზე, ასე რომ ჯერ შეამოწმეთ შესაბამისი მონაცემთა ფურცელი.
ByteWR.lua წერს მონაცემების 1 ბაიტს EEPROM მეხსიერების ადგილას 0x00 და კითხულობს მას უკან.
Desiderata.lua წერს რამდენიმე სტრიქონს ცნობილი ტექსტიდან EEPROM- მდე.
eeRead.lua კითხულობს მონაცემებს EEPROM– დან და ბეჭდავს მას.
შენიშვნა: ეს პროგრამები უნდა მუშაობდეს სხვა EEPROM დაფებთანაც.
ნაბიჯი 7: დასკვნა
მე შევეცადე მეჩვენებინა როგორ მუშაობს RTC და EEPROM მონაცემთა აღრიცხვისთვის. ეს მხოლოდ დასაწყისია თქვენთვის შემდგომი განვითარებისთვის. თქვენ შეგიძლიათ დააკავშიროთ სხვადასხვა მოწყობილობა I2C ავტობუსს, როგორიცაა სინათლის სენსორები, ბარომეტრიული წნევის სენსორები, ტემპერატურისა და ტენიანობის სენსორები და ჩაწეროთ მონაცემები EEPROM– ზე.
გირჩევთ:
DS3231 RTC (რეალურ დროში საათის დაყენება) ზუსტად, სწრაფად და ავტომატურად Java- ს გამოყენებით (+-1s): 3 ნაბიჯი
DS3231 RTC (რეალურ დროში საათი) ზუსტი, სწრაფი და ავტომატური დაყენება Java (+-1s): ეს ინსტრუქცია გაჩვენებთ თუ როგორ უნდა დააყენოთ დრო DS3231 რეალურ დროში Arduino- ს და მცირე Java პროგრამის გამოყენებით Arduino– ს სერიული კავშირი. ამ პროგრამის ძირითადი ლოგიკა: 1. Arduino აგზავნის სერიულ მოთხოვნას
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; თვის კვირა ჩვენებაზე
როგორ გააკეთოთ რეალურ დროში Arduino და TFT ჩვენების გამოყენებით - Arduino Mega RTC 3.5 ინჩიანი TFT ჩვენებით: 4 ნაბიჯი
როგორ გავაკეთოთ რეალურ დროში Arduino და TFT ჩვენების გამოყენებით | Arduino Mega RTC 3.5 ინჩიანი TFT ჩვენებით: ეწვიეთ ჩემს Youtube არხს. შესავალი:- ამ პოსტში ვაპირებ გავაკეთო "რეალურ დროში საათი" 3.5 ინჩიანი TFT სენსორული LCD ეკრანის გამოყენებით, Arduino Mega 2560 და DS3231 RTC მოდული…. დაწყებამდე… შეამოწმეთ ვიდეო ჩემი YouTube არხიდან .. შენიშვნა:- თუ თქვენ იყენებთ Arduin– ს