Đồng hồ để bàn thông minh cần những khối nào?
- Trung cấp
- Bài viết
- Từ 16 tuổi
- 7 phút đọc

Đồng hồ để bàn thông minh cần khối giữ giờ, màn hình, kết nối mạng và nguồn cấp. Thiết kế minh họa này dùng bo ESP32 để lấy giờ Internet và thời tiết theo vị trí đã chọn. Mặt đồng hồ vẫn phải đọc được khi mạng gián đoạn, với trạng thái dữ liệu rõ ràng.
Mục lục
- Mặt đồng hồ và bo điều khiển
- Dịch vụ mạng
- Cụm nguồn
Bạn sẽ học được gì
- Tách phần giữ giờ khỏi phần lấy dữ liệu mạng.
- Lập cấu hình phần cứng cho màn hình nhỏ và màn hình lớn.
- Xác định bản đầu đủ dùng, dễ lập trình và đo kiểm.
Cần biết trước
Nên đọc về bo ESP32 và vòng lặp Arduino, đồng thời biết GPIO là gì.
Các khối trao đổi dữ liệu ra sao?
Bo điều khiển gom dữ liệu đã có rồi đưa cho phần vẽ màn hình; mỗi nguồn dữ liệu có trạng thái riêng. ESP32 có chế độ trạm để tham gia mạng Wi-Fi trong nhà. SNTP nhận giờ từ máy chủ NTP rồi đặt giờ hệ thống. API thời tiết nhận tọa độ và các biến cần lấy, trả dữ liệu JSON cho firmware xử lý.
Trong thiết kế đề xuất, giờ có trạng thái chưa biết, đã đồng bộ hoặc đang chạy tiếp từ lần đồng bộ gần nhất. Thời tiết có thể chưa có, còn hạn hoặc đã cũ. Mất Wi-Fi chỉ đổi trạng thái mạng; chương trình không xóa giờ đang chạy hoặc thay nhiệt độ bằng giá trị giả.
Luồng khởi động bắt đầu bằng đọc cấu hình và hiện mặt đồng hồ. Sau đó mới thử nối mạng, đồng bộ giờ, tải thời tiết rồi thay phần dữ liệu tương ứng. Nếu yêu cầu mạng thất bại, giao diện hiện dấu dữ liệu cũ và vẫn cho người dùng bật đèn, đọc giờ hoặc mở cài đặt.
- Giờ cục bộ
- Thời tiết
- Trạng thái riêng
- Mặt hiển thị
Bản đầu nên chọn phần cứng thế nào?
Chọn bo có hỗ trợ phần mềm phù hợp, LCD đơn sắc có thư viện phù hợp và nguồn USB trước khi tối ưu bản chạy pin. Đây là lựa chọn trong ví dụ minh họa, chưa phải bộ linh kiện đã đo thử.
| Khối | Bản đầu đề xuất | Điều cần kiểm trước khi mua |
|---|---|---|
| Điều khiển | Bo ESP32 dùng Arduino core | Đúng bo trong công cụ nạp và đủ chân ngoại vi |
| Hiển thị | LCD đồ họa đơn sắc có thư viện hỗ trợ | Vùng nhìn, bộ điều khiển, giao tiếp, điện áp và đèn nền |
| Giữ giờ | Giờ hệ thống sau lần đồng bộ mạng | Yêu cầu giữ giờ sau mất toàn bộ nguồn |
| Vị trí | Chọn địa danh khi cài đặt | Lưu tên, tọa độ và múi giờ cùng nhau |
| Nguồn | USB, sau đó đánh giá cụm pin hoàn chỉnh | Dòng tải, đường cấp nguồn và khả năng vừa chạy vừa sạc |
| Điều khiển | Các nút Menu, + và − | Thao tác nhấn, giữ, lưu và hủy có dễ hiểu không |
| Chuông | Bộ phát âm thanh phù hợp với bo | Khả năng điều khiển và dòng tải phù hợp với module đã chọn |
| Cập nhật | Dự phòng vùng flash cho OTA ngay từ đầu | Bản mới có vừa vùng cập nhật và có đường phục hồi không |
Màn nhỏ dành phần lớn diện tích cho giờ. Bản lớn giữ thứ tự thông tin nhưng tăng kích thước chữ thực tế và khoảng cách giữa các vùng. Cần thử đọc từ vị trí đặt ghế hoặc giường, thay vì quyết định chỉ bằng đường chéo màn hình.
Phần giữ giờ cần chốt sớm. Bộ định thời RTC của chip giữ giờ qua chế độ ngủ, nhưng bị đặt lại khi cấp nguồn lại. Nếu cần rút hết nguồn rồi khởi động lúc mất mạng mà vẫn đúng giờ, thiết kế cần RTC ngoài có nguồn dự phòng phù hợp với module đã chọn.
- Bản gọn
- Bản nhìn xa
Làm sao giữ firmware đơn giản từ đầu?
Bản đầu gồm hiển thị giờ, cài vị trí, thời tiết, trạng thái nguồn và một lịch báo thức chỉnh bằng nút. Bổ sung OTA để nhận chức năng mới và bản sửa lỗi sau khi đường nạp có dây đã ổn định. Đề xuất dùng Arduino core cùng thư viện hỗ trợ đúng bộ điều khiển màn hình. Phần vẽ nhận bản dữ liệu chung, không tự gọi mạng hoặc tự đọc pin.
Tách mã thành các phần giữ giờ, thời tiết, cấu hình và hiển thị. Đổi màn hình đi qua bộ chuyển đổi hiển thị và hồ sơ bố cục. Cấu hình phần cứng ghi vùng vẽ, font và chân kết nối; cấu hình người dùng ghi địa danh và chế độ đèn.
Làm theo thứ tự: vẽ giờ giả để kiểm bố cục, đọc giờ cục bộ, đồng bộ mạng, thêm thời tiết, rồi mới thêm chế độ ngủ. Mỗi bước giữ lại phần đã chạy. Tối ưu pin trước khi biết màn hình và nút hoạt động ra sao sẽ khiến lỗi khó phân biệt hơn.
Điều kiện hoàn thành bản đầu là mất mạng vẫn xem giờ, khởi động lại vẫn nhớ địa danh, lỗi thời tiết có dấu nhận biết. Đổi cỡ màn không làm thay đổi cách lấy dữ liệu. Thời lượng pin chỉ trở thành kết quả sau khi đo trên cả thiết bị.
Trong phần mở rộng đề xuất, bộ báo thức đọc giờ hợp lệ cùng lịch đã lưu, không chờ phản hồi thời tiết. Ba nút mở menu, sửa từng trường rồi xác nhận; giữ Menu hủy bản sửa. Chỉ khi chọn Cài Wi-Fi mới mở trang nhập thông tin dài bằng điện thoại. Bản nhìn xa giữ cùng quy tắc thao tác và hiện rõ chuông đang bật hay tắt.
Bộ OTA nhận yêu cầu từ mục Cập nhật, báo phiên bản cùng thay đổi rồi chờ xác nhận cài. Thiết kế giữ bản ứng dụng trước để phục hồi khi cấu hình bootloader hỗ trợ và đã kiểm thử. Hoãn cập nhật lúc chuông đang hoạt động hoặc gần giờ hẹn; sau khởi động phải kiểm đọc cấu hình, màn và nút trước khi chấp nhận bản mới. Bài firmware mô tả chi tiết luồng này.
- Dữ liệu và trạng thái
- Bộ chuyển đổi hiển thị
- Màn hình đang dùng
Ví dụ trong đời sống
Một đồng hồ cạnh giường được người nhà cài địa danh bằng điện thoại. Khi khởi động có mạng, nó lấy giờ và thời tiết rồi hiện giờ lớn cùng biểu tượng ngoài trời. Đây là diễn tiến thiết kế minh họa.
Đêm đó Wi-Fi tắt. Đồng hồ giữ giờ cục bộ và báo dữ liệu thời tiết đã cũ. Sáng hôm sau mạng trở lại, chương trình tải dữ liệu mới rồi bỏ dấu cũ. Nếu toàn bộ nguồn từng ngắt và chưa có RTC dự phòng, màn hình báo chưa có giờ hợp lệ cho đến khi đặt giờ lại.
Hiểu lầm thường gặp
Có Wi-Fi là cần kết nối liên tục. Lịch kết nối là quyết định của firmware. Thiết kế này tách đọc giờ khỏi các đợt tải mạng.
Mọi LCD đen trắng thay thế nhau được. Cần đối chiếu bộ điều khiển, giao tiếp, điện áp và cách chiếu sáng với đúng module. Đổi đường chéo không bảo đảm giữ nguyên dây nối hay thư viện.
Câu hỏi thường gặp
Có cần GPS trong đồng hồ để bàn không?
Bản thiết kế này lấy tọa độ từ địa danh đã chọn. Chỉ bổ sung GPS khi yêu cầu thật sự cần thiết bị tự xác định lại vị trí.
Có cần máy chủ riêng để bắt đầu không?
Bản mẫu có thể gọi dịch vụ giờ và API thời tiết trực tiếp. Khi đưa thành sản phẩm, cần đánh giá điều khoản dịch vụ và cách cập nhật firmware.
Bản nhỏ và bản lớn dùng cùng mã được không?
Có thể dùng chung dữ liệu và trạng thái. Bộ điều khiển màn hình, font và bố cục vẫn cần cấu hình, kiểm tra riêng.
Thuật ngữ trong bài
Tên tiếng Việt, tên tiếng Anh và nghĩa dùng trong bài. Di chuột, chạm hoặc dùng phím Tab tới từ có gạch chân chấm để xem giải thích ngay khi đọc.
- SNTPSimple Network Time Protocol
- Giao thức dùng để đồng bộ giờ hệ thống với máy chủ thời gian.
- RTCreal-time clock
- Khối giữ giờ cục bộ; khả năng tiếp tục chạy phụ thuộc phần cứng và nguồn cấp.
Bài này chưa được đánh dấu là đã xem
Thấy nội dung sai hoặc chưa an toàn?
Báo cho quản trị viên qua email. Thư có sẵn tên bài và đường dẫn.
Có thể bạn cũng quan tâm
Trung cấpĐồng bộ giờ và thời tiết theo vị trí cho đồng hồ
Lấy giờ mạng, chọn địa danh, lưu tọa độ và xử lý thời tiết cũ; phân biệt mất Wi-Fi với mất giờ và nhiệt độ ngoài trời với trong phòng.
Internet vạn vật (IoT)7 phút đọc
Trung cấpNguồn USB, pin sạc và thời lượng đồng hồ LCD
Lập ngân sách điện cho đồng hồ LCD, phân biệt cấp tải với sạc pin và đo tác động của Wi-Fi, đèn nền, chế độ ngủ lên thời lượng.
Internet vạn vật (IoT)7 phút đọc
Trung cấpViết firmware đồng hồ đơn giản với Arduino
Thiết kế firmware đồng hồ với menu nút bấm, báo thức lưu lịch và cập nhật OTA; xử lý mất mạng, xác minh bản mới và phục hồi khi lỗi.
Internet vạn vật (IoT)14 phút đọc
Trung cấpKiểm thử mẫu đồng hồ LCD trước khi làm vỏ
Lập ca thử giờ, báo thức, nút bấm, OTA và chuyển nguồn cho đồng hồ LCD; kiểm phục hồi cấu hình, đọc chữ và đo điện trước khi làm vỏ.
Internet vạn vật (IoT)9 phút đọc
Nguồn
Các nguồn này viết cho người đọc lớn hơn. Nếu thấy khó, hãy đọc cùng người lớn.
- Wi-Fi API — Arduino-ESP32(mở trong thẻ mới)
EspressifBậc C: nguồn khácĐọc ngày 1 tháng 11, 2026
- System Time — ESP-IDF(mở trong thẻ mới)
EspressifBậc C: nguồn khácĐọc ngày 1 tháng 11, 2026
- Weather Forecast API(mở trong thẻ mới)
Open-MeteoBậc C: nguồn khácĐọc ngày 1 tháng 11, 2026
