Mục lục:

Đồng hồ 132 điểm ảnh: 5 bước (có hình ảnh)
Đồng hồ 132 điểm ảnh: 5 bước (có hình ảnh)

Video: Đồng hồ 132 điểm ảnh: 5 bước (có hình ảnh)

Video: Đồng hồ 132 điểm ảnh: 5 bước (có hình ảnh)
Video: Rồi cay luônn 🥹🥹 2024, Tháng mười một
Anonim
Image
Image
Đồng hồ 132 điểm ảnh
Đồng hồ 132 điểm ảnh

Tôi đã từng bị ám ảnh bởi đèn LED và thời gian từ bao lâu rồi. Trong dự án này, tôi đã tạo ra một chiếc đồng hồ treo tường lớn hiển thị thời gian hiện tại bằng cách sử dụng 132 đèn LED neopixel được gắn và chiếu sáng qua một bảng vân sam. Nó là một kỹ thuật số tương tự lai với một pixel riêng lẻ cho mỗi giờ, phút và giây.

Đây là dự án lớn nhất mà tôi thực hiện cho đến nay, tôi bắt đầu nghĩ về nó cách đây 6 tháng và ý tưởng dần dần xuất hiện. Tôi thực sự hài lòng với kết quả và tôi mong muốn được chia sẻ với các bạn.

Bước 1: Thu thập Vật dụng và Công cụ

Thu thập Vật dụng và Công cụ
Thu thập Vật dụng và Công cụ
Thu thập Vật dụng và Công cụ
Thu thập Vật dụng và Công cụ
Thu thập Vật dụng và Công cụ
Thu thập Vật dụng và Công cụ
Thu thập Vật dụng và Công cụ
Thu thập Vật dụng và Công cụ

Các thành phần

Dự án này được xây dựng dựa trên bảng sở thích của loài báo từ cửa hàng DIY tại địa phương của tôi. Bảng có kích thước rộng 850mm x cao 500mm và sâu 18mm.

Đèn LED được sử dụng trong dự án này là 5050 WS2812b được gắn trên PCB hình tròn có đường kính khoảng 9mm với các miếng hàn ở phía sau.

Tôi đang sử dụng bộ điều khiển vi mô tương thích Arduino Pro Mini. Đây là phiên bản 5V 16 MHZ. Tôi chọn cái này vì nó có thiết kế siêu mỏng, chân in nhỏ và tất cả các cổng tiện dụng cộng với một số phụ tùng để nâng cấp trong tương lai. Nó cũng 5 volt để tôi có thể sử dụng một nguồn điện duy nhất cho đèn LED, bộ điều khiển Micro và RTC

Việc lưu giữ thời gian được thực hiện bởi một mô-đun RTC (Đồng hồ thời gian thực) có chip DS3231. Con chip này rất chính xác nên thời gian không bị trôi quá nhiều.

Cũng được dùng:

Dây điện. Chất hàn và keo nóng.

Công cụ:

Máy khoan động lực và mũi khoan gỗ (10mm và 5mm)

Hàn sắt

Súng bắn keo nóng

đoạn dây

Các phụ kiện của bộ định tuyến Dremel và pittong

Bước 2: Đánh dấu, khoan và định tuyến

Đánh dấu, khoan và định tuyến
Đánh dấu, khoan và định tuyến
Đánh dấu, khoan và định tuyến
Đánh dấu, khoan và định tuyến
Đánh dấu, khoan và định tuyến
Đánh dấu, khoan và định tuyến

Khoan

  • Sử dụng một cạnh eo biển để tìm tâm của bảng bằng cách vẽ một đường thẳng từ các góc đối diện.
  • Đánh dấu 3 vòng tròn bằng cách sử dụng một đoạn dây và một cây bút. Hình tròn ngoài cùng phải cách mép bảng khoảng 20mm với 2 dòng còn lại di chuyển vào trong 15mm từ dòng cuối cùng.
  • Tôi đã sử dụng một mặt đồng hồ được in để giúp tôi đánh dấu vị trí của từng phút và giây ở 2 vạch bên ngoài và giờ ở vạch bên trong.
  • Khoan các lỗ 10mm sâu khoảng 5mm mỗi giờ, phút và giây.
  • Sử dụng mũi khoan 5mm để tạo lỗ trên bảng giờ, phút và giây.

Lộ trình

Mặc dù bước này không cần thiết nhưng sẽ cho phép đồng hồ được lắp thẳng vào tường.

  • Sử dụng bộ định tuyến và các kênh dẫn đường vòng tròn trong bảng
  • Đánh dấu và định tuyến một chỗ lõm để RTC và Bộ điều khiển Micro hoạt động.
  • Định tuyến kênh từ các đường bên ngoài đến chỗ lõm cho dây dẫn

Bước 3: Bán thật nhiều, cắt và tước

Rất nhiều người bán, cắt và tước
Rất nhiều người bán, cắt và tước
Rất nhiều người bán, cắt và tước
Rất nhiều người bán, cắt và tước
Rất nhiều người bán, cắt và tước
Rất nhiều người bán, cắt và tước

Phần tiếp theo này dễ nói hơn là làm. Lời khuyên của tôi sẽ được lưu ý để gấp rút nó. thử và tìm một hệ thống và bắt nhịp.

Mỗi đèn LED cần 5 volt vào, 5 volt ra, Data vào, Data out, Ground vào và Ground out. bao gồm nguồn cho bộ điều khiển vi mô và RTC hơn 400 dây của nó, tất cả đều được tước và hàn ở cả hai đầu.

Chất màu xanh lam rất hữu ích cho bước này.

  • Tôi bắt đầu bằng cách đặt 2 đèn LED vào các lỗ của chúng cạnh nhau để tìm ra độ dài dây cần thiết để kết nối với nhau.
  • Sử dụng đoạn dây đầu tiên làm hướng dẫn, tôi cắt 60 mỗi dây màu.
  • Tách 2mm ống xoắn từ các đầu của mỗi dây và hàn chúng lại với nhau.
  • Hàn một đốm hàn nhỏ lên mỗi miếng đệm LED.
  • Hàn các dây với đèn LED để tạo thành hai chuỗi 60 cho phút và giây và một chuỗi 12 cho giờ. Tôi đã sử dụng dây màu đỏ cho 5V, màu vàng cho dữ liệu và màu xanh lam cho mặt đất.
  • Chú ý kết nối từng Đầu ra Dữ liệu (DOUT) với Đầu vào Dữ liệu (DIN) của đèn LED tiếp theo
  • Dẫn cuối cùng trong mỗi liều chuỗi không cần dây ra dữ liệu.

Sau khi tất cả các chuỗi được hoàn thành, bạn nên kiểm tra chúng trước khi lắp đặt. Tôi đã sử dụng Arduino UNO và Kiểm tra dây Adafruit NeoPixel để xác nhận từng đèn LED đang hoạt động.

Hàn các dây dài hơn vào mỗi chuỗi cho 5V, Nối đất và Dữ liệu vào.

Tại thời điểm này, cần có năm dây 5v, ba dây Dữ liệu được kết nối với Arduino Pro Mini và 5 dây nối đất.

Tách 5mm từ các đầu của dây 5v và hàn tất cả chúng lại với nhau và lặp lại đối với dây Nối đất.

Sau khi hoàn thành ba chuỗi, hàn dây 5V vào chân RAW của Arduino Pro Mini và cũng vào chân VCC cho RTC. Một dây nối đất tới GND trên Arduino Pro Mini và RTC và sau đó là 2 dây nữa:

SCL từ RTC đến A5 trên Pro Mini

SDA từ RTC đến A4 trên Pro Mini

Các đường dữ liệu từ đèn LED phải kết nối với:

  • Giây - Chốt kỹ thuật số 3.
  • Phút - DigitalPin 4
  • Hours - DigitalPin 5

Bước 4: Cài đặt

Đang cài đặt
Đang cài đặt
Đang cài đặt
Đang cài đặt
Đang cài đặt
Đang cài đặt

Sau khi được hàn, việc lắp đặt các đèn LED vào các lỗ của chúng phải thẳng về phía trước. Các đèn LED cần được cài đặt để dữ liệu chạy ngược chiều kim đồng hồ khi nhìn từ phía sau khi mã được thiết lập quay mặt về phía trước.

Tôi đã sử dụng một lượng nhỏ keo nóng để giữ chúng lại vì tôi muốn có thể thay thế một đèn LED duy nhất nếu nó bị lỗi trong tương lai.

Tôi cũng sử dụng keo nóng để giữ cho tất cả các dây gọn gàng và ngăn nắp và để cố định đầu nối thùng với bảng.

Có một số hướng dẫn lập trình mini arduino pro. Tôi sử dụng phương pháp chuyển đổi USB sang nối tiếp bên ngoài để tải mã này vào Arduino:

Mã này cũng sẽ đặt thời gian trên RTC thành thời gian mà nó được biên dịch. vì vậy điều quan trọng là chỉ cần giữ nút tải lên để nút này tuân thủ và tải lên nhanh nhất có thể.

Phần lớn mã này đã được Andy Doro mượn từ Đồng hồ nhẫn NeoPixel. Một số từ Thử nghiệm NeoPixel Strand của Adafruit và một số tôi tổng hợp lại.

Bạn sẽ cần phải cài đặt một vài thư viện. Chúng có sẵn từ Trình quản lý thư viện trên phần mềm Arduino.

Adafruit NeoPixel cho đèn LED ws2812b

Dây để nói chuyện với RTC qua I2C (cái này được tích hợp sẵn theo tiêu chuẩn)

và RTClib để biết những gì cần hỏi RTC

/ ************************************************* ************************* * * Đồng hồ vòng NeoPixel của Andy Doro ([email protected]) https://andydoro.com/ringclock/ * * ************************************************ **************************

Lịch sử sửa đổi

Ngày bằng gì

20140320 AFD Bản nháp đầu tiên 20160105 AFD Vòng cung bị mờ 20160916 AFD Trinket tương thích 20170727 AFD đã thêm STARTPIXEL cho bao vây 3D, điểm bắt đầu thay đổi, thêm hỗ trợ DST tự động 20180424 AFD sử dụng thư viện DST https://github.com/andydoro/DST_RTC *

/ bao gồm mã thư viện:

#include #include

#bao gồm

// xác định các chân

# xác định SECPIN 3 # xác định MINPIN 4 # xác định HOUPIN 5

#define BRIGHTNESS 20 // đặt độ sáng tối đa

#define r 10

#define g 10 #define b 10 RTC_DS3231 rtc; // Thiết lập đối tượng đồng hồ

Adafruit_NeoPixel dảiS = Adafruit_NeoPixel (60, SECPIN, NEO_GRB + NEO_KHZ800); // đối tượng dải

Adafruit_NeoPixel dảiM = Adafruit_NeoPixel (60, MINPIN, NEO_GRB + NEO_KHZ800); // dải đối tượng Adafruit_NeoPixel dảiH = Adafruit_NeoPixel (24, HOUPIN, NEO_GRB + NEO_KHZ800); // dải byte đối tượng pixelColorRed, pixelColorGreen, pixelColorBlue; // giữ các giá trị màu

void setup () {

Wire.begin (); // Bắt đầu I2C rtc.begin (); // bắt đầu đồng hồ

Serial.begin (9600);

// đặt pinmodes pinMode (SECPIN, OUTPUT); pinMode (MINPIN, OUTPUT); pinMode (HOUPIN, OUTPUT);

if (rtc.lostPower ()) {

Serial.println ("RTC bị mất nguồn, hãy đặt thời gian!"); // dòng sau đặt RTC thành ngày & giờ mà bản phác thảo này được biên dịch rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Dòng này đặt RTC với ngày và giờ rõ ràng, ví dụ: đặt // ngày 21 tháng 1 năm 2014 lúc 3 giờ sáng mà bạn sẽ gọi: // rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0)); }

dảiS.begin ();

dảiM.begin (); dảiH.begin (); //strip.show (); // Khởi tạo tất cả các pixel thành 'tắt'

// trình tự khởi động

chậm trễ (500);

colorWipeS (dảiS. Color (0, g, 0), 5); // Màu xanh lam colorWipeM (dảiM. Color (r, 0, 0), 5); // Màu xanh lam colorWipeH (dảiH. Color (0, 0, b), 50); // Màu xanh dương

chậm trễ (1000);

DateTime theTime = rtc.now (); // tính đến byte DST secondval = theTime.second (); // lấy giây byte phútval = theTime.minute (); // lấy phút int giờval = theTime.hour (); giờ giá trị = giờ giá trị% 12; // Đồng hồ này là 12 giờ, nếu 13-23, chuyển thành 0-11`

for (uint16_t i = 0; i <secondval; i ++) {stripS.setPixelColor (i, 0, 0, b); dảiS.show (); chậm trễ (5); }

for (uint16_t i = 0; i <minutesval; i ++) {stripM.setPixelColor (i, 0, g, 0); dảiM.show (); chậm trễ (5); }

for (uint16_t i = 0; i <hourval; i ++) {dảiH.setPixelColor (i, r, 0, 0); dảiH.show (); chậm trễ (5); }

}

void loop () {

// dành thời gian

DateTime theTime = rtc.now (); // có tính đến DST

byte secondval = theTime.second (); // lấy giây

byte phútval = theTime.minute (); // lấy phút int giờval = theTime.hour (); // lấy giờ hourval = giờval% 12; // Đồng hồ này là 12 giờ, nếu 13-23, chuyển thành 0-11`

dảiS.setPixelColor (giá trị thứ hai, 0, 0, 20); dảiS.show (); chậm trễ (10); if (secondval == 59) {for (uint8_t i = stripS.numPixels (); i> 0; i--) {stripS.setPixelColor (i, 0, g, 0); dảiS.show (); trì hoãn (16);}}

dảiM.setPixelColor (giá trị phút, 0, g, 0);

dảiM.show (); chậm trễ (10); if (secondval == 59 && minutesval == 59) {for (uint8_t i = stripM.numPixels (); i> 0; i--) {stripM.setPixelColor (i, r, 0, 0); dảiM.show (); trì hoãn (16);}}

dảiH.setPixelColor (giờ, r, 0, 0);

dảiH.show (); chậm trễ (10); if (secondval == 59 && minutesval == 59 && hourval == 11) {for (uint8_t i = stripH.numPixels (); i> 0; i--) {stripH.setPixelColor (i, 0, 0, b); dảiH.show (); delay (83);}} // để gỡ lỗi nối tiếp Serial.print (hourval, DEC); Serial.print (':'); Serial.print (giá trị phút, DEC); Serial.print (':'); Serial.println (secondval, DEC); }

// Tô màu lần lượt vào các chấm

void colorWipeS (uint32_t c, uint8_t wait) {for (uint16_t i = 0; i <stripS.numPixels (); i ++) {stripS.setPixelColor (i, c); dảiS.show (); trì hoãn (chờ đợi); }}

void colorWipeM (uint32_t c, uint8_t wait) {

for (uint16_t i = 0; i <stripM.numPixels (); i ++) {stripM.setPixelColor (i, c); dảiM.show (); trì hoãn (chờ đợi); }}

void colorWipeH (uint32_t c, uint8_t wait) {

for (uint16_t i = 0; i <stripH.numPixels (); i ++) {stripH.setPixelColor (i, c); dảiH.show (); trì hoãn (chờ đợi); }}

Bước 5: Những lần chạm cuối cùng

Image
Image
Lần chỉnh sửa cuối cùng
Lần chỉnh sửa cuối cùng

Tất cả những gì còn lại bây giờ là sửa RTC và Bộ điều khiển Micro xuống trong hốc.

Tôi đã lắp mặt bên của pin RTC để có thể dễ dàng thay pin nếu cần.

Kết nối dây 5v vào phía + của đầu nối và nối đất với - phía

Tăng sưc mạnh lên!

Tôi đã kết nối với pin dự phòng USB nhưng bộ sạc điện thoại USB cũng hoạt động tốt.

Ghi chú:

Độ sáng của đèn LED được thiết lập trong mã. Nó đã được đặt ở mức thấp để giữ mức hòa hiện tại ở mức thấp. Ở độ sáng đầy đủ với tất cả các đèn LED được chiếu sáng, nó có thể tạo ra gần 8 ampe. Với thiết lập hiện tại, nó nhỏ hơn 1.

Cuộc thi đồng hồ
Cuộc thi đồng hồ
Cuộc thi đồng hồ
Cuộc thi đồng hồ

Về nhì trong cuộc thi đồng hồ

Đề xuất: