Indholdsfortegnelse:

Humørhøjttaler- en kraftfuld højttaler til stemningsmusik, der skal afspilles baseret på omgivelsestemperaturen: 9 trin
Humørhøjttaler- en kraftfuld højttaler til stemningsmusik, der skal afspilles baseret på omgivelsestemperaturen: 9 trin

Video: Humørhøjttaler- en kraftfuld højttaler til stemningsmusik, der skal afspilles baseret på omgivelsestemperaturen: 9 trin

Video: Humørhøjttaler- en kraftfuld højttaler til stemningsmusik, der skal afspilles baseret på omgivelsestemperaturen: 9 trin
Video: Sıcacık Lavaş ile Acılı Ezmeli Et Dürüm Hazırladım ! 2024, Juli
Anonim
Humørhøjttaler- en kraftfuld højttaler til humørmusik, der skal afspilles baseret på omgivelsestemperaturen
Humørhøjttaler- en kraftfuld højttaler til humørmusik, der skal afspilles baseret på omgivelsestemperaturen

Hej med dig!

Til mit skoleprojekt på MCT Howest Kortrijk lavede jeg en Mood Speaker, dette er en smart Bluetooth -højttalerenhed med forskellige sensorer, en LCD og WS2812b ledstrip inkluderet. Højttaleren afspiller baggrundsmusik baseret på temperaturen, men kan også bruges som en almindelig bluetooth højttaler. Alt kører på Raspberry Pi (Database, Webserver, Backend).

Så dette instruerbare er en trinvis proces med, hvordan jeg realiserede dette projekt på 3 uger. Så hvis du vil genskabe mit projekt, kan du følge vejledningen

Denne instruerbare er min første, jeg skrev, så hvis der er spørgsmål, vil jeg prøve at besvare dem så hurtigt som jeg kan!

Min GitHub:

Trin 1: Forbrugsvarer

Raspberry Pi 3B & 16 GB SD -kort

Hele mit projekt kører på min Raspberry Pi 3B med et konfigureret billede, som jeg vil forklare i et senere trin (trin 4: Opsætning af Raspberry Pi)

LCD -skærm 16x2

Jeg brugte en grundlæggende LCD -skærm til at udskrive min temperatur, lysstyrke og IP -adresse.

Datablad:

DS18B20 Temperatursensor

DS18B20 er en en-tråds sensor, der måler temperaturen, fremstillet af Maxim Integrated. Der er 2 slags DS18B20 -sensorer, kun komponenten (som jeg brugte) og den vandtætte version, som er meget større, men det var ikke det, jeg havde brug for til mit projekt, så jeg brugte kun komponenten. Sensoren kan måle temperaturen i et område fra -55 ° C til +125 ° C (-67 ° F til +257 ° F), og den har en nøjagtighed på 0,5 ° C fra -10 ° C til +85 ° C. Det har også en programmerbar opløsning fra 9 bit til 12 bit.

Datablad:

MCP3008

For at læse dataene fra min LDR og PIR-sensor brugte jeg en MCP3008, som er en 8-kanals 10 bit analog til digital konverter med SPI-interface og er ret let at programmere.

Datablad:

PIR bevægelsessensor

For at opdage, når der er nogen, der kommer ind og forlader mit værelse, brugte jeg en passiv infrarød sensor, fordi de er lette at bruge og er små.

Datablad:

LDR

Jeg brugte en fotoresistor eller LDR (lysdæmpende modstand eller lysafhængig modstand) til at registrere lysstyrken i rummet, det er i. Og også for at tænde min Ledstrip, når den er mørk.

Højttaler - 3”Diameter - 4 Ohm 3 Watt

Dette er den højttalerkegle, jeg valgte efter at have beregnet den spænding og ampere, den ville have brug for, og dette passede perfekt til mit Raspberry Pi -projekt, fremstillet af Adafruit.

Oversigt:

MAX98357 I2S klasse-D mono forstærker

Dette er forstærkeren, der følger med højttaleren, det er ikke kun en forstærker, det er også en I2S digital til analog konverter, så den er også perfekt til min højttaler og lydsystem.

Oversigt:

Datablad:

Arduino Uno

Arduino Uno er et open-source mikrokontrollerkort baseret på Microchip ATmega328P mikrokontroller, fremstillet af Arduino.cc. Uno -kortet har 14 digitale ben, 6 analoge ben og er fuldt programmerbart med Arduino IDE -softwaren

Oversigt:

Niveauskift

Dette er et lille bord, der tager sig af kommunikationen mellem Arduino Uno og Raspberry Pi og de forskellige spændinger, Arduino: 5V & Raspberry Pi: 3.3V. Dette er nødvendigt, fordi ledstrip er forbundet til Arduino og kører der, mens alle de andre ting kører på Raspberry Pi.

WS2812B - Ledstrip

Dette er en ledstrip med 60 RGB -lysdioder (du kan købe længere strimler med flere RGB -lysdioder, hvis du vil). Hvilket i mit tilfælde er forbundet til Arduino Uno, men også kan tilsluttes mange andre enheder og er virkelig enkel at bruge.

Datablad:

GPIO T-Part, 1 brødbræt og masser af jumperwires

For at forbinde alt, hvad jeg havde brug for brødbrætter og jumperwires, brugte jeg ikke GPIO T-delen, men du kan bruge det til tydeligt at vide, hvilken bakke der går hvor.

Trin 2: Skematisk og ledningsføring

Skematisk og ledningsføring
Skematisk og ledningsføring
Skematisk og ledningsføring
Skematisk og ledningsføring

For at lave min skematiske brugte jeg Fritzing, det er et program, du kan installere, som giver dig mulighed for at oprette en skematisk virkelig let i forskellige slags visninger. Jeg brugte brødbrættet og skematisk visning.

Download Fritzing:

Sørg for, at alt er tilsluttet korrekt. Jeg brugte farver for at gøre det lidt tydeligere at vide, hvor ledningerne skal forbindes. I mit tilfælde brugte jeg forskellige farver til ledningerne

Trin 3: Databasedesign

Databasedesign
Databasedesign

Vi indsamler en masse data fra de 3 sensorer (Temperatur fra DS18B20, Lysstyrke fra LDR og Status fra PIR-sensor). Så det er bedst at gemme alle disse data i en database. Jeg vil forklare i et senere trin, hvordan du konfigurerer databasen (trin 5: Forward Engineering Our Database til RPi!) Men først skal designet eller ERD (Entity Relationship Diagram) laves. Mine blev normaliseret med 3NF, derfor delte vi komponenterne og komponenternes historie i en anden tabel. Vi bruger musikdatabasen til at holde styr på de sange, der er blevet lyttet til.

Samlet set er dette et virkelig grundlæggende og let databasedesign at arbejde videre med.

Trin 4: Konfigurer Raspberry Pi

Så nu hvor vi har gjort nogle grundlæggende elementer i projektet. Lad os komme i gang med at konfigurere Raspberry Pi!

Del 1: Konfiguration af SD -kortet

1) Download den nødvendige software og filer

Du skal downloade 2 software og 1 OS, dvs. Raspbian til denne komplette proces. 1. software: Den første software er Win32 Disk Imager.

sourceforge.net/projects/win32diskimager/

2. software: Anden software er SD Card Formatter.

www.sdcard.org/downloads/formatter_4/

Raspbian OS: Dette er Pi's vigtigste operativsystem.

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

Udpak alle filer til skrivebordet.

2) Hent SD -kortet og kortlæseren

Få et minimum 8 GB klasse 10 SD -kort med en kortlæser. Indsæt kortet i kortlæseren, og slut det til USB -porten.

3) Formater SD -kortet

Åbn SD -kortformatering, og vælg drevet.

Klik på formatet, og rediger ikke andre muligheder.

Når formateringen er fuldført, skal du klikke på OK.

4) Skriv operativsystemet på SD -kortet

Åbn win32diskimager.

Gennemse.img -filen i Raspbian OS, der blev hentet fra den downloadede fil.

Klik på Åbn, og klik derefter på Skriv.

Hvis der dukker en advarsel op, ignorer dem ved at klikke på OK. Vent til skrivningen er afsluttet, og det kan tage nogle minutter. Så vær tålmodig.

n

5) Når dette er gjort, er vi klar til at foretage nogle sidste justeringer, før vi sætter billedet i vores RPi.

Gå til dit SD -korts bibliotek, søg efter filen med navnet 'cmdline.txt', og åbn den.

Tilføj nu 'ip = 169.254.10.1' på den samme linje.

Gem filen.

Opret en fil med navnet 'ssh' uden udvidelse eller indhold. (Nemmeste måde er at oprette en txt -fil og fjerne.txt bagefter)

Nu hvor alt er installeret på SD -kortet, kan du SIKKERT skubbe det ud fra din computer og sætte det i Raspberry Pi UDEN at tilslutte strømmen. Når SD -kortet er sat i RPI'en, skal du slutte et LAN -kabel fra din computer til RPi LAN -porten, når dette er tilsluttet, kan du slutte strøm til RPi.

Del 2: Konfiguration af RPi

Kitt

Nu vil vi konfigurere vores Raspberry Pi, dette gøres gennem Putty.

Kittesoftware:

Når du har downloadet, skal du åbne Putty og indsætte IP '169.254.10.1' og Port '22' og forbindelsestype: SSH.

Nu kan vi endelig åbne vores kommandolinjegrænseflade og logge ind med starter -loginoplysningerne -> Bruger: pi & Adgangskode: hindbær. (Det anbefales at ændre det så hurtigt som muligt. Her er en vejledning til:

Raspi-konfiguration

Vi bliver nødt til at aktivere forskellige grænseflader, og for at gøre det skal vi først skrive følgende kode:

sudo raspi-config

De ting, vi skal aktivere, er i grænsefladesektionen. Vi skal aktivere følgende grænseflader:

  • En-ledning
  • Seriel
  • I2C
  • SPI

Det var alt, hvad vi skulle gøre med raspi-config

Tilføjelse af din WIFI

Først skal du være root for at følgende kommando skal blive root

sudo -i

Når du har rod, skal du bruge følgende kommando: (Erstat SSID med dit netværksnavn og adgangskode med dit netværkskodeord)

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

Hvis du gjorde noget forkert, kan du kontrollere, opdatere eller slette dette netværk ved blot at indtaste følgende kommando:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Så efter at vi kom ind i vores netværk, lad os gå ind i WPA -klientgrænsefladen

wpa_cli

Vælg din grænseflade

grænseflade wlan0

Genindlæs filen

omkonfigurere

Og endelig kan du se, om du har god forbindelse:

ip a

Del 3: Opdatering af RPi + -installationssoftwaren

Nu hvor vi har forbindelse til internettet, ville opdatering af de allerede installerede pakker være et smart træk, så lad os gøre det først, før vi installerer andre pakker.

sudo apt-get opdatering

sudo apt-get opgradering

Efter opdatering af RPi bliver vi nødt til at installere følgende software:

MariaDB Database

sudo apt-get install mariadb-server

Apache2 webserver

sudo apt installere apache2

Python

opdateringsalternativer-install/usr/bin/python python /usr/bin/python3.7 1 opdateringsalternativer --install/usr/bin/python python/usr/bin/python3 2

Python -pakke

Du bliver nødt til at installere alle disse pakker for at få backend til at fungere perfekt:

  • Kolbe
  • Kolbe-Cors
  • Kolbe-MySql
  • Kolbe-SocketIO
  • PyMySQL -anmodninger
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket

Højttalerbibliotek

For at bruge højttaleren med forstærkeren bliver vi nødt til at installere et bibliotek til det

krølle -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

Opsætning af databasen til RPi!
Opsætning af databasen til RPi!

Nu hvor vi har installeret alt, hvad vi havde brug for, lad os lægge vores database, vi designede på vores Raspberry Pi!

For at oprette databasen skal vi forbinde MySql og RPi. Til det åbner vi MySQLWorkbench og opretter en ny forbindelse. Når du ser på billedet, skal du ændre for at ændre oplysningerne til dine.

Hvis du ikke har ændret noget endnu, kan du bruge det til SSH pi og hindbær, til MySQL mysql og mysql.

Når noget ikke er klart, kan du også følge denne vejledning:

For at eksportere din database skulle det være lettere at bruge PHPmyAdmin, fordi du kan få mange fejl ved at gøre det med MySql

Trin 6: Konfiguration af Bluetooth på vores RPi

Vi er ved at oprette en Mood -højttaler, som vi også kan bruge med vores egen musik, så det er lettere, når RPi er

forbundet til bluetooth fulgte jeg en vejledning til det, som du kan finde her:

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

Jeg skrev alt hernede også til alle, der ønsker at genskabe det

Fjernelse af den allerede kørende bluealsa

sudo rm/var/run/bluealsa/*

Tilføj A2DP -profil Sink -rolle

sudo bluealsa -p a2dp -vask &

Åbn bluetooth -grænsefladen, og tænd din bluetooth

bluetoothctl tændt

Opret en parringsagent

agent på standardagent

Gør din RPi synlig

findes på

  • Nu skal du søge efter RPi'en fra din bluetooth -enhed og oprette forbindelse til den.
  • Bekræft parringen på begge enheder, skriv 'ja' i din kit.
  • Godkend A2DP -service, skriv 'ja' igen.
  • Når dette er gjort, kan vi stole på vores enhed, så vi ikke behøver at gå igennem alt dette, hver gang vi vil oprette forbindelse

tillid XX: XX: XX: XX: XX: XX (Din bluetooth mac -adresse fra vores kildeenhed)

Hvis du vil have, at din RPi bliver ved med at være synlig, er det dit eget valg, men jeg foretrækker at slukke den igen, så folk ikke kan prøve at oprette forbindelse til din boks

opdagelig off

Derefter kan vi forlade vores bluetooth -interface

Afslut

Og endelig vores audio routing: vores kildeenhed videresender til vores RPi

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

Nu er vores enhed forbundet til vores hindbær med bluetooth, og du skal kunne teste den ved at afspille alle medier, f.eks. Spotify osv.

Trin 7: Skrivning af den komplette backend

Så nu er opsætningen færdig, vi kan endelig begynde at skrive vores backend -program!

Jeg brugte Visual Studio Code til hele min backend, du skal bare sørge for, at dit Visual Studio -projekt er forbundet til din Raspberry Pi, det betyder, at dit LAN -kabel skal være forbundet til din RPi og for at oprette en SSH -forbindelse. (information om, hvordan du opretter en fjernforbindelse, kan findes her:

Jeg brugte mine egne klasser, og disse er også alle inkluderet i min GitHub.

I min backend -fil brugte jeg forskellige klasser, så alt kan bruges separat, og så min hovedkode ikke er et rod med alle de forskellige tråde. Jeg brugte trådning til at køre alle de forskellige klasser på én gang. Og i bunden har du alle ruterne, så vi nemt kan få data i vores frontend.

Trin 8: Skrivning af frontend (HTML, CSS og JavaScript)

Nu hvor backend er færdig, kan vi begynde at skrive hele front-end.

HTML og CSS var ret svært for mig, jeg gjorde mit bedste for at gøre det mobil først, fordi jeg kan oprette forbindelse til det med bluetooth for at ændre sangene med Spotify. Så det ville være lettere at styre fra et mobilt instrumentbræt

Du kan designe dit dashboard på enhver måde, du vil, jeg vil bare efterlade min kode og designe her, du kan gøre, hvad du vil!

Og Javascript var ikke lettere for mig, arbejdede med et par GET'er fra mine backend -ruter, masser af eventlyttere og nogle socketio -strukturer for at få data fra mine sensorer.

Trin 9: Byg min sag og sammensæt det hele

Bygger min sag og sætter det hele sammen
Bygger min sag og sætter det hele sammen
Bygger min sag og sætter det hele sammen
Bygger min sag og sætter det hele sammen
Bygger min sag og sætter det hele sammen
Bygger min sag og sætter det hele sammen
Bygger min sag og sætter det hele sammen
Bygger min sag og sætter det hele sammen

Jeg begyndte først at skitsere, hvordan jeg ville have, at sagen skulle se ud, noget vigtigt var, at den skulle være stor nok til, at alt kunne passe ind, da vi fik et stort kredsløb at sætte i sagen, men skulle forblive kompakte, så den ikke kunne ' tager ikke meget plads

Jeg har lavet sagen ud af træ, jeg synes, det er det letteste at arbejde med, når man ikke har så meget erfaring med at bygge sager, og man også har mange ting, man kan gøre med det.

Jeg startede fra en gammel planke, jeg havde liggende, og begyndte lige at save træet. Når jeg havde min grundkasse, var jeg bare nødt til at bore huller i den (meget på forsiden af sagen, som du kan se på billederne og sætte nogle søm i den, det er en virkelig grundlæggende sag, men det ser ret sejt ud og passer perfekt. Jeg besluttede også at male det hvidt for at få det til at se godt ud.

Og når sagen var færdig, var det tid til at sætte det hele sammen, som du kan se på det sidste billede! Det er lidt rod i kassen, men alt fungerer, og jeg havde ikke så meget mere plads, så jeg råder dig til måske at oprette en større sag, hvis du genskaber mit projekt.

Anbefalede: