Përmbajtje:

Mood Speaker- një Folës i Fuqishëm për Muzikën Mood që Duhet Të Luhet Bazuar në Temperaturën e Ambientit: 9 Hapa
Mood Speaker- një Folës i Fuqishëm për Muzikën Mood që Duhet Të Luhet Bazuar në Temperaturën e Ambientit: 9 Hapa

Video: Mood Speaker- një Folës i Fuqishëm për Muzikën Mood që Duhet Të Luhet Bazuar në Temperaturën e Ambientit: 9 Hapa

Video: Mood Speaker- një Folës i Fuqishëm për Muzikën Mood që Duhet Të Luhet Bazuar në Temperaturën e Ambientit: 9 Hapa
Video: Dëgjimi i drejtpërdrejtë: Koleksioni i plotë #BringYourWorth (Audio zyrtare) 2024, Korrik
Anonim
Mood Speaker- një Folës i Fuqishëm që Muzika e Mood të Luhet Bazuar në Temperaturën e Ambientit
Mood Speaker- një Folës i Fuqishëm që Muzika e Mood të Luhet Bazuar në Temperaturën e Ambientit

Çkemi!

Për projektin tim shkollor në MCT Howest Kortrijk, unë bëra një Mood Speaker kjo është një pajisje Bluetooth e zgjuar me sensorë të ndryshëm, një brez led LCD dhe WS2812b. Altoparlanti luan muzikë në sfond bazuar në temperaturën, por gjithashtu mund të përdoret si një bluetooth i rregullt folës. Gjithçka funksionon në Raspberry Pi (Baza e të dhënave, Webserver, Backend).

Pra, ky udhëzues është një proces hap pas hapi se si e realizova këtë projekt në 3 javë. Pra, nëse ju djema dëshironi të rikrijoni projektin tim, mund të ndiqni udhëzuesin

Ky është udhëzimi im i parë që kam shkruar, kështu që nëse ka ndonjë shqetësim, do të përpiqem t'u përgjigjem atyre sa më shpejt që të mundem!

GitHub im:

Hapi 1: Furnizimet

Kartë SD Raspberry Pi 3B & 16 GB

I gjithë projekti im funksionon në Raspberry Pi 3B me një imazh të konfiguruar, të cilin do ta shpjegoj në një hap të mëvonshëm (Hapi 4: Konfigurimi i Raspberry Pi)

Ekran LCD 16x2

Kam përdorur një ekran LCD bazë për të printuar temperaturën, shkëlqimin dhe adresën time IP.

Fleta e të dhënave:

Sensori i temperaturës DS18B20

DS18B20 është një sensor me një tela që mat temperaturën, prodhuar nga Maxim Integrated. Ekzistojnë 2 lloje të sensorëve DS18B20, vetëm përbërësi (të cilin e kam përdorur) dhe versioni i papërshkueshëm nga uji, i cili është shumë më i madh, por kjo nuk është ajo që më duhej për projektin tim, kështu që kam përdorur vetëm përbërësin. Sensori mund të masë temperaturën në një rang prej -55 ° C deri +125 ° C (-67 ° F deri +257 ° F) dhe ka një saktësi prej 0.5 ° C nga -10 ° C në +85 ° C. Ai gjithashtu ka një rezolucion të programueshëm nga 9 bit në 12 bit.

Fleta e të dhënave:

MCP3008

Për të lexuar të dhënat nga sensori im LDR dhe PIR kam përdorur një MCP3008, i cili është një konvertor analog me dixhital me 8 kanale 10 bit me ndërfaqen SPI dhe është shumë i lehtë për tu programuar.

Fleta e të dhënave:

Sensori i lëvizjes PIR

Për të zbuluar kur dikush hyn dhe del nga dhoma ime, kam përdorur një sensor pasiv me rreze infra të kuqe sepse ato janë të lehta për t'u përdorur dhe janë të vogla.

Fleta e të dhënave:

LDR

Kam përdorur një rezistencë fotografike ose LDR (Rezistencë në rënie të dritës, ose rezistencë e varur nga drita) për të zbuluar nivelin e shkëlqimit të dhomës.

Altoparlanti - Diametri 3” - 4 Ohm 3 Watt

Ky është koni i altoparlantit që zgjodha pas llogaritjes së Tensionit dhe Amperit që do të duheshin dhe kjo ishte një përshtatje perfekte për projektin tim Raspberry Pi, të prodhuar nga Adafruit.

Vështrim i përgjithshëm:

Përforcues Mono MAX98357 I2S Class-D

Ky është përforcuesi që vjen me altoparlantin, jo vetëm që është një përforcues, është gjithashtu një konvertues dixhital në analog I2S, kështu që është gjithashtu një përshtatje perfekte për altoparlantin dhe sistemin tim audio.

Përmbledhje:

Fleta e të dhënave:

Arduino Uno

Arduino Uno është një bord mikrokontrollues me burim të hapur i bazuar në mikrokontrolluesin Microchip ATmega328P, prodhuar nga Arduino.cc. Bordi Uno ka 14 kunja dixhitale, 6 kunja analoge dhe është plotësisht i programueshëm me programin Arduino IDE

Vështrim i përgjithshëm:

Nivelfikës

Ky është një tabelë e vogël e cila kujdeset për komunikimin midis Arduino Uno dhe Raspberry Pi dhe tensioneve të ndryshme, Arduino: 5V & Raspberry Pi: 3.3V. Kjo është e nevojshme sepse shiriti led lidhet me Arduino dhe funksionon atje, ndërsa të gjitha gjërat e tjera funksionojnë në Raspberry Pi.

WS2812B - Ledstrip

Ky është një brez me 60 led RGB (nëse dëshironi) mund të blini shirita më të gjatë me më shumë led RGB. E cila në rastin tim lidhet me Arduino Uno, por gjithashtu mund të lidhet me shumë pajisje të tjera dhe është vërtet e thjeshtë për t'u përdorur.

Fleta e të dhënave:

GPIO T-Part, 1 Breadboard dhe shumë jumperwires

Për të lidhur gjithçka që më nevojitej dërrasave të bukës dhe jumperwires, nuk kam përdorur GP-T-pjesë, por ju mund ta përdorni për të ditur qartë se cila kosh ku shkon.

Hapi 2: Skematike dhe instalime elektrike

Skematike dhe instalime elektrike
Skematike dhe instalime elektrike
Skematike dhe instalime elektrike
Skematike dhe instalime elektrike

Për të bërë skemën time kam përdorur Fritzing, është një program që mund ta instaloni i cili ju lejon të krijoni një skematikë vërtet të lehtë në lloje të ndryshme pamjesh. Kam përdorur tabelën e bukës dhe pamjen skematike.

Shkarkoni Fritzing:

Sigurohuni që gjithçka është e lidhur në mënyrë korrekte. Kam përdorur ngjyra për ta bërë pak më të qartë të di se ku t'i lidh telat. Në rastin tim kam përdorur ngjyra të ndryshme për telat

Hapi 3: Dizajni i bazës së të dhënave

Dizajni i bazës së të dhënave
Dizajni i bazës së të dhënave

Ne po mbledhim shumë të dhëna nga 3 sensorët (Temperatura nga DS18B20, Ndriçimi nga LDR dhe Statusi nga PIR-sensor). Pra, është më mirë të mbash të gjitha këto të dhëna në një bazë të dhënash. Unë do të shpjegoj në një hap të mëvonshëm se si të konfiguroni bazën e të dhënave (Hapi 5: Inxhinieri Përpara Inxhinieri Baza e të Dhënave tona në RPi!) Por së pari duhet të bëhet dizajni ose ERD (Diagrami i Marrëdhënieve me Entitetin). I imi u normalizua me 3NF prandaj i ndamë përbërësit dhe historinë e përbërësve në një tabelë tjetër. Ne përdorim bazën e të dhënave Music për të mbajtur gjurmët e këngëve që janë dëgjuar.

Në përgjithësi, ky është një dizajn vërtet bazik dhe i lehtë i bazës së të dhënave për të punuar më tej.

Hapi 4: Konfiguroni Raspberry Pi

Pra, tani që kemi bërë disa bazat e projektit. Le të fillojmë me vendosjen e Raspberry Pi!

Pjesa 1: Konfigurimi i Kartës SD

1) Shkarkoni softuerin dhe skedarët e kërkuar

Ju duhet të shkarkoni 2 softuer dhe 1 OS dmth Raspbian për këtë proces të plotë. Softueri i parë: Softueri i parë është Win32 Disk Imager.

