Mục lục:

Loa Mood - một loa mạnh mẽ để phát nhạc tâm trạng dựa trên nhiệt độ môi trường: 9 bước
Loa Mood - một loa mạnh mẽ để phát nhạc tâm trạng dựa trên nhiệt độ môi trường: 9 bước

Video: Loa Mood - một loa mạnh mẽ để phát nhạc tâm trạng dựa trên nhiệt độ môi trường: 9 bước

Video: Loa Mood - một loa mạnh mẽ để phát nhạc tâm trạng dựa trên nhiệt độ môi trường: 9 bước
Video: Học tĩnh tâm, buông bỏ mọi muộn phiền với Maihue Radio 2024, Tháng mười hai
Anonim
Mood Speaker- một loa mạnh mẽ để phát nhạc tâm trạng dựa trên nhiệt độ môi trường
Mood Speaker- một loa mạnh mẽ để phát nhạc tâm trạng dựa trên nhiệt độ môi trường

Này đó!

Đối với dự án trường học của tôi tại MCT Howest Kortrijk, tôi đã làm Mood Speaker, đây là một thiết bị loa Bluetooth thông minh với các cảm biến khác nhau, bao gồm màn hình LCD và thanh dẫn WS2812b. Loa phát nhạc nền dựa trên nhiệt độ nhưng cũng có thể được sử dụng như một bluetooth thông thường. loa. Mọi thứ chạy trên Raspberry Pi (Cơ sở dữ liệu, Máy chủ web, Phần phụ trợ).

Vì vậy, tài liệu hướng dẫn này là một quá trình từng bước về cách tôi thực hiện dự án này trong 3 tuần. Vì vậy, nếu các bạn muốn tạo lại dự án của tôi, bạn có thể làm theo hướng dẫn

Hướng dẫn này là tài liệu đầu tiên của tôi mà tôi đã viết vì vậy nếu có bất kỳ thắc mắc nào, tôi sẽ cố gắng trả lời chúng nhanh nhất có thể!

GitHub của tôi:

Bước 1: Nguồn cung cấp

Raspberry Pi 3B & Thẻ SD 16GB

Toàn bộ dự án của tôi chạy trên Raspberry Pi 3B của tôi với một hình ảnh đã được định cấu hình, mà tôi sẽ giải thích ở bước sau (Bước 4: Thiết lập Raspberry Pi)

Màn hình LCD 16x2

Tôi đã sử dụng Màn hình LCD cơ bản để in nhiệt độ, độ sáng và địa chỉ IP của mình.

Datasheet:

Cảm biến nhiệt độ DS18B20

DS18B20 là cảm biến một dây đo nhiệt độ, được sản xuất bởi Maxim Integrated. Có 2 loại cảm biến DS18B20, chỉ dành cho thành phần (Tôi đã sử dụng) và phiên bản chống thấm nước, lớn hơn nhiều, nhưng đó không phải là thứ tôi cần cho dự án của mình, vì vậy tôi chỉ sử dụng thành phần đó. Cảm biến có thể đo nhiệt độ trong phạm vi từ -55 ° C đến + 125 ° C (-67 ° F đến + 257 ° F) và nó có độ chính xác 0,5 ° C từ -10 ° C đến + 85 ° C. Nó cũng có độ phân giải có thể lập trình được từ 9 bit đến 12 bit.

Datasheet:

MCP3008

Để đọc dữ liệu từ cảm biến LDR và PIR, tôi đã sử dụng MCP3008, là một bộ chuyển đổi tương tự sang kỹ thuật số 8 kênh 10 bit với giao diện SPI và khá dễ dàng để lập trình.

Datasheet:

Cảm biến chuyển động PIR

Để phát hiện khi có ai đó ra vào phòng của tôi, tôi đã sử dụng một bộ cảm biến hồng ngoại thụ động vì chúng dễ sử dụng và nhỏ.

Datasheet:

LDR

Tôi đã sử dụng một điện trở quang hoặc LDR (Điện trở giảm ánh sáng, hoặc điện trở phụ thuộc vào ánh sáng) để phát hiện mức độ sáng của căn phòng. Và cũng để bật Ledstrip của tôi khi nó chuyển sang bóng tối.

Loa - Đường kính 3”- 4 Ohm 3 Watt

Đây là hình nón loa tôi đã chọn sau khi tính toán Điện áp và Ampe nó sẽ cần và đây là một sự phù hợp hoàn hảo cho dự án Raspberry Pi của tôi, do Adafruit sản xuất.

Tổng quan:

Bộ khuếch đại Mono Mono MAX98357 I2S Class-D

Đây là bộ khuếch đại đi kèm với loa, không chỉ là bộ khuếch đại, nó còn là bộ chuyển đổi tín hiệu kỹ thuật số sang tương tự I2S, vì vậy nó còn là sự phù hợp hoàn hảo cho loa và hệ thống âm thanh của tôi.

Tổng quan:

Datasheet:

Arduino Uno

Arduino Uno là một bo mạch vi điều khiển mã nguồn mở dựa trên vi điều khiển Microchip ATmega328P, được sản xuất bởi Arduino.cc. Bo mạch Uno có 14 chân Digital, 6 chân analog và hoàn toàn có thể lập trình được với phần mềm Arduino IDE

Tổng quan:

Levelshifter

Đây là một bo mạch nhỏ đảm nhiệm việc giao tiếp giữa Arduino Uno và Raspberry Pi và các điện áp khác nhau, Arduino: 5V & Raspberry Pi: 3.3V. Điều này là cần thiết vì ledstrip được kết nối với Arduino và chạy trên đó, trong khi tất cả những thứ khác chạy trên Raspberry Pi.

WS2812B - Ledstrip

Đây là dải đèn led có 60 đèn LED RGB (bạn có thể mua dải dài hơn với nhiều đèn LED RGB hơn, nếu muốn). Đó là trong trường hợp của tôi được kết nối với Arduino Uno, nhưng cũng có thể được kết nối với nhiều thiết bị khác và thực sự đơn giản để sử dụng.

Datasheet:

GPIO T-Part, 1 Breadboard và rất nhiều jumperwires

Để kết nối mọi thứ tôi cần breadboards và jumperwires, tôi đã không sử dụng GPIO T-part nhưng bạn có thể sử dụng nó để biết rõ thùng nào đi đâu.

Bước 2: Sơ đồ và đấu dây

Sơ đồ và hệ thống dây điện
Sơ đồ và hệ thống dây điện
Sơ đồ và hệ thống dây điện
Sơ đồ và hệ thống dây điện

Để tạo giản đồ của tôi, tôi đã sử dụng Fritzing, đó là một chương trình bạn có thể cài đặt cho phép bạn tạo giản đồ thực sự dễ dàng trong các loại chế độ xem khác nhau. Tôi đã sử dụng breadboard và chế độ xem giản đồ.

Tải xuống Fritzing:

Đảm bảo mọi thứ được kết nối chính xác. Tôi đã sử dụng màu sắc để làm cho nó rõ ràng hơn một chút để biết nơi kết nối dây. Trong trường hợp của tôi, tôi đã sử dụng các màu khác nhau cho dây

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

Chúng tôi đang thu thập rất nhiều dữ liệu từ 3 cảm biến (Nhiệt độ từ DS18B20, Độ sáng từ LDR và Trạng thái từ cảm biến PIR). Vì vậy, tốt nhất là giữ tất cả dữ liệu này trong cơ sở dữ liệu. Tôi sẽ giải thích trong bước sau về cách cấu hình cơ sở dữ liệu (Bước 5: Chuyển tiếp Cơ sở dữ liệu của chúng tôi sang RPi!) Nhưng trước tiên, thiết kế hoặc ERD (Sơ đồ mối quan hệ thực thể) phải được thực hiện. Của tôi đã được chuẩn hóa với 3NF, đó là lý do tại sao chúng tôi chia các thành phần và lịch sử của các thành phần thành một bảng khác. Chúng tôi sử dụng cơ sở dữ liệu Âm nhạc để theo dõi các bài hát đã được nghe.

Nhìn chung, đây là một thiết kế cơ sở dữ liệu thực sự cơ bản và dễ dàng để làm việc thêm.

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

Vì vậy, bây giờ chúng ta đã hoàn thành một số khái niệm cơ bản về dự án. Hãy bắt đầu với việc thiết lập Raspberry Pi!

Phần 1: Cấu hình thẻ SD

1) Tải xuống phần mềm và tệp cần thiết

Bạn cần tải xuống 2 phần mềm và 1 hệ điều hành, tức là Raspbian để có quy trình hoàn chỉnh này. Phần mềm thứ nhất: Phần mềm đầu tiên là Win32 Disk Imager.

sourceforge.net/projects/win32diskimager/

Phần mềm thứ 2: Phần mềm thứ hai là SD Card Formatter.

www.sdcard.org/downloads/formatter_4/

Hệ điều hành Raspbian: Đây là hệ điều hành chính của Pi.

www.raspberrypi.org/downloads/raspberry-pi-os/

Giải nén tất cả các tệp vào màn hình nền.

2) Nhận thẻ SD và đầu đọc thẻ

Nhận thẻ SD tối thiểu 8GB lớp 10 với đầu đọc thẻ. Cắm thẻ đó vào đầu đọc thẻ và cắm thẻ đó vào cổng USB.

3) Định dạng thẻ SD

Mở SD Card Formatter và chọn ổ đĩa.

Nhấp vào định dạng và không thay đổi bất kỳ tùy chọn nào khác.

Khi định dạng xong, hãy nhấp vào OK.

4) Ghi hệ điều hành trên thẻ SD

Mở win32diskimager.

Duyệt qua tệp.img của Hệ điều hành Raspbian đã được giải nén từ tệp đã tải xuống.

Bấm vào mở và sau đó bấm vào Viết.

Nếu bất kỳ cảnh báo nào bật lên, hãy bỏ qua những cảnh báo đó bằng cách nhấp vào OK. Chờ cho quá trình ghi hoàn tất và có thể mất vài phút. Vì vậy, hãy kiên nhẫn.

n

5) Khi điều này được thực hiện, chúng tôi đã sẵn sàng thực hiện một số điều chỉnh cuối cùng trước khi đưa hình ảnh vào RPi của chúng tôi.

Đi tới thư mục thẻ SD của bạn, tìm kiếm tệp có tên 'cmdline.txt' và mở nó.

Bây giờ thêm 'ip = 169.254.10.1' trên cùng một dòng.

Lưu các tập tin.

Tạo tệp có tên 'ssh' không có phần mở rộng hoặc nội dung. (Cách dễ nhất là tạo tệp txt và xóa.txt sau đó)

Bây giờ mọi thứ đã được cài đặt trên thẻ SD, bạn có thể AN TOÀN đẩy nó ra khỏi máy tính của mình và đưa nó vào Raspberry Pi mà KHÔNG cần kết nối nguồn điện. Sau khi thẻ SD vào RPI, hãy kết nối cáp LAN từ máy tính của bạn với cổng LAN RPi, sau khi kết nối này, bạn có thể kết nối nguồn với RPi.

Phần 2: Cấu hình RPi

Bột trét

Bây giờ chúng ta muốn cấu hình Raspberry Pi của mình, điều này được thực hiện thông qua Putty.

Phần mềm Putty:

Sau khi tải xuống, hãy mở Putty và chèn IP '169.254.10.1' và Cổng '22' và loại kết nối: SSH.

Bây giờ cuối cùng chúng ta có thể mở giao diện dòng lệnh của mình và đăng nhập bằng thông tin đăng nhập dành cho người mới bắt đầu -> Người dùng: pi & Mật khẩu: raspberry. (Bạn nên thay đổi nó càng nhanh càng tốt. Đây là hướng dẫn cách thực hiện:

Raspi-config

Chúng tôi sẽ phải kích hoạt các giao diện khác nhau và để làm điều đó trước tiên chúng tôi phải nhập mã sau:

sudo raspi-config

Những thứ chúng ta cần kích hoạt nằm trong phần giao diện. Chúng tôi cần bật các giao diện sau:

  • Một dây
  • Nối tiếp
  • I2C
  • SPI

Đó là mọi thứ chúng tôi cần làm với raspi-config

Thêm WIFI của bạn

Đầu tiên, bạn phải root để lệnh sau trở thành root

sudo -i

Sau khi bạn root, hãy sử dụng lệnh sau: (Thay thế SSID bằng tên mạng và mật khẩu bằng mật khẩu mạng của bạn)

wpa_passphrase "ssid" "mật khẩu" >> /etc/wpa_supplicant/wpa_supplicant.conf

Trong trường hợp bạn làm sai điều gì đó, bạn có thể kiểm tra, cập nhật hoặc xóa mạng này bằng cách chỉ cần nhập lệnh sau:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Vì vậy, sau khi chúng tôi vào mạng của mình, hãy nhập giao diện ứng dụng khách WPA

wpa_cli

Chọn giao diện của bạn

giao diện wlan0

Tải lại tệp

cấu hình lại

Và cuối cùng, bạn có thể xem liệu bạn có được kết nối tốt hay không:

ip a

Phần 3: Cập nhật phần mềm cài đặt RPi +

Bây giờ chúng tôi đã kết nối với internet, cập nhật các gói đã được cài đặt sẽ là một bước đi thông minh, vì vậy hãy làm điều đó trước khi cài đặt các gói khác.

sudo apt-get cập nhật

sudo apt-get nâng cấp

Sau khi cập nhật RPi, chúng tôi sẽ phải cài đặt phần mềm sau:

Cơ sở dữ liệu MariaDB

sudo apt-get install mariadb-server

Máy chủ web Apache2

sudo apt install apache2

Python

update-Alternatives --install / usr / bin / python python /usr/bin/python3.7 1 update-Alternatives --install / usr / bin / python python / usr / bin / python3 2

Gói Python

Bạn sẽ phải cài đặt tất cả các gói này để làm cho chương trình phụ trợ hoạt động hoàn hảo:

  • Bình giữ nhiệt
  • Bình-Cors
  • Flask-MySql
  • Flask-SocketIO
  • Yêu cầu PyMySQL
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket

Thư viện loa

Để sử dụng loa với bộ khuếch đại, chúng tôi sẽ phải cài đặt một thư viện cho nó

curl -sS > | bash

Step 4: Reboot

After everything has been installed we will have to reboot the pi to make sure everything works correctly

sudo reboot

Step 5: Setting Up the Database to the RPi

Thiết lập cơ sở dữ liệu cho RPi!
Thiết lập cơ sở dữ liệu cho RPi!

Bây giờ chúng tôi đã cài đặt mọi thứ chúng tôi cần, hãy đặt Cơ sở dữ liệu mà chúng tôi thiết kế trên Raspberry Pi của chúng tôi!

Để thiết lập cơ sở dữ liệu, chúng tôi sẽ phải kết nối MySql và RPi. Đối với điều đó, chúng tôi sẽ mở MySQLWorkbench và tạo một kết nối mới. Khi nhìn vào hình ảnh, bạn sẽ phải thay đổi để thay đổi thông tin thành của bạn.

Nếu bạn vẫn chưa thay đổi bất kỳ điều gì, bạn có thể sử dụng SSH pi và raspberry, cho MySQL mysql và mysql.

Khi điều gì đó không rõ ràng, bạn cũng có thể làm theo hướng dẫn này:

Để xuất cơ sở dữ liệu của bạn, sẽ dễ dàng hơn bằng cách sử dụng PHPmyAdmin vì bạn có thể gặp rất nhiều lỗi khi thực hiện với MySql

Bước 6: Định cấu hình Bluetooth trên RPi của chúng tôi

Chúng tôi đang tạo ra một loa Mood mà chúng tôi cũng có thể sử dụng với âm nhạc của riêng mình để điều này dễ dàng hơn khi RPi

kết nối với bluetooth Tôi đã làm theo một hướng dẫn cho nó mà bạn có thể tìm thấy ở đây:

scribeles.net/streaming-bl Bluetooth-audio-fr…

Tôi đã viết tất cả mọi thứ ở đây cũng như cho tất cả những ai muốn tạo lại nó

Đang xóa bluealsa đã chạy

sudo rm / var / run / bluealsa / *

Thêm hồ sơ A2DP Vai trò bồn rửa

sudo bluealsa -p a2dp-chìm &

Mở giao diện bluetooth và bật bluetooth của bạn

bật nguồn bluetoothctl

Thiết lập tác nhân ghép nối

đại lý trên tác nhân mặc định

Làm cho RPi của bạn có thể khám phá được

có thể khám phá trên

  • Bây giờ từ thiết bị bluetooth của bạn, hãy tìm kiếm RPi và kết nối với nó.
  • Xác nhận việc ghép nối trên cả hai thiết bị, nhập 'có' vào miếng dán của bạn.
  • Cho phép dịch vụ A2DP, gõ lại 'yes'.
  • Sau khi hoàn thành việc này, chúng tôi có thể tin tưởng vào thiết bị của mình, vì vậy chúng tôi không cần phải thực hiện tất cả việc này mỗi khi chúng tôi muốn kết nối

tin cậy XX: XX: XX: XX: XX: XX (Địa chỉ mac bluetooth của bạn từ thiết bị nguồn của chúng tôi)

Nếu bạn muốn RPi của mình tiếp tục có thể phát hiện được, đó là lựa chọn của riêng bạn, nhưng tôi muốn tắt lại tính năng này để mọi người không thể cố gắng kết nối với hộp của bạn

có thể khám phá tắt

Sau đó, chúng ta có thể thoát khỏi giao diện bluetooth của mình

lối ra

Và cuối cùng là định tuyến âm thanh của chúng tôi: thiết bị nguồn của chúng tôi chuyển tiếp tới RPi của chúng tôi

bluealsa-aplay 00: 00: 00: 00: 00: 00

Bây giờ thiết bị của chúng tôi được kết nối với Raspberry của chúng tôi bằng bluetooth và bạn có thể kiểm tra nó bằng cách phát bất kỳ phương tiện nào, chẳng hạn như Spotify, v.v.

Bước 7: Viết chương trình phụ trợ hoàn chỉnh

Vì vậy, bây giờ thiết lập đã xong, cuối cùng chúng ta có thể bắt đầu viết chương trình phụ trợ của mình!

Tôi đã sử dụng Mã Visual Studio cho toàn bộ chương trình phụ trợ của mình, bạn chỉ cần đảm bảo rằng dự án Visual Studio của bạn được kết nối với Raspberry Pi, điều này có nghĩa là hệ thống mạng LAN của bạn phải được kết nối với RPi của bạn và để tạo kết nối SSH. (bạn có thể tìm thông tin về cách tạo kết nối từ xa tại đây:

Tôi đã sử dụng các lớp học của riêng mình và những lớp này cũng được đưa vào GitHub của tôi.

Trong tệp phụ trợ của tôi, tôi đã sử dụng các lớp khác nhau, vì vậy mọi thứ có thể được sử dụng riêng biệt và để mã chính của tôi không phải là một mớ hỗn độn với tất cả các luồng khác biệt. Tôi đã sử dụng luồng để chạy tất cả các lớp khác nhau cùng một lúc. Và ở phía dưới, bạn đã có tất cả các tuyến đường để chúng tôi có thể dễ dàng lấy dữ liệu trong giao diện người dùng của mình.

Bước 8: Viết giao diện người dùng (HTML, CSS & JavaScript)

Bây giờ phần phụ trợ đã hoàn thành, chúng ta có thể bắt đầu viết giao diện người dùng đầy đủ.

HTML và CSS khá khó khăn đối với tôi, tôi đã cố gắng hết sức để làm cho nó di động trước tiên vì tôi có thể kết nối với nó bằng bluetooth để thay đổi bài hát bằng Spotify. Vì vậy, sẽ dễ dàng kiểm soát hơn từ trang tổng quan trên thiết bị di động

Bạn có thể thiết kế bảng điều khiển của mình theo bất kỳ cách nào bạn muốn, tôi sẽ chỉ để lại mã và thiết kế của tôi ở đây, bạn có thể làm bất cứ điều gì bạn thích!

Và Javascript không dễ dàng hơn đối với tôi, đã làm việc với một số GET từ các tuyến phụ trợ của tôi, hàng tấn trình nghe sự kiện và một số cấu trúc socketio để lấy dữ liệu từ các cảm biến của tôi.

Bước 9: Xây dựng trường hợp của tôi và kết hợp tất cả lại với nhau

Xây dựng trường hợp của tôi và đặt tất cả lại với nhau
Xây dựng trường hợp của tôi và đặt tất cả lại với nhau
Xây dựng trường hợp của tôi và đặt tất cả lại với nhau
Xây dựng trường hợp của tôi và đặt tất cả lại với nhau
Xây dựng trường hợp của tôi và đặt tất cả lại với nhau
Xây dựng trường hợp của tôi và đặt tất cả lại với nhau
Xây dựng trường hợp của tôi và đặt tất cả lại với nhau
Xây dựng trường hợp của tôi và đặt tất cả lại với nhau

Đầu tiên tôi bắt đầu phác thảo cách tôi muốn vỏ máy trông như thế nào, điều quan trọng là nó phải đủ lớn để mọi thứ có thể vừa vặn, vì chúng tôi có một mạch lớn để đặt trong trường hợp nhưng phải nhỏ gọn để nó không bị hỏng ' không chiếm nhiều không gian

Tôi làm vỏ máy bằng gỗ, tôi nghĩ đây là cách làm dễ dàng nhất khi bạn không có nhiều kinh nghiệm về xây dựng vỏ máy và bạn cũng có rất nhiều thứ có thể làm với nó.

Tôi bắt đầu từ một tấm ván cũ mà tôi đã đặt xung quanh và chỉ bắt đầu cưa gỗ. Khi tôi đã có chiếc vỏ cơ bản của mình, tôi chỉ cần khoan lỗ trên nó (rất nhiều ở mặt trước của chiếc vỏ, như bạn có thể thấy trên hình và đặt một số đinh vào đó, nó thực sự là một chiếc hộp cơ bản, nhưng nó trông khá tuyệt. và phù hợp hoàn hảo. Tôi cũng quyết định sơn nó màu trắng để làm cho nó trông đẹp.

Và một khi trường hợp đã được hoàn thành, đã đến lúc kết hợp tất cả lại với nhau, như bạn có thể thấy trên hình cuối cùng! Nó hơi lộn xộn bên trong hộp, nhưng mọi thứ đều hoạt động và tôi không có nhiều không gian hơn, vì vậy tôi khuyên bạn có thể tạo một trường hợp lớn hơn nếu bạn đang tạo lại dự án của tôi.

Đề xuất: