Daftar Isi:

Slimbox - Speaker Bluetooth Cerdas!: 10 Langkah (dengan Gambar)
Slimbox - Speaker Bluetooth Cerdas!: 10 Langkah (dengan Gambar)

Video: Slimbox - Speaker Bluetooth Cerdas!: 10 Langkah (dengan Gambar)

Video: Slimbox - Speaker Bluetooth Cerdas!: 10 Langkah (dengan Gambar)
Video: Sumpah ini bikin pusing!! mending beli iPhone 11 iBox atau inter?? 2024, November
Anonim
Slimbox - Pembicara Bluetooth Cerdas!
Slimbox - Pembicara Bluetooth Cerdas!

Hei!

Untuk proyek sekolah saya di MCT Howest Kortrijk, saya membuat perangkat speaker Bluetooth pintar dengan sensor yang berbeda, termasuk LCD dan cincin RGB NeoPixel. Semuanya berjalan di Raspberry Pi (Database, Webserver, Backend).

Jadi dalam instruksi ini saya akan menunjukkan kepada Anda bagaimana saya membuat proyek ini dalam 3 minggu, langkah demi langkah, jadi jika ada di antara kalian yang ingin membuat ulang proyek saya, Anda dapat melakukannya dengan mudah!

Ini juga instruksi pertama saya, jika Anda memiliki pertanyaan, saya akan mencoba menjawabnya secepat mungkin!

GitHub saya:

Langkah 1: Persediaan

Perlengkapan
Perlengkapan
Perlengkapan
Perlengkapan
Perlengkapan
Perlengkapan

Sensor Suhu DS18B20

DS18B20 adalah sensor satu kabel yang mengukur suhu, diproduksi oleh Maxim Integrated. Ada 2 macam sensor DS18B20, komponennya saja (yang saya pakai) dan versi tahan air, yang jauh lebih besar, tapi bukan itu yang saya butuhkan untuk proyek saya, jadi saya menggunakan komponennya saja. Sensor dapat mengukur suhu dalam kisaran -55 °C hingga +125 °C (-67 °F hingga +257 °F) dan memiliki akurasi 0,5 °C dari -10 °C hingga +85 °C. Ini juga memiliki resolusi yang dapat diprogram dari 9 bit hingga 12 bit.

Lembar Data:

Sensor potensiometer

Potensiometer adalah resistor dengan tiga terminal yang dapat diatur secara manual hanya dengan memutar bagian atas sensor. Posisi bagian atas menentukan tegangan keluaran potensiometer.

LSM303 Akselerometer + Kompas Breakout

Papan breakout LSM303 adalah kombinasi dari akselerometer tiga sumbu dan magnetometer / kompas, diproduksi oleh Adafruit. Ini digunakan dengan antarmuka I2C dari Raspberry Pi.

Ikhtisar:

Lembar Data:

MCP3008

Untuk membaca data dari potensiometer saya, saya menggunakan MCP3008, yang merupakan konverter analog ke digital 8 saluran 10 bit dengan antarmuka SPI dan cukup mudah untuk diprogram.

Lembar Data:

Speaker – Diameter 3” – 8 Ohm 1 Watt

Ini adalah kerucut speaker yang saya pilih setelah menghitung Tegangan dan Ampere yang dibutuhkan dan ini sangat cocok untuk proyek Raspberry Pi saya, yang diproduksi oleh Adafruit.

Ikhtisar:

MAX98357 I2S Kelas-D Mono Amplifier

Ini adalah amplifier yang disertakan dengan speaker, tidak hanya amplifier, ini juga merupakan konverter digital ke analog I2S, jadi ini juga sangat cocok untuk speaker & sistem audio saya.

Ikhtisar:

Lembar Data:

Arduino Uno

Arduino Uno adalah papan mikrokontroler open-source berdasarkan mikrokontroler Microchip ATmega328P, diproduksi oleh Arduino.cc. Papan Uno memiliki 14 pin Digital, 6 pin analog dan sepenuhnya dapat diprogram dengan perangkat lunak Arduino IDE

Ikhtisar:

Pengubah level

Ini adalah papan kecil yang menangani komunikasi antara Arduino Uno dan Raspberry Pi dan voltase yang berbeda, Arduino: 5V & Raspberry Pi: 3.3V. Ini diperlukan karena cincin NeoPixel terhubung ke Arduino dan berjalan di sana, sementara semua hal lainnya berjalan di Raspberry Pi.

Cincin NeoPixel RGB

Ini adalah cincin kecil yang diisi dengan 12 led RGB (Anda dapat membeli cincin yang lebih besar dengan lebih banyak led RGB, jika Anda mau). Yang dalam kasus saya terhubung ke Arduino Uno, tetapi juga dapat dihubungkan ke banyak perangkat lain dan sangat mudah digunakan.

Ikhtisar:

Layar LCD 16x2

Saya menggunakan Layar LCD dasar untuk mencetak suhu, volume, dan alamat IP saya.

Lembar Data:

Kartu SD Raspberry Pi 3B+ & 16GB

Seluruh proyek saya berjalan di Raspberry Pi 3B+ saya dengan gambar yang dikonfigurasi, yang akan saya bantu konfigurasikan nanti di instruksi saya.

GPIO T-Part, 2 Breadboard dan banyak kabel jumper

Untuk menghubungkan semua yang saya butuhkan papan tempat memotong roti dan kabel jumper, saya menggunakan bagian T GPIO sehingga saya memiliki lebih banyak ruang dan jelas pin mana yang mana.

Langkah 2: Skema dan Pengkabelan

Skema dan Pengkabelan
Skema dan Pengkabelan
Skema dan Pengkabelan
Skema dan Pengkabelan
Skema dan Pengkabelan
Skema dan Pengkabelan

Untuk skema saya, saya menggunakan Fritzing, ini adalah program yang dapat Anda instal yang memungkinkan Anda membuat skema dengan sangat mudah dalam berbagai jenis tampilan.

Unduh Fritzing:

Jadi, pastikan Anda menghubungkan semuanya dengan cara yang benar! Dalam kasus saya, warna kabel tidak sama seperti pada skema.

Langkah 3: Desain Basis Data

Desain Basis Data
Desain Basis Data

Kami mengumpulkan banyak data dari 3 sensor yang terhubung, jadi kami membutuhkan database untuk menyimpan data dan sensor. Nanti kita akan melihat cara mengkonfigurasi database pada Raspberry Pi dan cara menambahkan data ke dalamnya. Tapi pertama-tama desain database atau ERD (Entity Relationship Diagram) harus dibuat dan milik saya juga dinormalisasi dengan 3NF. Itu sebabnya kami membagi sensor menjadi tabel lain dan bekerja dengan ID.

Secara keseluruhan ini adalah desain database yang sangat mendasar dan mudah untuk dikerjakan lebih lanjut.

Langkah 4: Mempersiapkan Raspberry Pi

Jadi sekarang kami telah menyelesaikan beberapa dasar proyek. Mari kita mulai dengan Raspberry Pi!

Konfigurasi Kartu SD

Pertama, Anda memerlukan Kartu SD 16GB tempat Anda dapat meletakkan gambar dan program untuk mengunggah gambar awal ke kartu SD.

Perangkat lunak:

Mulai gambar:

Jadi setelah ini diunduh:

  1. Letakkan kartu SD Anda di komputer Anda.
  2. Buka Win32 yang baru saja Anda unduh.
  3. Pilih file gambar Raspbian yang juga baru saja Anda unduh.
  4. Klik 'tulis' ke lokasi kartu SD Anda.

Ini mungkin memakan waktu, tergantung pada perangkat keras Anda. Setelah ini selesai, kami siap untuk membuat beberapa penyesuaian akhir sebelum memasukkan gambar ke dalam RPi kami.

  1. Buka direktori kartu SD Anda, cari file bernama 'cmdline.txt' dan buka.
  2. Sekarang tambahkan 'ip=169.254.10.1' pada satu baris yang sama.
  3. Simpan file.
  4. Buat file bernama 'ssh' tanpa ekstensi atau konten.

Sekarang Anda AMAN dapat mengeluarkan kartu SD dari komputer Anda dan memasukkannya ke dalam Raspberry Pi TANPA daya. Setelah kartu SD masuk ke RPI, sambungkan kabel LAN dari komputer Anda ke port LAN RPi, setelah ini terhubung, Anda dapat menghubungkan daya ke RPi.

Sekarang kita ingin mengontrol Raspberry Pi kita, ini dilakukan melalui Putty.

Perangkat lunak dempul:

Setelah diunduh, buka Putty dan masukkan IP '169.254.10.1' dan Port '22' dan jenis koneksi: SSH. Sekarang kita akhirnya dapat membuka antarmuka baris perintah dan login dengan informasi login starter -> Pengguna: pi & Kata Sandi: raspberry.

Raspi-config

sudo raspi-config

Apa yang benar-benar penting untuk proyek ini adalah bagian antarmuka, kita harus mengaktifkan banyak antarmuka yang berbeda, mengaktifkan semua antarmuka berikut:

  • Satu kawat
  • SPI
  • I2C
  • Serial

Sekarang setelah kita selesai dengan raspi-config, mari kita coba membuat koneksi dengan internet.

Koneksi wifi

Pertama, Anda harus menjadi root untuk perintah berikut

sudo -i

Setelah Anda root, gunakan perintah berikut. SSID adalah nama jaringan Anda dan kata sandi jelas itu kata sandi.

wpa_passphrase "ssid" "password" >> /etc/wpa_supplicant/wpa_supplicant.conf

Jika Anda melakukan kesalahan, Anda dapat memeriksa, memperbarui, atau menghapus jaringan ini hanya dengan memasukkan file tersebut:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Jadi setelah kita memasuki jaringan kita, mari masuk ke antarmuka klien WPA

wpa_cli

Pilih antarmuka Anda

antarmuka wlan0

Muat ulang file

mengkonfigurasi ulang

Dan akhirnya Anda dapat melihat apakah Anda terhubung dengan baik:

ip a

Memperbaharui peningkatan

Sekarang kita terhubung ke internet, memperbarui paket yang sudah diinstal akan menjadi langkah yang cerdas, jadi mari kita lakukan itu terlebih dahulu sebelum menginstal paket lain.

sudo apt-get update

sudo apt-get upgrade

Database MariaDB

Instal server database MariaDB:

sudo apt-get install mariadb-server

Server Web Apache2

Instal server web Apache2:

sudo apt install apache2

Python

Instal Python:

update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1

update-alternatives --install /usr/bin/python python /usr/bin/python3 2

Paket Python

Anda harus menginstal semua paket ini untuk membuat backend bekerja dengan sempurna:

  • Labu
  • Flask-Cors
  • Labu-MySql
  • Flask-SocketIO
  • PyMySQL
  • Permintaan
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket
  • Ujson
  • wasaccel

Perpustakaan pembicara

Instal perpustakaan speaker dari Adafruit:

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

Saatnya untuk memulai ulang

sudo reboot

Langkah 5: Teruskan Rekayasa Database Kami ke RPi

Sekarang kita telah menginstal semua yang kita butuhkan, mari kita letakkan Database yang kita rancang di Raspberry Pi kita!

Jadi pertama-tama kita perlu mem-forward insinyur database kita di meja kerja MySql, sambil melakukan itu, salin kode database lengkap Anda dan hapus semua kata 'terlihat' di dalamnya. Jadi setelah disalin, mari buka Putty lagi, masuk dan ketik:

sudo mysql

dan sekarang Anda berada di antarmuka mysql, salin kode database Anda di dalamnya dan tekan enter.

Sekarang kita hanya perlu membuat pengguna

BUAT PENGGUNA 'pengguna' DIIDENTIFIKASI OLEH 'pengguna';

HIBAH SEMUA HAK ISTIMEWA PADA *.* KEPADA 'pengguna';

Sekarang reboot.

Jadi semuanya harus diatur sekarang, Anda juga dapat membuat koneksi dengan Pi dan MySql Workbench Anda, jadi lebih mudah untuk memeriksa semua data di tabel Anda.

Langkah 6: Mengonfigurasi Bluetooth di RPi

Kami sedang membuat speaker Bluetooth, jadi ini berarti media sedang dikirim dari sumber kami ke Raspberry Pi dan ini bisa dilakukan dengan cukup mudah, mari kita langsung ke dalamnya!

Sumber saya untuk koneksi bluetooth:

Menghapus bluealsa yang sudah berjalan

sudo rm /var/run/bluealsa/*

Tambahkan peran Sink profil A2DP

sudo bluealsa -p a2dp-sink &

Buka antarmuka bluetooth dan nyalakan bluetooth Anda

bluetoothctl

nyalakan

Siapkan agen pasangan

agen aktif

default-agen

Jadikan RPi Anda dapat ditemukan

dapat ditemukan di

  • Sekarang dari perangkat bluetooth Anda, cari RPi dan hubungkan dengannya.
  • Konfirmasikan pemasangan di kedua perangkat, ketik 'ya' di dempul Anda.
  • Otorisasi layanan A2DP, ketik 'ya' lagi.
  • Setelah ini selesai, kami dapat mempercayai perangkat kami, jadi kami tidak harus melalui semua ini setiap kali kami ingin terhubung

percaya XX:XX:XX:XX:XX:XX (Alamat mac bluetooth Anda dari perangkat sumber kami)

Jika Anda ingin RPi Anda tetap dapat ditemukan, itu adalah pilihan Anda sendiri, tetapi saya lebih suka mematikannya lagi, sehingga orang tidak dapat mencoba terhubung dengan kotak Anda

tidak dapat ditemukan

Kemudian kita bisa keluar dari antarmuka bluetooth kita

keluar

Dan akhirnya perutean audio kami: penerusan perangkat sumber kami ke RPi

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

Sekarang perangkat kami sepenuhnya terhubung ke Raspberry kami dan Anda seharusnya dapat memutar media dari perangkat sumber Anda di speaker Pi.

Langkah 7: Menulis Backend Lengkap

Jadi sekarang setup selesai, kita akhirnya bisa mulai menulis program backend kita!

Saya menggunakan PyCharm untuk seluruh backend saya, Anda hanya perlu memastikan proyek PyCharm Anda terhubung ke Raspberry Pi Anda, ini berarti jalur Deployment Anda sudah diatur di pengaturan Anda dan Anda menginstal semua paket yang kami butuhkan, seharusnya sudah dilakukan pada langkah 4.

Saya menggunakan kelas saya sendiri dan semua ini juga termasuk dalam GitHub saya. Tautan ada di intro jika Anda melewatkannya;)

Dalam file backend saya, saya menggunakan kelas threading, sehingga semuanya dapat berjalan pada waktu yang sama dan tidak akan mengganggu satu sama lain. Dan di bagian bawah Anda mendapatkan semua rute sehingga kami dapat dengan mudah mendapatkan data di frontend kami.

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

Sekarang setelah backend selesai, kita bisa mulai menulis front-end penuh.

HTML & CSS dilakukan dengan cukup mudah, cobalah bekerja seluler terlebih dahulu sebanyak mungkin, karena kami sering terhubung dengan Bluetooth dari perangkat seluler, akan lebih mudah untuk mengontrol dari dasbor seluler.

Anda dapat mendesain dasbor Anda dengan cara apa pun yang Anda inginkan, saya akan meninggalkan kode dan desain saya di sini, Anda dapat melakukan apa pun yang Anda suka!

Dan Javascript tidak terlalu sulit, bekerja dengan beberapa GET dari rute backend saya, banyak pendengar acara dan beberapa struktur socketio.

Langkah 9: Membangun Kasus Saya dan Menggabungkannya

Membangun Kasus Saya dan Menggabungkan Semuanya
Membangun Kasus Saya dan Menggabungkan Semuanya
Membangun Kasus Saya dan Menggabungkan Semuanya
Membangun Kasus Saya dan Menggabungkan Semuanya
Membangun Kasus Saya dan Menggabungkan Semuanya
Membangun Kasus Saya dan Menggabungkan Semuanya

Saya pertama kali memulai dengan beberapa sketsa tentang bagaimana saya ingin kasingnya terlihat, sesuatu yang penting adalah bahwa itu harus cukup besar agar semuanya muat, karena kami memiliki sirkuit besar untuk dimasukkan ke dalam kasing.

Saya membuat kasing dari kayu, saya pikir ini adalah yang paling mudah untuk dikerjakan ketika Anda tidak memiliki banyak pengalaman dengan kasing bangunan dan Anda juga memiliki banyak hal yang dapat Anda lakukan dengannya.

Saya mulai dari kasing untuk botol anggur dan baru saja mulai menggergaji kayu. Setelah saya memiliki kasing dasar saya, saya hanya perlu mengebor lubang di dalamnya (banyak di bagian depan kasing, seperti yang Anda lihat pada gambar: P) dan menaruh beberapa paku di dalamnya, ini adalah kasing yang sangat mendasar, tapi itu terlihat sangat keren dan sangat cocok.

Dan begitu kasusnya selesai, saatnya untuk menyatukan semuanya, seperti yang Anda lihat di gambar terakhir! Ini agak berantakan di dalam kotak, tetapi semuanya berfungsi dan saya tidak memiliki lebih banyak ruang, jadi saya menyarankan Anda untuk membuat kasing yang lebih besar jika Anda membuat ulang proyek saya.

Langkah 10: Beberapa Masalah yang Saya Hadapi dalam Perjalanan Membuat Speaker Slimbox…

Kesalahan Bluetooth & bluealsa

Setiap kali saya ingin memutar musik atau terhubung dengan bluetooth, saya menerima kesalahan dari bluetooth dan bluealsa. Saya melakukan riset tentang itu dan ini adalah solusi untuk masalah saya. Jadi untuk beberapa alasan bluetooth saya diblokir lunak, tidak yakin apakah ini standar yang diblokir lembut. Anda dapat melihat apakah itu dengan mengetikkan perintah berikut di Putty Anda.

daftar rfkill

Jadi jika diblokir lunak, gunakan saja ini:

rfkill buka blokir bluetooth

Dan Anda mungkin ingin mem-boot ulang setelah ini, sumber saya:

Masalah koneksi serial

Jadi masalah besar lainnya yang saya miliki adalah saya tidak dapat membuat koneksi dengan Arduino saya melalui levelshifter, setelah beberapa pencarian saya menemukan bahwa '/ dev/ttyS0' saya hilang dan ini mungkin karena pembaruan RPi Anda. Juga menemukan solusi tentang ini

Anda harus mengaktifkan kembali konsol serial dengan raspi-config, reboot, dan kemudian secara manual menghapus bit "console=serial0, 115200" dari '/boot/cmdline.txt'. Konfirmasikan bahwa "enable_uart=1" ada di ' /boot/config.txt', dan reboot lagi. Itu akan mengembalikan port ttyS0 Anda, serta tautan lunak '/dev/serial0' ke sana.

Sumber:

Direkomendasikan: