Cuprins:

Mood Speaker - un difuzor puternic pentru ca muzica Mood să fie redată pe baza temperaturii ambiante: 9 pași
Mood Speaker - un difuzor puternic pentru ca muzica Mood să fie redată pe baza temperaturii ambiante: 9 pași

Video: Mood Speaker - un difuzor puternic pentru ca muzica Mood să fie redată pe baza temperaturii ambiante: 9 pași

Video: Mood Speaker - un difuzor puternic pentru ca muzica Mood să fie redată pe baza temperaturii ambiante: 9 pași
Video: Întrebările tale: canalul, videoclipurile, noi, diverse - Întrebări frecvente 5 2024, Noiembrie
Anonim
Mood Speaker - un difuzor puternic pentru ca muzica Mood să fie redată pe baza temperaturii ambiante
Mood Speaker - un difuzor puternic pentru ca muzica Mood să fie redată pe baza temperaturii ambiante

Buna!

Pentru proiectul meu școlar de la MCT Howest Kortrijk, am realizat un difuzor Mood, acesta este un dispozitiv inteligent pentru difuzoare Bluetooth cu senzori diferiți, un LED și banda LED WS2812b inclusă. vorbitor. Totul rulează pe Raspberry Pi (bază de date, Webserver, Backend).

Deci, acest instructable este un proces pas cu pas al modului în care am realizat acest proiect în 3 săptămâni. Deci, dacă doriți să recreați proiectul meu, puteți urma ghidul

Acest lucru instructiv este primul meu pe care l-am scris așa că, dacă există întrebări, voi încerca să le răspund cât de repede pot!

GitHub-ul meu:

Pasul 1: consumabile

Card SD Raspberry Pi 3B și 16GB

Întregul meu proiect rulează pe Raspberry Pi 3B cu o imagine configurată, pe care o voi explica într-un pas ulterior (Pasul 4: Configurare Raspberry Pi)

Afișaj LCD 16x2

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

Fișă tehnică:

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:

MCP3008

Pentru a citi datele din senzorul meu LDR și PIR, am folosit un MCP3008, care este un convertor analogic digital pe 8 biți pe 8 canale cu interfața SPI și este destul de ușor de programat.

Foaie de date:

Senzor de mișcare PIR

Pentru a detecta când cineva intră și iese din camera mea, am folosit un senzor infraroșu pasiv deoarece sunt ușor de utilizat și sunt mici.

Foaie de date:

LDR

Am folosit un fotorezistor sau LDR (rezistență la scădere a luminii sau rezistență dependentă de lumină) pentru a detecta nivelul de luminozitate al camerei sale. Și pentru a activa Ledstrip-ul meu atunci când este la întuneric.

Difuzor - 3”Diametru - 4 Ohm 3 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 ledstrip-ul este conectat la Arduino și rulează acolo, în timp ce toate celelalte lucruri rulează pe Raspberry Pi.

WS2812B - Ledstrip

Aceasta este o bandă cu 60 de leduri RGB (puteți cumpăra benzi mai lungi 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.

Fișă tehnică:

Partea T GPIO, 1 placă de panificatie și o mulțime de fire jumper

Pentru a conecta tot ce aveam nevoie de panouri și jumperwires, nu am folosit partea T GPIO, dar o puteți folosi pentru a ști clar ce coș merge unde.

Pasul 2: Schemă și cablare

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

Pentru realizarea schemei mele, 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:

Asigurați-vă că totul este conectat corect. Am folosit culori pentru a face un pic mai clar să știu unde să conectez firele. În cazul meu am folosit diferite culori pentru fire

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 (temperatura de la DS18B20, Luminozitatea de la LDR și Starea de la senzorul PIR). Deci, este mai bine să păstrați toate aceste date într-o bază de date. Voi explica într-un pas ulterior cum să configurați baza de date (Pasul 5: Transmiterea bazei noastre de date către RPi!) Dar mai întâi trebuie să se facă proiectarea sau ERD (Entity Relationship Diagram). Al meu a fost normalizat cu 3NF de aceea am împărțit componentele și istoricul componentelor într-un alt tabel. Folosim baza de date Muzică pentru a urmări melodiile care au fost ascultate.

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

Pasul 4: Configurați Raspberry Pi

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

Partea 1: Configurarea cardului SD

1) Descărcați software-ul și fișierele necesare

Trebuie să descărcați 2 software și 1 sistem de operare, adică Raspbian pentru acest proces complet. Primul software: primul software este Win32 Disk Imager.

sourceforge.net/projects/win32diskimager/

Al doilea software: Al doilea software este SD Card Formatter.

www.sdcard.org/downloads/formatter_4/

Raspbian OS: Acesta este sistemul de operare principal al Pi.

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

Extrageți toate fișierele pe desktop.

2) Obțineți cardul SD și cititorul de carduri

Obțineți un card SD de clasa 10 de minimum 8 GB cu un cititor de carduri. Introduceți acel card în cititorul de carduri și conectați-l la portul USB.

3) Formatați cardul SD

Deschideți Formator card SD și selectați unitatea.

Faceți clic pe format și nu modificați alte opțiuni.

Când formatarea este finalizată, faceți clic pe OK.

4) Scrieți sistemul de operare pe cardul SD

Deschideți win32diskimager.

Răsfoiți fișierul.img al sistemului de operare Raspbian care a fost extras din fișierul descărcat.

Faceți clic pe Deschidere și apoi faceți clic pe Scrieți.

Dacă apare un avertisment, ignorați-le făcând clic pe OK. Așteptați finalizarea scrierii și poate dura câteva minute. Deci, aveți răbdare.

n

5) Odată ce ați făcut acest lucru, suntem gata să facem unele 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. (Cel mai simplu mod este să creați un fișier txt și să eliminați.txt după aceea)

Acum, că totul este instalat pe cardul SD, îl puteți scoate SIGUR, de pe computer și îl puteți pune în Raspberry Pi FĂRĂ conectarea alimentării. 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.

Partea 2: Configurarea RPi

Chit

Acum vrem să ne configură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ă. (Vă recomandăm să îl modificați cât mai repede posibil. Iată un ghid despre cum:

Raspi-config

Va trebui să activăm diferite interfețe și pentru a face acest lucru trebuie mai întâi să tastăm următorul cod:

sudo raspi-config

Lucrurile pe care trebuie să le activăm sunt în secțiunea de interfață. Trebuie să activăm următoarele interfețe:

  • Un fir
  • Serial
  • I2C
  • SPI

Asta era tot ce trebuia să facem cu raspi-config

Adăugarea WIFI

În primul rând, trebuie să fiți root pentru ca următoarea comandă să devină root

sudo -i

Odată ce sunteți root, utilizați următoarea comandă: (Înlocuiți SSID cu numele și parola rețelei cu parola rețelei)

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

În cazul în care ați greșit ceva, puteți verifica, actualiza sau șterge această rețea introducând doar următoarea comandă:

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

Partea 3: Actualizarea software-ului de instalare RPi +

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

După actualizarea RPi va trebui să instalăm următorul software:

Baza de date MariaDB

sudo apt-get install mariadb-server

Apache2 Webserver

sudo apt instalează apache2

Piton

update-alternatives --install / usr / bin / python python /usr/bin/python3.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
  • Cereri PyMySQL
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket

Biblioteca de difuzoare

Pentru utilizarea difuzorului cu amplificatorul va trebui să instalăm o bibliotecă pentru acesta

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

Configurarea bazei de date pe RPi!
Configurarea bazei de date pe RPi!

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

Pentru configurarea bazei de date va trebui să conectăm MySql și RPi. Pentru aceasta vom deschide MySQLWorkbench și vom face o nouă conexiune. Când priviți imaginea, va trebui să vă schimbați pentru a schimba informațiile la ale dvs.

Dacă nu ați schimbat încă nimic, puteți utiliza pentru SSH pi și zmeură, pentru MySQL mysql și mysql.

Când ceva nu este clar, puteți urma și acest tutorial:

Pentru a vă exporta baza de date ar trebui să fie mai ușor folosind PHPmyAdmin, deoarece puteți obține o mulțime de erori făcând acest lucru cu MySql

Pasul 6: Configurarea Bluetooth pe RPi-ul nostru

Creăm un difuzor Mood, pe care îl putem folosi și cu propria noastră muzică, astfel încât acest lucru să fie mai ușor când RPi este

conectat la bluetooth Am urmat un tutorial pentru acesta pe care îl puteți găsi aici:

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

Am scris totul aici și pentru toți cei care vor să-l recreeze

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

pornire bluetoothctl

Configurați un agent de împerechere

agent pe implicit-agent

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 conectat la Raspberry cu Bluetooth și ar trebui să îl puteți testa jucând orice suport media, de exemplu Spotify etc.

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 Visual Studio Code pentru întregul meu backend, trebuie doar să vă asigurați că proiectul dvs. Visual Studio este conectat la Raspberry Pi, acest lucru înseamnă că cablul LAN trebuie să fie conectat la RPi și să facă o conexiune SSH. (informații despre cum să creați o conexiune la distanță puteți găsi aici:

Mi-am folosit propriile clase și acestea sunt, de asemenea, toate incluse în GitHub.

În fișierul meu backend am folosit diferite clase, astfel încât totul să poată fi folosit separat și astfel încât codul meu principal să nu fie o mizerie cu toate firele diferite. Am folosit threading pentru a rula toate diferitele clase simultan. Ș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 a fost destul de greu pentru mine. Am făcut tot posibilul să-l fac mobil mai întâi, deoarece mă pot conecta la acesta cu Bluetooth pentru a schimba melodiile cu Spotify. Deci, 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!

Și Javascript nu a fost mai ușor pentru mine, a lucrat cu câteva GET-uri de pe rutele mele backend, tone de ascultători de evenimente și câteva structuri socketio pentru a obține datele de la senzorii mei.

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

Construind cazul meu și punând totul împreună
Construind cazul meu ș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ă

Mai întâi am început să schițez cum aș dori 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ă, dar trebuia să rămânem compact, astfel încât să nu nu ocupi mult spațiu

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 scândură veche pe care o așezam ș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 imagini și ați pus niște unghii în ea, este o carcasă de bază, dar arată destul de cool și se potrivește perfect. De asemenea, am decis să-l pictez în alb pentru a arăta bine.

Ș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.

Recomandat: