Cuprins:
- Pasul 1: consumabile
- Pasul 2: Schemă și cablare
- Pasul 3: Proiectarea bazei de date
- Pasul 4: Pregătirea Raspberry Pi
- Pasul 5: Transmiteți baza noastră de date către RPi
- Pasul 6: Configurarea Bluetooth pe RPi-ul nostru
- Pasul 7: Scrierea Backend-ului complet
- Pasul 8: Scrierea frontendului (HTML, CSS și JavaScript)
- Pasul 9: Construiți-mi cazul și punând totul împreună
- Pasul 10: Câteva probleme pe care le-am avut pe drumul meu de a crea difuzorul Slimbox …
Video: Slimbox - un difuzor Bluetooth inteligent !: 10 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
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
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
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
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:
- Introduceți cardul SD în computer.
- Deschideți Win32 pe care tocmai l-ați descărcat.
- Selectați fișierul imagine Raspbian pe care tocmai l-ați descărcat.
- 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.
- Accesați directorul cardului SD, căutați fișierul numit „cmdline.txt” și deschideți-l.
- Acum adăugați „ip = 169.254.10.1” pe aceeași linie.
- Salvați fișierul.
- 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ă
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:
Difuzor portabil Bluetooth - Kit DIY MKBoom: 5 pași (cu imagini)
Difuzor portabil Bluetooth | Kit DIY MKBoom: Bună tuturor! Atât de bine să mă întorc cu încă un alt proiect de difuzoare după o lungă pauză. Deoarece majoritatea versiunilor mele necesită câteva instrumente pentru a fi finalizate, de această dată am decis să construiesc un difuzor portabil folosind un kit pe care îl puteți achiziționa cu ușurință. M-am gândit
Difuzor DIY Mai puțin difuzor LIFI: 6 pași
Difuzor DIY cu mai puține difuzoare LIFI: Astăzi, în acest instructiv vă voi arăta cum să faceți difuzorul LiFi, adică utilizează lumina pentru a transfera date. În mai puțin de 30 de minute. Acest instructable constă în detalii complete, cum ar fi procedura de proiectare, schema de circuit și descrierea
Difuzor Bluetooth Difuzor - Streaming Home Theatre: 8 pași (cu imagini)
Bluetooth Speaker Hack - Streaming Home Theatre: Acest instructabil detaliază hacking-ul unui difuzor Bluetooth și rafturi de ceai LED pâlpâitoare pentru a deveni front-end-ul pentru sistemul dvs. home theater, păstrând în același timp funcționalitatea originală a difuzorului Bluetooth. Am fost probabil
Difuzor Bluetooth Boombox / Difuzor: 6 pași
Difuzor Bluetooth Boombox / difuzor: Bună ziua! În acest Instructable vă voi arăta cum să vă construiți un Boombox Bluetooth
Transformați orice difuzor într-un difuzor Bluetooth: 4 pași
Transformați orice difuzor într-un difuzor Bluetooth: acum câțiva ani era obișnuit ca difuzoarele portabile să aibă mufă de 3,5 mm și să fie alimentate cu baterii AA. Conform standardelor actuale, este puțin depășit, mai ales bateria, deoarece în prezent fiecare gadget are o baterie reîncărcabilă. Mufa audio este st