Innehållsförteckning:
- Steg 1: Tillbehör
- Steg 2: Schematisk och kabeldragning
- Steg 3: Databasdesign
- Steg 4: Konfigurera Raspberry Pi
- Step 5: Setting Up the Database to the RPi
- Steg 6: Konfigurera Bluetooth på vår RPi
- Steg 7: Skriva hela backend
- Steg 8: Skriva frontend (HTML, CSS och JavaScript)
- Steg 9: Bygga mitt fall och sätta ihop det hela
Video: Humörhögtalare- en kraftfull högtalare för humörmusik som ska spelas baserat på omgivningstemperaturen: 9 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:38
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
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
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
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
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:
Väggfäste för iPad som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: 4 steg (med bilder)
Väggfäste för iPad Som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: På senare tid har jag ägnat ganska mycket tid åt att automatisera saker i och runt mitt hus. Jag använder Domoticz som min hemautomationsapplikation, se www.domoticz.com för mer information. I min sökning efter en instrumentpanelapplikation som visar all Domoticz -information tillsammans
Hur man monterar en enkel och kraftfull handtagskontroller- Baserat på Micro: Bit: 10 steg (med bilder)
Hur man monterar en enkel och kraftfull handtagskontroller- Baserat på Micro: Bit: Handtagets namn är Handlebit. Formen är ett handtag och det ser väldigt coolt ut! Nu kan vi göra en introduktion om Handlebit, låt oss gå vidare
Växthusprojektet (RAS): Övervaka elementen som ska reagera på vår plantage: 18 steg (med bilder)
Växthusprojektet (RAS): Övervaka de element som ska reagera på vår plantage: Detta projekt föreslår att övervaka lufttemperatur, ljusstyrka och luftfuktighet samt lundtemperatur och luftfuktighet. Det föreslår också att ansluta dessa åtgärder som är så läsbara på webbplatsen Actoborad.com För att göra, ansluter vi 4 sensorer till N
Hur man döljer filer som man inte vill att andra ska se eller läsa: 7 steg
Hur man döljer filer som man inte vill att andra ska se eller läsa: Denna instruktion visar hur du ändrar formatet på en fil för att göra den värdelös om du inte vet vilken filtyp det ursprungligen var. Till exempel byter du en mpeg (filmfil) till en txt/doc (text/dokument) så att du inte kan spela den än mindre se informationen
Välja motstånd som ska användas med lysdioder: 3 steg
Välja motstånd som ska användas med lysdioder: Denna fråga ställs varje dag i svar och forum: Vilket motstånd använder jag med mina lysdioder? Så jag har satt ihop flera olika sätt att räkna ut det. Låt oss komma till rätta: Var och en av stegen gör samma sak. Steg 1 är det enklaste och vi