Mục lục:

Đồng hồ hẹn giờ hoàng hôn / bình minh Arduino: 15 bước
Đồng hồ hẹn giờ hoàng hôn / bình minh Arduino: 15 bước

Video: Đồng hồ hẹn giờ hoàng hôn / bình minh Arduino: 15 bước

Video: Đồng hồ hẹn giờ hoàng hôn / bình minh Arduino: 15 bước
Video: Bộ Váy Hoa Súng gây bão truyền thông của Hoa Hậu Khánh Vân tại Miss Universe 2021 2024, Tháng bảy
Anonim
Đồng hồ hẹn giờ hoàng hôn / bình minh Arduino
Đồng hồ hẹn giờ hoàng hôn / bình minh Arduino

Tóm lược:

Bộ hẹn giờ dựa trên Arduino này có thể chuyển đổi một đèn 220V vào lúc hoàng hôn, bình minh hoặc thời gian cụ thể.

Giới thiệu:

Một số đèn trong nhà tôi được bật tự động vào lúc chạng vạng, cho đến thời điểm đặt trước hoặc cho đến bình minh (cả đêm).

Vị trí của đèn không cho phép sử dụng cảm biến ánh sáng. Các bộ hẹn giờ đồng hồ có sẵn thông thường sẽ bật vào một thời điểm cụ thể. Do đó, để bật vào khoảng thời gian hoàng hôn, yêu cầu thường xuyên điều chỉnh cài đặt chương trình hẹn giờ.

Thay vào đó, tôi quyết định xây dựng một bộ đếm thời gian độc lập dựa trên Arduino tùy chỉnh. Nó sử dụng đồng hồ thời gian thực và thư viện Dusk2Dawn để xác định thời gian phải bật hoặc tắt đèn. Vỏ cho bộ đếm thời gian này được in 3D và có thể tìm thấy trên Thingiverse. Bạn có thể tìm thấy mã Arduino cho dự án này trên GitHub.

Trong quá trình tạo ra bộ đếm thời gian này, tôi đã lấy cảm hứng từ nhiều thiết kế và mạch trên internet. Lời cảm ơn của tôi đến tất cả những người đóng góp không được đề cập rõ ràng.

Để có thể đọc được, các sơ đồ một phần được hiển thị theo các bước nếu cần, thay vì một sơ đồ mạch hoàn chỉnh.

Các giải pháp thay thế:

Thay vì một bộ hẹn giờ độc lập, có nhiều giải pháp trong đó hệ thống tự động hóa nhà thông minh điều khiển đèn. Mục tiêu của tôi là có một giải pháp độc lập, không phụ thuộc vào kết nối WIFI (hoặc khác).

Những hạn chế:

Mã được cung cấp cùng với dự án này bao gồm triển khai các thay đổi về tiết kiệm ánh sáng ban ngày dựa trên hệ thống tiết kiệm ánh sáng ban ngày của Châu Âu.

Bước 1: Danh sách bộ phận và công cụ

Danh sách bộ phận và công cụ
Danh sách bộ phận và công cụ

Các bộ phận:

Tổng chi phí các bộ phận (không bao gồm in 3d) khoảng € 30, -.

  • Arduino Nano V3 (tương thích) không có tiêu đề
  • Nguồn điện 5V 0.6A (34 x 20 x 15mm)
  • Rơ le trạng thái rắn 5V - Hoạt động ở mức thấp - 2A 230VAC
  • Đồng hồ thời gian thực DS3231 (nhỏ)
  • Màn hình OLED 0,96”SPI 128 * 64 pixel
  • Bộ mã hóa quay - EC11 - 20mm
  • Núm 6mm trục 15mm * 17mm
  • Bảng mạch in Breadboard,
  • 4 * Vít M3x25mm
  • Bao vây in 3d
  • Ống co nhiệt
  • Dây điện
  • Khối đầu cuối vít (để kết nối dây trung tính)

Công cụ yêu cầu:

  • Sắt hàn
  • Dây hàn
  • Bơm hút
  • Dụng cụ cắt dây
  • Máy cắt
  • Máy in 3D (để in bao vây)
  • Các loại công cụ nhỏ

CẢNH BÁO

Mạch này hoạt động trên 230v AC và nếu bạn không quen làm việc với điện áp chính hoặc không có nhiều kinh nghiệm làm việc với Điện áp nguồn AC 230v, vui lòng tránh xa dự án này

Tôi không chịu trách nhiệm về bất kỳ tổn thất hoặc thiệt hại nào phát sinh trực tiếp từ hoặc do hậu quả của việc thực hiện dự án này

Chúng tôi luôn khuyên bạn nên chăm sóc và đề phòng đúng cách khi làm việc với AC Mains

Bước 2: Chuẩn bị màn hình OLED và đồng hồ thời gian thực

Chuẩn bị màn hình OLED và đồng hồ thời gian thực
Chuẩn bị màn hình OLED và đồng hồ thời gian thực

Bao vây in 3D được thiết kế với kích thước tối thiểu. Do đó, các tiêu đề của màn hình OLED và đồng hồ thời gian thực cần phải được loại bỏ.

Để chuẩn bị cho bước tiếp theo, hãy làm sạch vết hàn còn sót lại trên các lỗ bằng máy bơm khử nhiệt.

Bước 3: Chuẩn bị bộ mã hóa quay

Chuẩn bị bộ mã hóa quay
Chuẩn bị bộ mã hóa quay

Bộ mã hóa quay có các đầu nối mỏng manh. Để tránh hư hỏng, hãy gắn một phần bảng mạch in vào bộ mã hóa.

Trên hình, kết nối mặt đất (trên cùng bên phải và giữa dưới cùng) cũng đã được chuẩn bị.

Lưu ý: Đảm bảo rằng bộ mã hóa quay với bảng mạch in nằm gọn trong vỏ mà không chạm vào Arduino. Có thể phải mài bảng mạch in để có được độ vừa khít.

Bước 4: Bao vây

Bao vây
Bao vây
Bao vây
Bao vây

In ba phần của bao vây bằng máy in 3d. Tham khảo hướng dẫn trên Thingiverse.

Bước 5: Tắt đèn LED nguồn Arduino (tùy chọn)

Tắt đèn LED nguồn Arduino (tùy chọn)
Tắt đèn LED nguồn Arduino (tùy chọn)

Để tránh có ánh sáng màu xanh lá cây trong bộ hẹn giờ, có thể tắt đèn LED nguồn của Arduino.

Lưu ý rằng sửa đổi này là tùy chọn.

Việc sửa đổi Arduino Nano bao gồm việc loại bỏ điện trở bên cạnh đèn LED nguồn (xem vòng tròn màu đỏ trong hình).

Bước 6: Nguồn điện + Rơ le trạng thái rắn

Nguồn điện + Rơ le trạng thái rắn
Nguồn điện + Rơ le trạng thái rắn

Trong bước này, nguồn điện và rơ le trạng thái rắn được kết hợp và gắn ở phần dưới cùng của vỏ bọc.

Kết nối giữa nguồn điện và rơ le được thực hiện ở dưới cùng của các thành phần này. Khối đầu cuối vít của rơ le sẽ được sử dụng để kết nối với Arduino.

Lưu ý: Khi thực hiện kết nối, đảm bảo rằng các lỗ lắp của rơle trạng thái rắn được giữ không có.

  • Hàn dây kết nối giữa rơ le trạng thái rắn A1 với một trong các kết nối AC của nguồn điện
  • Hàn một dây với kết nối AC khác của nguồn điện (dây này sẽ được kết nối với khối đầu cuối vít trung tính ở bước 7)
  • Hàn một dây giữa nguồn điện -Vo để chuyển tiếp DC-
  • Hàn dây để kết nối nguồn điện + Vo để tiếp điện DC +

Lưu ý: Có thể phải cắt ngắn các dây dẫn trên nguồn điện và rơ le để có thể lắp vào vỏ.

Bước 7: Arduino Nano + Nguồn điện + Rơ le trạng thái rắn

Arduino Nano + Nguồn điện + Rơ le trạng thái rắn
Arduino Nano + Nguồn điện + Rơ le trạng thái rắn

Trong bước này, Arduino Nano được kết nối với nguồn điện và rơle trạng thái rắn.

  • Cắt hai dây có chiều dài khoảng 70mm. Dải cách ly 30mm ở một bên và 4mm ở phía bên kia.
  • Hàn mặt bên có lớp cách ly 30mm với Arduino + 5V và GND, với dây dính xuyên qua
  • Cắt hai ống co nhiệt có chiều dài 20mm và lắp chúng lên phần đã tước 25mm. Điều này cô lập các dây dẫn đến kết nối với khối đầu cuối vít gắn kết DC + và DC- của rơle trạng thái rắn.
  • Lưu ý rằng dây cho GND và + 5V cần phải bắt chéo để kết nối chính xác với khối đầu cuối vít rơle.
  • Cắt một sợi dây có chiều dài khoảng 40mm và dải 4mm cách ly ở cả hai đầu. Hàn một mặt với kết nối A2 trên BACKSIDE của Arduino và kết nối mặt kia với kết nối CH1 của khối đầu cuối vít gắn kết trạng thái rắn.

CẢNH BÁO

Arduino được cấp nguồn trực tiếp từ nguồn điện ổn định + 5V thay vì sử dụng bộ điều chỉnh nguồn bên trong Arduino. Do đó, sẽ không an toàn khi kết nối USB khi Arduino nhận điện từ nguồn cấp.

Luôn ngắt kết nối nguồn điện 230VAC trước khi sử dụng kết nối USB Arduino.

Bước 8: Arduino Nano + Đồng hồ thời gian thực

Arduino Nano + Đồng hồ thời gian thực
Arduino Nano + Đồng hồ thời gian thực

Trong bước này, đồng hồ thời gian thực được kết nối với Arduino, một phần bằng cách sử dụng các dây cáp đã chuẩn bị ở bước trước.

  • Hàn dây đến từ Arduino GND (cũng được kết nối với DC- của rơ le) đến ‘-‘của đồng hồ thời gian thực.
  • Hàn dây đến từ Arduino + 5V (cũng được kết nối với DC + của rơ le) thành ‘+’ của đồng hồ thời gian thực.
  • Cắt hai dây có chiều dài khoảng 40mm và dải 4mm cách ly cả hai đầu.
  • Hàn một dây giữa Arduino A4 và đồng hồ thời gian thực D (SDA).
  • Hàn một dây giữa Arduino A5 và đồng hồ thời gian thực C (SCL).
  • Định hình các dây của đồng hồ thời gian thực để đảm bảo chúng không gây nhiễu cho bộ mã hóa quay. Đối với điều này, các dây cần phải ở dưới cùng của vỏ bọc.

Bước 9: Kết nối màn hình OLED

Kết nối màn hình OLED
Kết nối màn hình OLED

Trong bước này, màn hình OLED SPI được thêm vào Arduino.

  • Cắt 2 sợi dây dài 65mm và dải 4mm cách ly hai đầu.
  • Hàn dây vào kết nối GND của màn hình OLED. Hàn dây này với dây cách ly của ống co nhiệt đến từ Arduino GND (tham khảo bước 4) và kết nối cả hai dây với khối đầu cuối vít gắn DC của rơle trạng thái rắn.
  • Hàn dây vào kết nối VCC của màn hình OLED. Hàn dây này vào dây cách ly của ống co nhiệt đến từ Arduino + 5V (tham khảo bước 4) và kết nối cả hai dây với khối đầu cuối vít gắn DC + của rơle trạng thái rắn.
  • Cắt 5 sợi dây dài 65mm và dải 4mm cách ly hai đầu.
  • Hàn dây để kết nối D0 (CLK) với Arduino D10
  • Hàn dây để kết nối D1 (MOSI / DATA) với Arduino D9
  • Hàn dây để kết nối RES (RT) với Arduino D8
  • Hàn dây để kết nối DC với Arduino D11
  • Hàn dây để kết nối CS với Arduino D12

Lưu ý: Thứ tự của các dây hiển thị không logic. Đây là kết quả của việc đầu tiên sử dụng ví dụ Adafruit, sau đó thay đổi các kết nối vì sử dụng D13 dẫn đến đèn LED màu đỏ trên Arduino mọi lúc.

Thay thế

Có thể sử dụng thứ tự 'bình thường' cho các kết nối SPI. Đối với điều này, định nghĩa đầu ra kỹ thuật số của chương trình Arduino trong oledcontrol.cpp phải được điều chỉnh cho phù hợp:

// Sử dụng phần mềm SPI

// định nghĩa pin

#define CS_PIN 12

#define RST_PIN 8

#define DC_PIN 11

#define MOSI_PIN 9

#define CLK_PIN 10

Bước 10: Bộ mã hóa quay

Bộ mã hóa quay
Bộ mã hóa quay

Sơ đồ cho thấy các kết nối của Arduino với bộ mã hóa quay (bộ mã hóa nhìn từ trên xuống).

  • Cắt 4 sợi dây 45mm và dải 4mm cách ly hai đầu.
  • Kết nối Arduino GND với các đầu nối trên cùng bên phải và dưới cùng ở giữa của bộ mã hóa
  • Kết nối Arduino D2 với phía dưới bên trái của bộ mã hóa
  • Kết nối Arduino D3 với phía dưới bên phải của bộ mã hóa
  • Kết nối Arduino D4 với trên cùng bên trái của bộ mã hóa

Bước 11: Cài đặt trong Bao vây

Cài đặt trong Bao vây
Cài đặt trong Bao vây

Lắp đặt tất cả các thiết bị điện tử ở phần dưới cùng của vỏ máy:

  • Trượt Arduino trên rãnh dọc
  • Trượt đồng hồ thời gian thực ở ngăn dưới cùng
  • Trượt nguồn điện và rơ le ở ngăn trên cùng, đảm bảo rơ le nằm trên giá của nó.

Bước 12: Kết nối với Mains / Light để được chuyển đổi

Kết nối với Mains / Light để được chuyển đổi
Kết nối với Mains / Light để được chuyển đổi
Kết nối với Mains / Light để được chuyển đổi
Kết nối với Mains / Light để được chuyển đổi

CẢNH BÁO

Đảm bảo thực hiện các biện pháp phòng ngừa và chăm sóc thích hợp khi làm việc với Nguồn AC, đảm bảo rằng Nguồn AC đã được ngắt kết nối

Tôi không chịu trách nhiệm về bất kỳ tổn thất hoặc thiệt hại nào phát sinh trực tiếp từ hoặc do hậu quả của việc thực hiện dự án này

  • Kết nối pha Nguồn AC với khối đấu dây vít A1 (bên trái) của rơle.
  • Kết nối pha của đèn được chuyển sang khối đấu dây vít B1 (bên phải) của rơ le.
  • Sử dụng khối đầu cuối vít riêng biệt để kết nối dây trung tính của nguồn AC, dây trung tính của đèn và dây trung tính của nguồn điện.
  • Để giảm căng thẳng, hãy gắn dây quấn quanh mỗi cáp nguồn.

Bước 13: Hoàn thiện Bao vây

Hoàn thiện Bao vây
Hoàn thiện Bao vây

Trong bước này, việc lắp vào bao vây đã hoàn thành

  • Trượt màn hình OLED qua lỗ gắn màn hình ở phần giữa của vỏ.
  • Trượt bộ mã hóa vòng quay qua lỗ ở phần giữa, đảm bảo rằng các đường chống xoay thẳng hàng. Gắn bộ mã hóa quay bằng vòng đệm và đai ốc đi kèm.
  • Gắn phần trên cùng của vỏ và đóng vỏ bằng cách lắp bốn vít M3x25mm từ phía dưới.

Bước 14: Lập trình Arduino

CẢNH BÁO

Arduino được cấp nguồn trực tiếp từ nguồn điện ổn định + 5V thay vì sử dụng bộ điều chỉnh nguồn bên trong Arduino. Do đó, sẽ không an toàn khi kết nối USB khi Arduino nhận điện từ nguồn cấp.

Luôn ngắt kết nối nguồn điện 230VAC trước khi sử dụng kết nối USB Arduino.

Truy xuất chương trình hẹn giờ Arduino từ GitHub.

Chương trình này sử dụng Arduino IDE, có thể lấy tại đây.

Chương trình sử dụng các thư viện bổ sung sau:

SSD1303Ascii

Thư viện dây Arduino

Lưu ý rằng thư viện dusk2dawn cũng được sử dụng, nhưng được bao gồm dưới dạng mã do sự thay đổi trong giao diện của nó.

Để đảm bảo tính toán hoàng hôn / bình minh chính xác, kinh độ, vĩ độ và múi giờ phải được đặt.

Như được mô tả trong ví dụ dusk2dawn, một cách dễ dàng để tìm kinh độ và vĩ độ cho bất kỳ vị trí nào là tìm vị trí đó trong Google Maps, nhấp chuột phải vào địa điểm trên bản đồ và chọn "Đây là gì?". Ở dưới cùng, bạn sẽ thấy một thẻ có tọa độ.

Kinh độ và vĩ độ được mã hóa cứng trong chương trình, ở dòng Dusk2Dawn.cpp 19 và 20:

/ * Vĩ độ và độ dài của vị trí của bạn phải được đặt ở đây.

* * GỢI Ý: Một cách dễ dàng để tìm kinh độ và vĩ độ cho bất kỳ vị trí nào là * tìm địa điểm trong Google Maps, nhấp chuột phải vào địa điểm trên bản đồ và * chọn "Đây là gì?". Ở dưới cùng, bạn sẽ thấy một thẻ có tọa độ *. * / #define LATITUDE 52.097105; // Utrecht #define LONGTITUDE 5.068294; // Utrecht

Múi giờ cũng được mã hóa cứng ở dòng Dusk2Dawn.cpp 24. Theo mặc định, nó được đặt thành Hà Lan (GMT + 1):

/ * Nhập múi giờ của bạn (bù sang GMT) tại đây.

* / #define TIMEZONE 1

Khi lập trình Arduino lần đầu tiên, bộ nhớ EEPROM cần được khởi tạo. Đối với điều này, hãy thay đổi dòng timer.cpp 11 để thực hiện khởi tạo EEPROM:

// thay đổi thành true cho lần đầu tiên lập trình

#define INITIALIZE_EEPROM_MEMORY false

Tải chương trình lên Arduino và khởi động Arduino.

Tắt khởi tạo EEPROM và tải lại chương trình lên Arduino. Giờ đây, bộ hẹn giờ sẽ ghi nhớ cài đặt thời gian chuyển đổi khi khởi động lại.

Bước 15: Thiết lập thời gian và thời gian chuyển đổi

Các khái niệm tương tác của người dùng:

  • Nhấn nhanh được sử dụng để xác nhận các lựa chọn. Hơn nữa, trong màn hình hẹn giờ chính, một thao tác nhấn nhanh sẽ bật hoặc tắt đèn.
  • Nhấn và giữ được sử dụng để vào menu từ màn hình hẹn giờ chính. Ở bất kỳ vị trí nào trong menu, nhấn và giữ sẽ trở lại màn hình hẹn giờ chính.
  • Dấu chọn ‘>’. Con trỏ này cho biết tùy chọn đã chọn trong menu.

Màn hình hẹn giờ chính

Màn hình hẹn giờ chính hiển thị:

Ngày trong tuần Su

Giờ hiện tại 16:00

Trạng thái hẹn giờ hiện tại và thời gian chuyển đổi tiếp theo Bộ hẹn giờ TẮT cho đến 17:12

Thời gian bình minh và hoàng hôn Bình minh 08:05 Dusk 17:10

Đặt thời gian chính xác

Nhấn và giữ để vào menu. Các tùy chọn sau được hiển thị:

Quay lại Đặt thời gian Chương trình ngày hội Chương trình tuần lễ chương trình Tùy chọn

Chọn cài đặt thời gian để đặt ngày và giờ của đồng hồ thời gian thực. Nhập các giá trị chính xác cho:

YearMonthDayTime

Bộ đếm thời gian tự động xác định ngày trong tuần. Việc chuyển đổi thời gian tiết kiệm ánh sáng ban ngày cũng được thực hiện tự động. Chế độ tiết kiệm ánh sáng ban ngày chỉ được triển khai cho múi giờ Châu Âu.

Cài đặt chương trình hẹn giờ

Bộ đếm thời gian có 2 chương trình, một cho các ngày trong tuần, một cho cuối tuần. Lưu ý rằng thứ Sáu được coi là một phần của cuối tuần, đèn có thể bật sáng lâu hơn một chút.

Mỗi bộ hẹn giờ có một thời điểm bật và tắt. Thời điểm có thể là:

  • Thời gian: Thời gian được chỉ định chính xác
  • Bình minh: Chuyển đổi dựa trên thời gian bình minh được tính toán
  • Dusk: Chuyển đổi dựa trên thời gian tính toán của hoàng hôn

Đối với hoàng hôn và bình minh, có thể nhập giá trị hiệu chỉnh trước hoặc sau 59 phút.

Ví dụ:

Để bật đèn suốt đêm, hãy chọn bật lúc (chạng vạng + 10 phút), tắt lúc (bình minh - 10 phút)

Để bật đèn vào buổi tối, hãy chọn bật vào lúc chạng vạng, tắt vào lúc: 22:30.

Tùy chọn

Trong màn hình tùy chọn, có thể đặt thời gian chờ để chuyển đổi màn hình.

Khi màn hình tắt, nhấn vào núm xoay bộ mã hóa sẽ trở về màn hình hẹn giờ chính.

Đề xuất: