INHOUDSOPGAWE:
- Stap 1: Voorrade
- Stap 2: Skematiese en bedrading
- Stap 3: Databasisontwerp
- Stap 4: Berei die Raspberry Pi voor
- Stap 5: Stuur Engineering ons databasis deur na die RPi
- Stap 6: Bluetooth instel op ons RPi
- Stap 7: Skryf die volledige backend
- Stap 8: Skryf die frontend (HTML, CSS en JavaScript)
- Stap 9: Bou my saak en plaas dit alles saam
- Stap 10: 'n Paar probleme wat ek ondervind het tydens die skep van die Slimbox -luidspreker …
Video: Slimbox - 'n slim Bluetooth -luidspreker!: 10 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
Haai daar!
Vir my skoolprojek by MCT Howest Kortrijk, het ek 'n slim Bluetooth -luidsprekerapparaat gemaak met verskillende sensors, 'n LCD en RGB NeoPixel -ring ingesluit. Alles werk op die Raspberry Pi (databasis, webbediener, backend).
In hierdie instruksies sal ek u stap vir stap wys hoe ek hierdie projek binne 3 weke gemaak het, so as iemand van julle my projek wil herskep, kan julle dit maklik doen!
Dit is ook my eerste opdrag, as u enige vrae het, sal ek probeer om dit so vinnig as moontlik te beantwoord!
My GitHub:
Stap 1: Voorrade
DS18B20 Temperatuursensor
Die DS18B20 is 'n enkeldraadsensor wat die temperatuur meet, vervaardig deur Maxim Integrated. Daar is 2 soorte DS18B20 -sensors, slegs die komponent (wat ek gebruik het) en die waterdigte weergawe, wat baie groter is, maar dit is nie wat ek nodig gehad het vir my projek nie, so ek het slegs die komponent gebruik. Die sensor kan die temperatuur in 'n reeks van -55 ° C tot +125 ° C (-67 ° F tot +257 ° F) meet, en dit het 'n akkuraatheid van 0,5 ° C van -10 ° C tot +85 ° C. Dit het ook 'n programmeerbare resolusie van 9 bis tot 12 bis.
Gegevensblad:
Potensiometer sensor
'N Potensiometer is 'n weerstand met drie terminale wat met die hand verstel kan word deur net die boonste deel van die sensor te draai. Die posisie van die boonste deel bepaal die uitgangsspanning van die potensiometer.
LSM303 versnellingsmeter + kompasbreek
Die LSM303-uitbreekbord is 'n kombinasie van 'n drie-as versnellingsmeter en 'n magnetometer / kompas, vervaardig deur Adafruit. Dit word gebruik met die I2C -koppelvlak van die Raspberry Pi.
Oorsig:
Gegevensblad:
MCP3008
Om die data van my potensiometer te lees, gebruik ek 'n MCP3008, 'n 8 -kanaals 10 -bis analoog na digitale omskakelaar met die SPI -koppelvlak en redelik maklik om te programmeer.
Gegevensblad:
Luidspreker - 3”Diameter - 8 Ohm 1 Watt
Dit is die luidsprekerkegel wat ek gekies het na die berekening van die spanning en ampère wat dit sou benodig, en dit pas perfek by my Raspberry Pi -projek, vervaardig deur Adafruit.
Oorsig:
MAX98357 I2S Klas-D mono versterker
Dit is die versterker wat by die luidspreker kom, nie net 'n versterker nie, dit is ook 'n I2S digitaal na analoog -omskakelaar, dus dit pas ook perfek by my luidspreker en klankstelsel.
Oorsig:
Gegevensblad:
Arduino Uno
Die Arduino Uno is 'n oopbron-mikrobeheerderbord gebaseer op die Microchip ATmega328P-mikrobeheerder, vervaardig deur Arduino.cc. Die Uno -bord het 14 digitale penne, 6 analoog penne en is volledig programmeerbaar met die Arduino IDE -sagteware
Oorsig:
Vlakveranderaar
Dit is 'n klein bordjie wat sorg vir die kommunikasie tussen die Arduino Uno en die Raspberry Pi en die verskillende spannings, Arduino: 5V en Raspberry Pi: 3.3V. Dit is nodig omdat die NeoPixel -ring aan die Arduino gekoppel is en daar loop, terwyl al die ander dinge op die Raspberry Pi werk.
RGB NeoPixel -ring
Dit is 'n klein ring gevul met 12 RGB -leds (as u wil, kan u groter ringe met meer RGB -leds koop). Dit is in my geval gekoppel aan die Arduino Uno, maar kan ook aan baie ander toestelle gekoppel word en is baie eenvoudig om te gebruik.
Oorsig:
LCD -skerm 16x2
Ek het 'n basiese LCD -skerm gebruik om my temperatuur, volume en IP -adres af te druk.
Gegevensblad:
Framboos Pi 3B+ en 16 GB SD -kaart
My hele projek loop op my Raspberry Pi 3B+ met 'n gekonfigureerde prentjie, wat ek later sal help om in my instruksies op te stel.
GPIO T-Part, 2 Breadboards en baie jumperwires
Ek het die GPIO T-onderdeel gebruik om alles wat ek broodborde en jumperwires nodig het, aan te sluit, sodat ek meer ruimte het en dit is duidelik watter pen dit is.
Stap 2: Skematiese en bedrading
Vir my skematiese gebruik ek Fritzing, dit is 'n program wat u kan installeer, waarmee u 'n baie eenvoudige skema kan maak in verskillende aansigte.
Laai Fritzing af:
Maak dus seker dat u alles op die regte manier verbind! In my geval is die kleure van die drade nie dieselfde as op die skema nie.
Stap 3: Databasisontwerp
Ons versamel baie data van die 3 gekoppelde sensors, so ons benodig 'n databasis om die data en sensors in te stoor. Later sal ons sien hoe u die databasis op die Raspberry Pi kan opstel en hoe u data daaraan kan byvoeg. Maar eers moet die databasisontwerp of ERD (Entity Relationship Diagram) gemaak word en myne is ook genormaliseer met 3NF. Daarom verdeel ons die sensors in 'n ander tafel en werk ons met ID's.
In die algemeen is dit 'n basiese en maklike databasisontwerp waarmee u verder kan werk.
Stap 4: Berei die Raspberry Pi voor
Nou dat ons 'n paar basiese beginsels van die projek gedoen het. Kom ons begin met die Raspberry Pi!
SD -kaartkonfigurasie
Eerstens benodig u 'n 16 GB SD -kaart waarop u u prent kan aanbring en 'n program om 'n beginbeeld na die SD -kaart op te laai.
Sagteware:
Beginprent:
Dus, sodra dit afgelaai is:
- Plaas u SD -kaart in u rekenaar.
- Maak die Win32 oop wat u pas afgelaai het.
- Kies die Raspbian -prentlêer wat u pas afgelaai het.
- Klik op 'skryf' na die plek van u SD -kaart.
Dit kan 'n rukkie neem, afhangende van u hardeware. Sodra dit klaar is, is ons gereed om 'n paar finale aanpassings aan te bring voordat ons die beeld in ons RPi plaas.
- Gaan na die gids van u SD -kaart, soek die lêer met die naam 'cmdline.txt' en maak dit oop.
- Voeg nou 'ip = 169.254.10.1' op dieselfde reël by.
- Stoor die lêer.
- Skep 'n lêer met die naam 'ssh' sonder uitbreiding of inhoud.
Nou kan u die SD -kaart VEILIG van u rekenaar verwyder en dit sonder krag in die Raspberry Pi sit. Sodra die SD -kaart in die RPI is, koppel 'n LAN -kabel van u rekenaar aan die RPi LAN -poort, sodra dit gekoppel is, kan u die krag aan die RPi koppel.
Nou wil ons ons Raspberry Pi beheer, dit word gedoen deur middel van stopverf.
Putty sagteware:
Sodra dit afgelaai is, maak Putty oop en plaas die IP '169.254.10.1' en poort '22' en verbindingstipe: SSH. Nou kan ons uiteindelik ons opdragreël -koppelvlak oopmaak en aanmeld met die aanmeldinligting -> Gebruiker: pi en wagwoord: framboos.
Raspi-konfig
sudo raspi-config
Wat regtig belangrik is vir hierdie projek, is die koppelvlakafdeling; ons moet baie verskillende koppelvlakke moontlik maak, al die volgende koppelvlakke aktiveer:
- Eendraad
- SPI
- I2C
- Reeks
Noudat ons klaar is met raspi-config, probeer ons 'n verbinding met die internet maak.
Wi-Fi-verbinding
Eerstens moet u die wortels van die volgende opdragte wees
sudo -i
As u eers die wortel het, gebruik die volgende opdrag. SSID is u netwerknaam en wagwoord is natuurlik die wagwoord.
wpa_passphrase "ssid" "wagwoord" >> /etc/wpa_supplicant/wpa_supplicant.conf
As u 'n fout gemaak het, kan u hierdie netwerk kontroleer, opdateer of uitvee deur net die lêer in te voer:
nano /etc/wpa_supplicant/wpa_supplicant.conf
Dus, nadat ons ons netwerk binnegekom het, laat ons die WPA -kliënt -koppelvlak betree
wpa_cli
Kies u koppelvlak
koppelvlak wlan0
Herlaai die lêer
herkonfigureer
En uiteindelik kan u sien of u goed verbind is:
ip a
Opdateer en opgradeer
Noudat ons aan die internet gekoppel is, is die opdatering van die reeds geïnstalleerde pakkette 'n slim stap, dus laat ons dit eers doen voordat ons ander pakkette installeer.
sudo apt-get update
sudo apt-get upgrade
MariaDB -databasis
Installeer die MariaDB -databasisbediener:
sudo apt-get install mariadb-bediener
Apache2 webbediener
Installeer die Apache2 -webbediener:
sudo apt installeer apache2
Python
Installeer Python:
update-alternatiewe-installeer/usr/bin/python python /usr/bin/python2.7 1
update-alternatiewe-installeer/usr/bin/python python/usr/bin/python3 2
Python pakket
U sal al hierdie pakkette moet installeer om die backend perfek te laat werk:
- Fles
- Fles-Kors
- Fles-MySql
- Fles-SocketIO
- PyMySQL
- Versoeke
- Python-socketio
- RPi. GPIO
- Gevent
- Gevent-websocket
- Ujson
- Wsaccel
Spreker biblioteek
Installeer die luidsprekerbiblioteek van Adafruit:
krul -sS https://raw.githubusercontent.com/adafruit/Raspbe… | bash
Tyd om weer te begin
sudo herlaai
Stap 5: Stuur Engineering ons databasis deur na die RPi
Noudat ons alles wat ons nodig het geïnstalleer het, laat ons ons databasis op ons Raspberry Pi sit!
Ons moet dus eers ons databasis in die MySql -werkbank ontwerp, terwyl u dit doen, kopieer u volledige databasiskode en verwyder al die 'sigbare' woorde daarin. Dus, sodra dit gekopieer is, kan ons weer stopverf oopmaak, aanmeld en tik:
sudo mysql
en nou is u in die mysql -koppelvlak, kopieer u databasiskode daarin en druk op enter.
Nou moet ons net 'n gebruiker skep
SKEP 'GEBRUIKER' gebruiker 'GEIDENTIFISEER DEUR' gebruiker ';
GEEN ALLE VOORREGTE AAN *. * AAN 'gebruiker';
Herlaai nou.
Alles moet dus nou opgestel wees; u kan ook 'n verbinding maak met u Pi en MySql Workbench, sodat dit makliker is om al die data in u tabelle na te gaan.
Stap 6: Bluetooth instel op ons RPi
Ons is besig om 'n Bluetooth -luidspreker te skep, so dit beteken dat die media van ons bron na die Raspberry Pi gestuur word, en dit kan redelik maklik gedoen word; laat ons dadelik begin!
My bron vir die Bluetooth-verbinding:
Die verwydering van die reeds uitgevoerde bluealsa
sudo rm/var/run/bluealsa/*
Voeg A2DP -profiel Sinkrol by
sudo bluealsa -p a2dp -wasbak &
Maak die bluetooth -koppelvlak oop en skakel u bluetooth aan
bluetoothctl
skakel aan
Stel 'n paringsagent op
agent op
standaard-agent
Maak u RPi ontdekbaar
ontdekbaar op
- Soek nou vanaf u bluetooth -toestel na die RPi en maak daarmee verbinding.
- Bevestig die koppeling op albei toestelle, tik 'ja' in u stopverf.
- Magtig A2DP -diens, tik weer 'ja'.
- Sodra dit klaar is, kan ons ons toestel vertrou, sodat ons nie hierdeur hoef te gaan elke keer as ons wil koppel nie
vertrou XX: XX: XX: XX: XX: XX (u bluetooth -mac -adres van ons bronapparaat)
As u wil hê dat u RPi aanhoubaar is, is dit u eie keuse, maar ek verkies om dit weer uit te skakel sodat mense nie met u boks kan skakel nie
ontdekbaar af
Dan kan ons ons bluetooth -koppelvlak verlaat
uitgang
En uiteindelik ons klankroetering: ons bronapparaat stuur na ons RPi
bluealsa-aplay 00: 00: 00: 00: 00: 00
Nou is ons toestel volledig gekoppel aan ons Framboos en behoort u media vanaf u brontoestel op die Pi -luidspreker te kan speel.
Stap 7: Skryf die volledige backend
So nadat die opstelling klaar is, kan ons uiteindelik ons backend -program begin skryf!
Ek het PyCharm vir my hele backend gebruik; u hoef net seker te maak dat u PyCharm -projek aan u Raspberry Pi gekoppel is, dit beteken dat u implementeringspad in u instellings opgestel is en dat u al die pakkette wat ons benodig geïnstalleer het, reeds in stap gedoen moet word 4.
Ek het my eie klasse gebruik, en dit is ook almal ingesluit in my GitHub. Die skakel is in die inleiding as u dit gemis het;)
In my backend -lêer het ek threading -klasse gebruik, sodat alles op dieselfde tyd kan werk en dit mekaar nie sal onderbreek nie. En onderaan het u al die roetes gekry, sodat ons maklik data in ons voorkant kan kry.
Stap 8: Skryf die frontend (HTML, CSS en JavaScript)
Noudat die agterkant klaar is, kan ons die volledige voorkant begin skryf.
HTML en CSS is redelik maklik gedoen, maar eers probeer om soveel as moontlik selfoon te werk, aangesien ons meestal met Bluetooth vanaf 'n mobiele toestel kon skakel, sou dit makliker wees om dit vanaf 'n mobiele paneelbord te beheer.
U kan u dashboard ontwerp op elke manier wat u wil; ek laat my kode en ontwerp hier agter; u kan doen wat u wil!
En Javascript was nie so moeilik nie, het gewerk met 'n paar GET's van my backend -roetes, tonne luisteraars na geleenthede en 'n paar socketio -strukture.
Stap 9: Bou my saak en plaas dit alles saam
Ek het eers begin met 'n paar sketse van hoe ek wou hê dat die saak moet lyk; iets belangrik was dat dit groot genoeg moes wees om alles in te pas, aangesien ons 'n groot kring in die kas kon sit.
Ek het die kas van hout gemaak, ek dink dit is die maklikste om mee te werk as u nie soveel ervaring het met die bou van kaste nie, en u het ook baie dinge waarmee u dit kan doen.
Ek het begin met 'n boks vir wynbottels en net die hout begin saag. Sodra ek my basiese omhulsel gehad het, moes ek net gate daarin boor (baie aan die voorkant van die omhulsel, soos u op die foto's kan sien: P) en 'n paar spykers daarin sit, dit is regtig 'n basiese omhulsel, maar dit is lyk baie oulik en pas perfek.
En sodra die saak klaar was, was dit tyd om alles bymekaar te maak, soos u op die laaste foto kan sien! Dit is 'n bietjie gemors in die boks, maar alles werk en ek het nie veel meer ruimte nie, so ek raai u aan om miskien 'n groter saak te skep as u my projek herskep.
Stap 10: 'n Paar probleme wat ek ondervind het tydens die skep van die Slimbox -luidspreker …
Bluetooth- en bluealsa -foute
Elke keer as ek musiek wou speel of met bluetooth verbind het, het ek foute ontvang van bluetooth en bluealsa. Ek het daaroor navorsing gedoen en dit was die oplossing vir my probleem. Dus is my bluetooth om een of ander rede sagte geblokkeer, nie seker of dit standaard sagte geblokkeer is nie. U kan sien of dit die geval is deur die volgende opdrag in u stopverf in te tik.
rfkill lys
As dit dus geblokkeer is, gebruik dit dan net:
rfkill ontblokkeer bluetooth
En u wil miskien daarna herlaai, my bron:
Seriële verbindingsprobleme
'N Ander groot probleem wat ek ondervind het, was dat ek geen verbinding met my Arduino kon maak deur middel van die levelhifter nie, maar na 'n paar soektogte het ek uitgevind dat my'/dev/ttyS0 'weg was, en dit kan wees as gevolg van 'n opdatering van u RPi. Het ook 'n oplossing hiervoor gevind
U sal die seriële konsole weer moet aktiveer met raspi-config, herlaai en dan die "console = serial0, 115200" -bits handmatig verwyder van '/boot/cmdline.txt'. Bevestig dat' enable_uart = 1 'in is' /boot/config.txt ', en herlaai weer. Dit behoort u ttyS0 -poort terug te kry, sowel as die'/dev/serial0 'sagte skakel daarna.
Bron:
Aanbeveel:
Slim lessenaar LED -lig - Slim beligting met Arduino - Neopixels -werkruimte: 10 stappe (met foto's)
Slim lessenaar LED -lig | Slim beligting met Arduino | Neopixels Workspace: Ons spandeer deesdae baie tyd tuis, studeer en werk virtueel, so waarom nie ons werkruimte groter maak met 'n pasgemaakte en slim beligtingstelsel Arduino en Ws2812b LED's nie. Hier wys ek u hoe u u Smart bou LED -lessenaar op die tafel wat
IoT -gebaseerde slim tuinmaak en slim landbou met behulp van ESP32: 7 stappe
IoT -gebaseerde slim tuinmaak en slim landbou Met behulp van ESP32: Wêreld verander soos die tyd en so landbou. Tans integreer mense elektronika op elke gebied en die landbou is geen uitsondering hierop nie. Hierdie samesmelting van elektronika in die landbou help boere en mense wat tuine bestuur
DIY slim weegskaal met wekker (met Wi-Fi, ESP8266, Arduino IDE en Adafruit.io): 10 stappe (met foto's)
DIY Smart Scale With Alarm Clock (met Wi-Fi, ESP8266, Arduino IDE en Adafruit.io): In my vorige projek het ek 'n slim badkamerskaal met Wi-Fi ontwikkel. Dit kan die gebruiker se gewig meet, plaaslik vertoon en dit na die wolk stuur. U kan meer inligting hieroor kry op die onderstaande skakel: https: //www.instructables.com/id/Wi-Fi-Smart-Scale-wi
Koppelvlak Honeywell Vista alarm met slim hub (knipoog/slim): 7 stappe (met foto's)
Koppelvlak Honeywell Vista alarm met slim hub (knipoog/slim): Hallo daar! Ek wou 'n kort handleiding gee oor hoe ek my Honeywell Vista -alarmstelsel in my slim hub kan integreer. Ek gebruik Wink vir hierdie tutoriaal, maar dit behoort te werk met enige slim hub (Smartthings/Iris/ens.) Voordat ons begin, gaan
Slim straatlig met behulp van Ir -sensor met Arduino: 4 stappe (met foto's)
Slim straatlig met behulp van Ir -sensor met Arduino: Teken in op my kanaal vir meer projekte. Hierdie projek handel oor slim straatlig, straatlig sal aanskakel terwyl die voertuig daardeur beweeg. Hier gebruik ons 4 IR -sensors wat die posisie van die voertuig, elke IR -sensor beheer