Innehållsförteckning:

Humörhögtalare- en kraftfull högtalare för humörmusik som ska spelas baserat på omgivningstemperaturen: 9 steg
Humörhögtalare- en kraftfull högtalare för humörmusik som ska spelas baserat på omgivningstemperaturen: 9 steg

Video: Humörhögtalare- en kraftfull högtalare för humörmusik som ska spelas baserat på omgivningstemperaturen: 9 steg

Video: Humörhögtalare- en kraftfull högtalare för humörmusik som ska spelas baserat på omgivningstemperaturen: 9 steg
Video: Störig granne 2024, Juli
Anonim
Humörhögtalare- en kraftfull högtalare för humörmusik som ska spelas baserat på omgivningstemperaturen
Humörhögtalare- en kraftfull högtalare för humörmusik som ska spelas baserat på omgivningstemperaturen

Hallå där!

För mitt skolprojekt på MCT Howest Kortrijk gjorde jag en Mood Speaker detta är en smart Bluetooth -högtalare med olika sensorer, en LCD och WS2812b ledstrip ingår. Högtalaren spelar bakgrundsmusik baserat på temperaturen men kan också användas som en vanlig bluetooth högtalare. Allt körs på Raspberry Pi (databas, webbserver, backend).

Så det här instruerbara är en stegvis process för hur jag förverkligade detta projekt på 3 veckor. Så om ni vill återskapa mitt projekt kan ni följa guiden

Denna instruerbara är min första som jag skrev så om det finns några frågor, ska jag försöka svara på dem så snabbt jag kan!

Min GitHub:

Steg 1: Tillbehör

Raspberry Pi 3B & 16GB SD -kort

Hela mitt projekt körs på min Raspberry Pi 3B med en konfigurerad bild, som jag kommer att förklara i ett senare steg (Steg 4: Konfigurera Raspberry Pi)

LCD -skärm 16x2

Jag använde en vanlig LCD -skärm för att skriva ut min temperatur, ljusstyrka och IP -adress.

Datablad:

DS18B20 Temperaturgivare

DS18B20 är en entrådssensor som mäter temperaturen, tillverkad av Maxim Integrated. Det finns 2 sorters DS18B20 -sensorer, endast komponenten (som jag använde) och den vattentäta versionen, som är mycket större, men det var inte vad jag behövde för mitt projekt, så jag använde bara komponenten. Sensorn kan mäta temperaturen i intervallet -55 ° C till +125 ° C (-67 ° F till +257 ° F) och den har en noggrannhet på 0,5 ° C från -10 ° C till +85 ° C. Den har också en programmerbar upplösning från 9 bitar till 12 bitar.

Datablad:

MCP3008

För att läsa data från min LDR och PIR-sensor använde jag en MCP3008, som är en 8-kanals 10 bitars analog till digital omvandlare med SPI-gränssnittet och är ganska lätt att programmera.

Datablad:

PIR rörelsesensor

För att upptäcka när det är någon som kommer in och lämnar mitt rum använde jag en passiv infraröd sensor eftersom de är lätta att använda och är små.

Datablad:

LDR

Jag använde en fotoresistor eller LDR (Light Decreasing Resistance, eller ljusberoende motstånd) för att upptäcka ljusstyrkan i rummet som den är i. Och för att även slå på min Ledstrip när den är mörk.

Högtalare - 3”Diameter - 4 Ohm 3 Watt

Detta är den högtalarkon jag valde efter att ha beräknat den spänning och ampere den skulle behöva och det passade perfekt för mitt Raspberry Pi -projekt, tillverkat av Adafruit.

Översikt:

MAX98357 I2S klass-D monoförstärkare

Detta är förstärkaren som följer med högtalaren, det är inte bara en förstärkare, det är också en I2S digital till analog omvandlare, så den passar också perfekt för min högtalare och ljudsystem.

Översikt:

Datablad:

Arduino Uno

Arduino Uno är ett microcontroller-kort med öppen källkod baserat på Microchip ATmega328P microcontroller, tillverkat av Arduino.cc. Uno -kortet har 14 digitala stift, 6 analoga stift och är fullt programmerbart med Arduino IDE -programvaran

Översikt:

Nivåförskjutare

Detta är en liten tavla som tar hand om kommunikationen mellan Arduino Uno och Raspberry Pi och de olika spänningarna, Arduino: 5V & Raspberry Pi: 3.3V. Detta behövs eftersom ledstripen är ansluten till Arduino och körs där, medan alla andra saker körs på Raspberry Pi.

WS2812B - Ledstrip

Detta är en ledstrip med 60 RGB -lysdioder (du kan köpa längre remsor med fler RGB -lysdioder om du vill). Som i mitt fall är ansluten till Arduino Uno, men kan också anslutas till många andra enheter och är riktigt enkel att använda.

Datablad:

GPIO T-Part, 1 brödbräda och massor av jumperwires

För att ansluta allt jag behövde brödbrädor och jumperwires använde jag inte GPIO T-delen men du kan använda den för att tydligt veta vilken korg som går vart.

Steg 2: Schematisk och kabeldragning

Schematisk och kabeldragning
Schematisk och kabeldragning
Schematisk och kabeldragning
Schematisk och kabeldragning

För att göra min schematiska Jag använde Fritzing, det är ett program du kan installera som låter dig skapa en schematisk mycket enkel i olika typer av vyer. Jag använde panelen och schematisk vy.

Ladda ner Fritzing:

Se till att allt är korrekt anslutet. Jag använde färger för att göra det lite tydligare att veta var jag ska ansluta ledningarna. I mitt fall använde jag olika färger för trådarna

Steg 3: Databasdesign

Databasdesign
Databasdesign

Vi samlar in mycket data från de 3 sensorerna (Temperatur från DS18B20, Ljusstyrka från LDR och Status från PIR-sensor). Så det är bäst att behålla alla dessa data i en databas. Jag ska förklara i ett senare steg hur man konfigurerar databasen (Steg 5: Vidarebefordra Engineering Our Database till RPi!) Men först måste designen eller ERD (Entity Relationship Diagram) göras. Min normaliserades med 3NF, det är därför vi delar upp komponenterna och komponenternas historia i en annan tabell. Vi använder musikdatabasen för att hålla reda på låtarna som har lyssnats på.

Sammantaget är detta en riktigt enkel och enkel databasdesign att arbeta vidare med.

Steg 4: Konfigurera Raspberry Pi

Så nu när vi har gjort några grunder i projektet. Låt oss börja med att konfigurera Raspberry Pi!

Del 1: Konfigurera SD -kortet

1) Ladda ner programvara och filer som krävs

Du måste ladda ner 2 programvara och 1 operativsystem, dvs Raspbian för den här hela processen. 1: a programvara: Den första programvaran är Win32 Disk Imager.

sourceforge.net/projects/win32diskimager/

Andra programvaran: Den andra programvaran är SD Card Formatter.

www.sdcard.org/downloads/formatter_4/

Raspbian OS: Detta är Pi: s huvudsakliga operativsystem.

www.raspberrypi.org/downloads/raspberry-pi-os/

Extrahera alla filer till skrivbordet.

2) Skaffa SD -kortet och kortläsaren

Skaffa minst 8 GB klass 10 SD -kort med en kortläsare. Sätt in kortet i kortläsaren och anslut det till USB -porten.

3) Formatera SD -kortet

Öppna SD -kortformateraren och välj enheten.

Klicka på formatet och ändra inga andra alternativ.

När formateringen är klar klickar du på OK.

4) Skriv OS på SD -kortet

Öppna win32diskimager.

Bläddra i.img -filen för Raspbian OS som extraherades från den nedladdade filen.

Klicka på öppna och klicka sedan på Skriv.

Om någon varning dyker upp ignorerar du dem genom att klicka på OK. Vänta tills skrivningen är klar och det kan ta några minuter. Så ha tålamod.

n

5) När detta är gjort är vi redo att göra några sista justeringar innan vi sätter in bilden i vår RPi.

Gå till SD -kortets katalog, sök efter filen med namnet 'cmdline.txt' och öppna den.

Lägg nu till 'ip = 169.254.10.1' på samma rad.

Spara filen.

Skapa en fil med namnet 'ssh' utan tillägg eller innehåll. (Enklaste sättet är att skapa en txt -fil och ta bort.txt efteråt)

Nu när allt är installerat på SD -kortet kan du på ett säkert sätt mata ut det från din dator och sätta in det i Raspberry Pi UTAN att ansluta strömmen. När SD -kortet är i RPI: n ansluter du en LAN -kabel från din dator till RPi LAN -porten, när detta är anslutet kan du ansluta ström till RPi.

Del 2: Konfigurera RPi

Spackel

Nu vill vi konfigurera vår Raspberry Pi, detta görs via Putty.

Kittprogramvara:

När du har laddat ner öppnar du Putty och sätter in IP '169.254.10.1' och Port '22' och anslutningstyp: SSH.

Nu kan vi äntligen öppna vårt kommandoradsgränssnitt och logga in med startinloggningsinformationen -> Användare: pi & Lösenord: hallon. (Det rekommenderas att ändra det så snabbt som möjligt. Här är en guide för hur:

Raspi-config

Vi måste aktivera olika gränssnitt och för att göra det måste vi först skriva följande kod:

sudo raspi-config

De saker vi behöver aktivera finns i gränssnittsavsnittet. Vi måste aktivera följande gränssnitt:

  • En-tråd
  • Serie
  • I2C
  • SPI

Det var allt vi behövde göra med raspi-config

Lägger till ditt WIFI

Först måste du vara root för att följande kommando ska bli root

sudo -i

När du har rotat använder du följande kommando: (Ersätt SSID med ditt nätverksnamn och lösenord med ditt nätverkslösenord)

wpa_passphrase "ssid" "lösenord" >> /etc/wpa_supplicant/wpa_supplicant.conf

Om du gjorde något fel kan du kontrollera, uppdatera eller ta bort det här nätverket genom att bara ange följande kommando:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Så efter att vi kom in i vårt nätverk, låt oss gå in i WPA -klientgränssnittet

wpa_cli

Välj ditt gränssnitt

gränssnitt wlan0

Ladda om filen

omkonfigurera

Och slutligen kan du se om du är bra ansluten:

ip a

Del 3: Uppdatering av RPi + -installationsprogram

Nu när vi är anslutna till internet skulle uppdatering av redan installerade paket vara ett smart drag, så låt oss göra det först innan du installerar andra paket.

sudo apt-get uppdatering

sudo apt-get uppgradering

Efter uppdatering av RPi måste vi installera följande programvara:

MariaDB -databas

sudo apt-get install mariadb-server

Apache2 webbserver

sudo apt installera apache2

Pytonorm

uppdateringsalternativ-installera/usr/bin/python python /usr/bin/python3.7 1 uppdateringsalternativ --installera/usr/bin/python python/usr/bin/python3 2

Python -paket

Du måste installera alla dessa paket för att få backend att fungera perfekt:

  • Flaska
  • Kolv-Cors
  • Kolv-MySql
  • Flask-SocketIO
  • PyMySQL -förfrågningar
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket

Högtalarbibliotek

För att använda högtalaren med förstärkaren måste vi installera ett bibliotek för 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

Konfigurera databasen till RPi!
Konfigurera databasen till RPi!

Nu när vi har installerat allt vi behövde, låt oss lägga vår databas som vi designade på vår Raspberry Pi!

För att konfigurera databasen måste vi ansluta MySql och RPi. För det öppnar vi MySQLWorkbench och gör en ny anslutning. När du tittar på bilden måste du ändra för att ändra informationen till din.

Om du inte har ändrat något än kan du använda för SSH pi och hallon, för MySQL mysql och mysql.

När något inte är klart kan du också följa den här självstudien:

För att exportera din databas borde det vara enklare att använda PHPmyAdmin eftersom du kan få många fel när du gör det med MySql

Steg 6: Konfigurera Bluetooth på vår RPi

Vi skapar en Mood -högtalare som vi också kan använda med vår egen musik så det är lättare när RPi är

ansluten till bluetooth Jag följde en handledning för det som du hittar här:

scribles.net/streaming-bluetooth-audio-fr…

Jag skrev allt här också för alla som vill återskapa det

Tar bort den redan körande bluealsa

sudo rm/var/run/bluealsa/*

Lägg till A2DP -profil Sink -roll

sudo bluealsa -p a2dp -sink &

Öppna Bluetooth -gränssnittet och slå på din Bluetooth

bluetoothctl på

Skapa en parningsagent

agent på standardagent

Gör din RPi upptäckbar

upptäcks på

  • Nu från din bluetooth -enhet, sök efter RPi och anslut till den.
  • Bekräfta parningen på båda enheterna, skriv "ja" i ditt kitt.
  • Godkänn A2DP -tjänsten, skriv "ja" igen.
  • När detta är gjort kan vi lita på vår enhet, så vi behöver inte gå igenom allt detta varje gång vi vill ansluta

lita på XX: XX: XX: XX: XX: XX (din bluetooth mac -adress från vår källenhet)

Om du vill att din RPi ska fortsätta att vara upptäckt, är det ditt eget val, men jag föredrar att stänga av den igen, så att människor inte kan försöka ansluta till din box

upptäckt av

Då kan vi lämna vårt bluetooth -gränssnitt

utgång

Och slutligen vår audio routing: vår källenhet vidarebefordrar till vår RPi

bluealsa-aplay 00: 00: 00: 00: 00: 00

Nu är vår enhet ansluten till vårt hallon med bluetooth och du bör kunna testa den genom att spela upp alla media, till exempel Spotify, etc.

Steg 7: Skriva hela backend

Så nu är installationen klar, vi kan äntligen börja skriva vårt backend -program!

Jag använde Visual Studio Code för hela mitt backend, du behöver bara se till att ditt Visual Studio -projekt är anslutet till din Raspberry Pi, det betyder att din LAN -kabel måste vara ansluten till din RPi och för att göra en SSH -anslutning. (information om hur du skapar en fjärranslutning hittar du här:

Jag använde mina egna klasser och dessa ingår också alla i min GitHub.

I min backend -fil använde jag olika klasser, så allt kan användas separat och så att min huvudkod inte är en röra med alla de olika trådarna. Jag använde trådning för att köra alla olika klasser samtidigt. Och längst ner har du alla rutter så att vi enkelt kan få data i vår frontend.

Steg 8: Skriva frontend (HTML, CSS och JavaScript)

Nu när backend är klar kan vi börja skriva hela front-end.

HTML och CSS var ganska svårt för mig, jag gjorde mitt bästa för att göra det mobilt först eftersom jag kan ansluta till det med bluetooth för att ändra låtarna med Spotify. Så det skulle vara lättare att styra från en mobil instrumentpanel

Du kan designa din instrumentpanel på vilket sätt du vill, jag lämnar bara min kod och design här, du kan göra vad du vill!

Och Javascript var inte lättare för mig, arbetade med några få från mina backend -rutter, massor av evenemangslyssnare och några socketio -strukturer för att få data från mina sensorer.

Steg 9: Bygga mitt fall och sätta ihop det hela

Bygga mitt fall och sätta ihop det hela
Bygga mitt fall och sätta ihop det hela
Bygga mitt fall och sätta ihop det hela
Bygga mitt fall och sätta ihop det hela
Bygga mitt fall och sätta ihop det hela
Bygga mitt fall och sätta ihop det hela
Bygga mitt fall och sätta ihop det hela
Bygga mitt fall och sätta ihop det hela

Jag började först skissa på hur jag ville att fodralet skulle se ut, något viktigt var att det måste vara tillräckligt stort för att allt skulle passa in, eftersom vi fick en stor krets att sätta i fodralet men måste hålla oss kompakta så att det inte gjorde det tar inte mycket plats

Jag gjorde fodralet av trä, jag tror att det är det enklaste att arbeta med när man inte har så mycket erfarenhet av att bygga fodral och man också har många saker man kan göra med det.

Jag startade från en gammal planka som jag låg och började bara såga virket. När jag väl hade fått mitt grundfodral var jag bara tvungen att borra hål i det (mycket på framsidan av fodralet, som du kan se på bilderna och sätta några spikar i det, det är verkligen ett grundläggande fodral, men det ser ganska coolt ut och passar perfekt. Jag bestämde mig också för att måla den vit för att den ska se bra ut.

Och när ärendet var klart var det dags att sätta ihop allt, som du kan se på den sista bilden! Det är lite rörigt inuti lådan, men allt fungerar och jag hade inte så mycket mer utrymme, så jag råder dig att kanske skapa ett större fall om du återskapar mitt projekt.

Rekommenderad: