Mục lục:

Đặt DS3231 RTC (Đồng hồ thời gian thực) chính xác, nhanh chóng và tự động bằng Java (+ -1s): 3 bước
Đặt DS3231 RTC (Đồng hồ thời gian thực) chính xác, nhanh chóng và tự động bằng Java (+ -1s): 3 bước

Video: Đặt DS3231 RTC (Đồng hồ thời gian thực) chính xác, nhanh chóng và tự động bằng Java (+ -1s): 3 bước

Video: Đặt DS3231 RTC (Đồng hồ thời gian thực) chính xác, nhanh chóng và tự động bằng Java (+ -1s): 3 bước
Video: LDmicro 14: I2C LCD & DS3231 Real-Time Clock (Microcontroller PLC Ladder Programming with LDmicro) 2024, Tháng bảy
Anonim
Đặt DS3231 RTC (Đồng hồ thời gian thực) chính xác, nhanh chóng và tự động bằng Java (+ -1s)
Đặt DS3231 RTC (Đồng hồ thời gian thực) chính xác, nhanh chóng và tự động bằng Java (+ -1s)

Có thể hướng dẫn này sẽ chỉ cho bạn cách đặt thời gian trên Đồng hồ thời gian thực DS3231 bằng cách sử dụng Arduino và một ứng dụng Java nhỏ sử dụng kết nối nối tiếp của Arduino.

Logic cơ bản của chương trình này:

1. Arduino gửi một yêu cầu nối tiếp.

2. Chương trình Java trông ngày / tháng /… arduino yêu cầu và gửi lại dữ liệu liên quan.

3. Sau khi tất cả thông tin cần thiết được thu thập, arduino lưu trữ dữ liệu trong DS3231.

Mô-đun RTC DS3231

Mô-đun RTC DS3231 là một mô-đun RTC tương đối rẻ với độ chính xác cao. (vài phút một năm)

Có những giống khác nhau mà chức năng cơ bản của chúng giống nhau, chỉ có những khác biệt nhỏ.

So sánh chi tiết có thể được tìm thấy tại đây: So sánh DS323x | maximintegrated.com

Mua DS3231: DS3231 | ebay.com

Datasheet: DS3231 Datasheet | maximintegrated.com

Datasheet: DS1307 Datasheet | maximintegrated.com

Các bộ phận cần thiết

1x Arduino (Nano, Uno, MEGA, v.v.)

4x Dây nhảy

1x Mô-đun DS3231 (Mô-đun DS1307)

Bước 1: Đấu dây

Đấu dây
Đấu dây

Đấu dây DS3231 như trong hình trên. Tất nhiên bạn có thể làm điều đó mà không cần sử dụng breadboard, nhưng nó sẽ hơi lộn xộn hơn một chút. Tôi đã sử dụng Arduino Nano để trình diễn nhưng Uno hoặc MEGA sẽ hoạt động tốt. (Những người khác cũng có thể hoạt động nhưng tôi lười xác nhận)

  • Arduino -> DS3231
  • A4 -> SCL
  • A5 -> SDA
  • 5V -> VCC
  • GND -> GND

Bước 2: Mã Arduino

Mã Arduino
Mã Arduino

Tải xuống tệp.ino từ bên dưới và tải nó lên Arduino của bạn (trong trường hợp của tôi là Nano).

Bản phác thảo cần cài đặt các thư viện sau để hoạt động chính xác:

github.com/PaulStoffregen/Time

github.com/JChristensen/DS3232RTC

Bạn có thể tìm thấy hướng dẫn về cách tải mã lên arduino tại đây (arduino.cc).

Trong Arduino IDE, hãy xác minh rằng mã đã được gửi chính xác. (Đã tải lên xong)

Arduino của bạn hiện đã sẵn sàng để nhận thông tin thời gian

Tải mã tại đây: DS3231TimeSync.zip (mediafire.com)

Tải nguồn tại đây: DS3231TimeSyncSRC.zip (mediafire.com)

Kho lưu trữ GitHub: DS3213 RTC Time Sync (github.com)

Kho lưu trữ Bitbucket: DS3231 RTC Time Sync (bitbucket.com)

Bước 3: Ứng dụng Java

Ứng dụng Java
Ứng dụng Java

1. Chạy "DS3231Sync.jar" đã tải xuống trước đó bằng cách nhấp đúp vào nó

2. Một hộp thoại nhỏ sẽ mở ra yêu cầu bạn nhập cổng arduino của bạn

Nếu bạn không chắc chắn về cổng được sử dụng bởi arduino của mình, hãy xem Arduino IDE ở phía dưới bên phải.

(Xem hình ảnh trên)

3. Một hộp thoại khác sẽ mở ra và yêu cầu bạn chênh lệch múi giờ

Độ lệch có liên quan đến thời gian cục bộ của máy tính của bạn. Để đặt RTC theo giờ địa phương của bạn, chỉ cần nhập +00: 00.

Điều quan trọng là bạn phải nhập độ lệch múi giờ theo một định dạng cụ thể!

Định dạng chung là + hh: mm hoặc -hh: mm. Luôn bao gồm các số 0 ở đầu!

(Ví dụ: -03: 00; -06: 00; +09: 00; +02: 30)

4. Ứng dụng Java sẽ khởi chạy một cửa sổ nhỏ với đầu ra bảng điều khiển

Theo dõi các thông báo xác nhận như: "Đã đặt xong thời gian"

Khi quá trình đặt thời gian kết thúc, mã sẽ in thời gian hiện tại trên DS3231 sau mỗi 5 giây. Bạn có thể xác nhận rằng thời gian được đặt chính xác.

Nếu bạn không nhận được bất kỳ đầu ra nào sau ~ 20 giây, hãy nhấn nút đặt lại trên arduino của bạn và đợi lại.

Nếu nó vẫn không hoạt động, hãy xác minh bản phác thảo trên Arduino và / hoặc tải nó lên lại. (Quan trọng: Đóng Cổng trong ứng dụng Java trước khi tải lên Arduino; Nếu không, nó sẽ chặn cổng nối tiếp!) Sau đó đặt lại kết nối trong chương trình Java.

(Chương trình Java đang sử dụng LocalDateTime để lấy ngày hiện tại.)

Giờ đã được thiết lập. Chúc vui vẻ

Rất vui khi bạn gặp bất kỳ vấn đề khó giải quyết nào trong việc thiết lập thời gian, vui lòng bình luận bên dưới và chia sẻ log.txt của bạn (trong cùng thư mục với jar) với tôi. Cảm ơn rất nhiều!