Агуулгын хүснэгт:
- Алхам 1: Шаардлагатай бүрэлдэхүүн хэсгүүд
- Алхам 2: Arduino цагны холболт
- Алхам 3: RTC -тэй Arduino цагны код
Видео: Arduino -той бодит цаг: 3 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:02
Энэ төсөлд бид Arduino болон RTC модулийн тусламжтайгаар цаг хийх болно. Бидний мэдэж байгаагаар Arduino нь бодит цагийг харуулах боломжгүй тул RTC модулийг ашиглан LCD дэлгэц дээр зөв цагийг харуулах болно. Алхам бүрийг анхааралтай уншаарай, энэ нь цагийн зүү хийхэд ихээхэн тус болно.
DS3231 Arduino код нь DS1307 кодтой адил бөгөөд RTC чиптэй хоёуланд нь ажилладаг.
Доорх Arduino код нь DS3231 RTC -ийн ямар ч номын санг ашигладаггүй, Wire номын сан нь I2C конвенцийг ашиглан Arduino болон DS3231 хоорондох захидал харилцаанд зориулагдсан болно.
Тийм ээ! Олон электроникийн инженерүүд цаг хугацааны төслүүдээс хамаардаг боловч RTC нь бүрэн найдвартай биш юм. Энэ нь батерейгаар ажилладаг тул удахгүй эсвэл дараа нь солих шаардлагатай болно. IoT төслүүдэд ирэхэд энэ нь үнэ цэнэтэй SPI (Цуваа захын интерфэйс) тээглүүрийг эзэлдэг бөгөөд утаснууд нь орооцолдсон байдаг. Шийдэл…. Энд манай баатар NTP (Сүлжээний цагийн протокол) гарч ирэв. Интернэтээс цаг авдаг тул NTP нь маш үнэн зөв байдаг. Бид энэхүү протоколыг үйлчлүүлэгч-серверийн горимоор ажиллуулах гэж байна. үйл явц нь маш энгийн тул манай Nodemcu үйлчлүүлэгчийн үүрэг гүйцэтгэдэг бөгөөд UDP ашиглан серверээс NTP пакет хүсдэг. Үүний хариуд сервер нь өгөгдлийг задлан шинжилдэг пакетийг үйлчлүүлэгчид илгээдэг. NTP бол бүх нийтийн цаг синхрончлолын протокол юм. Одоо лабораторийн ажлын байраа гэрэлтүүлцгээе
Алхам 1: Шаардлагатай бүрэлдэхүүн хэсгүүд
- Arduino самбар
- DS3231 RTC самбар
- 16x2 хэмжээтэй LCD дэлгэцтэй
- 2 x товчлуур
- 10K ом хувьсах эсэргүүцэл (эсвэл потенциометр)
- 330 Ом эсэргүүцэл
- 3V зоосны батерей
- Талхны самбар
- Холбогч утас
RTC mocule DS3231
Цаг хугацаа бол хүн төрөлхтний энэ хурдацтай ертөнцөд зайлшгүй шаардлагатай мэдрэмж юм. Бодит цагийн төсөл дээр
Бид RTC (A. K. A бодит цагийн цаг) ашигладаг
RTC Real-time-clock (RTC) нь одоогийн цагийг хянадаг нэгдсэн хэлхээ юм. RTC нь ихэвчлэн компьютерийн эх хавтан болон суулгагдсан системд байдаг бөгөөд энэ нь цаг тухайд нь хандахыг шаарддаг.
Алхам 2: Arduino цагны холболт
- SCL зүүг RTC модульд Arduino A5 руу холбоно уу
- SDA зүүг RTC модульд Arduino A4 руу холбоно уу
- VCC -ийг 5v, GND -ийг GND руу холбоно уу
- 8 товчлуур дээр товчлуурыг холбоно уу
- Өөр нэг товчлуурыг зүү 9 -т холбоно уу
- LCD -ийн RS -ийг Arduino -ийн 2 -р зүү рүү холбоно уу
- LCD E -ийг Arduino -ийн 3 -р зүү рүү холбоно уу
- LCD D7 -ийг Arduino -ийн 7 -р зүү рүү холбоно уу
- LCD D6 -ийг Arduino -ийн 6 -р зүү рүү холбоно уу
- LCD D5 -ийг Arduino -ийн 5 -р зүү рүү холбоно уу
- LCD D4 -ийг Arduino -ийн 4 -р зүү рүү холбоно уу
- VSS & K -ийг GND руу холбоно уу
- VDD & A -ийг 5v сүлжээнд холбоно уу
- Во -г потенциометрийн гаралтын зүү рүү холбоно уу
Алхам 3: RTC -тэй Arduino цагны код
DS3231 нь зөвхөн BCD форматтай ажилладаг бөгөөд BCD -ийг аравтын бутархай руу хөрвүүлэхийн тулд би доорх 2 мөрийг ашигласан (жишээ нь минутын жишээ): // BCD -ийг арав дахь минут болгон хөрвүүлэх = (минут >> 4) * 10 + (минут & 0x0F);
// Аравтын бутархайг BCDminute болгон хөрвүүлэх = ((минут / 10) << 4) + (минут % 10); void DS3231_display (): цаг, хуанлийг харуулахаас өмнө цаг, хуанлийн өгөгдлийг BCD -ээс аравтын формат руу хөрвүүлдэг. void blink_parameter ():
// DS3231 болон Arduino ашиглан товчлуур бүхий товчлуур бүхий бодит цагийн цаг, хуанли // LCD номын сангийн кодыг оруулна #оруулах // утас номын сангийн кодыг оруулах (I2C протоколын төхөөрөмжүүдэд шаардлагатай) #оруулах // LCD модулийн холболт (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) зүүтэй холбогдсон байна; // button2 нь 9 -р зүүтэй холбогдсон байна // LCD -ийн багана, мөрийн тоог тохируулах lcd.begin (16, 2); Wire.begin (); // i2c автобусанд нэгдэх} char Time = "TIME:::"; char Календар = "ОГНОО: / / 20"; байт i, секунд, минут, цаг, огноо, сар, жил; void 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 () {байт j = 0; while (j 23) // Хэрэв цаг> 23 ==> цаг = 0 параметр = 0; if (i == 1 && parameter> 59) // If minutes> 59 ==> minutes = 0 parameter = 0; if (i == 2 && parameter> 31) // If date> 31 ==> date = 1 parameter = 1; if (i == 3 && параметр> 12) // Хэрэв сар> 12 ==> сар = 1 параметр = 1; if (i == 4 && parameter> 99) // If year> 99 ==> year = 0 parameter = 0; sprintf (текст, "%02u", параметр); lcd.setCursor (x, y); lcd.хэвлэх (текст); саатал (200); // 200ms хүлээ} lcd.setCursor (x, y); lcd.print (""); // Хоёр орон зайг харуулах blink_parameter (); sprintf (текст, "%02u", параметр); lcd.setCursor (x, y); lcd.хэвлэх (текст); blink_parameter (); if (! digitalRead (8)) {// If (pin #8) товчлуур дарагдсан бол i ++; // Дараагийн параметр буцах параметрийн хувьд 'i' -г нэмэгдүүлэх; // Параметрийн утгыг буцааж,}}} void loop () {if (! DigitalRead (8)) {// If (pin 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) руу өгөгдөл бичих; // DS3231 хаягтай I2C протоколыг эхлүүлэх Wire.write (0); // Wire.write регистрийн хаягийг илгээх (0); // Сезондуудыг дахин тохируулж, осцилляторыг эхлүүл Wire.write (минут); // минут бичих Wire.write (цаг); // бичих цаг Wire.write (1); // бичих өдөр (ашиглагдаагүй) Wire.write (огноо); // Огноо бичих Wire.write (сар); // бичих сар Wire.write (жил); // Wire.endTransmission жил бичих (); // Дамжуулалтыг зогсоож, I2C автобусны саатлыг суллах (200); // 200ms хүлээнэ үү} Wire.beginTransmission (0x68); // DS3231 хаягтай I2C протоколыг эхлүүлэх Wire.write (0); // Wire.endTransmission бүртгэлийн хаягийг илгээх (худал); // I2C дахин эхлүүлэх Wire.requestFrom (0x68, 7); // DS3231 -ээс 7 байт хүсэх ба I2C автобусыг секундын унших төгсгөлд суллах = Wire.read (); // Бүртгэлээс секунд унших 0 минут = Wire.read (); // Бүртгэлээс минутыг унших 1 цаг = Wire.read (); // 2 Wire.read () регистрээс унших цаг. // Бүртгэлээс уншсан өдөр 3 (ашиглагдаагүй) огноо = Wire.read (); // Бүртгэлээс огноог унших 4 сар = Wire.read (); // Бүртгэлээс сар унших 5 жил = Wire.read (); // 6 жилийн бүртгэлээс уншсан жил DS3231_display (); // Diaplay цаг ба хуанлийн саатал (50); // 50 минут хүлээ}
Зөвлөмж болгож буй:
Arduino UNO болон SD-карт ашиглан чийгшил, температурыг бодит цаг хугацаанд хэрхэн бүртгэх вэ? DHT11 Proteus дахь өгөгдөл бүртгэх симуляци: 5 алхам
Arduino UNO болон SD карт ашиглан чийгшил, температурыг бодит цаг хугацаанд хэрхэн бүртгэх вэ? DHT11 Proteus дахь өгөгдөл бүртгэгч симуляци: Танилцуулга: сайн уу, энэ бол Liono Maker, энд YouTube-ийн линк байна. Бид Arduino-тэй хамтран бүтээлч төсөл хийж, суулгагдсан систем дээр ажиллаж байна. Өгөгдөл бүртгэгч: Өгөгдөл бүртгэгч (өгөгдөл бүртгэгч эсвэл өгөгдөл бүртгэгч) нь цаг хугацааны явцад өгөгдлийг бүртгэдэг электрон төхөөрөмж юм
MicroPython Хөтөлбөр: Коронавирусын өвчний (COVID-19) мэдээллийг бодит цаг хугацаанд нь шинэчлэх: 10 алхам (зурагтай)
MicroPython Хөтөлбөр: Коронавирусын өвчний (COVID-19) мэдээллийг бодит цаг хугацаанд нь шинэчлэх: Сүүлийн хэдэн долоо хоногт дэлхий даяар коронавирусын батлагдсан тохиолдлын тоо (COVID 19) 100,000 давж, Дэлхийн эрүүл мэндийн байгууллага (ДЭМБ) зарлалаа. Коронавирусын уушгины хатгалгааны шинэ дэгдэлт дэлхийн цар тахал болно. Би маш их байсан
DS1307 бодит цагийн цаг (RTC) модулийг ашиглан Arduino дээр суурилсан цаг ба 0.96: 5 алхам
DS1307 Real Time Clock (RTC) модулийг ашиглан Arduino -д суурилсан цаг & 0.96: Сайн байна уу залуусаа энэ хичээлээр бид DS1307 бодит цагийн модулийг ашиглан ажлын цагийг хэрхэн хийхийг харах болно. OLED дэлгэцүүд Тиймээс бид цагийг DS1307 модулаас унших болно. Үүнийг OLED дэлгэц дээр хэвлэ
Arduino IDE ашиглан M5stick C ашиглан цаг хийх - M5stack M5stick-C-тэй RTC бодит цагийн цаг: 4 алхам
Arduino IDE ашиглан M5stick C ашиглан цаг хийх | M5stack M5stick-C-тэй RTC бодит цагийн цаг: Сайн байна уу залуусаа, энэ зааварчилгаанд бид Arduino IDE ашиглан m5stack-ийн m5stick-C хөгжүүлэлтийн самбар ашиглан хэрхэн цаг хийхийг сурах болно. Тиймээс m5stick нь огноо, цаг, цагийг харуулах болно. дэлгэц дээр сарын долоо хоног
MEMES -д зориулсан бодит байдлын бодит програмыг хийцгээе! 8 алхам
MEMES -д зориулж бодит байдлын бодит програмыг хийцгээе! Энэхүү зааварчилгаанд бид Google API ашиглан мемен хайхад зориулагдсан Unity3D -д Android болон IOS -д зориулж сайжруулсан реалити апп хийх гэж байна. Бид Vuforia -ийн газрын онгоцны илрүүлэлтийг Unity -д ашиглах тул энэ гар утасны апп нь дараах зорилгоор ажиллах болно