Mục lục:

Đồng hồ tiết kiệm ánh sáng ban ngày dễ dàng: 7 bước
Đồng hồ tiết kiệm ánh sáng ban ngày dễ dàng: 7 bước

Video: Đồng hồ tiết kiệm ánh sáng ban ngày dễ dàng: 7 bước

Video: Đồng hồ tiết kiệm ánh sáng ban ngày dễ dàng: 7 bước
Video: Xây dần ước mơ "Bảo Tàng Tiền Tệ" 🏛 2024, Tháng bảy
Anonim
Đồng hồ tiết kiệm ánh sáng ban ngày dễ dàng
Đồng hồ tiết kiệm ánh sáng ban ngày dễ dàng
Đồng hồ tiết kiệm ánh sáng ban ngày dễ dàng
Đồng hồ tiết kiệm ánh sáng ban ngày dễ dàng

Câu chuyện

Dự án này bắt đầu như một thử thách đối với tôi khi học lập trình (mã hóa) với Arduino Uno và một màn hình LCD 1602A duy nhất, đầu tiên tôi muốn đẩy Arduino đến giới hạn của nó về độ chính xác. Đây là một dự án xây dựng đồng hồ mà không cần sử dụng mô-đun RTC (mô-đun Đồng hồ thời gian thực) và hơn nữa không sử dụng bất kỳ độ trễ nào (); các lệnh vì delay (); lệnh tạm dừng mã trong một khoảng thời gian xác định. Khi tôi làm việc thông qua mã lưu giữ thời gian cơ bản, tôi nghĩ điều này có thể hơi nhàm chán vì vậy tôi quyết định thêm tính năng tiết kiệm ánh sáng ban ngày như một bổ sung mới để thêm gia vị và có thể tạo thêm một chút hứng thú cho dự án này. Lúc đầu, ý tưởng hoàn toàn mới lạ nhưng tôi càng làm việc với nó và xem chiếc đồng hồ vật lý đang chạy trên bàn của mình thì ý tưởng đó càng trở nên thực tế hơn. Bằng cách thêm một mô-đun RTC và điều chỉnh mã, chiếc đồng hồ này sẽ chính xác trong nhiều năm tới và với chi phí rất thấp cho các nhà sản xuất và công chúng mua một chiếc đồng hồ như vậy.

Giờ tiết kiệm ánh sáng ban ngày hay (DST) đã tồn tại hơn 100 năm (Google nó, nó có một lịch sử khá nhiều màu sắc). Tôi không muốn dính líu đến vấn đề chính trị của nó nhưng nó là một bài tập thô thiển và đau đớn không làm cho cuộc sống của người dân (bạn và tôi) trở nên dễ dàng. Đối với hầu hết các phần, chúng tôi tận hưởng thêm giờ ánh sáng ban ngày nhưng cách áp dụng nó rất tàn bạo. Đã đến lúc nâng cấp lớn cho một ý tưởng rất cũ.

Ví dụ này rất dễ sống với thời đại kỹ thuật số và những tiến bộ trong công nghệ dễ dàng áp dụng cho tất cả các dạng đồng hồ kỹ thuật số, nhưng có thể giúp cho sự sụp đổ của đồng hồ kim. Thay vì nhảy 1 giờ từ giờ chuẩn sang giờ DST thì giờ DST sang giờ chuẩn, đồng hồ này dựa trên tiến trình dần dần của thời gian từ ngày đông chí đến hạ chí rồi quay trở lại giờ chuẩn vào ngày đông chí tiếp theo năm này qua năm khác. Quá trình chuyển đổi này diễn ra trong 180 ngày trong khoảng thời gian 6 tháng một lần, mức điều chỉnh là 20 giây một ngày trong 360 ngày với 5 hoặc 6 ngày còn lại được thêm vào độ dài của các chỉ số. Ví dụ của tôi ở đây tăng 1 phút ba ngày một lần trong chu kỳ 180 ngày. Vào hoặc khoảng ngày 21 tháng 6 hàng năm, đồng hồ đi trước 1 giờ và vào hoặc khoảng ngày 21 tháng 12 hàng năm, đồng hồ đã trượt về thời gian chuẩn. Năm nhuận dễ dàng được tính đến, đặc biệt nếu sử dụng RTC. Nam bán cầu cũng dễ dàng thích nghi với đồng hồ này, thang trượt chỉ đơn giản là lệch pha 6 tháng so với bán cầu bắc.

Có ba nơi trên thế giới mà DST sẽ khá nhiều trừ khi, khu vực xích đạo và các cực. Tôi không nghĩ ánh sáng ban ngày thay đổi nhiều ở xích đạo, tôi không biết liệu có khu vực nhiệt đới nào sử dụng DST hay không và các cực lại là một câu chuyện khác, dù sao thì giờ 'GÌ' ở các cực?

Bước 1: Giới thiệu về đồng hồ

Giới thiệu về đồng hồ
Giới thiệu về đồng hồ
Giới thiệu về đồng hồ
Giới thiệu về đồng hồ

Đồng hồ tôi đã tạo dựa trên thời gian tiêu chuẩn không bao giờ thay đổi so với đồng hồ thế giới được chấp nhận trên toàn thế giới, điều này được hiển thị trên dòng đầu tiên của màn hình LCD 1602. Dòng thứ hai là cùng một thang thời gian nhưng nó hiển thị số phút lệch từ điểm chí này đến điểm tiếp theo. Từ ngày đông chí đến hạ chí, thời gian lệch pha tăng một phút sau mỗi ba ngày lên đến tối đa là sáu mươi phút. Từ hạ chí đến đông chí, thời gian lệch lạc giảm đi một phút sau mỗi ba ngày cho đến khi giờ chuẩn và giờ DST giống nhau.

Đối với ví dụ này, tôi đã sử dụng giờ quân sự (đồng hồ 24 giờ) và giờ chuẩn (đồng hồ 12 giờ) sáng và chiều để giúp những người không quen thuộc với thang thời gian 24 giờ, đồng thời nó cũng cho phòng của tôi để hiển thị số ngày của DST. Đặt từ. Có thể thay đổi mã để hiển thị đồng hồ 12 giờ. Tôi đã thêm ba nút nhấn kết nối với chân kỹ thuật số 2, 3 và 4 để điều chỉnh thời gian. Các nút này sẽ chỉ tăng giây, phút hoặc giờ mà thôi. Các nút là tùy chọn, đồng hồ sẽ vẫn hoạt động tốt nếu bạn không lên dây trong các nút và không cần thay đổi mã. Tôi khuyên bạn nên sử dụng ít nhất một nút để điều chỉnh giây và nếu không thể đạt được độ chính xác hoàn toàn, hãy giữ đồng hồ ở phía chậm, nút này sẽ tăng thời gian 1 giây mỗi giây.

Nếu bạn khởi động đồng hồ từ Arduino IDE, sẽ mất khoảng 5,5 đến 6 giây để bản phác thảo được tải và khởi động, nếu bạn đã tải bản phác thảo vào Arduino rồi cắm nó vào ổ cắm trên tường hoặc nguồn điện thì sẽ mất khoảng 2,5 để 3 giây để khởi động và chạy.

Có một số thiết lập thủ công cần thiết khi cuối cùng bạn đã có được đồng hồ sẵn sàng hoạt động.

Đồng hồ này không sử dụng mô-đun RTC cũng như liều lượng nó sử dụng "delay ();" các lệnh.

Nếu bạn thích sử dụng RTC với Arduino, khái niệm này vẫn có thể được sử dụng. RTC sẽ cung cấp cho bạn tất cả thông tin bạn cần để thêm thời gian EDSC. Mã có thể khá khác với một mô-đun RTC, tôi chưa xem xét nó. Bạn đang làm khá nhiều việc của riêng mình nếu bạn làm vậy nhưng đó là một cách tuyệt vời để rèn luyện trí não của bạn.

Bước 2: Những gì bạn sẽ cần

Những gì bạn sẽ cần
Những gì bạn sẽ cần
Những gì bạn sẽ cần
Những gì bạn sẽ cần
Những gì bạn sẽ cần
Những gì bạn sẽ cần

DANH SÁCH MUA SẮM

1 Arduino Uno hoặc Mega2569 (các chân I2C là A4 và A5 trên UNO và 20 và 21 trên 2560 Mega)

Đối với bất kỳ Arduino nào khác sẽ hoạt động, các chân được sử dụng có thể khác. Đối với vấn đề đó, bất kỳ bảng điều khiển nào cũng sẽ hoạt động. Bạn sẽ phải viết lại mã cho bảng hoặc nhà sản xuất đó.

1 màn hình LCD 1602 (màu bạn chọn)

Tôi sử dụng ốp lưng I2C với màn hình LCD, tôi thấy việc thiết lập dễ dàng và nhanh chóng hơn.

Dây nhảy

CUNG CẤP TÙY CHỌN

1 bảng bánh mì cỡ vừa

1-3 nút nhấn tiếp xúc tạm thời

1-3 điện trở 10 K ohm

Hướng dẫn này dài, vì vậy tôi sẽ không đi sâu vào giá đỡ hoặc tủ mà tôi đã sử dụng để hiển thị đồng hồ. Nếu bạn thích dự án này và muốn tạo một phiên bản vĩnh viễn, hãy thiết kế nó theo ý thích của bạn. Thiết kế này là hoàn hảo đối với tôi bởi vì tôi đã có mọi thứ tôi cần trong hộp rác của mình và tôi thích vẻ ngoài của nó.

LƯU Ý:

Để tránh sự cố mất điện, đồng hồ cuối cùng của tôi được cung cấp năng lượng bởi một tấm năng lượng mặt trời mà tôi đặt bên ngoài. Bảng điều khiển năng lượng mặt trời giữ cho pin 12 volt được sạc với bộ điều chỉnh trên đó để tránh sạc quá mức. Pin này được kết nối với Arduino thông qua giắc cắm nguồn bên cạnh cổng USB. Tôi giữ cổng USB được kết nối với lưới điện để giảm bớt sự tiêu hao pin. Cả hai nguồn điện có thể được sử dụng cùng một lúc mà không làm hỏng Arduino. Pin 12 volt có thể được sạc đến tối đa 14,5 volt, quá cao đối với Arduino vì vậy tôi sử dụng bộ chuyển đổi buck để giảm điện áp cung cấp từ pin xuống phạm vi từ 9 đến 12 volt. Pin 12 volt mà tôi vẫn sạc sẽ dùng được 3 hoặc 4 ngày nếu những ngày u ám. Bộ điều chỉnh tôi sử dụng sẽ cắt nguồn cho Arduino nếu điện áp pin giảm xuống 11 volt. Loại pin mà tôi có được đến từ hệ thống đèn khẩn cấp cho các tòa nhà thương mại, nó có kích thước bằng một phần tư pin ô tô nhỏ. Nếu bạn có ý định sử dụng ắc quy ô tô, hãy đảm bảo để nó ở nơi thông gió tốt (bên ngoài), ắc quy ô tô tạo ra khí hydro và oxy khi chúng sạc và xả, đây là một sự kết hợp dễ gây nổ.

CẢNH BÁO

GIỮ PIN TRONG MÀN HÌNH

KHU VỰC ĐÃ RỘNG RÃI, NGOÀI

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

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

Tôi đã cung cấp một sơ đồ cho tất cả các kết nối trong dự án này, nếu bạn sử dụng breadboard, bạn sẽ cần một bảng kích thước trung bình, các công tắc sẽ cần có khoảng trống để trải rộng ra để mạch không bị rối.

Màn hình LCD 1602 có gói I2C phía sau để đơn giản hóa, nếu bạn sử dụng kết nối SPI, bạn sẽ cần phải tra cứu cách sử dụng nó và thay đổi mã ở gần phần đầu của bản phác thảo. Tôi chưa bao giờ sử dụng kết nối SPI nên các chân 2, 3 và 4 có thể không khả dụng cho ba nút nhấn.

Ba nút ấn dùng để điều chỉnh thời gian trên đồng hồ. Họ chỉ ứng trước thời gian (AHEAD). Trong những điều chỉnh cuối cùng, hãy giữ cho đồng hồ ở mã ở mức chậm (khoảng 1 đến 2 giây mỗi ngày hoặc vài ngày) bằng cách này bạn có thể nâng cao thời gian nếu cần. Mỗi nút tăng thời gian một lần mỗi giây, nút dưới cùng 2 giây mỗi giây, nút giữa 1 phút mỗi giây và nút trên cùng 1 giờ mỗi giây. Có thể thực hiện được mức độ chính xác khá cao nên bạn sẽ không cần phải điều chỉnh độ chính xác của nó.

Nếu bạn đang điều chỉnh giây, phút hoặc giờ (ví dụ: nếu phút được nâng cao 58, 59, 00) thì giờ sẽ chuyển sang giờ tiếp theo.

Ba nút này là một bổ sung vào phút cuối cùng cho đồng hồ, chúng hoạt động tốt nhưng có thể có một cách tốt hơn. Chỉ cần nhớ rằng nếu bạn gây rối với phần này của mã thì "delay ();" không thể sử dụng lệnh. Tôi đã sử dụng phương pháp này vì tôi không cần phải lo lắng về việc chuyển đổi bị trả lại và các bước nhảy lạ trong thời gian tiến bộ.

Bước 4: Màn hình hiển thị những gì

Những gì màn hình hiển thị
Những gì màn hình hiển thị

Tôi đã đưa rất nhiều thông tin về màn hình LCD 1602 cần một số giải thích:

Dòng 1 Hoặc dòng số 0 '0' khi nói trong mã, hiển thị thời gian chuẩn. Ở bên trái là 'STD', đây là viết tắt của thời gian 'STandarD'.

Tiếp theo trên dòng đầu tiên ở giữa là giờ chuẩn địa phương của bạn. Không bắt đầu với thời gian tiết kiệm ánh sáng ban ngày, đồng hồ sẽ hiển thị điều này trên dòng thứ hai.

Thang thời gian này là đồng hồ 12 giờ nên ở bên phải là 'AM hoặc' PM 'để chỉ buổi sáng hoặc sau buổi trưa.

Dòng 2 Hoặc dòng một '1' khi nói bằng mã, hiển thị thời gian tiết kiệm ánh sáng ban ngày thay đổi theo ngày trong năm. 'DST' ở bên trái có nghĩa là 'Giờ tiết kiệm ánh sáng ban ngày'

Ở giữa dòng thứ hai là giờ quân sự địa phương của bạn, là đồng hồ 24 giờ. Bạn sẽ nghe nó được gọi là 'oh sáu trăm giờ' chẳng hạn.

Ở phía bên phải là ngày trong năm được tham chiếu từ ngày đông chí, ở Bắc bán cầu ngày 21 tháng 12 (gần đúng) là ngày 0 '0' và ở Nam bán cầu 21 tháng 6 (ước chừng) là ngày 0 '.

Tôi đã cung cấp hai tệp.pdf để tham khảo khi lần đầu tiên thiết lập đồng hồ. Chọn tệp đề cập đến bán cầu bạn sống.

Ba nút trên bên phải tăng giây, phút và giờ từ dưới lên.

Bước 5: Thiết lập phác thảo

Thiết lập phác thảo
Thiết lập phác thảo

Có một số dòng mã cần được thiết lập để khởi động ban đầu. Một số dòng này cần được thay đổi mỗi khi bạn ngắt kết nối đồng hồ và thay đổi giá trị của các biến trong bản phác thảo. Nếu bạn khởi động đồng hồ cho IDE, sẽ mất khoảng 6 giây để tải và khởi động. Nếu bạn tải bản phác thảo từ IDE, sau đó ngắt kết nối đồng hồ và khởi động lại nó từ ổ cắm trên tường hoặc nguồn điện, bản phác thảo sẽ khởi động trong khoảng 2,5 giây.

Dòng 11 LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7);

Dòng này đánh dấu màn hình LCD và đặt địa chỉ thích hợp của gói mặt sau I2C. 0x27 là địa chỉ của bất kỳ chiếc ốp lưng nào tôi đã mua. Nếu bạn bật nguồn đồng hồ nhưng không có dữ liệu hiển thị nhưng nó sáng lên thì địa chỉ trên LCD của bạn có thể khác. Tôi sẽ đặt một liên kết bên dưới để mô tả cách thay đổi địa chỉ của gói mặt sau màn hình LCD của bạn hoặc tìm địa chỉ.

Dòng 24 int phútSt = 35;

Đặt phút bắt đầu cho đồng hồ tiêu chuẩn, thường đặt nó 5 phút trước khi bạn khởi động đồng hồ để cho phép thời gian thiết lập.

Các dòng 25 int giờSt = 18;

Đặt giờ thành giờ STD (đồng hồ 24 giờ) bắt đầu từ. 6 giờ chiều sẽ là giờ 18.

Dòng 26 int DSTdays = 339;

Tải xuống và tham khảo tệp pdf "Easy DST Clock Scale Time" (Bắc hoặc Nam bán cầu) mà bạn đang sống, tra cứu ngày và chèn Ngày # vào dòng này. (Cột bên trái). Ví dụ (ngày 24 tháng 11 là ngày thứ 339 ở Bắc bán cầu và ngày thứ 156 ở Nam bán cầu)

Dòng 27 int DSTyear = 2019;

Nhập năm hiện tại.

Dòng 92 if ((masterTime - trướcMasterTimeSt> = 1000) && (microTime - trướcMicroTimeSt> = 500)) {

"Trước đóMasterTimeSt" cần được so sánh với số mili giây vì vậy '1000' này có thể cần phải thay đổi thành 999 tùy thuộc vào đồng hồ bên trong của bảng Arduino, sau đó điều chỉnh Thời gian trước đó để tinh chỉnh đồng hồ. Đồng hồ bên trong mặc dù 16MH có các biến thể từ bảng này sang bảng tiếp theo.

"Trước đóMicroTimeSt" tinh chỉnh đồng hồ bên trong để giúp đếm ngược 1 giây chính xác. Nếu đồng hồ quá nhanh, hãy tăng micro giây và nếu đồng hồ quá chậm, hãy giảm micro giây và nếu cần, hãy giảm mili giây xuống 999 và sau đó bắt đầu micro giây ở khoảng 999, 990 hoặc tăng tốc độ của đồng hồ.

Mỗi bảng Arduino có tốc độ hơi khác nhau do đó những con số này sẽ thay đổi theo từng bảng bạn sử dụng. Một phần của mã vẫn chưa được kiểm tra, đây là dòng 248 để tính cho mỗi năm nhuận. Trong vài tuần tới, tôi sẽ kiểm tra nó và đăng bất kỳ thay đổi nào nếu cần thiết.

Bước 6: Ghi chú cuối cùng

Ghi chú cuối cùng
Ghi chú cuối cùng

Dự án này rất dễ xây dựng nhưng khái niệm và những điều chỉnh cần thiết trong mã có thể là một nhiệm vụ, hãy dành thời gian của bạn và suy nghĩ kỹ, đồng hồ sẽ không hết hạn cho đến cuối năm 2037. Tôi sẽ theo dõi chặt chẽ của mình. email cho các câu hỏi vì tôi chắc chắn sẽ có một số, tôi không phải là một thiên tài văn học nên một số mô tả của tôi có thể hơi lầy lội.

Có hai tệp.pdf được bao gồm, hãy tải tệp cho bán cầu bạn đang sống, tệp này sẽ cung cấp cho bạn thông tin cần thiết để khởi động đồng hồ một cách chính xác.

Với thông tin được thao tác trong bản phác thảo, sẽ dễ dàng hiển thị không chỉ thời gian và thời gian DST tiêu chuẩn mà còn cả ngày và tháng trên màn hình LCD 2004A. Nếu bạn thích những thách thức mà dự án này cung cấp, hãy thử kết nối màn hình LCD 2004A sau đó thêm mã để hiển thị thông tin bổ sung hoặc nếu đủ sự quan tâm, tôi sẽ thực hiện một biến thể khác của dự án này bao gồm thông tin bổ sung này.

Tôi đã cố gắng trở nên nổi bật trong dự án này nhưng tôi đã tìm thấy ba lĩnh vực trên thế giới đang được đề cập. Bắc Cực, Nam Cực và Xích đạo.

DST có cần thiết hoặc thậm chí có thể thực hiện được ở Bắc Cực hoặc Nam Cực không?

Mấy giờ ở Bắc Cực hay Nam Cực?

Bạn sẽ đi theo hướng nào để rời Bắc Cực hay Nam Cực?

Từ Nam Cực bạn sẽ đi theo hướng nào để đến Austrailia, Bắc Mỹ, Châu Âu hay Châu Á?

Ông già Noel sống ở múi giờ nào?

Anh ta có cần DST không?

Dù sao thì bây giờ là mấy giờ ở Bắc Cực?

Ông già Noel đi theo hướng nào để chuyển hết quà của mình?

DST có hiệu quả ở vĩ độ nào?

Bây giờ cho Xích đạo;

Đồng hồ này có sử dụng được ở Xích đạo không?

Họ sẽ sử dụng thang đo Bắc bán cầu hay Nam bán cầu?

Ngày đông chí và hạ chí là ngày nào?

DST có hiệu quả ở vĩ độ nào?

Những chú chim cánh cụt có cần DST không?

Bạn có nghĩ tôi kỳ lạ khi nghĩ về những câu hỏi này không?

Chúc mọi người xây dựng vui vẻ!

philmnut

Bước 7: Các liên kết khác

Đây là một liên kết để xác định hoặc thay đổi địa chỉ trên gói mặt sau I2C:

www.instructables.com/id/1602-2004-LCD-Adapter-Address/

PiotrS đã viết một hướng dẫn tuyệt vời cho các địa chỉ phần cứng I2C

playground.arduino.cc/Main/I2cScanner

Liên kết này sẽ quét thiết bị I2C của bạn và trả lại địa chỉ

Đề xuất: