Përmbajtje:
- Hapi 1: Furnizimet
- Hapi 2: Skematike dhe instalime elektrike
- Hapi 3: Dizajni i bazës së të dhënave
- Hapi 4: Përgatitja e Raspberry Pi
- Hapi 5: Inxhinierimi i përparuar i bazës sonë të të dhënave në RPi
- Hapi 6: Konfigurimi i Bluetooth në RPi -në Tonë
- Hapi 7: Shkrimi i një pasqyre të plotë
- Hapi 8: Shkrimi i Frontend (HTML, CSS & JavaScript)
- Hapi 9: Ndërtimi i çështjes sime dhe vendosja e të gjitha së bashku
- Hapi 10: Disa probleme që kisha në rrugën time për krijimin e altoparlantit Slimbox…
Video: Slimbox - një altoparlant i zgjuar Bluetooth!: 10 hapa (me fotografi)
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:19
Ç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
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
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
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:
- Vendosni kartën tuaj SD në kompjuterin tuaj.
- Hapni Win32 që sapo keni shkarkuar.
- Zgjidhni skedarin e imazhit Raspbian të cilin gjithashtu sapo e shkarkuat.
- 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ë.
- 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.
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
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:
Altoparlant portativ Bluetooth - Kit MKBoom DIY: 5 hapa (me fotografi)
Altoparlant portativ Bluetooth | MKBoom DIY Kit: Përshëndetje të gjithëve! Goodshtë mirë të kthehem me një projekt tjetër altoparlantësh pas një pushimi të gjatë. Meqenëse shumica e strukturave të mia kërkojnë mjaft mjete për të përfunduar, këtë herë vendosa të ndërtoj një altoparlant portativ duke përdorur një çantë që mund ta blini me lehtësi. Mendova se
Dritë LED e tavolinës së zgjuar - Ndriçim i zgjuar W/ Arduino - Hapësira e punës Neopixels: 10 hapa (me fotografi)
Dritë LED e tavolinës së zgjuar | Ndriçim i zgjuar W/ Arduino | Neopixels Workspace: Tani një ditë ne po kalojmë shumë kohë në shtëpi, duke studiuar dhe punuar virtualisht, kështu që pse të mos e bëjmë hapësirën tonë të punës më të madhe me një sistem ndriçimi të personalizuar dhe të zgjuar të bazuar në LED Arduino dhe Ws2812b. Këtu po ju tregoj se si të ndërtoni Smart tuaj Drita LED e tavolinës që
Ora me alarm e ngritur e zgjuar Drita e zgjuar: 8 hapa (me fotografi)
Ora me Alarm të Upcycled Light Light: Në këtë projekt unë nxjerr në qarkullim një orë alarmi të thyer plotësisht të erës. Faqja e orës zëvendësohet me 12 LED, të ndriçuara nga një shirit LED rreth buzës së orës. 12 LED tregojnë kohën dhe shiriti LED është programuar të veprojë si një alarm, duke u kthyer
Kopshtari i zgjuar i bazuar në IoT dhe Bujqësia e Zgjuar duke përdorur ESP32: 7 hapa
Kopshtari i zgjuar i bazuar në IoT dhe Bujqësia e Zgjuar Duke përdorur ESP32: Bota po ndryshon me kalimin e kohës dhe kështu bujqësinë. Në ditët e sotme, njerëzit po integrojnë elektronikën në çdo fushë dhe bujqësia nuk është përjashtim për këtë. Ky bashkim i elektronikës në bujqësi po ndihmon fermerët dhe njerëzit që menaxhojnë kopshtet. Në këtë
Si të konvertoni çdo altoparlant në altoparlant BLUETOOTH: 5 hapa
Si të konvertoni çdo altoparlant në altoparlant BLUETOOTH: Nëse keni një sistem të vjetër teatri në shtëpi si unë, atëherë keni gjetur një opsion shumë të njohur të lidhjes, të quajtur Bluetooth, që mungon në sistemin tuaj. Pa këtë pajisje, duhet të përballeni me rrëmujën e lidhjes normale AUX dhe natyrisht, nëse