Cuprins:

Slimbox - un difuzor Bluetooth inteligent !: 10 pași (cu imagini)
Slimbox - un difuzor Bluetooth inteligent !: 10 pași (cu imagini)

Video: Slimbox - un difuzor Bluetooth inteligent !: 10 pași (cu imagini)

Video: Slimbox - un difuzor Bluetooth inteligent !: 10 pași (cu imagini)
Video: Bluetooth speaker review: Samsung Level Box Slim 2024, Noiembrie
Anonim
Slimbox - un difuzor inteligent Bluetooth!
Slimbox - un difuzor inteligent Bluetooth!

Buna!

Pentru proiectul meu de școală de la MCT Howest Kortrijk, am realizat un difuzor inteligent Bluetooth cu senzori diferiți, un inel NeoPixel LCD și RGB inclus. Totul rulează pe Raspberry Pi (bază de date, Webserver, Backend).

Așadar, în acest instructiv vă voi arăta cum am făcut acest proiect în 3 săptămâni, pas cu pas, așa că dacă vreunul dintre voi vrea să recreeze proiectul meu, îl puteți face cu ușurință!

Acesta este și primul meu instructable, dacă aveți întrebări, voi încerca să le răspund cât mai repede posibil!

GitHub-ul meu:

Pasul 1: consumabile

Provizii
Provizii
Provizii
Provizii
Provizii
Provizii

Senzor de temperatură DS18B20

DS18B20 este un senzor cu un singur fir care măsoară temperatura, fabricat de Maxim Integrated. Există 2 tipuri de senzori DS18B20, doar componenta (pe care am folosit-o) și versiunea impermeabilă, care este mult mai mare, dar nu de asta aveam nevoie pentru proiectul meu, așa că am folosit doar componenta. Senzorul poate măsura temperatura într-un interval de la -55 ° C la + 125 ° C (-67 ° F la + 257 ° F) și are o precizie de 0,5 ° C de la -10 ° C la + 85 ° C. De asemenea, are o rezoluție programabilă de la 9 biți la 12 biți.

Foaie de date:

Senzor potențiometru

Un potențiometru este un rezistor cu trei terminale care este reglabil manual prin rotirea doar a părții superioare a senzorului. Poziția părții superioare determină tensiunea de ieșire a potențiometrului.

LSM303 Accelerometer + Compass Breakout

Placa de rupere LSM303 este o combinație între un accelerometru cu trei axe și un magnetometru / busolă, fabricat de Adafruit. Este utilizat cu interfața I2C a Raspberry Pi.

Prezentare generală:

Fișă tehnică:

MCP3008

Pentru a citi datele de pe potențiometrul meu, am folosit un MCP3008, care este un convertor analogic digital de 8 biți pe 10 biți cu interfața SPI și este destul de ușor de programat.

Foaie de date:

Difuzor - 3”Diametru - 8 Ohm 1 Watt

Acesta este conul difuzor pe care l-am ales după calcularea tensiunii și a amperilor de care ar avea nevoie și acest lucru s-a potrivit perfect pentru proiectul meu Raspberry Pi, fabricat de Adafruit.

Prezentare generală:

MAX98357 Amplificator mono I2S Clasa-D

Acesta este amplificatorul care vine împreună cu difuzorul, nu numai că este un amplificator, ci și un convertor digital I2S în analog, deci este, de asemenea, o potrivire perfectă pentru difuzorul meu și sistemul audio.

Prezentare generală:

Fișă tehnică:

Arduino Uno

Arduino Uno este o placă de microcontroler open-source bazată pe microcontrolerul Microchip ATmega328P, fabricat de Arduino.cc. Placa Uno are 14 pini digitali, 6 pini analogici și este complet programabilă cu software-ul Arduino IDE

Prezentare generală:

Levelshifter

Aceasta este o placă mică care se ocupă de comunicarea dintre Arduino Uno și Raspberry Pi și diferitele tensiuni, Arduino: 5V și Raspberry Pi: 3,3V. Acest lucru este necesar, deoarece inelul NeoPixel este conectat la Arduino și rulează acolo, în timp ce toate celelalte lucruri rulează pe Raspberry Pi.

Inel RGB NeoPixel

Acesta este un inel mic umplut cu 12 led-uri RGB (puteți cumpăra inele mai mari cu mai multe led-uri RGB, dacă doriți). Care este în cazul meu conectat la Arduino Uno, dar poate fi conectat și la multe alte dispozitive și este foarte simplu de utilizat.

Prezentare generală:

Afișaj LCD 16x2

Am folosit un afișaj LCD de bază pentru a-mi imprima temperatura, volumul și adresa IP.

Fișă tehnică:

Card SD Raspberry Pi 3B + și 16 GB

Întregul meu proiect rulează pe Raspberry Pi 3B + cu o imagine configurată, pe care vă voi ajuta să o configurați mai târziu în instrucțiunile mele.

Partea T GPIO, 2 plăci de calcul și o mulțime de fire jumper

Pentru a conecta tot ce aveam nevoie de panouri și jumperwires, am folosit partea GPIO T, așa că am mai mult spațiu și este clar care pin este care.

Pasul 2: Schemă și cablare

Schemă și cablare
Schemă și cablare
Schemă și cablare
Schemă și cablare
Schemă și cablare
Schemă și cablare

Pentru schema mea, am folosit Fritzing, este un program pe care îl puteți instala, care vă permite să creați o schemă foarte ușoară în diferite tipuri de vizualizări.

Descărcați Fritzing:

Deci, asigurați-vă că conectați totul în modul corect! În cazul meu, culorile firelor nu sunt la fel ca în schemă.

Pasul 3: Proiectarea bazei de date

Proiectare baze de date
Proiectare baze de date

Colectăm o mulțime de date de la cei 3 senzori conectați, deci avem nevoie de o bază de date pentru a stoca datele și senzorii. Mai târziu vom vedea cum să configurăm baza de date pe Raspberry Pi și cum să adăugăm date la aceasta. Dar mai întâi trebuie să se realizeze proiectarea bazei de date sau ERD (Entity Relationship Diagram), iar a mea a fost, de asemenea, normalizată cu 3NF. De aceea, împărțim senzorii într-un alt tabel și lucrăm cu ID-uri.

În general, acesta este un proiect de bază foarte simplu și ușor de utilizat pentru a continua.

Pasul 4: Pregătirea Raspberry Pi

Deci, acum, că avem câteva elemente de bază ale proiectului realizat. Să începem cu Raspberry Pi!

Configurarea cardului SD

În primul rând, aveți nevoie de un card SD de 16 GB în care vă puteți pune imaginea și un program pentru încărcarea unei imagini de început pe cardul SD.

Software:

Imagine de început:

Deci, odată ce acestea sunt descărcate:

  1. Introduceți cardul SD în computer.
  2. Deschideți Win32 pe care tocmai l-ați descărcat.
  3. Selectați fișierul imagine Raspbian pe care tocmai l-ați descărcat.
  4. Faceți clic pe „scrie” în locația cardului SD.

Acest lucru poate dura ceva timp, în funcție de hardware-ul dvs. Odată ce ați făcut acest lucru, suntem gata să facem câteva ajustări finale înainte de a introduce imaginea în RPi.

  1. Accesați directorul cardului SD, căutați fișierul numit „cmdline.txt” și deschideți-l.
  2. Acum adăugați „ip = 169.254.10.1” pe aceeași linie.
  3. Salvați fișierul.
  4. Creați un fișier numit „ssh” fără extensie sau conținut.

Acum puteți scoate SIGUR cardul SD de pe computer și îl puteți pune în Raspberry Pi FĂRĂ alimentare. Odată ce cardul SD este în RPI, conectați un cablu LAN de la computer la portul RPi LAN, după ce acesta este conectat, puteți conecta alimentarea la RPi.

Acum vrem să ne controlăm Raspberry Pi, acest lucru se face prin Putty.

Software Putty:

Odată descărcat, deschideți Putty și introduceți IP '169.254.10.1' și portul '22' și tipul de conexiune: SSH. Acum putem deschide în cele din urmă interfața noastră de linie de comandă și să ne autentificăm cu informațiile de autentificare ale starterului -> Utilizator: pi & Parolă: zmeură.

Raspi-config

sudo raspi-config

Ceea ce este cu adevărat important pentru acest proiect este secțiunea de interfață, trebuie să activăm o mulțime de interfețe diferite, să activăm toate interfețele următoare:

  • Un fir
  • SPI
  • I2C
  • Serial

Acum că am terminat cu raspi-config, să încercăm să facem o conexiune cu internet.

Conexiune Wi-Fi

În primul rând, trebuie să fiți root pentru următoarele comenzi

sudo -i

Odată ce sunteți root, utilizați următoarea comandă. SSID este numele rețelei și parola este, evident, parola.

wpa_passphrase "ssid" "parolă" >> /etc/wpa_supplicant/wpa_supplicant.conf

În cazul în care ați făcut o greșeală, puteți verifica, actualiza sau șterge această rețea doar introducând acel fișier:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Deci, după ce am intrat în rețeaua noastră, să intrăm în interfața client WPA

wpa_cli

Selectați interfața

interfață wlan0

Reîncărcați fișierul

reconfigura

Și în cele din urmă puteți vedea dacă sunteți conectat bine:

ip a

Actualizați și actualizați

Acum că suntem conectați la internet, actualizarea pachetelor deja instalate ar fi o mișcare inteligentă, așa că hai să facem asta mai întâi înainte de a instala alte pachete.

sudo apt-get update

sudo apt-get upgrade

Baza de date MariaDB

Instalați serverul de baze de date MariaDB:

sudo apt-get install mariadb-server

Apache2 Webserver

Instalați serverul web Apache2:

sudo apt instalează apache2

Piton

Instalați Python:

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

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

Pachet Python

Va trebui să instalați toate aceste pachete pentru ca backendul să funcționeze perfect:

  • Balon
  • Flask-Cors
  • Flask-MySql
  • Flask-SocketIO
  • PyMySQL
  • Cereri
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket
  • Ujson
  • Wsaccel

Biblioteca de difuzoare

Instalați biblioteca de difuzoare de la Adafruit:

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

E timpul să reporniți

sudo reboot

Pasul 5: Transmiteți baza noastră de date către RPi

Acum, că am instalat tot ce aveam nevoie, să punem baza de date pe care am proiectat-o pe Raspberry Pi!

Așadar, mai întâi trebuie să ne transmiteți baza de date în cadrul MySql, în timp ce faceți acest lucru, copiați codul complet al bazei de date și ștergeți toate cuvintele „vizibile” din acesta. Deci, odată ce ați copiat, permiteți deschiderea din nou a chitului, conectați-vă și tastați:

sudo mysql

și acum vă aflați în interfața mysql, copiați codul bazei de date în ea și apăsați Enter.

Acum trebuie doar să creăm un utilizator

CREAȚI UTILIZATORUL „utilizator” IDENTIFICAT DE „Utilizatorul”;

ACORDĂ TOATE PRIVILEGIILE PENTRU *. * „Utilizatorului”;

Acum reporniți.

Deci, totul ar trebui să fie configurat acum, puteți face, de asemenea, o conexiune cu Pi și MySql Workbench, deci este mai ușor să verificați toate datele din tabelele dvs.

Pasul 6: Configurarea Bluetooth pe RPi-ul nostru

Creăm un difuzor Bluetooth, deci acest lucru înseamnă că mass-media este trimisă de la sursa noastră la Raspberry Pi și acest lucru se poate face destul de ușor, hai să intrăm direct în el!

Sursa mea pentru conexiunea bluetooth:

Se elimină bluealsa care rulează deja

sudo rm / var / run / bluealsa / *

Adăugați profilul A2DP Rol de scufundare

sudo bluealsa -p a2dp-sink &

Deschideți interfața Bluetooth și porniți Bluetooth-ul

bluetoothctl

aprinde

Configurați un agent de împerechere

agent pe

agent implicit

Faceți RPi dvs. descoperibil

descoperibil pe

  • Acum, de pe dispozitivul dvs. Bluetooth, căutați RPi și conectați-vă cu acesta.
  • Confirmați asocierea pe ambele dispozitive, tastați „da” în chitul dvs.
  • Autorizați serviciul A2DP, tastați din nou „da”.
  • Odată ce acest lucru este făcut, putem avea încredere în dispozitivul nostru, deci nu trebuie să parcurgem toate acestea de fiecare dată când ne dorim să ne conectăm

încredere XX: XX: XX: XX: XX: XX (Adresa dvs. Mac Bluetooth de pe dispozitivul nostru sursă)

Dacă doriți ca RPi-ul dvs. să fie în continuare descoperit, aceasta este alegerea dvs., dar prefer să îl dezactivez din nou, astfel încât oamenii să nu poată încerca să se conecteze cu cutia dvs

descoperibil off

Apoi putem ieși din interfața noastră Bluetooth

Ieșire

Și în cele din urmă rutarea noastră audio: dispozitivul nostru sursă de redirecționare către RPi

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

Acum dispozitivul nostru este complet conectat la Raspberry și ar trebui să puteți reda conținut media de pe dispozitivul sursă pe difuzorul Pi.

Pasul 7: Scrierea Backend-ului complet

Așa că acum instalarea este terminată, putem începe în sfârșit să scriem programul nostru de backend!

Am folosit PyCharm pentru întregul meu backend, trebuie doar să vă asigurați că proiectul dvs. PyCharm este conectat la Raspberry Pi, aceasta înseamnă că calea de implementare este configurată în setările dvs. și ați instalat toate pachetele de care avem nevoie, ar trebui să fie deja realizate la pas 4.

Mi-am folosit propriile clase și acestea sunt, de asemenea, toate incluse în GitHub. Link este în introducere în cazul în care ați ratat-o;)

În fișierul meu backend am folosit clase de threading, astfel încât totul poate rula în același timp și nu se va întrerupe reciproc. Și în partea de jos ați obținut toate rutele, astfel încât să putem obține cu ușurință date în frontend-ul nostru.

Pasul 8: Scrierea frontendului (HTML, CSS și JavaScript)

Acum că backend-ul este terminat, putem începe să scriem front-end-ul complet.

HTML și CSS s-au făcut destul de ușor, am încercat mai întâi să lucrăm pe mobil cât mai mult posibil, deoarece de cele mai multe ori ne conectăm cu Bluetooth de pe un dispozitiv mobil, ar fi mai ușor de controlat de pe un tablou de bord mobil.

Puteți să vă proiectați tabloul de bord în orice mod doriți, voi lăsa codul meu și proiectez aici, puteți face orice doriți!

Iar Javascript nu a fost atât de greu, a lucrat cu câteva GET-uri de pe rutele mele de backend, tone de ascultători de evenimente și câteva structuri socketio.

Pasul 9: Construiți-mi cazul și punând totul împreună

Construindu-mi cazul și punând totul împreună
Construindu-mi cazul și punând totul împreună
Construindu-mi cazul și punând totul împreună
Construindu-mi cazul și punând totul împreună
Construindu-mi cazul și punând totul împreună
Construindu-mi cazul și punând totul împreună

Am început mai întâi cu câteva schițe despre cum doream să arate cazul, ceva important era că trebuia să fie suficient de mare pentru ca totul să se potrivească, deoarece avem un circuit mare de pus în carcasă.

Am făcut carcasa din lemn, cred că este cel mai ușor să lucrezi atunci când nu ai atât de multă experiență în construcția de carcase și ai, de asemenea, o mulțime de lucruri pe care le poți face cu ea.

Am plecat de la o cutie pentru sticle de vin și tocmai am început să tăiem lemnul. Odată ce am avut carcasa de bază, a trebuit doar să găuresc în ea (multe pe partea din față a carcasei, așa cum puteți vedea pe imaginile: P) și să pun câteva cuie în ea, este un caz cu adevărat de bază, dar arată destul de cool și se potrivește perfect.

Și odată ce cazul a fost încheiat, a venit timpul să punem totul împreună, după cum puteți vedea în ultima poză! Este cam o mizerie în interiorul cutiei, dar totul funcționează și nu aveam mult mai mult spațiu, așa că vă sfătuiesc să creați un caz mai mare dacă vă recreați proiectul.

Pasul 10: Câteva probleme pe care le-am avut pe drumul meu de a crea difuzorul Slimbox …

Erori Bluetooth și bluealsa

De fiecare dată când doream să redau muzică sau să mă conectez cu bluetooth, primeam erori de la bluetooth și bluealsa. Am făcut câteva cercetări despre asta și aceasta a fost soluția la problema mea. Deci, dintr-un anumit motiv, Bluetooth-ul meu a fost softblocked, nu sunt sigur dacă acesta este standard soft-blocat. Puteți vedea dacă este acest lucru tastând următoarea comandă în Putty.

lista rfkill

Deci, dacă este softblocked, utilizați doar acest lucru:

rfkill deblochează Bluetooth

Și este posibil să doriți să reporniți după aceasta, sursa mea:

Probleme de conexiune serială

Deci, o altă mare problemă pe care am avut-o a fost că nu puteam face nicio conexiune cu Arduino-ul meu prin intermediul levelhifter-ului, după câteva căutări, am aflat că „/ dev / ttyS0” meu dispăruse și acest lucru ar putea fi din cauza unei actualizări a RPi. De asemenea, am găsit o soluție în acest sens

Va trebui să reactivați consola serială cu raspi-config, reporniți și apoi să eliminați manual bitul „console = serial0, 115200” din '/boot/cmdline.txt'. Confirmați că „enable_uart = 1” este în' /boot/config.txt "și reporniți din nou. Aceasta ar trebui să vă readucă portul ttyS0, precum și legătura soft" / dev / serial0 "către acesta.

Sursă:

Recomandat: