• Cần giúp đỡ? Hãy gọi:   0938.788.458
Tất cả danh mục
DIY

Tự làm đồng hồ báo thức với Arduino

Tự làm đồng hồ báo thức với Arduino

Đây là đồng hồ báo thức được lắp ráp với vi điều khiển. Đồng hồ báo thức hiển thị giờ, ngày, tin nhắn tùy chỉnh theo ngày, cũng như các biểu tượng để chỉ báo thức đang hoạt động. Có hai báo thức và cảnh báo phát ra sau nút ‘X’.

Động lực đằng sau nó bắt nguồn từ mối quan tâm của tôi về việc ngủ gần điện thoại di động / điện thoại thông minh (bạn biết đấy, sóng điện thoại không tốt) chỉ để thức dậy đúng giờ vào buổi sáng. Tôi muốn vợ tôi không sử dụng điện thoại di động / điện thoại thông minh của mình cho điều đó. Khi tôi đang học một số thiết bị điện tử, tôi đã coi đây là cơ hội để chế tạo một thiết bị tùy chỉnh, có thể phát ra những âm thanh hay để đánh thức chúng tôi, dù chúng tôi đi làm hay đi làm về.

Cuối cùng, đó là một dự án rất thú vị đối với tôi và một món quà ban đầu cho cô ấy. Tôi khuyên bạn nên xây dựng dự án này để tìm hiểu làm thế nào nhiều loại linh kiện điện tử hoạt động và có thể được sử dụng cùng nhau.

Chức năng:

  • Hiển thị giờ / ngày và ngày trong tuần .
  • Hiển thị giai đoạn Mặt trăng của ngày hiện tại.
  • Âm thanh phát mỗi giờ sắc nét (từ 8 giờ sáng đến 10 giờ tối).
  • Âm thanh phát mỗi ngày vào lúc 10 giờ tối để đi ngủ.
  • Hai báo thức cấu hình.
  • Báo thức có thể được đặt cho các ngày trong tuần, cuối tuần, chỉ một lần hoặc tất cả các ngày .
  • 10 phút báo lại theo mặc định và tùy chọn thêm 10 phút báo lại.
  • Đếm ngược để cảnh báo bằng âm thanh khi có thứ gì đó sẵn sàng (ví dụ: bữa ăn).
  • Hiển thị tin nhắn tùy chỉnh cả ngày.
  • Hiển thị cảnh báo nào đang hoạt động (nếu có) và liệu đếm ngược có hoạt động hay không.
  • Đồng hồ báo thức có thể bị ngắt kết nối với nguồn điện và tất cả các cấu hình (bao gồm cả giờ / ngày và báo thức) được lưu trữ và gọi lại một cách an toàn.
  • Khi cài đặt phút (giờ hoặc báo thức), mỗi lần nhấn phím Lên sẽ chuyển tiếp 5 phút, trong khi mỗi lần nhấn phím Xuống sẽ lùi 1 phút. Điều này giúp thiết lập thời gian nhanh hơn, ví dụ, nó tránh việc phải bấm 30 lần một phím đi từ 1 đến 31, thay vào đó, bạn có thể làm điều đó bằng cách nhấn Lên 6 lần.
  • Mọi thứ được hiển thị bằng tiếng Tây Ban Nha, nhưng bạn có thể điều chỉnh mã nguồn và thay thế nó bằng ngôn ngữ của mình.
  • Báo thức trong tuần bị vô hiệu hóa vào các ngày lễ (Colombia). Tất nhiên, bạn có thể đặt ngày lễ của quốc gia mình trong mã nguồn.
  • Bạn có thể tắt bất kỳ âm thanh nào (trong khi đang phát) bằng cách nhấn bất kỳ phím nào.

Bước 1: Linh kiện

Để xây dựng đồng hồ báo thức này, chúng tôi sử dụng các linh kiện sau (bên cạnh các vật liệu cơ bản như dây dẫn, cây hàn và các loại tương tự):

  • Vi điều khiển Wiring S hoặc Arduino đủ mạnh (không phải Arduino UNO). Yêu cầu chính phải được đáp ứng là bộ nhớ flash lớn hơn 32KB.
  • Loa 0,5W 8Ω
  • Bộ điều hợp thẻ MicroSD và thẻ MicroSD (của tôi có dung lượng lưu trữ 1GB, tuy nhiên, dự án này không yêu cầu nhiều như vậy). Thẻ MicroSD chủ yếu được sử dụng để lưu trữ các tệp âm thanh, dễ dàng vượt quá khả năng lưu trữ vi điều khiển thông thường. Chúng tôi cũng sử dụng nó để lưu trữ các tệp văn bản có chứa thông điệp tùy chỉnh.
  • Đồng hồ thời gian thực DS3231
  • LCD 16×2 ( Màn hình tinh thể lỏng)
  • Bộ điều hợp nguồn AC / DC (Đầu ra: 9V-1A) Được sử dụng để cấp nguồn cho đồng hồ báo thức.
  • Tụ 0.22μF và 100μF .
  • Transistor P2N2222A.
  • Điện trở 100Ω.

Bước 2: Mạch chính

Hình ảnh của mạch chính

LCD cần một số chân từ vi điều khiển: 5V, Ground, đầu vào analog (cho các nút ấn) và 6 chân digital. Trong Wires S, chúng tôi đã kết nối các chân 10 đến 15 với các chân LCD. Xem các thư từ trong sơ đồ Fritzing.

Bộ khuyếch đại âm thanh

Chúng tôi kết nối 5V và Ground khác từ Wires S với một mạch nhỏ cung cấp năng lượng cho bộ chuyển đổi thẻ MicroSD và loa. Đồng hồ được cấp nguồn bằng một trong các chân 3,3V từ Wires S. Âm thanh phát ra từ loa có thể không đủ lớn để đánh thức bạn dậy. Chúng tôi thực sự đã cố gắng sử dụng một loạt các bộ khuếch đại tinh vi, nhưng không thành công (không thể loại bỏ tiếng ồn). Mạch hoạt động tốt nhất đối với chúng tôi là một mạch rất đơn giản: Bộ khuếch đại âm thanh một transistor. Lưu ý rằng chân 6 Wires S  cung cấp đầu ra âm thanh.

Kết nối đồng hồ DS3231 với Wires S rất dễ dàng vì các cổng SDA và SCL được ghi lại trong cả hai phần. Bộ điều hợp thẻ MicroSD được kết nối theo cách này: MISO-> 22, MOSI-> 21, SCK-> 23 và CS-> 20.

Nếu hình ảnh sơ đồ Fritzing không đủ rõ ràng, chỉ cần tải xuống tệp sơ đồ Fritzing ban đầu và tương tác với các bộ phận và dây để đảm bảo kết nối.

reloko_wiring.fzz

Bước 3: Code và IDE

Code của dự án có thể được truy cập từ kho lưu trữ điện tử của tôi trong GitHub . Vui lòng kiểm tra code, sử dụng nó.

Chúng tôi sử dụng Wires v.1.0.1-dev làm IDE (Môi trường phát triển tích hợp), hiện chỉ khả dụng trên Windows và Mac OS.

Để sử dụng các thư viện Arduino phổ biến như TMRpcm (để phát lại các tệp WAV từ thẻ SD) trên Wires, người ta cần phải điều chỉnh code của họ, ví dụ, bằng thư viện Wires.h thay vì Arduino.h. Vì hóa ra hơi khó chịu, chúng tôi cũng chia sẻ toàn bộ thư mục Wire, bao gồm các thư viện được định cấu hình để tránh cho bạn quá trình như vậy.

EEPROM

Để làm cho cài đặt giờ và báo thức có thể thực hiện được, chúng tôi cũng sử dụng EEPROM (Bộ nhớ chỉ đọc có thể lập trình có thể xóa bằng điện) (2KB) được cung cấp bởi Wires S. Code được tối ưu hóa theo cách mà nó cũng không thể ghi vào cùng một địa chỉ EEPROM nhiều lần (bộ nhớ EEPROM có tuổi thọ dựa trên số lượng thao tác đọc / ghi). Chẳng hạn, khi cài đặt phút, chúng tôi chỉ viết số cuối cùng chứ không viết số trung gian. Chúng tôi sử dụng 11 địa chỉ EEPROM để lưu trữ 4 biến (đã bật, loại, giờ và phút) cho báo thức 1, 4 (đã bật, loại, giờ và phút) để cảnh báo 2 và 3 (đã bật, giờ và phút) để cảnh báo chế độ.

Tính toán buổi tối

Chúng tôi mượn hàm để tính buổi tối từ http://www.ben-daglish.net/moon.shtml và điều chỉnh nó thành code C ++. Đây là một chức năng dựa trên thuật toán của John Conway, thường đưa ra giờ tối chính xác. Nó không chính xác, nhưng lỗi không đáng kể cho mục đích của chúng tôi.

wiring-v1.0.1-dev.7z

Bước 4: Lắp ráp tất cả các linh kiện điện tử vào hộp

 

Thiết kế của vỏ ngoài được thực hiện bằng ứng dụng web Maker Case . Nó thực sự làm cho mọi thứ dễ dàng hơn, vì bạn có thể đặt kích thước hộp của mình, cũng như xác định các lỗ tròn và hình chữ nhật. Thiết kế cuối cùng được cắt bằng gỗ MDF với độ dày 5mm.

Màn hình LCD hơi khó sửa, chúng tôi quyết định để một số lỗ hình chữ nhật ở bên phải và bên trái của hộp, nhưng cuối cùng đây là điều chúng tôi rất tiếc, vì cạnh của các mặt đó không phải là tốt nhất, và chúng tôi đã phải đặt một số băng trắng để làm cho chúng trông tốt hơn. Tất nhiên bạn có thể chọn để lấy thiết kế của chúng tôi hoặc cải thiện nó.

Chúng tôi đã sử dụng một số ốc vít để cố định các linh kiện điện tử vào các cạnh hộp và keo dán gỗ để dán các mặt hộp. Loa đã được cố định bằng silicone.

Như bạn có thể quan sát, tất cả các cài đặt của đồng hồ báo thức được điều khiển bằng năm nút. Có bốn nút điều hướng (Lên, Xuống, Trái, Phải) và một nút Chế độ / Nhập. Các nút được làm bằng một thanh gỗ balsa với độ dày 4mm. Chúng tôi quyết định không sơn các nút vì nó tương đối rõ ràng chức năng của chúng là gì, nhưng tất nhiên bạn có thể điều chỉnh phần này của thiết kế.

cortar_5mm.pdf

cortar_5mm.svg

Bước 5: Nhân vật đặc biệt (tùy chỉnh)

Chúng tôi cần một số ký tự đặc biệt để hiển thị trạng thái báo thức và các giai đoạn trong ngày. Có chỗ cho 8 ký tự đặc biệt trong bộ nhớ flash (PROGMEM). Đối với mỗi ký tự đặc biệt, chúng tôi đã sử dụng một công cụ web ( http://fusion94.org/lcdchargeen/ ) để có được biểu diễn nhị phân của nó.

Chúng tôi đã xác định các ký tự này: Các giai đoạn trong ngày (4), mặt cười (1), trái tim (1), nút (1), chuông (1).

Bước 6: Tệp âm thanh và tin nhắn tùy chỉnh

Trình chơi Video

 

Media error: Format(s) not supported or source(s) not found

Tải về tập tin: https://thuephongdayhoc.com/wp-content/uploads/2019/05/Custom-message-in-my-Alarm-Clock.mp4?_=1

 

00:00

 

00:00

 

 

Phát lại các tệp âm thanh với thư viện TMRpcm yêu cầu định dạng WAV (8 bit, 16kHz, MONO). Chúng tôi đã sử dụng một số tệp mp3 từ Internet và chuyển đổi chúng sang định dạng cần thiết bằng trình chuyển đổi âm thanh trực tuyến rất hiệu quả. Mặc dù WAV 8 bit-16kHz là định dạng hạn chế, âm thanh chắc chắn có thể nghe được; bạn có thể xem và nghe video trong bước đầu tiên. Thư viện chúng tôi sử dụng cho phép chúng tôi đặt âm lượng cho từng âm thanh, rất hữu ích để cung cấp cho một số âm thanh mạnh hơn (ví dụ: đối với âm thanh cảnh báo). Âm thanh phải được lưu trữ trong thẻ MicroSD. Tôi định dạng bằng hệ thống tập tin FAT16.

Mặt khác, tin nhắn tùy chỉnh có thể được lập trình cho mỗi ngày. Hãy nghĩ về những ngày đặc biệt như sinh nhật, ngày lễ, một cuộc hẹn bạn không nên bỏ lỡ, bạn đặt tên cho nó. Mỗi tin nhắn phải được lưu trữ dưới dạng tệp văn bản trong thẻ MicroSD. Tin nhắn phải kết thúc bằng dấu chấm phẩy, sẽ không được hiển thị. Tên của tệp đó cho biết Khi nào sẽ hiển thị nó trong màn hình LCD, nghĩa là tên tệp là một ngày (không có phần mở rộng), chẳng hạn như 151123 (đối với thông báo sẽ được hiển thị vào ngày 23 tháng 11 năm 2015) hoặc 1225 (đối với tin nhắn sẽ được hiển thị mỗi ngày 25 tháng 12). Theo nguyên tắc thông thường, kinh độ của các tin nhắn nên ngắn hơn 25 ký tự, nhưng không có gì ngăn cản Wires hiển thị các tin nhắn rất dài.

Bước 7: Hoàn thiện

Để sơn hộp bạn có thể cần một vài lớp sơn trắng. Chúng tôi đã thêm một số trái tim nhỏ màu đỏ vào các mặt khác nhau của hộp, chúng tôi đã tìm thấy chúng trong cửa hàng nơi chúng tôi đã cắt gỗ MDF.

Chúng tôi cũng dán một lớp nút chai 3 mm vào phía dưới cùng của hộp để làm cho nó khó di chuyển hơn khi nhấn nút.

Cuối cùng, chúng tôi đã thêm một lớp bọt (lấy từ hộp máy tính xách tay) ở lỗ sau để các linh kiện điện tử không tiếp xúc với bụi.