Mục lục:

Đánh thức tôi - Đồng hồ báo thức thông minh: 6 bước
Đánh thức tôi - Đồng hồ báo thức thông minh: 6 bước

Video: Đánh thức tôi - Đồng hồ báo thức thông minh: 6 bước

Video: Đánh thức tôi - Đồng hồ báo thức thông minh: 6 bước
Video: Nhu cầu cơ bản, đeo vòng tay thông minh hay hơn là đồng hồ thông minh !!! 2024, Tháng mười một
Anonim
Wake Me Up - Đồng hồ báo thức thông minh
Wake Me Up - Đồng hồ báo thức thông minh

Wake me up là một chiếc đồng hồ báo thức thông minh cũng có thể được sử dụng như một chiếc đèn thông minh.

Đèn led dây tích hợp mô phỏng ánh sáng tự nhiên chiếu vào phòng của bạn. Điều này cho phép bạn bắt đầu ngày mới một cách bình tĩnh và tự nhiên.

Đồng hồ báo thức cũng được trang bị màn hình 4 * 7 phân đoạn để đọc thời gian, loa để thức dậy với bản nhạc yêu thích của bạn, một nút cảm ứng, một ldr để điều chỉnh độ sáng của bảng điều khiển và một cảm biến nhiệt độ mà bạn có thể sử dụng để xem nhiệt độ phòng của bạn.

Quân nhu

Danh sách các mức giá chính xác mà tôi đã trả có thể được tìm thấy ở đây:

Bộ vi điều khiển và máy tính:

Raspberry Pi 4Tôi đã sử dụng raspberry pi 4 4GB, tuy nhiên, bất kỳ mô hình Raspberry pi 3+ nào cũng đều ổn

Arduino Uno

Arduino được sử dụng để điều khiển hiển thị đồng hồ 4 * 7 đoạn.

Cảm biến:

  • TMP36: cảm biến nhiệt độ
  • LDR: Điện trở phụ thuộc ánh sáng

Bộ truyền động:

  • WS2801: Thanh dẫn có thể nhấn riêng lẻ
  • Màn hình LCD: Màn hình LCD 16 * 2.
  • Màn hình đồng hồ 4 * 7 đoạn

IC của:

  • 74HC595: Đăng ký dịch chuyển cho màn hình LCD
  • MCP3008: Bộ chuyển đổi 8-bit Analog sang kỹ thuật số
  • Bộ chuyển đổi mức logic: Được sử dụng để giao tiếp giữa raspi và arduino

Những thứ khác:

  • Một bộ khuếch đại adafruit MAX9744 để cung cấp năng lượng cho loa
  • Bất kỳ loa nào, tôi đã sử dụng loa toàn dải Visaton 4Ohm 8Watt (Điều 2240)
  • Nguồn điện 9volt để cấp nguồn cho bộ khuếch đại
  • Nguồn điện 5volt để cung cấp cho ledstrip và các thành phần khác. Hãy lưu ý rằng mỗi led trong ledstrip có thể giảm 60mA, vì vậy hãy đảm bảo nguồn điện của bạn là đủ.
  • Một vài điện trở 220Ohm
  • Một breadboard nhỏ để đặt trong trường hợp của bạn.

Công cụ:

  • Một mỏ hàn.
  • Một cái gì đó để làm vỏ (tôi đã sử dụng máy in 3d với PLA và PETG và một số miếng dán vinyl để có được hiệu ứng bằng gỗ.)

Bước 1: Thiết lập Raspberry Pi

Raspberry pi là bộ điều khiển vi mô chính của chúng tôi.

Raspberry pi chạy máy chủ web cục bộ của chúng tôi, cơ sở dữ liệu, điều khiển ledstrip, loa,…

Phần 1: Cài đặt Raspbian

Sử dụng hướng dẫn này để cài đặt raspbian:

Đảm bảo SSH được bật

Phần 2: Kết nối

Để kết nối với Internet, bạn cần phải có tài khoản truy cập vào thiết bị đầu cuối của raspberry pi. Tôi khuyên bạn nên sử dụng bột bả. Trong loại thiết bị đầu cuối:

wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

"YourNetwork" là tên mạng wifi của bạn và "YourSSID" là mật khẩu của mạng.

Khi bạn đã thêm mạng, hãy thử khởi động lại Raspberry Pi.

Nhập lệnh 'ping 8.8.8.8', lệnh này sẽ gửi một gói tin đến máy chủ google nếu bạn nhận được phản hồi mạng của bạn đã được thiết lập và hoạt động!

Phần 3: Cài đặt các chương trình cần thiết

Chúng tôi sẽ cần một số cài đặt một số chương trình bổ sung để khởi động và chạy dự án này.

Trước khi bắt đầu, hãy chạy 2 lệnh này để đảm bảo rằng mọi thứ đã được nâng cấp.

cập nhật apt sudo

nâng cấp apt sudo

Có lẽ sẽ mất một lúc.

Apache

sudo apt install apache2 -y

sudo apt install php libapache2-mod-php -y

MariaDB

sudo apt install mariadb-server mariadb-client -y

sudo apt install php-mysql -y

PHPMyAdmin

sudo apt install phpmyadmin -y

Pip Python

Chúng tôi cần cài đặt pip để kích hoạt một số thư viện python

pip3 cài đặt mysql-connector-python

pip3 cài đặt flask-socketio

pip3 cài đặt cors bình

pip3 cài đặt gevent

pip3 cài đặt gevent-websocket

Bước 2: Kết nối thiết bị điện tử

Kết nối các thiết bị điện tử
Kết nối các thiết bị điện tử
Kết nối các thiết bị điện tử
Kết nối các thiết bị điện tử

Tôi đã thêm 2 lược đồ, 1 là lược đồ breadboard cho mục đích thử nghiệm. Tôi khuyên bạn nên xây dựng sơ đồ đầu tiên và cố gắng để mã hoạt động.

Tôi đã thêm các tệp fritzing bên dưới.

Bước 3: Thiết kế cơ sở dữ liệu

Thiết kế cơ sở dữ liệu
Thiết kế cơ sở dữ liệu

Đây là sơ đồ cơ sở dữ liệu tôi đã thực hiện. Các từ được viết bằng tiếng Hà Lan nhưng tôi sẽ giải thích chi tiết từng bảng.

Bảng 1: tblMuziek

Đây là một bảng khá cơ bản. Nó lưu tên nghệ sĩ, tên bài hát và tên tệp của một bài hát.

Bảng 2: tblLedstrip

Bảng này theo dõi trạng thái hiện tại của ledstrip, nó lưu trạng thái của ledstrip. Chúng tôi cần điều này cho chức năng đèn thông minh.

Bảng 3: tblSensoren

Bảng này theo dõi các cảm biến trong báo động của chúng tôi. Chúng tôi lưu trữ tên của cảm biến và kênh của MCP3008

Bảng 4: tblMeting

Bảng này lưu trữ các giá trị của các cảm biến của chúng tôi cùng với thời gian của chúng.

Bảng 5: tblWekker

Bảng này lưu trữ mật khẩu và tên đồng hồ báo thức của bạn (ví dụ: Phòng ngủ) Bảng này không bắt buộc nhưng tôi đã thêm nó vào vì tôi cho rằng bạn sẽ có nhiều hơn 1 đồng hồ báo thức trong nhà của mình.

Bảng 6: tblAlarm

Đây có lẽ là bảng quan trọng nhất. Nó theo dõi báo thức bạn đã đặt và đồng hồ phải làm gì (phát bài hát nào, chuỗi đèn led nào, nó sẽ báo vào những ngày nào,…). Nó là rất nhập khẩu để theo dõi 2 ngày. 1 ngày được sử dụng để lưu trữ vào giờ báo thức sẽ kêu. Người còn lại theo dõi lần cuối cùng báo thức kêu. Để biết nó sẽ diễn ra vào ngày nào trong tuần, tôi đã sử dụng một varchar có chứa một số gồm 7 chữ số. Chữ số đầu tiên là thứ hai, thứ ba thứ hai,… Nếu là 1 thì nó sẽ tắt, nếu là 0 thì không. Ví dụ: 1111100, điều này có nghĩa là báo thức này sẽ kêu vào Thứ Hai, Thứ Ba, Thứ Tư, Thứ Năm và Thứ Sáu.

Bước 4: Thiết lập Arduino

Bước này rất dễ dàng. Sẽ có một liên kết đến github của tôi ở bước tiếp theo, nơi bạn có thể tải xuống tệp arduino.

Chương trình làm gì?

Chương trình chờ dữ liệu nối tiếp đến từ số pi.

Ngay sau khi dữ liệu được nhận, nó sẽ phân tích cú pháp qua chuỗi và gửi lại xác nhận cho số pi.

Chuỗi sẽ có dạng như sau: '1201' điều này có nghĩa là 12:01. Tôi đã sử dụng màn hình hiển thị 7 phân đoạn cực dương chung, điều này có nghĩa là các Chữ số phải cao và A, B, C, D, E, F, G và DP phải ở mức thấp để bật chúng. Nếu bạn sử dụng một cực âm thông thường, bạn chỉ nên thay đổi HIGH thành LOW & LOW thành HIGH.

Đây là liên kết có thêm thông tin về cách hoạt động của màn hình 7 phân đoạn. (với việc sử dụng thư viện):

www.instructables.com/id/Using-a-4-digit-7…

Đây là một liên kết về 7 phân đoạn hiển thị mà không cần sử dụng thư viện:

create.arduino.cc/projecthub/SAnwandter1/p…

Bước 5: Phần phụ trợ Raspberry Pi

Raspberry Pi Backend
Raspberry Pi Backend

Bạn có thể tải xuống mã của tôi bằng Github. (https://github.com/VanHevelNico/WakeMeUp)

Cách cài đặt chương trình:

Phần phụ trợ được viết bằng python sử dụng flask. Bạn có thể tạo một dịch vụ tự động khởi động chương trình này (app.py).

Bạn nên đặt mã giao diện người dùng trong tệp html của máy chủ apache mà chúng tôi đã tải xuống trước đó. (/ var / html)

Chương trình hoạt động như thế nào?

Khi đồng hồ báo thức được bật, hãy truy cập địa chỉ ip của đồng hồ của bạn (nó sẽ được hiển thị trên màn hình LCD)

Ngay sau khi bạn truy cập địa chỉ ip đó trong trình duyệt, máy tính của bạn sẽ gửi một yêu cầu socket.io tới chương trình phụ trợ nói rằng một ứng dụng khách đã kết nối. Khi chương trình phụ trợ nhận được điều này, một vài chuỗi sẽ bắt đầu mà tôi sẽ giải thích bên dưới.

Cài đặt

Điều này phức tạp hóa tất cả các đối tượng cần thiết.

GetTemp

Thao tác này đọc kênh 0 của mcp3008 và chuyển đổi dữ liệu nhị phân sang nhiệt độ thực tế và đưa nó vào cơ sở dữ liệu với ngày và giờ hiện tại.

GetTempGrafiek

Điều này nhận 20 giá trị trước đây của cảm biến nhiệt độ và phát ra giao diện người dùng.

tijd_sturen

Phương pháp này lấy thời gian hiện tại và kiểm tra xem phút đã thay đổi hay chưa. Nếu nó đã thay đổi, chương trình sẽ gửi thời gian mới đến arduino bằng cách sử dụng giao tiếp nối tiếp

checkAlarmen

Đây là phương pháp quan trọng nhất. Nó nhận tất cả các báo thức đã được bật và kiểm tra xem có bất kỳ báo thức nào trong số này phải hoạt động từ bây giờ đến 5 phút trước hay không (đây là bộ đệm để đảm bảo mỗi báo thức sẽ hoạt động khi cần thiết). Nếu báo thức phải kêu, chúng tôi sẽ bắt đầu nhạc, bảng điều khiển, … Chúng tôi đọc điện trở nhạy lực liên tục và khi giá trị giảm xuống dưới 1000 (đọc fsr được nhấn) Chúng tôi bật báo thức và cập nhật báo thức trong cơ sở dữ liệu. Chúng tôi đặt ngày báo thức kêu lần cuối cùng thành ngày hiện tại.

statusLight

Phương thức này phát ra giá trị của ledstrip và bật ledstrip nếu cần.

lichtAanpassen

Đây là một phương pháp bổ sung để đảm bảo bảng điều khiển và đèn báo động không xung đột.

Bước 6: Trường hợp

Trường hợp
Trường hợp
Trường hợp
Trường hợp
Trường hợp
Trường hợp

Liên kết đến các tệp của tôi có thể được tìm thấy tại đây:

Tôi đã sử dụng máy in 3d để in vỏ. Nó được in thành 4 phần khác nhau:

  1. Tấm phía trước có lỗ cho loa và một số bức tường cho màn hình 7 phân đoạn
  2. Vòng ngoài cho thanh dẫn trong PETG vận chuyển.
  3. Phần giữa
  4. Mặt sau có lỗ cho màn hình LCD và lỗ cho dây cáp.

Trong mô hình ban đầu không có lỗ cho màn hình 7 phân đoạn tuy nhiên điều này là cần thiết vì nếu không thì ánh sáng của màn hình 7 phân đoạn sẽ không chiếu qua.

Như bạn có thể thấy sau khi đặt tất cả các thành phần vào, tôi đã sử dụng miếng dán vinyl với vẻ ngoài bằng gỗ để làm cho kết quả cuối cùng trông đẹp hơn. Màn hình đồng hồ tỏa sáng nhờ nhãn dán tạo ra hiệu ứng rất đẹp mắt.

Đề xuất: