Përmbajtje:

Slimbox - një altoparlant i zgjuar Bluetooth!: 10 hapa (me fotografi)
Slimbox - një altoparlant i zgjuar Bluetooth!: 10 hapa (me fotografi)

Video: Slimbox - një altoparlant i zgjuar Bluetooth!: 10 hapa (me fotografi)

Video: Slimbox - një altoparlant i zgjuar Bluetooth!: 10 hapa (me fotografi)
Video: 🔥🔥Так делают даже богатые! Почини пульт с помощью карандаша! 2024, Nëntor
Anonim
Slimbox - një altoparlant i zgjuar Bluetooth!
Slimbox - një altoparlant i zgjuar Bluetooth!

Çkemi!

Për projektin tim shkollor në MCT Howest Kortrijk, bëra një pajisje altoparlanti inteligjent Bluetooth me sensorë të ndryshëm, një unazë LCD dhe RGB NeoPixel të përfshirë. Gjithçka funksionon në Raspberry Pi (Baza e të dhënave, Webserver, Backend).

Kështu që në këtë udhëzues do t'ju tregoj se si e bëra këtë projekt në 3 javë, hap pas hapi, kështu që nëse ndonjëri prej jush dëshiron të rikrijojë projektin tim, ju lehtë mund ta bëni!

Ky është gjithashtu udhëzimi im i parë, nëse keni ndonjë pyetje, do të përpiqem t'u përgjigjem atyre sa më shpejt të jetë e mundur!

GitHub im:

Hapi 1: Furnizimet

Furnizimet
Furnizimet
Furnizimet
Furnizimet
Furnizimet
Furnizimet

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:

Sensori i potenciometrit

Një potenciometër është rezistencë me tre terminale e cila është e rregullueshme me dorë duke rrotulluar pjesën e sipërme të sensorit. Pozicioni i pjesës së sipërme përcakton tensionin dalës të potenciometrit.

LSM303 Accelerometer + Compass Breakout

Tabela e shpërthimit LSM303 është një kombinim i një akselerometri me bosht të trefishtë dhe një magnetometër / busull, të prodhuar nga Adafruit. Përdoret me ndërfaqen I2C të Raspberry Pi.

Vështrim i përgjithshëm:

Fleta e të dhënave:

MCP3008

Për të lexuar të dhënat nga potenciometri im 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:

Altoparlanti - Diametri 3” - 8 Ohm 1 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.

Vështrim i përgjithshëm:

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 unaza NeoPixel është e lidhur me Arduino dhe funksionon atje, ndërsa të gjitha gjërat e tjera funksionojnë në Raspberry Pi.

Unaza RGB NeoPixel

Kjo është një unazë e vogël e mbushur me 12 led RGB (mund të blini unaza më të mëdha me më shumë led RGB, nëse dëshironi). 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.

Përmbledhje:

Ekran LCD 16x2

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

Fleta e të dhënave:

Kartë SD Raspberry Pi 3B+ & 16 GB

I gjithë projekti im funksionon në Raspberry Pi 3B+ me një imazh të konfiguruar, të cilin do t'ju ndihmoj ta konfiguroni më vonë në udhëzuesin tim.

GPIO T-Part, 2 Tabela Breadboard dhe shumë jumperwires

Për të lidhur gjithçka që më nevojitej paneleve dhe jumperwires, kam përdorur pjesën GPIO T kështu që kam më shumë hapësirë dhe është e qartë se cila kunj është cila.

Hapi 2: Skematike dhe instalime elektrike

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

Për skemën time kam përdorur Fritzing, është një program që mund ta instaloni i cili ju lejon të krijoni një skemë vërtet të lehtë në lloje të ndryshme pamjesh.

Shkarkoni Fritzing:

Prandaj sigurohuni që të lidhni gjithçka në mënyrën e duhur! Në rastin tim, ngjyrat e telave nuk janë të njëjta si në skemën.

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 e lidhur, kështu që kemi nevojë për një bazë të dhënash për të ruajtur të dhënat dhe sensorët. Më vonë do të shohim se si të konfigurojmë bazën e të dhënave në Raspberry Pi dhe si të shtojmë të dhëna në të. Por së pari duhet të bëhet dizajni i bazës së të dhënave ose ERD (Diagrami i Marrëdhënieve me Entitetin) dhe imi gjithashtu u normalizua me 3NF. Kjo është arsyeja pse ne i ndajmë sensorët në një tabelë tjetër dhe punojmë me ID -të.

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: Përgatitja e Raspberry Pi

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

Konfigurimi i kartës SD

Së pari, keni nevojë për një Kartë SD 16 GB ku mund të vendosni imazhin tuaj dhe një program për të ngarkuar një imazh fillestar në kartën SD.

Softueri:

Imazhi fillestar:

Pra, pasi të shkarkohen këto:

  1. Vendosni kartën tuaj SD në kompjuterin tuaj.
  2. Hapni Win32 që sapo keni shkarkuar.
  3. Zgjidhni skedarin e imazhit Raspbian të cilin gjithashtu sapo e shkarkuat.
  4. Klikoni në 'shkruaj' në vendndodhjen e kartës suaj SD.

Kjo mund të marrë ca kohë, në varësi të pajisjes suaj. Pasi të bëhet kjo, ne jemi gati të bëjmë disa rregullime përfundimtare para se të vendosim imazhin në RPi -në tonë.

  1. Shkoni te drejtoria e kartës suaj SD, kërkoni skedarin me emrin 'cmdline.txt' dhe hapeni atë.
  2. Tani shtoni 'ip = 169.254.10.1' në të njëjtën linjë.
  3. Ruani skedarin.
  4. Krijoni një skedar të quajtur 'ssh' pa shtrirje ose përmbajtje.

Tani mund ta nxjerrni me siguri kartën SD nga kompjuteri juaj dhe ta vendosni në Raspberry Pi PA fuqi. 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.

Tani ne duam të kontrollojmë 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.

Raspi-config

sudo raspi-config

Ajo që është me të vërtetë e rëndësishme për këtë projekt është pjesa e ndërlidhjes, ne duhet të aktivizojmë shumë ndërfaqe të ndryshme, të mundësojmë të gjitha ndërfaqet e mëposhtme:

  • Me një tel
  • SPI
  • I2C
  • Serial

Tani që kemi mbaruar me raspi-config, le të përpiqemi të krijojmë një lidhje me internetin.

Lidhje Wi-Fi

Së pari, duhet të jeni rrënjë për komandat e mëposhtme

sudo -i

Pasi të jeni rrënjosur, përdorni komandën e mëposhtme. SSID është emri i rrjetit tuaj dhe fjalëkalimi është padyshim fjalëkalimi i tij.

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

Në rast se keni bërë një gabim, mund ta kontrolloni, përditësoni ose fshini këtë rrjet duke futur atë skedar:

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

Përditëso dhe përditëso

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

Baza e të dhënave MariaDB

Instaloni serverin e bazës së të dhënave MariaDB:

sudo apt-get install mariadb-server

Serveri i uebit Apache2

Instaloni serverin në internet Apache2:

sudo apt install apache2

Python

Instaloni Python:

alternativat e azhurnimit --install/usr/bin/python python /usr/bin/python2.7 1

alternativat e azhurnimit-instaloni/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
  • PyMySQL
  • Kërkesat
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket
  • Ujson
  • Wsaccel

Biblioteka e folësve

Instaloni bibliotekën e altoparlantëve nga Adafruit:

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

Koha për të rindezur

rindez sudo

Hapi 5: Inxhinierimi i përparuar i bazës sonë të 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ë!

Pra, së pari ne duhet të inxhinierojmë bazën e të dhënave tona në tryezën e punës MySql, ndërsa e bëjmë këtë, kopjoni kodin tuaj të plotë të bazës së të dhënave dhe fshini të gjitha fjalët 'e dukshme' në të. Pra, pasi të jetë kopjuar, le të hapim stuko përsëri, regjistrohuni dhe shkruani:

sudo mysql

dhe tani jeni në ndërfaqen mysql, kopjoni kodin e bazës së të dhënave në të dhe shtypni enter.

Tani na mbetet vetëm të krijojmë një përdorues

KRIJONI PERRDORUESIN 'përdorues' IDENTIFIKUAR NGA 'përdorues';

JEPI T ALL GJITHA PRIVILEGJET ON *. * N '' përdorues ';

Tani rindizni.

Pra, gjithçka duhet të konfigurohet tani, ju gjithashtu mund të krijoni një lidhje me Pi dhe MySql Workbench tuaj, kështu që është më e lehtë të kontrolloni të gjitha të dhënat në tabelat tuaja.

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

Ne po krijojmë një altoparlant Bluetooth, kështu që kjo do të thotë që media po dërgohet nga burimi ynë në Raspberry Pi dhe kjo mund të bëhet mjaft lehtë, le të futemi menjëherë në të!

Burimi im për lidhjen bluetooth:

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

pushtet mbi

Krijoni një agjent çiftimi

agjent i ndezur

agjent i parazgjedhur

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 plotësisht me mjedrën tonë dhe ju duhet të jeni në gjendje të luani media nga pajisja juaj burimore në altoparlantin Pi.

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 PyCharm për të gjithë sfondin tim, ju vetëm duhet të siguroheni që projekti juaj PyCharm është i lidhur me Raspberry Pi tuaj, kjo do të thotë që shtegu juaj i vendosjes është vendosur në cilësimet tuaja dhe keni instaluar të gjitha paketat që na duhen, duhet të bëhen tashmë në hap 4

Kam përdorur klasat e mia dhe këto gjithashtu përfshihen të gjitha në GitHub tim. Linku është në hyrje në rast se e keni humbur;)

Në skedarin tim backend kam përdorur klasa filetimi, kështu që gjithçka mund të funksionojë në të njëjtën kohë dhe nuk do të ndërpresë njëri -tjetrin. 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 & CSS u bënë shumë lehtë, u përpoq të punonte së pari në celular sa më shumë që të ishte e mundur, pasi ne shumicën e rasteve lidhemi me Bluetooth nga një pajisje celulare, do të ishte më e lehtë të kontrollohesh 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 aq e vështirë, punoi me disa GET nga rrugët e mia të pasme, mijëra dëgjues ngjarjesh dhe disa struktura socketio.

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

Fillimisht fillova me disa skica se si doja të dukej rasti, diçka e rëndësishme ishte se duhej të ishte mjaft e madhe që gjithçka të përshtatej, meqë kishim një qark të madh për të futur në kasë.

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ë kuti për shishe vere 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: P) dhe të vendos disa gozhdë në të, është një rast vërtet themelor, por duket mjaft e ftohtë dhe përshtatet në mënyrë perfekte.

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.

Hapi 10: Disa probleme që kisha në rrugën time për krijimin e altoparlantit Slimbox…

Gabimet Bluetooth & bluealsa

Sa herë që doja të luaja muzikë ose të lidhesha me bluetooth, merrja gabime nga bluetooth dhe bluealsa. Kam bërë disa kërkime mbi të dhe kjo ishte zgjidhja e problemit tim. Pra, për ndonjë arsye bluetooth-i im u bllokua butë, nuk jam i sigurt nëse ky është standard i butë i bllokuar. Ju mund të shihni nëse është duke shtypur komandën e mëposhtme në Stuko tuaj.

lista rfkill

Pra, nëse është i bllokuar me butësi, thjesht përdorni këtë:

rfkill zhbllokoni bluetooth -in

Dhe mund të dëshironi të rindizni pas kësaj, burimi im:

Problemet e lidhjes serike

Pra, një problem tjetër i madh që kisha ishte se nuk mund të krijoja asnjë lidhje me Arduino -n tim përmes ndërruesit të nivelit, pas disa kërkimeve zbulova se '/dev/ttyS0' im ishte zhdukur dhe kjo mund të ishte për shkak të një përditësimi të RPi -së tuaj. Gjithashtu gjeti një zgjidhje për këtë

Ju do të duhet të riaktivizoni tastierën serike me raspi-config, rindizni dhe pastaj hiqni manualisht bitin "console = serial0, 115200" nga '/boot/cmdline.txt'. Konfirmoni që "enable_uart = 1" është në ' /boot/config.txt ', dhe rindizni përsëri. Kjo duhet të marrë përsëri portën tuaj ttyS0, si dhe lidhjen e butë'/dev/serial0 'me të.

Burimi:

Recommended: