Mục lục:

Đồng hồ kỹ thuật số được kết nối web: 7 bước
Đồng hồ kỹ thuật số được kết nối web: 7 bước

Video: Đồng hồ kỹ thuật số được kết nối web: 7 bước

Video: Đồng hồ kỹ thuật số được kết nối web: 7 bước
Video: Thiếu Cái Này Khó Quay Video #shorts 2024, Tháng bảy
Anonim
Đồng hồ kỹ thuật số được kết nối web
Đồng hồ kỹ thuật số được kết nối web

Đã tìm thấy một chiếc đồng hồ kỹ thuật số trị giá 10 đô la tại Amazon. Bây giờ để tùy chỉnh nó để có được thời gian từ internet.

Quân nhu

ARM Stamp có thể lập trình trong BASIC có sẵn tại đây

Bước 1: Kết nối Ổ đĩa số và Ổ đĩa phân đoạn để hiển thị nhiều mặt

Kết nối ổ đĩa số và ổ đĩa phân đoạn để hiển thị đa kênh
Kết nối ổ đĩa số và ổ đĩa phân đoạn để hiển thị đa kênh

Tôi bắt đầu với một chiếc đồng hồ kỹ thuật số số lớn giá rẻ. Đầu tiên tôi loại bỏ chip đồng hồ hiện có. Sau đó, đã thực hiện một số thăm dò xung quanh và xác định vị trí các kết nối 7 đoạn, có thể được điều khiển trực tiếp bởi bộ vi xử lý. Sau đó, tìm thấy các trình điều khiển 4 chữ số là bóng bán dẫn mà bộ vi xử lý có thể điều khiển. Và sau đó nối dây chúng lên.

Bước 2: Kiểm tra các kết nối

Kiểm tra các kết nối
Kiểm tra các kết nối

Như một thử nghiệm, tôi đã viết một chương trình CƠ BẢN để điều khiển tất cả các đường dây, để kiểm tra hệ thống dây điện và đo dòng điện, trong trường hợp này là 82 mA

Tiếp theo là viết mã để quét các dòng.

ổ đĩa hiển thị đồng hồ web

IO (7) = 0 'Ổ đĩa PMOS - sẽ là PWM vào một ngày nào đó

cho y = 45 đến 48

IO (y) = 0 'ổ số

cho x = 8 đến 15

IO (x) = 0 'ổ đĩa phân đoạn

đợi đã (500)

IO (x) = 1

x tiếp theo

DIR (y) = 0 'vô hiệu hóa ổ đĩa trên đoạn

tiếp theo y

Bước 3: Mã để hiển thị thời gian và PWM để kiểm soát độ sáng

Mã để hiển thị thời gian và PWM để kiểm soát độ sáng
Mã để hiển thị thời gian và PWM để kiểm soát độ sáng
Mã để hiển thị thời gian và PWM để kiểm soát độ sáng
Mã để hiển thị thời gian và PWM để kiểm soát độ sáng

Tiếp theo, tôi đã thêm một bóng bán dẫn PMOS trong bộ nguồn cho tất cả các trình điều khiển chữ số. Với điều đó được thúc đẩy bởi điều chế độ rộng xung sẽ kiểm soát độ sáng của màn hình. Đây là mã CƠ BẢN để hiển thị thời gian.

'ổ đĩa hiển thị đồng hồ web #include "LPC11U3x.bas"

'quả cầu

hr = 0 'xác định giờ

min = 0 'xác định phút

#define SEG_0 & HBB00

#define SEG_1 & H1800

#define SEG_2 & HD300

#define SEG_3 & HD900

#define SEG_4 & H7800

#define SEG_5 & HE900

#define SEG_6 & HEB00

#define SEG_7 & H9800

#define SEG_8 & HFB00

#define SEG_9 & HF800

#define SEG_o & H4B00

#define SEG_f & HE200

const DIGarray = {SEG_0, SEG_1, SEG_2, SEG_3, SEG_4, SEG_5, SEG_6, SEG_7, SEG_8, SEG_9, SEG_o, SEG_f}

#define DIG_WAIT 1

#define US_TIME

sub display_time (err, hr, min)

mờ hr10, hr1, min10, min1, i

#ifdef US_TIME

nếu hr> 12 thì hr - = 12

nếu hr = 0 thì hr = 12

#endif

hr10 = hr / 10

hr1 = hr MOD 10

min10 = min / 10

min1 = min MOD 10

cho i = 0 đến 1

nếu hr10 thì

IO (45) = 0

endif

GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (giờ10)

GPIO_CLR (0) = DIGarray (hr10)

đợi (DIG_WAIT)

ĐẦU VÀO (45)

IO (46) = 0

GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (hr1) + IF (i, & H400, 0)

GPIO_CLR (0) = DIGarray (hr1) + IF (i, & H400, 0)

đợi (DIG_WAIT)

ĐẦU VÀO (46)

IO (47) = 0

GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (tối thiểu 10)

GPIO_CLR (0) = DIGarray (tối thiểu 10)

đợi (DIG_WAIT)

ĐẦU VÀO (47)

IO (48) = 0

GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (tối thiểu 1)

GPIO_CLR (0) = DIGarray (tối thiểu 1)

đợi (DIG_WAIT)

ĐẦU VÀO (48)

tiếp theo tôi

endub

'người dùng TIMER1 (32 bit) để ngắt mỗi phút

INTERRUPT SUB TIMER1IRQ

T1_IR = 1 'Xóa ngắt

tối thiểu + = 1

nếu min> 59 thì

tối thiểu = 0

hr + = 1

nếu hr> 23 thì

hr = 0

endif

endif

ENDSUB

SUB ON_TIMER (max_cnt, dothis)

TIMER1_ISR = dothis + 1 'đặt chức năng của VIC - cần +1 cho hoạt động Ngón cái

SYSCON_SYSAHBCLKCTRL OR = (1 << 10) 'bật TIMER1

T1_PR = 0 'không có tỷ lệ đặt trước - sẽ điều chỉnh giá trị để có thời gian chính xác hơn

VICIntEnable OR = (1 << TIMER1_IRQn) 'Cho phép ngắt

T1_MR0 = max_cnt-1 'thiết lập số ms phù hợp

T1_MCR = 3 'Bật ngắt và khởi động lại

MR0 T1_IR = 1 'xóa ngắt

T1_TC = 0 'xóa bộ đếm hẹn giờ

T1_TCR = 1 'Bật TIMER1

ENDSUB

#define MINUT_PCLK 2880000000 '60 giây ở 48 MHz

chủ chốt:

giờ = 9

tối thiểu = 33

ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)

IO (7) = 0 'PWM một ngày nào đó - cần chuyển sang P0_22 ??

trong khi 1

display_time (0, hr, min)

vòng

Bước 4: Tạo kết nối Internet

Tạo kết nối Internet
Tạo kết nối Internet

Sử dụng ESP8266 cho kết nối WiFi. Sau khi xem xét các trang web một lúc, giải pháp tốt nhất là phiên bản gật đầu 0.9.6 và một esp8266_flasher cũ hơn hoạt động tốt nhất.

www.electrodragon.com/w/File:Nodemcu_20150704_firmware.zip

Sau đó, một trang web PHP đơn giản để phục vụ thời gian từ internet--

Máy chủ thời gian Coridium

<? php

$ timezone = htmlspecialchars ($ _ GET ["vùng"]); if ($ timezone == "")

$ timezone = 'Châu Mỹ / Los_Angeles';

$ tz_object = new DateTimeZone ($ múi giờ);

$ datetime = new DateTime ();

$ datetime-> setTimezone ($ tz_object);

echo "time is-", $ datetime-> format ('H: i: s');

tiếng vang "";

echo "date is-", $ datetime-> format ('m / d / Y');

?>

Trang web đó là để bạn có thể yêu cầu

coridium.us/time.php - và bạn cũng có được múi giờ Thái Bình Dương của Hoa Kỳ

hoặc

coridium.us/time.php?zone=Europe/London

Không kiểm tra lỗi và rất có thể sẽ không bao giờ

Và Lua đọc điều đó -

wifi.sta.config ("your_SSID", "your_PASSWORD")> wifi.sta.connect ()…

sk = net.createConnection (net. TCP, 0)

sk: on ("nhận", hàm (sck, c) print (c) end)

sk: connect (80, "coridium.us")

sk: send ("GET /time.php HTTP / 1.1 / r / nHost: coridium.us / r / nConnection: keep-living / r / nChấp nhận: * / * / r / n / r / n")

Và bạn lấy lại thời gian như

thời gian là-09: 38: 49, ngày là -12 / 31/2018

Bước 5: Thêm mã CƠ BẢN để phân tích thời gian từ web

Thêm mã cơ bản để phân tích thời gian từ trang web
Thêm mã cơ bản để phân tích thời gian từ trang web

Đây là một tập hợp con của chương trình BASIC đầy đủ, chương trình đầy đủ đó có thể được xem tại liên kết trong bước cuối cùng.

nếu strstr (build_gets, "time is-") = 0 thì

hr = build_gets (8) - "0"

nếu build_gets (9) = ":" thì

tối thiểu = (build_gets (10) - "0") * 10

tối thiểu + = build_gets (11) - "0"

khác

hr = hr * 10 + build_gets (9) - "0"

tối thiểu = (build_gets (11) - "0") * 10

tối thiểu + = build_gets (12) - "0"

endif

endif

Bước 6: Thêm cảm biến ánh sáng và mã để làm mờ màn hình

Thêm cảm biến ánh sáng và mã để làm mờ màn hình
Thêm cảm biến ánh sáng và mã để làm mờ màn hình
Thêm cảm biến ánh sáng và mã để làm mờ màn hình
Thêm cảm biến ánh sáng và mã để làm mờ màn hình
Thêm cảm biến ánh sáng và mã để làm mờ màn hình
Thêm cảm biến ánh sáng và mã để làm mờ màn hình

Một bóng bán dẫn hình ảnh đã được thêm vào để cảm nhận ánh sáng xung quanh trong phòng. Nếu không có nó, màn hình đủ sáng để đánh thức người chết (tôi) vào ban đêm.

Điện áp tương tự của đầu ra của bóng bán dẫn quang được đọc và điều chế độ rộng xung đặt độ sáng tổng thể của màn hình.

Bước 7: Nút lên đồng hồ và bắt đầu sử dụng

Nút lên đồng hồ và bắt đầu sử dụng nó
Nút lên đồng hồ và bắt đầu sử dụng nó

Phiên bản cuối cùng hiển thị thời gian và vào khoảng 3 giờ sáng, nó sẽ xuất hiện trên web để đọc thời gian hiện tại. Điều này cũng xử lý thời gian tiết kiệm ánh sáng ban ngày.

Động lực cho dự án này là sự cố mất điện mà chúng tôi gặp phải ở vùng núi và nhu cầu đặt lại đồng hồ hoặc thay pin để giữ cho chúng hoạt động.

Đây là một cái nhìn tổng quan về dự án.

Chi tiết đầy đủ của đồng hồ kết nối web DIY này.

Đề xuất: