Isi kandungan:

Mood Speaker - Pembesar Suara yang Kuat untuk Muzik Mood Dimainkan Berdasarkan Suhu Suasana: 9 Langkah
Mood Speaker - Pembesar Suara yang Kuat untuk Muzik Mood Dimainkan Berdasarkan Suhu Suasana: 9 Langkah

Video: Mood Speaker - Pembesar Suara yang Kuat untuk Muzik Mood Dimainkan Berdasarkan Suhu Suasana: 9 Langkah

Video: Mood Speaker - Pembesar Suara yang Kuat untuk Muzik Mood Dimainkan Berdasarkan Suhu Suasana: 9 Langkah
Video: Detik detik hp meledak 2024, Julai
Anonim
Mood Speaker - Pembesar Suara yang Kuat untuk Muzik Mood Dimainkan Berdasarkan Suhu Suasana
Mood Speaker - Pembesar Suara yang Kuat untuk Muzik Mood Dimainkan Berdasarkan Suhu Suasana

Hai ada!

Untuk projek sekolah saya di MCT Howest Kortrijk, saya membuat Mood Speaker ini adalah peranti pembesar suara Bluetooth pintar dengan sensor yang berbeza, LCD dan WS2812b ledstrip disertakan. Pembesar suara memainkan muzik latar berdasarkan suhu tetapi juga boleh digunakan sebagai bluetooth biasa pembesar suara. Semuanya berjalan di Raspberry Pi (Pangkalan Data, Pelayan Web, Backend).

Jadi arahan ini adalah proses langkah demi langkah bagaimana saya merealisasikan projek ini dalam 3 minggu. Oleh itu, jika anda ingin membuat semula projek saya, anda boleh mengikuti panduan

Ini adalah arahan pertama saya yang saya tulis jadi jika ada pertanyaan, saya akan cuba menjawabnya secepat mungkin!

GitHub Saya:

Langkah 1: Bekalan

Kad SD Raspberry Pi 3B & 16GB

Seluruh projek saya berjalan pada Raspberry Pi 3B saya dengan gambar yang dikonfigurasi, yang akan saya jelaskan pada langkah seterusnya (Langkah 4: Siapkan Raspberry Pi)

Paparan LCD 16x2

Saya menggunakan Paparan LCD asas untuk mencetak suhu, kecerahan dan alamat IP saya.

Lembaran Data:

Sensor Suhu DS18B20

DS18B20 adalah sensor satu wayar yang mengukur suhu, yang dihasilkan oleh Maxim Integrated. Terdapat 2 jenis sensor DS18B20, komponen sahaja (Yang saya gunakan) dan versi kalis air, yang jauh lebih besar, tetapi bukan itu yang saya perlukan untuk projek saya, jadi saya menggunakan komponen itu sahaja. Sensor dapat mengukur suhu dalam kisaran -55 ° C hingga + 125 ° C (-67 ° F hingga + 257 ° F) dan ia mempunyai ketepatan 0,5 ° C dari -10 ° C hingga + 85 ° C. Ia juga mempunyai resolusi yang dapat diprogramkan dari 9 bit hingga 12 bit.

Lembaran Data:

MCP3008

Untuk membaca data dari sensor LDR dan PIR, saya menggunakan MCP3008, yang merupakan penukar analog 8 bit ke digital 8 saluran dengan antara muka SPI dan cukup mudah diprogramkan.

Lembaran Data:

Sensor gerakan PIR

Untuk mengesan bila ada seseorang memasuki dan meninggalkan bilik saya, saya menggunakan sensor inframerah pasif kerana ia mudah digunakan dan kecil.

Lembar data:

LDR

Saya menggunakan fotoresistor atau LDR (Rintangan Penurunan Cahaya, atau perintang yang bergantung pada cahaya) untuk mengesan tahap kecerahan bilik di dalamnya. Dan juga untuk menghidupkan Ledstrip saya ketika gelap.

Pembesar suara - Diameter 3”- 4 Ohm 3 Watt

Ini adalah kerucut pembesar suara yang saya pilih setelah mengira Voltan dan Amper yang diperlukannya dan ini sangat sesuai untuk projek Raspberry Pi saya, yang dihasilkan oleh Adafruit.

Gambaran keseluruhan:

MAX98357 I2S Class-D Mono Amplifier

Ini adalah penguat yang disertakan dengan pembesar suara, bukan hanya penguat, tetapi juga penukar digital ke analog I2S, jadi ini juga sesuai untuk sistem pembesar suara & audio saya.

Gambaran keseluruhan:

Lembaran Data:

Arduino Uno

Arduino Uno adalah papan mikrokontroler sumber terbuka berdasarkan mikrokontroler Microchip ATmega328P, yang dihasilkan oleh Arduino.cc. Papan Uno mempunyai 14 pin Digital, 6 pin analog dan dapat diprogram sepenuhnya dengan perisian Arduino IDE

Gambaran keseluruhan:

Pengubah tahap

Ini adalah papan kecil yang mengurus komunikasi antara Arduino Uno dan Raspberry Pi dan voltan yang berbeza, Arduino: 5V & Raspberry Pi: 3.3V. Ini diperlukan kerana ledstrip disambungkan ke Arduino dan berjalan di sana, sementara semua barang lain berjalan di Raspberry Pi.

WS2812B - Ledstrip

Ini adalah jalur pendahuluan dengan 60 LED RGB (anda boleh membeli jalur yang lebih panjang dengan lebih banyak LED RGB, jika anda mahu). Yang dalam kes saya disambungkan ke Arduino Uno, tetapi juga boleh disambungkan ke banyak peranti lain dan sangat mudah digunakan.

Lembaran Data:

GPIO T-Part, 1 Breadboard dan banyak jumperwire

Untuk menyambungkan semua yang saya perlukan papan roti dan kabel jumper, saya tidak menggunakan bahagian GPIO T tetapi anda boleh menggunakannya untuk mengetahui dengan jelas tong sampah ke mana.

Langkah 2: Skematik dan Pendawaian

Skematik dan Pendawaian
Skematik dan Pendawaian
Skematik dan Pendawaian
Skematik dan Pendawaian

Untuk membuat skematik saya, saya menggunakan Fritzing, ia adalah program yang boleh anda pasangkan yang membolehkan anda membuat skema yang sangat mudah dalam pelbagai jenis pandangan. Saya menggunakan papan roti dan pandangan skematik.

Muat turun Fritzing:

Pastikan semuanya disambung dengan betul. Saya menggunakan warna untuk menjadikannya sedikit lebih jelas untuk mengetahui di mana menghubungkan wayar. Dalam kes saya, saya menggunakan warna yang berbeza untuk wayar

Langkah 3: Reka Bentuk Pangkalan Data

Reka Bentuk Pangkalan Data
Reka Bentuk Pangkalan Data

Kami mengumpulkan banyak data dari 3 sensor (Suhu dari DS18B20, Kecerahan dari LDR dan Status dari PIR-sensor). Jadi yang terbaik adalah menyimpan semua data ini dalam pangkalan data. Saya akan menerangkan di kemudian hari bagaimana mengkonfigurasi pangkalan data (Langkah 5: Meneruskan Pangkalan Data Kami ke RPi!) Tetapi pertama-tama reka bentuk atau ERD (Entity Relationship Diagram) mesti dibuat. Tambang saya dinormalisasi dengan 3NF itulah sebabnya kami membahagikan komponen dan sejarah komponen menjadi jadual lain. Kami menggunakan pangkalan data Muzik untuk melacak lagu-lagu yang telah didengarkan.

Secara keseluruhan, ini adalah reka bentuk pangkalan data yang sangat asas dan mudah untuk terus dikerjakan.

Langkah 4: Sediakan Raspberry Pi

Oleh itu, sekarang kita telah menyelesaikan beberapa asas projek. Mari mulakan dengan menyiapkan Raspberry Pi!

Bahagian 1: Mengkonfigurasi Kad SD

1) Muat turun Perisian dan Fail yang Diperlukan

Anda perlu memuat turun 2 perisian dan 1 OS iaitu Raspbian untuk proses lengkap ini.1 perisian pertama: Perisian pertama ialah Win32 Disk Imager.

sourceforge.net/projects/win32diskimager/

Perisian ke-2: Perisian kedua ialah SD Card Formatter.

www.sdcard.org/downloads/formatter_4/

OS Raspbian: Ini adalah sistem operasi utama Pi.

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

Ekstrak semua fail ke desktop.

2) Dapatkan Kad SD dan Pembaca Kad

Dapatkan kad SD kelas 8GB minimum dengan pembaca kad. Masukkan kad itu ke pembaca kad dan pasangkannya ke port USB.

3) Format Kad SD

Buka SD Card Formatter dan pilih pemacu.

Klik pada format dan jangan ubah pilihan lain.

Apabila pemformatan selesai, klik OK.

4) Tuliskan OS pada Kad SD

Buka win32diskimager.

Semak imbas fail.img Raspbian OS yang diekstrak dari fail yang dimuat turun.

Klik pada terbuka dan kemudian klik Tulis.

Sekiranya ada amaran muncul, abaikan mereka dengan mengklik OK. Tunggu penulisan selesai dan mungkin memerlukan beberapa minit. Oleh itu, bersabarlah.

n

5) Setelah ini selesai, kami siap membuat beberapa penyesuaian terakhir sebelum memasukkan gambar ke dalam RPi kami.

Pergi ke direktori kad SD anda, cari fail bernama 'cmdline.txt' dan buka.

Sekarang tambahkan 'ip = 169.254.10.1' pada satu baris yang sama.

Simpan fail.

Buat fail bernama 'ssh' tanpa perluasan atau kandungan. (Cara termudah adalah dengan membuat fail txt dan membuang.txt selepas itu)

Setelah semuanya dipasang pada kad SD, anda boleh mengeluarkannya dengan selamat dari komputer anda dan memasukkannya ke dalam Raspberry Pi TANPA menyambungkan kuasa. Setelah kad SD masuk ke RPI, sambungkan kabel LAN dari komputer anda ke port LAN RPi, setelah ini disambungkan, anda boleh menyambungkan kuasa ke RPi.

Bahagian 2: Mengkonfigurasi RPi

Dempul

Sekarang kami ingin mengkonfigurasi Raspberry Pi kami, ini dilakukan melalui Putty.

Perisian putty:

Setelah dimuat turun, buka Putty dan masukkan IP '169.254.10.1' dan Port '22' dan jenis sambungan: SSH.

Sekarang kita akhirnya dapat membuka antara muka baris perintah dan log masuk dengan maklumat log masuk pemula -> Pengguna: pi & Kata Laluan: raspberry. (Sebaiknya ubahnya secepat mungkin. Berikut adalah panduan bagaimana:

Raspi-konfigurasi

Kita perlu mengaktifkan antara muka yang berbeza dan untuk melakukan itu kita harus terlebih dahulu menaip kod berikut:

sudo raspi-config

Perkara yang perlu kita aktifkan ada di bahagian antara muka. Kita perlu mengaktifkan antara muka berikut:

  • Satu wayar
  • Bersiri
  • I2C
  • SPI

Itu semua yang perlu kami lakukan dengan raspi-config

Menambah WIFI anda

Pertama, anda harus menjadi root agar perintah berikut menjadi root

sudo -i

Setelah anda root, gunakan arahan berikut: (Ganti SSID dengan nama dan kata laluan rangkaian anda dengan kata laluan rangkaian anda)

wpa_passphrase "ssid" "kata laluan" >> /etc/wpa_supplicant/wpa_supplicant.conf

Sekiranya anda melakukan sesuatu yang salah, anda boleh memeriksa, mengemas kini atau menghapus rangkaian ini dengan memasukkan perintah berikut:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Oleh itu, setelah memasuki rangkaian kami, mari masuk ke antara muka klien WPA

wpa_cli

Pilih antara muka anda

antara muka wlan0

Muat semula fail

susun semula

Dan akhirnya anda dapat melihat sama ada anda berhubung dengan baik:

ip a

Bahagian 3: Mengemas kini perisian pemasangan RPi +

Sekarang kita sudah tersambung ke internet, mengemas kini pakej yang sudah dipasang akan menjadi langkah yang bijak, jadi mari kita lakukan terlebih dahulu sebelum memasang pakej lain.

sudo apt-get kemas kini

sudo apt-get peningkatan

Setelah mengemas kini RPi, kita harus memasang perisian berikut:

Pangkalan Data MariaDB

sudo apt-get pasang mariadb-server

Pelayan Web Apache2

sudo apt pasang apache2

Python

kemas kini-alternatif - pasang / usr / bin / python python /usr/bin/python3.7 1 alternatif-kemas kini - pasang / usr / bin / python python / usr / bin / python3 2

Pakej Python

Anda perlu memasang semua pakej ini agar backend berfungsi dengan sempurna:

  • Kelalang
  • Kelalang-Cors
  • Flask-MySql
  • Flask-SocketIO
  • Permintaan PyMySQL
  • Python-socketio
  • RPi. GPIO
  • Memberi
  • Gevent-websocket

Perpustakaan pembesar suara

Untuk menggunakan pembesar suara dengan penguat, kita perlu memasang perpustakaan untuknya

keriting -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

Menyiapkan Pangkalan Data ke RPi!
Menyiapkan Pangkalan Data ke RPi!

Sekarang setelah kami memasang semua yang kami perlukan, mari letakkan Pangkalan Data kami yang kami reka pada Raspberry Pi kami!

Untuk menyiapkan pangkalan data, kita perlu menghubungkan MySql dan RPi. Untuk itu kami akan membuka MySQLWorkbench dan membuat sambungan baru. Semasa melihat gambar, anda perlu menukar untuk menukar maklumat menjadi maklumat anda.

Sekiranya anda belum mengubah apa-apa, anda boleh menggunakan SSH pi dan raspberry, untuk MySQL mysql dan mysql.

Apabila sesuatu tidak jelas, anda juga boleh mengikuti tutorial ini:

Untuk mengeksport pangkalan data anda semestinya lebih mudah menggunakan PHPmyAdmin kerana anda dapat banyak kesalahan melakukannya dengan MySql

Langkah 6: Mengkonfigurasi Bluetooth pada RPi Kami

Kami membuat pembesar suara Mood, yang juga dapat kami gunakan dengan muzik kami sendiri jadi ini lebih mudah ketika RPi

disambungkan ke bluetooth Saya mengikuti tutorial untuknya yang anda dapati di sini:

scribles.net/streaming-bluetooth-audio-fr…

Saya menulis semuanya di sini juga untuk semua orang yang ingin membuatnya semula

Mengeluarkan bluealsa yang sudah berjalan

sudo rm / var / run / bluealsa / *

Tambah profil A2DP Peranan sinki

sudo bluealsa -p a2dp-sink &

Buka antara muka bluetooth dan hidupkan bluetooth anda

kuasa bluetoothctl dihidupkan

Siapkan agen pasangan

ejen pada ejen lalai

Jadikan RPi anda dapat ditemui

boleh ditemui pada

  • Sekarang dari peranti bluetooth anda, cari RPi dan sambungkan dengannya.
  • Sahkan pasangan pada kedua-dua peranti, ketik 'ya' di dempul anda.
  • Mengizinkan perkhidmatan A2DP, ketik 'ya' sekali lagi.
  • Setelah ini selesai, kita boleh mempercayai peranti kita, jadi kita tidak perlu melalui semua ini setiap kali kita ingin menyambung

amanah XX: XX: XX: XX: XX: XX (Alamat mac bluetooth anda dari peranti sumber kami)

Sekiranya anda mahu RPi anda terus dapat ditemui, itu adalah pilihan anda sendiri, tetapi saya lebih suka mematikannya lagi, supaya orang tidak dapat mencuba untuk berhubung dengan kotak anda

boleh ditemui

Kemudian kita boleh keluar dari antara muka bluetooth kita

jalan keluar

Dan akhirnya penghalaan audio kami: peranti sumber kami meneruskan ke RPi kami

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

Sekarang peranti kami disambungkan ke Raspberry kami dengan bluetooth dan anda seharusnya dapat mengujinya dengan memainkan media apa pun misalnya Spotify, dll.

Langkah 7: Menulis Backend Lengkap

Jadi sekarang penyiapannya selesai, akhirnya kita dapat mula menulis program backend kita!

Saya menggunakan Kod Visual Studio untuk keseluruhan backend saya, anda hanya perlu memastikan projek Visual Studio anda disambungkan ke Raspberry Pi anda, ini bermaksud kabel LAN anda harus disambungkan ke RPi anda dan untuk membuat sambungan SSH. (maklumat mengenai cara membuat sambungan jauh boleh didapati di sini:

Saya menggunakan kelas saya sendiri dan ini juga termasuk dalam GitHub saya.

Dalam fail backend saya menggunakan kelas yang berbeza, jadi semuanya boleh digunakan secara berasingan dan supaya kod utama saya tidak berantakan dengan semua benang yang berbeza. Saya menggunakan threading untuk menjalankan semua kelas yang berbeza sekaligus. Dan di bahagian bawah anda mendapat semua laluan sehingga kami dapat dengan mudah mendapatkan data di frontend kami.

Langkah 8: Menulis Frontend (HTML, CSS & JavaScript)

Setelah backend selesai, kita boleh mula menulis bahagian depan penuh.

HTML dan CSS agak sukar bagi saya, saya melakukan yang terbaik untuk menjadikannya mudah alih terlebih dahulu kerana saya dapat menyambungnya dengan bluetooth untuk menukar lagu dengan Spotify. Oleh itu, lebih mudah dikendalikan dari papan pemuka mudah alih

Anda boleh merancang papan pemuka anda dengan cara yang anda mahu, saya hanya akan meninggalkan kod dan reka bentuk saya di sini, anda boleh melakukan apa sahaja yang anda suka!

Dan Javascript tidak lebih mudah bagi saya, bekerja dengan beberapa GET dari laluan backend saya, banyak pendengar acara dan beberapa struktur socketio untuk mendapatkan data dari sensor saya.

Langkah 9: Membina Kes Saya dan Menyatukannya Semua

Membina Kes Saya dan Menyatukannya Semua
Membina Kes Saya dan Menyatukannya Semua
Membina Kes Saya dan Menyatukannya Semua
Membina Kes Saya dan Menyatukannya Semua
Membina Kes Saya dan Menyatukannya Semua
Membina Kes Saya dan Menyatukannya Semua
Membina Kes Saya dan Menyatukannya Semua
Membina Kes Saya dan Menyatukannya Semua

Saya mula-mula mula membuat sketsa bagaimana saya mahu casing itu kelihatan, sesuatu yang penting ialah ia harus cukup besar agar semuanya sesuai, kerana kita mempunyai litar besar untuk dimasukkan ke dalam casing itu tetapi harus tetap padat sehingga tidak berlaku. '' mengambil banyak ruang

Saya membuat sarung itu dari kayu, saya rasa ini adalah yang paling senang dikerjakan apabila anda tidak mempunyai banyak pengalaman dengan membina kes dan anda juga mempunyai banyak perkara yang boleh anda lakukan dengannya.

Saya bermula dari papan lama yang saya terbaring dan baru mula melihat kayu. Sebaik sahaja saya mempunyai beg asas saya, saya hanya perlu mengorek lubang di dalamnya (banyak di bahagian depan casing, seperti yang anda dapat lihat di gambar dan meletakkan beberapa kuku di dalamnya, ini adalah kotak yang sangat asas, tetapi kelihatannya sangat sejuk dan sangat sesuai. Saya juga memutuskan untuk melukisnya putih agar kelihatan cantik.

Dan setelah kes itu selesai, sudah tiba masanya untuk menyatukannya, seperti yang anda lihat pada gambar terakhir! Ini agak berantakan di dalam kotak, tetapi semuanya berfungsi dan saya tidak mempunyai lebih banyak ruang, jadi saya menasihati anda untuk membuat casing yang lebih besar sekiranya anda membuat projek saya.

Disyorkan: