Mục lục:
- Bước 1: Các thành phần bắt buộc
- Bước 2: Kết nối Đồng hồ Arduino
- Bước 3: Mã cho Đồng hồ Arduino với RTC
Video: Đồng hồ thời gian thực với Arduino: 3 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:32
Trong dự án này, chúng tôi sẽ tạo một đồng hồ với sự trợ giúp của mô-đun Arduino và RTC. Như chúng ta đã biết Arduino không thể hiển thị thời gian thực vì vậy chúng ta sẽ sử dụng mô-đun RTC để hiển thị thời gian phù hợp trên màn hình LCD. Đọc kỹ tất cả các bước nó sẽ giúp bạn rất nhiều trong việc chế tạo đồng hồ.
Mã DS3231 Arduino giống như mã DS1307 và nó hoạt động với cả chip RTC.
Mã Arduino bên dưới không sử dụng bất kỳ thư viện nào cho DS3231 RTC, thư viện Wire dành cho sự tương ứng giữa Arduino và DS3231 sử dụng quy ước I2C.
Vâng! Nhiều kỹ sư điện tử phụ thuộc vào nó cho các dự án dựa trên thời gian của họ nhưng RTC không hoàn toàn đáng tin cậy. Nó hoạt động bằng pin và sớm muộn gì cũng phải thay thế. Đến với các dự án IoT, nó chiếm các chân SPI (Giao diện ngoại vi nối tiếp) có giá trị và trở nên lộn xộn với các dây quấn xung quanh. Giải pháp…. Đây là anh hùng của chúng ta NTP (Giao thức thời gian mạng). NTP rất chính xác vì nó có thời gian từ internet. Chúng tôi sẽ vận hành giao thức này bằng cách sử dụng chế độ máy khách-máy chủ. quá trình này đơn giản đến mức Nodemcu của chúng tôi hoạt động như một máy khách và yêu cầu một gói NTP từ máy chủ bằng cách sử dụng UDP. Đổi lại, máy chủ gửi một gói đến máy khách để phân tích dữ liệu. NTP là giao thức đồng bộ hóa thời gian phổ quát. Bây giờ hãy để chúng tôi thắp sáng trạm làm việc trong phòng thí nghiệm của chúng tôi
Bước 1: Các thành phần bắt buộc
- Bảng Arduino
- Bảng mạch DS3231 RTC
- Màn hình LCD 16x2
- 2 x nút nhấn
- Biến trở 10K ohm (hoặc chiết áp)
- Điện trở 330 ohm
- Pin đồng xu 3V
- Breadboard
- Dây nhảy
RTC phân tử DS3231
Thời gian là một ý thức thiết yếu cần thiết trong thế giới có nhịp độ nhanh này của con người. Trong dự án thời gian thực
Chúng tôi sử dụng RTC (A. K. A đồng hồ thời gian thực)
RTC Real-time-clock (RTC) là một mạch tích hợp (IC) theo dõi thời gian hiện tại. RTC xử lý thời gian ở chế độ thực. RTC thường được tìm thấy trong bo mạch chủ máy tính và hệ thống nhúng để yêu cầu truy cập kịp thời.
Bước 2: Kết nối Đồng hồ Arduino
- Kết nối chân SCL với mô-đun RTC với Arduino A5
- Kết nối chân SDA với mô-đun RTC với Arduino A4
- Kết nối VCC TO 5v và GND TO GND
- Kết nối nút bấm với chốt 8
- Kết nối một nút bấm khác với chốt 9
- Kết nối RS của LCD với chân 2 của Arduino
- Kết nối E của LCD với chân 3 của Arduino
- Kết nối D7 của LCD với chân 7 của Arduino
- Kết nối D6 của LCD với chân 6 của Arduino
- Kết nối D5 của LCD với chân 5 của Arduino
- Kết nối D4 của LCD với chân 4 của Arduino
- Kết nối VSS & K với GND
- Kết nối VDD & A với 5v
- Kết nối vo với chân đầu ra chiết áp
Bước 3: Mã cho Đồng hồ Arduino với RTC
DS3231 chỉ hoạt động với định dạng BCD và để chuyển đổi BCD sang thập phân và ngược lại, tôi đã sử dụng 2 dòng bên dưới (ví dụ cho phút): // Chuyển đổi BCD thành decimalminute = (phút >> 4) * 10 + (phút & 0x0F);
// Chuyển số thập phân thành BCDminute = ((phút / 10) << 4) + (phút% 10); void DS3231_display (): hiển thị thời gian và lịch, trước khi hiển thị thời gian và dữ liệu lịch được chuyển đổi từ BCD sang định dạng thập phân.
// Đồng hồ và lịch thời gian thực với các nút đặt sử dụng DS3231 và Arduino // bao gồm mã thư viện LCD #include // bao gồm mã thư viện Wire (cần thiết cho các thiết bị giao thức I2C) #include // Kết nối mô-đun LCD (RS, E, D4, D5, D6, D7) Màn hình LCD LiquidCrystal (2, 3, 4, 5, 6, 7); void setup () {pinMode (8, INPUT_PULLUP); // button1 được kết nối với pin 8 pinMode (9, INPUT_PULLUP); // button2 được kết nối với chân 9 // thiết lập số cột và số hàng của LCD lcd.begin (16, 2); Wire.begin (); // Tham gia i2c bus} char Time = "TIME:::"; char Lịch = "DATE: / / 20"; byte i, giây, phút, giờ, ngày, tháng, năm; void DS3231_display () {// Chuyển BCD sang giây thập phân = (giây >> 4) * 10 + (giây & 0x0F); phút = (phút >> 4) * 10 + (phút & 0x0F); giờ = (giờ >> 4) * 10 + (giờ & 0x0F); date = (date >> 4) * 10 + (date & 0x0F); tháng = (tháng >> 4) * 10 + (tháng & 0x0F); năm = (năm >> 4) * 10 + (năm & 0x0F); // Thời gian kết thúc chuyển đổi [12] = second% 10 + 48; Thời gian [11] = giây / 10 + 48; Thời gian [9] = phút% 10 + 48; Thời gian [8] = phút / 10 + 48; Thời gian [6] = giờ% 10 + 48; Thời gian [5] = giờ / 10 + 48; Lịch [14] = năm% 10 + 48; Lịch [13] = năm / 10 + 48; Lịch [9] = tháng% 10 + 48; Lịch [8] = tháng / 10 + 48; Lịch [6] = date% 10 + 48; Lịch [5] = ngày / 10 + 48; lcd.setCursor (0, 0); lcd.print (Thời gian); // Hiển thị thời gian lcd.setCursor (0, 1); lcd.print (Lịch); // Hiển thị lịch} void flash_parameter () {byte j = 0; while (j 23) // Nếu giờ> 23 ==> giờ = 0 tham số = 0; if (i == 1 && tham số> 59) // Nếu phút> 59 ==> phút = 0 tham số = 0; if (i == 2 && tham số> 31) // Nếu ngày> 31 ==> date = 1 tham số = 1; if (i == 3 && tham số> 12) // Nếu tháng> 12 ==> tháng = 1 tham số = 1; if (i == 4 && tham số> 99) // Nếu năm> 99 ==> năm = 0 tham số = 0; sprintf (text, "% 02u", tham số); lcd.setCursor (x, y); lcd.print (văn bản); chậm trễ (200); // Chờ 200ms} lcd.setCursor (x, y); lcd.print (""); // Hiển thị hai dấu cách nháy_parameter (); sprintf (text, "% 02u", tham số); lcd.setCursor (x, y); lcd.print (văn bản); flash_parameter (); if (! digitalRead (8)) {// Nhấn nút If (pin # 8) i ++; // Tăng 'i' cho tham số trả về tham số tiếp theo; // Trả về giá trị tham số và thoát}}} void loop () {if (! DigitalRead (8)) {// Nút if (pin # 8) được nhấn i = 0; giờ = sửa (5, 0, giờ); phút = sửa (8, 0, phút); date = chỉnh sửa (5, 1, date); tháng = sửa (8, 1, tháng); năm = sửa (13, 1, năm); // Chuyển số thập phân sang BCD phút = ((phút / 10) << 4) + (phút% 10); giờ = ((giờ / 10) << 4) + (giờ% 10); date = ((date / 10) << 4) + (date% 10); tháng = ((tháng / 10) << 4) + (tháng% 10); năm = ((năm / 10) << 4) + (năm% 10); // Kết thúc chuyển đổi // Ghi dữ liệu vào DS3231 RTC Wire.beginTransmission (0x68); // Khởi động giao thức I2C với địa chỉ DS3231 Wire.write (0); // Gửi địa chỉ thanh ghi Wire.write (0); // Đặt lại giây và khởi động bộ dao động Wire.write (phút); // Ghi phút Wire.write (giờ); // Ghi giờ Wire.write (1); // Ghi ngày (không sử dụng) Wire.write (date); // Ghi ngày tháng Wire.write (tháng); // Ghi tháng Wire.write (year); // Ghi năm Wire.endTransmission (); // Dừng truyền và giải phóng độ trễ bus I2C (200); // Chờ 200ms} Wire.beginTransmission (0x68); // Khởi động giao thức I2C với địa chỉ DS3231 Wire.write (0); // Gửi địa chỉ đăng ký Wire.endTransmission (false); // Khởi động lại I2C Wire.requestFrom (0x68, 7); // Yêu cầu 7 byte từ DS3231 và giải phóng bus I2C khi kết thúc lần đọc thứ hai = Wire.read (); // Đọc giây từ thanh ghi 0 phút = Wire.read (); // Đọc minuts từ đăng ký 1 giờ = Wire.read (); // Đọc giờ từ thanh ghi 2 Wire.read (); // Đọc ngày từ thanh ghi 3 (không sử dụng) date = Wire.read (); // Đọc ngày từ thanh ghi 4 tháng = Wire.read (); // Đọc tháng từ đăng ký 5 năm = Wire.read (); // Đọc năm từ thanh ghi 6 DS3231_display (); // Thời gian diaplay & độ trễ lịch (50); // Chờ 50ms}
Đề xuất:
Sử dụng mô-đun đồng hồ thời gian thực DS1307 và DS3231 với Arduino: 3 bước
Sử dụng mô-đun đồng hồ thời gian thực DS1307 và DS3231 Với Arduino: Chúng tôi liên tục nhận được yêu cầu về cách sử dụng mô-đun đồng hồ thời gian thực DS1307 và DS3231 với Arduino từ nhiều nguồn khác nhau - vì vậy đây là phần đầu tiên trong số hai phần hướng dẫn về cách sử dụng chúng. Đối với hướng dẫn Arduino này, chúng tôi có hai mô-đun đồng hồ thời gian thực cho chúng tôi
Đồng hồ thời gian thực DS1307 RTC với Arduino: 4 bước
DS1307 Real Time Clock RTC Với Arduino: Trong Hướng dẫn này, chúng ta sẽ tìm hiểu về Real Time Clock (RTC) và cách Arduino & IC Đồng hồ thời gian thực DS1307 được kết hợp với nhau như một thiết bị định thời. Đồng hồ thời gian thực (RTC) được sử dụng để theo dõi thời gian và duy trì lịch. Để sử dụng RTC, w
Đồng hồ dựa trên Arduino sử dụng mô-đun Đồng hồ thời gian thực (RTC) DS1307 & 0,96: 5 bước
Đồng hồ dựa trên Arduino sử dụng mô-đun đồng hồ thời gian thực (RTC) DS1307 & 0.96: Xin chào các bạn, trong hướng dẫn này, chúng ta sẽ xem cách tạo đồng hồ hoạt động bằng mô-đun đồng hồ thời gian thực DS1307 & Màn hình OLED nên chúng ta sẽ đọc thời gian từ mô-đun đồng hồ DS1307. Và in nó trên màn hình OLED
Tạo đồng hồ với M5stick C bằng Arduino IDE - Đồng hồ thời gian thực RTC với M5stack M5stick-C: 4 bước
Tạo đồng hồ với M5stick C bằng Arduino IDE | Đồng hồ thời gian thực RTC với M5stack M5stick-C: Xin chào các bạn trong phần hướng dẫn này, chúng ta sẽ học cách tạo đồng hồ với bảng phát triển m5stick-C của m5stack bằng Arduino IDE Vì vậy m5stick sẽ hiển thị ngày, giờ & tuần trong tháng trên màn hình
Cách tạo đồng hồ thời gian thực bằng Arduino và màn hình TFT - Arduino Mega RTC với màn hình TFT 3,5 inch: 4 bước
Cách tạo đồng hồ thời gian thực bằng Arduino và màn hình TFT | Arduino Mega RTC với màn hình TFT 3,5 inch: Truy cập kênh Youtube của tôi. 2560 và mô-đun RTC DS3231… .Trước khi bắt đầu… hãy kiểm tra video từ kênh YouTube của tôi..Lưu ý: - Nếu bạn đang sử dụng Arduin