Isi kandungan:

Slimbox - Pembesar suara Bluetooth Pintar !: 10 Langkah (dengan Gambar)
Slimbox - Pembesar suara Bluetooth Pintar !: 10 Langkah (dengan Gambar)

Video: Slimbox - Pembesar suara Bluetooth Pintar !: 10 Langkah (dengan Gambar)

Video: Slimbox - Pembesar suara Bluetooth Pintar !: 10 Langkah (dengan Gambar)
Video: Samsung Level Box Slim.Стерео режим двух колонок. 2024, November
Anonim
Slimbox - Pembesar suara Bluetooth Pintar!
Slimbox - Pembesar suara Bluetooth Pintar!

Hai ada!

Untuk projek sekolah saya di MCT Howest Kortrijk, saya membuat peranti pembesar suara Bluetooth pintar dengan sensor yang berbeza, termasuk cincin LCD dan RGB NeoPixel. Semuanya berjalan di Raspberry Pi (Pangkalan Data, Pelayan Web, Backend).

Oleh itu, dalam arahan ini saya akan menunjukkan kepada anda bagaimana saya membuat projek ini dalam 3 minggu, selangkah demi selangkah, jadi jika ada antara anda yang ingin membuat semula projek saya, anda boleh melakukannya dengan mudah!

Ini juga arahan pertama saya, jika anda mempunyai sebarang pertanyaan, saya akan cuba menjawabnya secepat mungkin!

GitHub Saya:

Langkah 1: Bekalan

Bekalan
Bekalan
Bekalan
Bekalan
Bekalan
Bekalan

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:

Sensor potensiometer

Potensiometer adalah perintang dengan tiga terminal yang boleh disesuaikan secara manual dengan hanya memutar bahagian atas sensor. Kedudukan bahagian atas menentukan voltan keluaran potensiometer.

LSM303 Accelerometer + Breakout Kompas

Papan pelarian LSM303 adalah gabungan akselerometer tiga paksi dan magnetometer / kompas, yang dihasilkan oleh Adafruit. Ia digunakan dengan antara muka I2C Raspberry Pi.

Gambaran keseluruhan:

Lembaran Data:

MCP3008

Untuk membaca data dari potensiometer saya, saya menggunakan MCP3008, yang merupakan analog 8 bit 10 bit ke digital converter dengan antara muka SPI dan cukup mudah diprogramkan.

Lembaran Data:

Pembesar suara - Diameter 3”- 8 Ohm 1 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 cincin NeoPixel disambungkan ke Arduino dan berjalan di sana, sementara semua barang lain berjalan di Raspberry Pi.

Cincin NeoPixel RGB

Ini adalah cincin kecil yang dipenuhi dengan 12 led RGB (anda boleh membeli cincin yang lebih besar 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.

Gambaran keseluruhan:

Paparan LCD 16x2

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

Lembaran Data:

Kad SD Raspberry Pi 3B + & 16GB

Seluruh projek saya berjalan pada Raspberry Pi 3B + saya dengan gambar yang dikonfigurasi, yang akan saya bantu anda konfigurasikan kemudian dalam arahan saya.

GPIO T-Part, 2 Papan Roti dan banyak jumperwire

Untuk menyambungkan semua yang saya perlukan papan roti dan jumperwire, saya menggunakan bahagian GPIO T sehingga saya mempunyai lebih banyak ruang dan jelas pin mana.

Langkah 2: Skematik dan Pendawaian

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

Untuk skema saya, saya menggunakan Fritzing, ini adalah program yang boleh anda pasangkan yang membolehkan anda membuat skema yang sangat mudah dalam pelbagai jenis pandangan.

Muat turun Fritzing:

Oleh itu, pastikan anda menghubungkan semuanya dengan cara yang betul! Dalam kes saya, warna wayar tidak sama seperti pada skema.

Langkah 3: Reka Bentuk Pangkalan Data

Reka Bentuk Pangkalan Data
Reka Bentuk Pangkalan Data

Kami mengumpulkan banyak data dari 3 sensor yang disambungkan, jadi kami memerlukan pangkalan data untuk menyimpan data dan sensor. Kemudian kami akan melihat bagaimana mengkonfigurasi pangkalan data pada Raspberry Pi dan cara menambahkan data ke dalamnya. Tetapi pertama-tama reka bentuk pangkalan data atau ERD (Entity Relationship Diagram) harus dibuat dan saya juga dinormalisasi dengan 3NF. Itulah sebabnya kami membahagikan sensor ke meja lain dan bekerjasama dengan ID.

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

Langkah 4: Menyiapkan Raspberry Pi

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

Konfigurasi Kad SD

Pertama, anda memerlukan Kad SD 16GB di mana anda boleh meletakkan gambar anda dan program untuk memuat naik gambar permulaan ke kad SD.

Perisian:

Mula gambar:

Oleh itu, apabila ini dimuat turun:

  1. Letakkan kad SD anda di komputer anda.
  2. Buka Win32 yang baru anda muat turun.
  3. Pilih fail gambar Raspbian yang juga baru anda muat turun.
  4. Klik 'tulis' ke lokasi kad SD anda.

Ini mungkin memerlukan sedikit masa, bergantung pada perkakasan anda. Setelah ini selesai, kami siap membuat beberapa penyesuaian terakhir sebelum memasukkan gambar ke dalam RPi kami.

  1. Pergi ke direktori kad SD anda, cari fail bernama 'cmdline.txt' dan buka.
  2. Sekarang tambahkan 'ip = 169.254.10.1' pada satu baris yang sama.
  3. Simpan fail.
  4. Buat fail bernama 'ssh' tanpa peluasan atau kandungan.

Kini anda dapat SELAMAT mengeluarkan kad SD dari komputer anda dan memasukkannya ke dalam Raspberry Pi TANPA 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.

Sekarang kami mahu mengawal 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.

Raspi-konfigurasi

sudo raspi-config

Yang sangat penting untuk projek ini ialah bahagian antara muka, kita harus mengaktifkan banyak antara muka yang berbeza, mengaktifkan semua antara muka berikut:

  • Satu wayar
  • SPI
  • I2C
  • Bersiri

Sekarang kita sudah selesai dengan raspi-config, mari kita cuba dan membuat sambungan dengan internet.

Sambungan Wi-Fi

Pertama, anda mesti menjadi root untuk perintah berikut

sudo -i

Setelah anda root, gunakan arahan berikut. SSID adalah nama rangkaian anda dan kata laluan jelas kata laluan.

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

Sekiranya anda melakukan kesalahan, anda boleh memeriksa, mengemas kini atau menghapus rangkaian ini dengan memasukkan fail itu:

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

Kemas kini & naik taraf

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

Pangkalan Data MariaDB

Pasang pelayan pangkalan data MariaDB:

sudo apt-get pasang mariadb-server

Pelayan Web Apache2

Pasang pelayan web Apache2:

sudo apt pasang apache2

Python

Pasang Python:

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

kemas kini-alternatif - 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
  • PyMySQL
  • Permintaan
  • Python-socketio
  • RPi. GPIO
  • Memberi
  • Gevent-websocket
  • Ujson
  • Wsaccel

Perpustakaan pembesar suara

Pasang perpustakaan pembesar suara dari Adafruit:

curl -sS https://raw.githubusercontent.com/adafruit/Raspbe… | bash

Masa untuk but semula

rebo sudo

Langkah 5: Maju Kejuruteraan Pangkalan Data Kami ke RPi

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

Oleh itu, pertama-tama kita perlu memajukan pangkalan data kita di meja kerja MySql, sambil melakukan itu, salin kod pangkalan data penuh anda dan hapus semua perkataan 'yang kelihatan' di dalamnya. Jadi setelah disalin, mari buka dempul lagi, log masuk dan taip:

sudo mysql

dan sekarang anda berada di antara muka mysql, salin kod pangkalan data anda di dalamnya dan tekan enter.

Sekarang kita hanya perlu membuat pengguna

BUAT PENGGUNA 'pengguna' DIKENALI OLEH 'pengguna';

MEMBERI SEMUA KEISTIMEWAAN PADA *. * KEPADA 'pengguna';

Sekarang but semula.

Oleh itu, semuanya harus disiapkan sekarang, anda juga boleh membuat sambungan dengan Pi dan MySql Workbench anda, jadi lebih mudah untuk memeriksa semua data dalam jadual anda.

Langkah 6: Mengkonfigurasi Bluetooth pada RPi Kami

Kami membuat pembesar suara Bluetooth, jadi ini bermaksud media dihantar dari sumber kami ke Raspberry Pi dan ini dapat dilakukan dengan mudah, mari masuk ke dalamnya!

Sumber saya untuk sambungan bluetooth:

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

bluetoothctl

hidupkan

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

Kini peranti kami disambungkan sepenuhnya ke Raspberry kami dan anda seharusnya dapat memainkan media dari peranti sumber anda pada pembesar suara Pi.

Langkah 7: Menulis Backend Lengkap

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

Saya menggunakan PyCharm untuk keseluruhan backend saya, anda hanya perlu memastikan projek PyCharm anda disambungkan ke Raspberry Pi anda, ini bermaksud jalan Deployment anda disiapkan dalam tetapan anda dan anda memasang semua pakej yang kami perlukan, sudah semestinya sudah selesai 4.

Saya menggunakan kelas saya sendiri dan ini juga termasuk dalam GitHub saya. Pautan ada di intro sekiranya anda terlepas;)

Dalam fail backend saya menggunakan kelas threading, jadi semuanya dapat berjalan pada masa yang sama dan tidak akan saling mengganggu. 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 & CSS dilakukan dengan cukup mudah, cuba menggunakan telefon bimbit terlebih dahulu sebanyak mungkin, kerana kita sering kali bersambung dengan Bluetooth dari peranti mudah alih, 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 begitu sukar, bekerja dengan beberapa GET dari laluan backend saya, banyak pendengar acara dan beberapa struktur socketio.

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

Saya mula-mula memulakan dengan beberapa sketsa bagaimana saya mahu kotak itu kelihatan, sesuatu yang penting ialah ia harus cukup besar agar semuanya sesuai, kerana kita mempunyai litar besar untuk dimasukkan ke dalam casing tersebut.

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 bekas botol anggur dan baru mula menggergaji kayu. Sebaik sahaja saya mempunyai beg asas saya, saya hanya perlu mengebor lubang di dalamnya (banyak di bahagian depan casing, seperti yang anda lihat pada gambar: P) dan meletakkan beberapa kuku di dalamnya, ini adalah kes yang sangat asas, tetapi kelihatan cukup sejuk dan sangat sesuai.

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.

Langkah 10: Beberapa Masalah yang Saya Hadapi semasa Membuat Pembesar Suara Slimbox…

Kesalahan Bluetooth & bluealsa

Setiap kali saya mahu memainkan muzik atau berhubung dengan bluetooth, saya menerima kesalahan dari bluetooth dan bluealsa. Saya membuat kajian mengenainya dan ini adalah penyelesaian untuk masalah saya. Oleh itu, atas sebab tertentu bluetooth saya disekat lembut, tidak pasti jika ini adalah blok lembut biasa. Anda dapat melihat apakah itu dengan menaip perintah berikut di Putty anda.

senarai rfkill

Oleh itu, jika disekat lembut, gunakan ini:

rfkill nyahsekat bluetooth

Dan anda mungkin mahu reboot selepas ini, sumber saya:

Masalah sambungan bersiri

Jadi masalah besar lain yang saya hadapi ialah saya tidak dapat membuat hubungan dengan Arduino saya melalui pergeseran level, setelah beberapa carian saya mendapat tahu bahawa '/ dev / ttyS0' saya telah hilang dan ini mungkin disebabkan oleh kemas kini RPi anda. Juga terdapat penyelesaian mengenai perkara ini

Anda perlu mengaktifkan semula konsol bersiri dengan raspi-config, reboot, dan kemudian mengeluarkan bit "console = serial0, 115200" secara manual dari '/boot/cmdline.txt'. Pastikan bahawa "enable_uart = 1" ada di' /boot/config.txt ', dan reboot sekali lagi. Itu akan mengembalikan port ttyS0 anda, serta pautan lembut' / dev / serial0 'kepadanya.

Sumber:

Disyorkan: