Innholdsfortegnelse:
- Trinn 1: Rekvisita
- Trinn 2: Skjematisk og ledninger
- Trinn 3: Databasedesign
- Trinn 4: Sett opp Raspberry Pi
- Step 5: Setting Up the Database to the 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
Video: Humørhøyttaler- en kraftfull høyttaler for humørmusikk som skal spilles basert på omgivelsestemperaturen: 9 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:21
Hei der!
For mitt skoleprosjekt på MCT Howest Kortrijk, laget jeg en stemningshøyttaler, dette er en smart Bluetooth -høyttalerenhet med forskjellige sensorer, en LCD og WS2812b ledstrip inkludert. Høyttaleren spiller bakgrunnsmusikk basert på temperaturen, men kan også brukes som en vanlig bluetooth høyttaler. Alt kjører på Raspberry Pi (Database, Webserver, Backend).
Så dette instruerbare er en trinnvis prosess for hvordan jeg realiserte dette prosjektet på 3 uker. Så hvis du vil gjenskape prosjektet mitt, kan du følge veiledningen
Denne instruerbare er min første som jeg skrev, så hvis det er noen spørsmål, skal jeg prøve å svare så raskt jeg kan!
Min GitHub:
Trinn 1: Rekvisita
Raspberry Pi 3B & 16 GB SD -kort
Hele prosjektet mitt kjører på min Raspberry Pi 3B med et konfigurert bilde, som jeg vil forklare i et senere trinn (Trinn 4: Oppsett Raspberry Pi)
LCD -skjerm 16x2
Jeg brukte en grunnleggende LCD -skjerm for å skrive ut temperaturen, lysstyrken og IP -adressen min.
Datablad:
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:
MCP3008
For å lese dataene fra min LDR og PIR-sensor brukte jeg en MCP3008, som er en 8-kanals 10-biters analog til digital omformer med SPI-grensesnittet og som er ganske enkel å programmere.
Dataark:
PIR bevegelsessensor
For å oppdage når det er noen som kommer inn og ut av rommet mitt, brukte jeg en passiv infrarød sensor fordi de er enkle å bruke og er små.
Datablad:
LDR
Jeg brukte en fotoresistor eller LDR (Light Decreasing Resistance, eller lysavhengig motstand) for å oppdage lysstyrken i rommet det er i. Og for også å slå på LED-stripen når den er mørk.
Høyttaler - 3”Diameter - 4 Ohm 3 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 ledstripen er koblet til Arduino og kjører der, mens alle de andre tingene kjører på Raspberry Pi.
WS2812B - Ledstrip
Dette er en ledstrip med 60 RGB lysdioder (du kan kjøpe lengre striper 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.
Dataark:
GPIO T-Part, 1 brødbrett og mange jumperwires
For å koble til alt jeg trengte brødbrett og jumperwires, brukte jeg ikke GPIO T-delen, men du kan bruke den til å tydelig vite hvilken skuff som går hvor.
Trinn 2: Skjematisk og ledninger
For å lage min skjematiske Jeg brukte Fritzing, det er et program du kan installere som lar deg lage en skjematisk veldig enkel i forskjellige typer visninger. Jeg brukte brødbrettet og skjematisk visning.
Last ned Fritzing:
Sørg for at alt er riktig tilkoblet. Jeg brukte farger for å gjøre det litt tydeligere å vite hvor jeg skulle koble ledningene. I mitt tilfelle brukte jeg forskjellige farger på ledningene
Trinn 3: Databasedesign
Vi samler inn mye data fra de 3 sensorene (Temperatur fra DS18B20, Lysstyrke fra LDR og Status fra PIR-sensor). Så det er best å beholde alle disse dataene i en database. Jeg vil forklare i et senere trinn hvordan du konfigurerer databasen (trinn 5: Forward Engineering Our Database til RPi!) Men først må designet eller ERD (Entity Relationship Diagram) lages. Min ble normalisert med 3NF, derfor delte vi komponentene og komponentenes historie i en annen tabell. Vi bruker musikkdatabasen til å holde oversikt over sangene som har blitt lyttet til.
Totalt sett er dette en veldig enkel og enkel databasedesign å jobbe videre med.
Trinn 4: Sett opp Raspberry Pi
Så nå som vi har gjort noen grunnleggende om prosjektet. La oss komme i gang med å sette opp Raspberry Pi!
Del 1: Konfigurering av SD -kortet
1) Last ned nødvendig programvare og filer
Du må laste ned 2 programvare og 1 operativsystem, dvs. Raspbian for denne komplette prosessen. 1. programvare: Den første programvaren er Win32 Disk Imager.
sourceforge.net/projects/win32diskimager/
Andre programvare: Andre programvare er SD Card Formatter.
www.sdcard.org/downloads/formatter_4/
Raspbian OS: Dette er hovedoperativsystemet til Pi.
www.raspberrypi.org/downloads/raspberry-pi-os/
Pakk ut alle filene til skrivebordet.
2) Få SD -kortet og kortleseren
Få et minimum 8 GB klasse 10 SD -kort med en kortleser. Sett kortet inn i kortleseren og koble det til USB -porten.
3) Formater SD -kortet
Åpne SD -kortformatering og velg stasjonen.
Klikk på formatet og ikke endre andre alternativer.
Når formateringen er fullført, klikker du på OK.
4) Skriv operativsystemet på SD -kortet
Åpne win32diskimager.
Bla gjennom.img -filen til Raspbian OS som ble hentet fra den nedlastede filen.
Klikk på Åpne og deretter på Skriv.
Hvis det dukker opp en advarsel, ignorer dem ved å klikke OK. Vent til skrivingen er fullført, og det kan ta noen minutter. Så vær tålmodig.
n
5) 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. (Den enkleste måten er å lage en txt -fil og fjerne.txt etterpå)
Nå som alt er installert på SD -kortet, kan du trygt kaste det ut fra datamaskinen og sette det i Raspberry Pi UTEN å koble til strømmen. 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.
Del 2: Konfigurering av RPi
Kitt
Nå vil vi konfigurere 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. (Det anbefales å endre det så raskt som mulig. Her er en veiledning for hvordan:
Raspi-konfigurasjon
Vi må aktivere forskjellige grensesnitt og for å gjøre det må vi først skrive følgende kode:
sudo raspi-config
Tingene vi må aktivere er i grensesnittdelen. Vi må aktivere følgende grensesnitt:
- En-ledning
- Seriell
- I2C
- SPI
Det var alt vi trengte å gjøre med raspi-config
Legger til WIFI
Først må du være root for at følgende kommando skal bli root
sudo -i
Når du er rot, bruker du følgende kommando: (Erstatt SSID med nettverksnavnet og passordet med nettverkspassordet)
wpa_passphrase "ssid" "passord" >> /etc/wpa_supplicant/wpa_supplicant.conf
Hvis du gjorde noe galt, kan du sjekke, oppdatere eller slette dette nettverket ved å bare skrive inn følgende kommando:
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
Del 3: Oppdatering av RPi + installasjonsprogramvare
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
Etter oppdatering av RPi må vi installere følgende programvare:
MariaDB Database
sudo apt-get install mariadb-server
Apache2 webserver
sudo apt installere apache2
Python
oppdateringsalternativer-installer/usr/bin/python python /usr/bin/python3.7 1 oppdateringsalternativer-installer/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
Høyttalerbibliotek
For å bruke høyttaleren med forsterkeren må vi installere et bibliotek for den
curl -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
Nå som vi har installert alt vi trengte, la oss sette vår database vi designet på vår Raspberry Pi!
For å sette opp databasen må vi koble til MySql og RPi. For det vil vi åpne MySQLWorkbench og opprette en ny tilkobling. Når du ser på bildet, må du endre for å endre informasjonen til din.
Hvis du ikke har endret noe ennå, kan du bruke det til SSH pi og bringebær, til MySQL mysql og mysql.
Når noe ikke er klart, kan du også følge denne opplæringen:
For å eksportere databasen din bør det være enklere å bruke PHPmyAdmin fordi du kan få mange feil ved å gjøre det med MySql
Trinn 6: Konfigurere Bluetooth på vår RPi
Vi lager en Mood -høyttaler, som vi også kan bruke med vår egen musikk, så dette er lettere når RPi er
koblet til bluetooth fulgte jeg en veiledning for det som du finner her:
scribles.net/streaming-bluetooth-audio-fr…
Jeg skrev alt ned her også for alle som vil gjenskape det
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 slått 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 koblet til bringebæret vårt med bluetooth, og du bør kunne teste det ved å spille av alle medier, for eksempel Spotify, etc.
Trinn 7: Skrive den komplette backend
Så nå er oppsettet ferdig, vi kan endelig begynne å skrive backend -programmet vårt!
Jeg brukte Visual Studio Code for hele backend -en min. Du må bare sørge for at Visual Studio -prosjektet er koblet til Raspberry Pi, dette betyr at LAN -kabelen må være koblet til RPi -en din og for å opprette en SSH -tilkobling. (informasjon om hvordan du oppretter en ekstern tilkobling finner du her:
Jeg brukte mine egne klasser, og disse er også alle inkludert i GitHub.
I backend -filen min brukte jeg forskjellige klasser, så alt kan brukes separat og slik at hovedkoden min ikke er et rot med alle de forskjellige trådene. Jeg brukte tråden til å kjøre alle de forskjellige klassene samtidig. 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 var ganske vanskelig for meg, jeg gjorde mitt beste for å gjøre den mobil først fordi jeg kan koble til den med bluetooth for å endre sangene med Spotify. Så det ville 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 enklere for meg, jobbet med noen få GET -er fra backend -rutene mine, tonnevis med hendelseslyttere og noen socketio -strukturer for å få data fra sensorene mine.
Trinn 9: Bygg saken min og sett alt sammen
Jeg begynte først å skissere 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, men måtte holde oss kompakte slik at den ikke gjorde det tar ikke mye plass
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 startet fra en gammel planke jeg hadde liggende og begynte å sage veden. 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 og sette noen spiker i den, det er en veldig enkel sak, men det ser ganske kult ut og passet perfekt. Jeg bestemte meg også for å male den hvit for å få den til å se bra ut.
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.
Anbefalt:
556 Tid gir klokkeinngang til 2 tiårsteller som skal drive 20 lysdioder: 6 trinn
556 Time gir klokkeinngang til 2 tiårsteller som vil drive 20 lysdioder: Denne instruksen viser hvordan en 556 timer vil gi klokkeinngang til 2 tiårsteller
Arduino -basert ikke -kontakt infrarødt termometer - IR -basert termometer ved bruk av Arduino: 4 trinn
Arduino -basert ikke -kontakt infrarødt termometer | IR -basert termometer ved bruk av Arduino: Hei folkens i denne instruksjonsboken vil vi lage et kontaktfritt termometer ved hjelp av arduino. Siden noen ganger temperaturen på væsken/faststoffet er for høy eller for lav, og da er det vanskelig å få kontakt med det og lese dets temperaturen da i den situasjonen
Hvordan konvertere en hvilken som helst høyttaler til BLUETOOTH -høyttaler: 5 trinn
Hvordan konvertere en hvilken som helst høyttaler til BLUETOOTH SPEAKER: Hvis du har et gammelt hjemmekinoanlegg som meg, har du funnet et veldig populært tilkoblingsalternativ, kalt Bluetooth, mangler på systemet ditt. Uten dette anlegget må du møte trådrøret i normal AUX -tilkobling, og selvfølgelig, hvis du
Gjør en hvilken som helst høyttaler til en Bluetooth -høyttaler: 4 trinn
Gjør en hvilken som helst høyttaler til en Bluetooth -høyttaler: For flere år siden var det vanlig at bærbare høyttalere hadde 3,5 mm kontakt og ble drevet av AA -batterier. Etter dagens standarder er det litt utdatert, spesielt batteriet siden hver gadget i dag har et oppladbart batteri. Lydkontakten er st
DIY arbeidsbenk som kan spilles NES: 10 trinn (med bilder)
DIY Workbench Playable NES: Denne instruerbare tar sikte på å veilede produsenter gjennom å bygge en Workbench-spillbar NES ved hjelp av en billig NoaC (NES on a Chip) og en PSOne LCD. brennende kretser, krok