Innholdsfortegnelse:
- Trinn 1: Rekvisita
- Trinn 2: Skjematisk og ledninger
- Trinn 3: Databasedesign
- Trinn 4: Forberedelse av Raspberry Pi
- Trinn 5: Videresend konstruksjonen vår til RPi
- Trinn 6: Konfigurere Bluetooth på vår RPi
- Trinn 7: Skrive den komplette backend
- Trinn 8: Skrive frontend (HTML, CSS og JavaScript)
- Trinn 9: Bygg saken min og sett alt sammen
- Trinn 10: Noen problemer jeg hadde på min vei med å lage Slimbox -høyttaleren …
Video: Slimbox - en smart Bluetooth -høyttaler !: 10 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
Hei der!
For mitt skoleprosjekt på MCT Howest Kortrijk, laget jeg en smart Bluetooth -høyttalerenhet med forskjellige sensorer, en LCD og RGB NeoPixel -ring inkludert. Alt kjører på Raspberry Pi (Database, Webserver, Backend).
Så i denne instruksen vil jeg vise deg hvordan jeg laget dette prosjektet på 3 uker, trinn for trinn, så hvis noen av dere vil gjenskape prosjektet mitt, kan du enkelt gjøre det!
Dette er også min første instruks. Hvis du har spørsmål, skal jeg prøve å svare på dem så raskt som mulig!
Min GitHub:
Trinn 1: Rekvisita
DS18B20 Temperatursensor
DS18B20 er en en-ledersensor som måler temperaturen, produsert av Maxim Integrated. Det er to typer DS18B20 -sensorer, bare komponenten (som jeg brukte) og den vanntette versjonen, som er mye større, men det var ikke det jeg trengte for prosjektet mitt, så jeg brukte bare komponenten. Sensoren kan måle temperaturen i området fra -55 ° C til +125 ° C (-67 ° F til +257 ° F), og den har en nøyaktighet på 0,5 ° C fra -10 ° C til +85 ° C. Den har også en programmerbar oppløsning fra 9 bits til 12 bits.
Dataark:
Potensiometersensor
Et potensiometer er motstand med tre terminaler som kan justeres manuelt ved bare å rotere den øvre delen av sensoren. Plasseringen av den øvre delen bestemmer utgangsspenningen til potensiometeret.
LSM303 akselerometer + kompassutbrudd
LSM303 breakout board er en kombinasjon av et tre-akset akselerometer og et magnetometer / kompass, produsert av Adafruit. Den brukes med I2C -grensesnittet til Raspberry Pi.
Oversikt:
Dataark:
MCP3008
For å lese dataene fra potensiometeret mitt brukte jeg et MCP3008, som er en 8 -kanals 10 -biters analog til digital omformer med SPI -grensesnittet og som er ganske enkel å programmere.
Dataark:
Høyttaler - 3”Diameter - 8 Ohm 1 Watt
Dette er høyttalerkeglen jeg valgte etter å ha beregnet spenningen og ampere den ville trenge, og dette passet perfekt for mitt Raspberry Pi -prosjekt, produsert av Adafruit.
Oversikt:
MAX98357 I2S klasse-D monoforsterker
Dette er forsterkeren som følger med høyttaleren, ikke bare er det en forsterker, det er også en I2S digital til analog omformer, så den passer også perfekt til høyttaleren og lydsystemet mitt.
Oversikt:
Dataark:
Arduino Uno
Arduino Uno er et mikrokort med åpen kildekode basert på Microchip ATmega328P mikrokontroller, produsert av Arduino.cc. Uno -kortet har 14 digitale pinner, 6 analoge pinner og er fullt programmerbart med Arduino IDE -programvaren
Oversikt:
Nivåskifter
Dette er et lite brett som tar seg av kommunikasjonen mellom Arduino Uno og Raspberry Pi og de forskjellige spenningene, Arduino: 5V & Raspberry Pi: 3.3V. Dette er nødvendig fordi NeoPixel -ringen er koblet til Arduino og kjører der, mens alle de andre tingene kjører på Raspberry Pi.
RGB NeoPixel -ring
Dette er en liten ring fylt med 12 RGB lysdioder (du kan kjøpe større ringer med flere RGB lysdioder, hvis du vil). Som i mitt tilfelle er koblet til Arduino Uno, men kan også kobles til mange andre enheter og er veldig enkel å bruke.
Oversikt:
LCD -skjerm 16x2
Jeg brukte en grunnleggende LCD -skjerm for å skrive ut temperaturen, volumet og IP -adressen min.
Datablad:
Raspberry Pi 3B+ og 16 GB SD -kort
Hele prosjektet mitt kjører på min Raspberry Pi 3B+ med et konfigurert bilde, som jeg vil hjelpe deg med å konfigurere senere i min instruerbare.
GPIO T-Part, 2 brødbrett og mange jumperwires
For å koble til alt jeg trengte brødbrett og jumperwires, brukte jeg GPIO T-delen så jeg har mer plass, og det er klart hvilken pinne som er hvilken.
Trinn 2: Skjematisk og ledninger
For skjematikken min brukte jeg Fritzing, det er et program du kan installere som lar deg lage en skjema veldig enkelt i forskjellige typer visninger.
Last ned Fritzing:
Så sørg for at du kobler alt på riktig måte! I mitt tilfelle er fargene på ledningene ikke de samme som på skjematikken.
Trinn 3: Databasedesign
Vi samler inn mye data fra de 3 tilkoblede sensorene, så vi trenger en database for å lagre dataene og sensorene i. Senere får vi se hvordan du konfigurerer databasen på Raspberry Pi og hvordan du legger til data i den. Men først må databasedesignet eller ERD (Entity Relationship Diagram) lages, og mitt ble også normalisert med 3NF. Derfor deler vi opp sensorene i et annet bord og jobber med ID -er.
Totalt sett er dette en veldig enkel og enkel databasedesign å jobbe videre med.
Trinn 4: Forberedelse av Raspberry Pi
Så nå som vi har gjort noen grunnleggende om prosjektet. La oss komme i gang med Raspberry Pi!
SD -kortkonfigurasjon
Først trenger du et 16 GB SD -kort hvor du kan sette bildet på og et program for å laste opp et startbilde til SD -kortet.
Programvare:
Startbilde:
Så når disse er lastet ned:
- Sett SD -kortet i datamaskinen.
- Åpne Win32 som du nettopp lastet ned.
- Velg Raspbian -bildefilen du også lastet ned.
- Klikk på "skriv" til plasseringen av SD -kortet.
Dette kan ta litt tid, avhengig av maskinvaren. Når dette er gjort, er vi klare til å gjøre noen endelige justeringer før vi setter bildet inn i vår RPi.
- Gå til SD -kortets katalog, søk etter filen som heter 'cmdline.txt' og åpne den.
- Legg nå til 'ip = 169.254.10.1' på den samme linjen.
- Lagre filen.
- Lag en fil som heter 'ssh' uten utvidelse eller innhold.
Nå kan du trygt kaste ut SD -kortet fra datamaskinen og sette det i Raspberry Pi UTEN strøm. Når SD -kortet er satt inn i RPI -en, kobler du en LAN -kabel fra datamaskinen til RPi LAN -porten. Når dette er koblet til, kan du koble strømmen til RPi.
Nå vil vi kontrollere Raspberry Pi, dette gjøres gjennom Putty.
Kittprogramvare:
Når du har lastet den ned, åpner du Putty og setter inn IP '169.254.10.1' og Port '22' og tilkoblingstype: SSH. Nå kan vi endelig åpne kommandolinjegrensesnittet og logge inn med startpåloggingsinformasjonen -> Bruker: pi og passord: bringebær.
Raspi-konfigurasjon
sudo raspi-config
Det som virkelig er viktig for dette prosjektet er grensesnittdelen, vi må aktivere mange forskjellige grensesnitt, aktivere alle følgende grensesnitt:
- En-ledning
- SPI
- I2C
- Seriell
Nå som vi er ferdige med raspi-config, la oss prøve å koble til internett.
Wi-Fi-tilkobling
Først må du være root for følgende kommandoer
sudo -i
Når du er rot, bruker du følgende kommando. SSID er nettverksnavnet ditt og passordet er åpenbart passordet.
wpa_passphrase "ssid" "passord" >> /etc/wpa_supplicant/wpa_supplicant.conf
Hvis du gjorde en feil, kan du sjekke, oppdatere eller slette dette nettverket ved å bare skrive inn den filen:
nano /etc/wpa_supplicant/wpa_supplicant.conf
Så etter at vi kom inn i nettverket vårt, la oss gå inn i WPA -klientgrensesnittet
wpa_cli
Velg grensesnittet
grensesnitt wlan0
Last inn filen på nytt
omkonfigurere
Og til slutt kan du se om du er godt forbundet:
ip a
Oppdater og oppgrader
Nå som vi er koblet til internett, ville oppdatering av de allerede installerte pakkene være et smart trekk, så la oss gjøre det først før du installerer andre pakker.
sudo apt-get oppdatering
sudo apt-get oppgradering
MariaDB Database
Installer MariaDB -databaseserveren:
sudo apt-get install mariadb-server
Apache2 webserver
Installer Apache2 -webserveren:
sudo apt installere apache2
Python
Installer Python:
oppdateringsalternativer-install/usr/bin/python python /usr/bin/python2.7 1
oppdateringsalternativer-install/usr/bin/python python/usr/bin/python3 2
Python -pakke
Du må installere alle disse pakkene for å få backend til å fungere perfekt:
- Kolbe
- Flask-Cors
- Kolbe-MySql
- Flask-SocketIO
- PyMySQL
- Forespørsler
- Python-socketio
- RPi. GPIO
- Gevent
- Gevent-websocket
- Ujson
- Wsaccel
Høyttalerbibliotek
Installer høyttalerbiblioteket fra Adafruit:
curl -sS https://raw.githubusercontent.com/adafruit/Raspbe… | bash
På tide å starte på nytt
sudo omstart
Trinn 5: Videresend konstruksjonen vår til RPi
Nå som vi har installert alt vi trengte, la oss sette vår database vi designet på vår Raspberry Pi!
Så først må vi videresende vår database i MySql -arbeidsbenken, mens du gjør det, kopierer du hele databasekoden og sletter alle de 'synlige' ordene i den. Så når det er kopiert, kan vi åpne kittet igjen, logge inn og skrive:
sudo mysql
og nå er du i mysql -grensesnittet, kopier databasekoden i den og trykk enter.
Nå trenger vi bare å opprette en bruker
OPPRETT BRUKER 'bruker' IDENTIFISERT AV 'bruker';
TILDELE ALLE PRIVILEGER PÅ *. * TIL 'bruker';
Start på nytt.
Så alt burde være konfigurert nå, du kan også koble til Pi og MySql Workbench, så det er lettere å sjekke alle dataene i tabellene.
Trinn 6: Konfigurere Bluetooth på vår RPi
Vi lager en Bluetooth -høyttaler, så dette betyr at media blir sendt fra vår kilde til Raspberry Pi, og dette kan gjøres ganske enkelt, la oss komme inn på det!
Min kilde for Bluetooth-tilkoblingen:
Fjerner den allerede kjørende bluealsa
sudo rm/var/run/bluealsa/*
Legg til A2DP -profil Sink -rolle
sudo bluealsa -p a2dp -vask &
Åpne bluetooth -grensesnittet og slå på bluetooth
bluetoothctl
strøm på
Sett opp en sammenkoblingsagent
agent på
standardagent
Gjør RPi -en din synlig
oppdagelig på
- Nå fra Bluetooth -enheten din, søk etter RPi og koble til den.
- Bekreft sammenkoblingen på begge enhetene, skriv "ja" i kittet ditt.
- Godkjenn A2DP -tjenesten, skriv "ja" igjen.
- Når dette er gjort, kan vi stole på enheten vår, så vi trenger ikke å gå gjennom dette hver gang vi vil koble til
tillit XX: XX: XX: XX: XX: XX (din bluetooth mac -adresse fra vår kildeenhet)
Hvis du vil at RPi -en din skal fortsette å være synlig, er det ditt eget valg, men jeg foretrekker å slå den av igjen, slik at folk ikke kan prøve å koble til boksen din
oppdagbar av
Deretter kan vi gå ut av Bluetooth -grensesnittet
exit
Og til slutt vår lydruting: vår kildeenhet videresender til vår RPi
bluealsa-aplay 00: 00: 00: 00: 00: 00
Nå er enheten vår fullt tilkoblet bringebæret vårt, og du bør kunne spille av medier fra kildeenheten din på Pi -høyttaleren.
Trinn 7: Skrive den komplette backend
Så nå er oppsettet ferdig, vi kan endelig begynne å skrive backend -programmet vårt!
Jeg brukte PyCharm for hele mitt backend, du trenger bare å kontrollere at PyCharm -prosjektet ditt er koblet til din Raspberry Pi, dette betyr at distribusjonsbanen din er konfigurert i innstillingene dine og at du har installert alle pakkene vi trenger, bør allerede være utført i trinn 4.
Jeg brukte mine egne klasser, og disse er også alle inkludert i GitHub. Link er i introen i tilfelle du savnet det;)
I backend -filen min brukte jeg trådingsklasser, så alt kan kjøre samtidig, og det vil ikke forstyrre hverandre. Og nederst har du alle rutene, slik at vi enkelt kan få data i frontendet.
Trinn 8: Skrive frontend (HTML, CSS og JavaScript)
Nå som backend er ferdig, kan vi begynne å skrive hele front-end.
HTML og CSS ble gjort ganske enkelt, prøvde å jobbe med mobilen først så mye som mulig, siden vi for det meste kobler til Bluetooth fra en mobil enhet, ville det være lettere å kontrollere fra et mobilt dashbord.
Du kan designe dashbordet ditt på hvilken som helst måte du vil. Jeg vil bare la koden og designet stå her, du kan gjøre hva du vil!
Og Javascript var ikke så vanskelig, jobbet med noen få GET -er fra backend -rutene mine, tonnevis med hendelseslyttere og noen socketio -strukturer.
Trinn 9: Bygg saken min og sett alt sammen
Jeg begynte først med noen skisser av hvordan jeg ville at saken skulle se ut, noe viktig var at den måtte være stor nok til at alt skulle passe inn, siden vi fikk en stor krets å sette i saken.
Jeg laget saken av tre, jeg tror den er lettest å jobbe med når du ikke har så mye erfaring med å bygge saker og du også har mange ting du kan gjøre med den.
Jeg begynte med en eske for vinflasker og begynte å sage treverket. Når jeg hadde min grunnkasse, måtte jeg bare bore hull i den (mye på forsiden av saken, som du kan se på bildene: P) og sette noen spiker i den, det er en veldig enkel sak, men det ser ganske kult ut og passer perfekt.
Og når saken var ferdig, var det på tide å sette alt sammen, som du kan se på det siste bildet! Det er litt rot i esken, men alt fungerer, og jeg hadde ikke så mye mer plass, så jeg råder deg til å lage en større sak hvis du gjenskaper prosjektet mitt.
Trinn 10: Noen problemer jeg hadde på min vei med å lage Slimbox -høyttaleren …
Bluetooth- og bluealsa -feil
Hver gang jeg ønsket å spille musikk eller koble til med bluetooth, mottok jeg feil fra bluetooth og bluealsa. Jeg gjorde noen undersøkelser på det, og dette var løsningen på problemet mitt. Så av en eller annen grunn var min bluetooth blokkert, ikke sikker på om dette er standard myk-blokkert. Du kan se om det er ved å skrive følgende kommando i kittet ditt.
rfkill liste
Så hvis det er blokkert, bare bruk dette:
rfkill unblock bluetooth
Og du vil kanskje starte på nytt etter dette, min kilde:
Problemer med seriell tilkobling
Så et annet stort problem jeg hadde var at jeg ikke kunne opprette noen forbindelse med min Arduino gjennom nivåskiftet, etter litt søk fant jeg ut at min '/dev/ttyS0' var borte, og dette kan skyldes en oppdatering av RPi -en din. Fant også en løsning på dette
Du må aktivere seriekonsollen med raspi-config, starte på nytt og deretter fjerne "console = serial0, 115200" -biten manuelt fra '/boot/cmdline.txt'. Bekreft at "enable_uart = 1" er i' /boot/config.txt ', og start på nytt. Det burde få ttyS0 -porten tilbake, så vel som den'/dev/serial0 'myke lenken til den.
Kilde:
Anbefalt:
Smart skrivebord LED -lys - Smart Lighting W/ Arduino - Neopixels arbeidsområde: 10 trinn (med bilder)
Smart skrivebord LED -lys | Smart Lighting W/ Arduino | Neopixels Workspace: Nå tilbringer vi mye tid hjemme, studerer og jobber virtuelt, så hvorfor ikke gjøre arbeidsområdet vårt større med et tilpasset og smart belysningssystem Arduino og Ws2812b LED -er. Her viser jeg deg hvordan du bygger din Smart LED -skrivebordslampe som
Hvordan bygge SMARS Robot - Arduino Smart Robot Tank Bluetooth: 16 trinn (med bilder)
Hvordan bygge SMARS Robot - Arduino Smart Robot Tank Bluetooth: Denne artikkelen er stolt sponset av PCBWAY. PCBWAY lager prototyper av høy kvalitet for mennesker over hele verden. Prøv det selv og få 10 PCB for bare $ 5 på PCBWAY med veldig god kvalitet, takk PCBWAY. Motorskjermen for Arduino Uno
DIY WiFi smart sikkerhetslys med Shelly 1: 6 trinn (med bilder)
DIY WiFi Smart Security Light With Shelly 1: Denne instruksen vil se på å lage et DIY smart sikkerhetslys ved hjelp av Shelly 1 smart relé fra Shelly. Gjør du et sikkerhetslys smart vil du ha mye mer kontroll over når det aktiveres og hvor lenge det forblir på. Det kan være aktivt
Smart vekkerklokke: en smart vekkerklokke laget med bringebær Pi: 10 trinn (med bilder)
Smart vekkerklokke: en smart vekkerklokke laget med bringebær Pi: Har du noen gang ønsket deg en smart klokke? I så fall er dette løsningen for deg! Jeg lagde Smart Alarm Clock, dette er en klokke som du kan endre alarmtiden i henhold til nettstedet. Når alarmen går, kommer det en lyd (summer) og 2 lys vil
Slik demonterer du en datamaskin med enkle trinn og bilder: 13 trinn (med bilder)
Slik demonterer du en datamaskin med enkle trinn og bilder: Dette er en instruksjon om hvordan du demonterer en PC. De fleste grunnkomponentene er modulære og fjernes lett. Det er imidlertid viktig at du er organisert om det. Dette vil bidra til å hindre deg i å miste deler, og også i å gjøre monteringen igjen