sourceforge.net/projects/win32diskimager/

Softueri i dytë: Softueri i dytë është SD Card Formatter.

www.sdcard.org/downloads/formatter_4/

Raspbian OS: Ky është sistemi kryesor operativ i Pi.

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

Nxirrni të gjithë skedarët në desktop.

2) Merrni Kartën SD dhe Lexuesin e Kartave

Merrni një kartë SD minimum 8 GB të klasës 10 me një lexues karte. Futeni atë kartë në lexuesin e kartës dhe lidheni atë me portën USB.

3) Formatoni kartën SD

Hapni Formatin e Kartës SD dhe zgjidhni njësinë.

Klikoni në format dhe mos ndryshoni asnjë opsion tjetër.

Kur të përfundojë formatimi, klikoni OK.

4) Shkruani sistemin operativ në kartën SD

Hapni win32diskimager.

Shfletoni skedarin.img të Raspbian OS që është nxjerrë nga skedari i shkarkuar.

Klikoni mbi të hapur dhe pastaj klikoni në Shkruaj.

Nëse shfaqet ndonjë paralajmërim atëherë injoroni ato duke klikuar OK. Prisni që shkrimi të përfundojë dhe mund të zgjasë disa minuta. Pra, ki durim.

n

5) Pasi të bëhet kjo, ne jemi gati të bëjmë disa rregullime përfundimtare para se të vendosim imazhin në RPi -në tonë.

Shkoni te drejtoria e kartës suaj SD, kërkoni skedarin me emrin 'cmdline.txt' dhe hapeni atë.

Tani shtoni 'ip = 169.254.10.1' në të njëjtën linjë.

Ruani skedarin.

Krijoni një skedar të quajtur 'ssh' pa shtrirje ose përmbajtje. (Mënyra më e lehtë është të krijoni një skedar txt dhe të hiqni.txt më pas)

Tani që gjithçka është instaluar në kartën SD, mund ta hiqni SIGURISHT nga kompjuteri juaj dhe ta vendosni në Raspberry Pi PA Lidhje të energjisë. Pasi karta SD të jetë në RPI, lidhni një kabllo LAN nga kompjuteri juaj në portën RPi LAN, pasi të jetë lidhur kjo mund të lidhni fuqinë me RPi.

Pjesa 2: Konfigurimi i RPi

Stuko

Tani ne duam të konfigurojmë Raspberry Pi tonë, kjo bëhet përmes Putty.

Softuer stuko:

Pasi të shkarkohet, hapni Putty dhe futni IP '169.254.10.1' dhe Portin '22' dhe llojin e lidhjes: SSH.

Tani më në fund mund të hapim ndërfaqen tonë të linjës së komandës dhe të identifikohemi me informacionin e hyrjes fillestare -> Përdoruesi: pi & Fjalëkalimi: mjedër. (Rekomandohet ta ndryshoni sa më shpejt që të jetë e mundur. Këtu keni një udhëzues se si:

Raspi-config

Ne do të duhet të aktivizojmë ndërfaqe të ndryshme dhe për ta bërë këtë së pari duhet të shtypim kodin e mëposhtëm:

sudo raspi-config

Gjërat që duhet të aktivizojmë janë në pjesën e ndërlidhjes. Ne duhet të aktivizojmë ndërfaqet e mëposhtme:

  • Me një tel
  • Serial
  • I2C
  • SPI

Kjo ishte gjithçka që na duhej të bënim me raspi-config

Shtimi i WIFI -t tuaj

Së pari, duhet të jeni rrënjë që komanda e mëposhtme të bëhet rrënjë

sudo -i

Pasi të jeni rrënjosur, përdorni komandën e mëposhtme: (Zëvendësoni SSID me emrin e rrjetit dhe fjalëkalimin tuaj me fjalëkalimin tuaj të rrjetit)

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

Në rast se keni bërë diçka të gabuar, mund ta kontrolloni, përditësoni ose fshini këtë rrjet duke futur komandën e mëposhtme:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Pra, pasi të kemi hyrë në rrjetin tonë, le të hyjmë në ndërfaqen e klientit WPA

wpa_cli

Zgjidhni ndërfaqen tuaj

ndërfaqja wlan0

Ringarko skedarin

rikonfiguro

Dhe së fundi mund të shihni nëse jeni lidhur mirë:

ip a

Pjesa 3: Përditësimi i softuerit të instalimit të RPi +

Tani që jemi lidhur me internetin, përditësimi i paketave të instaluara tashmë do të ishte një veprim i zgjuar, kështu që le ta bëjmë atë së pari para se të instalojmë paketa të tjera.

përditësim sudo apt-get

sudo apt-get upgrade

Pas azhurnimit të RPi do të na duhet të instalojmë programin e mëposhtëm:

Baza e të dhënave MariaDB

sudo apt-get install mariadb-server

Serveri i uebit Apache2

sudo apt install apache2

Python

alternativat e azhurnimit --install/usr/bin/python python /usr/bin/python3.7 1 alternativat e përditësimit --install/usr/bin/python python/usr/bin/python3 2

Paketë Python

Ju do të duhet të instaloni të gjitha këto pako për ta bërë backend -in të funksionojë në mënyrë perfekte:

  • Flluskë
  • Flask-Cors
  • Flask-MySql
  • Flask-SocketIO
  • Kërkesat PyMySQL
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket

Biblioteka e folësve

Për përdorimin e altoparlantit me amplifikatorin do të duhet të instalojmë një bibliotekë për të

kaçurrela -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

Vendosja e bazës së të dhënave në RPi!
Vendosja e bazës së të dhënave në RPi!

Tani që kemi instaluar gjithçka që na nevojitet, le ta vendosim Baza e të dhënave tona të projektuar në Raspberry Pi tonë!

Për vendosjen e bazës së të dhënave do të na duhet të lidhim MySql dhe RPi. Për këtë ne do të hapim MySQLWorkbench dhe do të bëjmë një lidhje të re. Kur shikoni imazhin, do të duhet të ndryshoni për të ndryshuar informacionin tuajin.

Nëse nuk keni ndryshuar asgjë akoma, mund të përdorni për SSH pi dhe mjedër, për MySQL mysql dhe mysql.

Kur diçka nuk është e qartë, mund të ndiqni edhe këtë tutorial:

Për të eksportuar bazën e të dhënave tuaja duhet të jetë më e lehtë të përdorni PHPmyAdmin sepse mund të merrni shumë gabime duke e bërë atë me MySql

Hapi 6: Konfigurimi i Bluetooth në RPi -në Tonë

Ne po krijojmë një altoparlant Mood, të cilin mund ta përdorim edhe me muzikën tonë, kështu që kjo është më e lehtë kur është RPi

i lidhur me bluetooth ndoqa një tutorial për të që mund ta gjeni këtu:

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

Kam shkruar gjithçka këtu gjithashtu për të gjithë ata që duan ta rikrijojnë atë

Heqja e blualsa -s që tashmë funksionon

sudo rm/var/run/bluealsa/*

Shto profilin A2DP Roli i lavamanit

sudo bluealsa -p a2dp -lavaman &

Hapni ndërfaqen bluetooth dhe ndizni Bluetooth -in tuaj

bluetoothctl ndizet

Krijoni një agjent çiftimi

agjenti në agjentin e paracaktuar

Bëni RPi -në tuaj të zbulueshme

e zbulueshme në

  • Tani nga pajisja juaj bluetooth, kërkoni RPi dhe lidheni me të.
  • Konfirmoni çiftimin në të dy pajisjet, shkruani 'po' në stuko tuaj.
  • Autorizoni shërbimin A2DP, shkruani përsëri 'po'.
  • Pasi të bëhet kjo, ne mund t'i besojmë pajisjes sonë, kështu që nuk kemi pse ta kalojmë këtë çdo herë që duam të lidhemi

beso XX: XX: XX: XX: XX: XX (adresa jote bluetooth nga pajisja jonë burimore)

Nëse dëshironi që RPi juaj të vazhdojë të jetë i zbulueshëm, kjo është zgjedhja juaj, por unë preferoj ta fik atë përsëri, në mënyrë që njerëzit të mos përpiqen të lidhen me kutinë tuaj

e zbulueshme off

Atëherë mund të dalim nga ndërfaqja jonë bluetooth

dalje

Dhe së fundi, drejtimi ynë audio: pajisja jonë burimore që përcjell tek RPi -ja jonë

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

Tani pajisja jonë është e lidhur me mjedrën tonë me bluetooth dhe ju duhet të jeni në gjendje ta provoni atë duke luajtur ndonjë media për shembull Spotify, etj.

Hapi 7: Shkrimi i një pasqyre të plotë

Pra, tani konfigurimi është bërë, më në fund mund të fillojmë të shkruajmë programin tonë të backendit!

Kam përdorur Visual Studio Code për gjithë sfondin tim, thjesht duhet të siguroheni që projekti juaj Visual Studio është i lidhur me Raspberry Pi tuaj, kjo do të thotë që kablloja juaj LAN duhet të jetë e lidhur me RPi -në tuaj dhe për të bërë një lidhje SSH. (informacion se si të krijoni një lidhje në distancë mund të gjenden këtu:

Kam përdorur klasat e mia dhe këto gjithashtu përfshihen të gjitha në GitHub tim.

Në skedarin tim backend kam përdorur klasa të ndryshme, kështu që gjithçka mund të përdoret veç e veç dhe në mënyrë që kodi im kryesor të mos ngatërrohet me të gjitha fijet e ndryshme. Kam përdorur filetim për të drejtuar të gjitha klasat e ndryshme në të njëjtën kohë. Dhe në fund keni të gjitha rrugët në mënyrë që të mund të marrim me lehtësi të dhëna në frontin tonë.

Hapi 8: Shkrimi i Frontend (HTML, CSS & JavaScript)

Tani që backendi është bërë, ne mund të fillojmë të shkruajmë pjesën e përparme të plotë.

HTML dhe CSS ishin mjaft të vështira për mua, bëra çmos që ta bëja atë celular së pari sepse mund të lidhem me të me bluetooth për të ndryshuar këngët me Spotify. Pra, do të ishte më e lehtë për tu kontrolluar nga një pult celular

Ju mund të krijoni pultin tuaj në çfarëdo mënyre që dëshironi, unë thjesht do të lë kodin dhe modelin tim këtu, ju mund të bëni çfarë të doni!

Dhe Javascript nuk ishte më e lehtë për mua, punova me disa GET nga rrugët e mia të pasme, mijëra dëgjues ngjarjesh dhe disa struktura socketio për të marrë të dhënat nga sensorët e mi.

Hapi 9: Ndërtimi i çështjes sime dhe vendosja e të gjitha së bashku

Ndërtimi i çështjes sime dhe vendosja e të gjitha së bashku
Ndërtimi i çështjes sime dhe vendosja e të gjitha së bashku
Ndërtimi i çështjes sime dhe vendosja e të gjitha së bashku
Ndërtimi i çështjes sime dhe vendosja e të gjitha së bashku
Ndërtimi i çështjes sime dhe vendosja e të gjitha së bashku
Ndërtimi i çështjes sime dhe vendosja e të gjitha së bashku
Ndërtimi i çështjes sime dhe vendosja e të gjitha së bashku
Ndërtimi i çështjes sime dhe vendosja e të gjitha së bashku

Fillimisht fillova të skicoj se si doja që rasti të dukej, diçka e rëndësishme ishte se duhej të ishte mjaft e madhe që gjithçka të përshtatej, pasi ne kishim një qark të madh për ta futur në kasetë, por duhej të qëndronim kompakt në mënyrë që të mos ndodhte ' mos merrni shumë hapësirë

Unë e kam bërë kasën prej druri, mendoj se është më e lehtë të punosh kur nuk ke aq përvojë me ndërtimin e kasave dhe gjithashtu ke shumë gjëra që mund të bësh me të.

Fillova nga një dërrasë e vjetër që kisha shtrirë dhe sapo fillova të sharroja drurin. Sapo kisha rastin tim bazë, më duhej të bëja vrima në të (shumë në pjesën e përparme të kasës, siç mund të shihni në fotografi dhe të vendosni disa gozhdë në të, është një rast vërtet themelor, por duket shumë mirë dhe përshtatet në mënyrë perfekte. Edhe vendosa ta lyej të bardhë për ta bërë të duket mirë.

Dhe pasi të përfundonte çështja, ishte koha për t'i bashkuar të gjitha, siç mund ta shihni në foton e fundit! Kindshtë disi një rrëmujë brenda kutisë, por gjithçka funksionon dhe unë nuk kisha aq shumë hapësirë, kështu që unë ju këshilloj që ndoshta të krijoni një rast më të madh nëse jeni duke rikrijuar projektin tim.

Recommended: