Innehållsförteckning:
- Steg 1: Tillbehör
- Steg 2: Schematisk och kabeldragning
- Steg 3: Databasdesign
- Steg 4: Förbered Raspberry Pi
- Steg 5: Vidarebefordra Engineering vår databas till 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
- Steg 10: Några problem jag hade på min väg att skapa Slimbox -högtalaren …
Video: Slimbox - en smart Bluetooth -högtalare !: 10 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
Hallå där!
För mitt skolprojekt på MCT Howest Kortrijk gjorde jag en smart Bluetooth -högtalare med olika sensorer, en LCD och RGB NeoPixel -ring ingår. Allt körs på Raspberry Pi (databas, webbserver, backend).
Så i denna instruerbara kommer jag att visa dig hur jag gjorde det här projektet på 3 veckor, steg för steg, så om någon av er vill återskapa mitt projekt kan ni enkelt göra det!
Detta är också min första instruktion, om du har några frågor ska jag försöka svara på dem så snabbt som möjligt!
Min GitHub:
Steg 1: Tillbehör
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:
Potentiometersensor
En potentiometer är ett motstånd med tre plintar som kan justeras manuellt genom att bara rotera sensorns övre del. Placeringen av den övre delen bestämmer utspänningen för potentiometern.
LSM303 Accelerometer + kompassutbrott
LSM303 breakout board är en kombination av en trippelaxlad accelerometer och en magnetometer / kompass, tillverkad av Adafruit. Den används med I2C -gränssnittet för Raspberry Pi.
Översikt:
Datablad:
MCP3008
För att läsa data från min potentiometer 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:
Högtalare - 3”Diameter - 8 Ohm 1 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 NeoPixel -ringen är ansluten till Arduino och körs där, medan alla andra saker körs på Raspberry Pi.
RGB NeoPixel -ring
Detta är en liten ring fylld med 12 RGB -lysdioder (du kan köpa större ringar 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.
Översikt:
LCD -skärm 16x2
Jag använde en vanlig LCD -skärm för att skriva ut min temperatur, volym och IP -adress.
Datablad:
Raspberry Pi 3B+ och 16 GB SD -kort
Hela mitt projekt körs på min Raspberry Pi 3B+ med en konfigurerad bild, som jag hjälper dig att konfigurera senare i min instruerbara.
GPIO T-Part, 2 brödbrädor och massor av jumperwires
För att ansluta allt jag behövde brödbrädor och jumperwires använde jag GPIO T-delen så jag har mer utrymme och det är klart vilken stift som är vilken.
Steg 2: Schematisk och kabeldragning
För min schematik använde jag Fritzing, det är ett program du kan installera som gör att du kan skapa en schematik väldigt enkelt i olika typer av vyer.
Ladda ner Fritzing:
Så se till att du ansluter allt på rätt sätt! I mitt fall är trådarnas färger inte desamma som på schemat.
Steg 3: Databasdesign
Vi samlar in mycket data från de 3 anslutna sensorerna, så vi behöver en databas för att lagra data och sensorer i. Senare får vi se hur vi konfigurerar databasen på Raspberry Pi och hur vi lägger till data till den. Men först måste databasdesignen eller ERD (Entity Relationship Diagram) göras och min normaliserades också med 3NF. Det är därför vi delar upp sensorerna i ett annat bord och arbetar med ID: er.
Sammantaget är detta en riktigt enkel och enkel databasdesign att arbeta vidare med.
Steg 4: Förbered Raspberry Pi
Så nu när vi har gjort några grunder i projektet. Låt oss komma igång med Raspberry Pi!
Konfiguration av SD -kort
Först behöver du ett 16 GB SD -kort där du kan sätta på din bild och ett program för att ladda upp en startbild till SD -kortet.
Programvara:
Startbild:
Så när dessa är nedladdade:
- Sätt ditt SD -kort i din dator.
- Öppna Win32 som du just laddade ner.
- Välj Raspbian -bildfilen som du också har laddat ner.
- Klicka på "skriv" till platsen för ditt SD -kort.
Detta kan ta lite tid, beroende på din hårdvara. 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.
Nu kan du på ett säkert sätt mata ut SD -kortet från din dator och sätta in det i Raspberry Pi UTAN ström. 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.
Nu vill vi styra vår Raspberry Pi, detta görs genom 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.
Raspi-config
sudo raspi-config
Det som verkligen är viktigt för detta projekt är gränssnittssektionen, vi måste aktivera många olika gränssnitt, aktivera alla följande gränssnitt:
- En-tråd
- SPI
- I2C
- Serie
Nu när vi är klara med raspi-config, låt oss försöka upprätta en anslutning till internet.
Wi-Fi-anslutning
Först måste du vara root för följande kommandon
sudo -i
När du har rotat, använd följande kommando. SSID är ditt nätverksnamn och lösenordet är uppenbarligen lösenordet.
wpa_passphrase "ssid" "lösenord" >> /etc/wpa_supplicant/wpa_supplicant.conf
Om du har gjort ett misstag kan du kontrollera, uppdatera eller ta bort det här nätverket genom att bara ange den filen:
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
Uppdatera uppgradera
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
MariaDB -databas
Installera MariaDB -databaseservern:
sudo apt-get install mariadb-server
Apache2 webbserver
Installera Apache2 -webbservern:
sudo apt installera apache2
Pytonorm
Installera Python:
uppdateringsalternativ-installera/usr/bin/python python /usr/bin/python2.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
- Ujson
- Wsaccel
Högtalarbibliotek
Installera högtalarbiblioteket från Adafruit:
curl -sS https://raw.githubusercontent.com/adafruit/Raspbe… | våldsamt slag
Dags att starta om
sudo starta om
Steg 5: Vidarebefordra Engineering vår databas 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!
Så först måste vi vidarebefordra vår databas i MySql -arbetsbänken, medan du gör det, kopiera hela databankoden och ta bort alla "synliga" ord i den. Så när det har kopierats kan vi öppna kitt igen, logga in och skriv:
sudo mysql
och nu är du i mysql -gränssnittet, kopiera din databaskod i den och tryck på enter.
Nu behöver vi bara skapa en användare
SKAPA ANVÄNDAREN "användare" IDENTIFIERAD AV "användare";
GE ALLA PRIVILEGER PÅ *. * TILL 'användare';
Starta om nu.
Så allt borde vara inställt nu, du kan också ansluta med din Pi och MySql Workbench, så det är lättare att kontrollera all data i dina tabeller.
Steg 6: Konfigurera Bluetooth på vår RPi
Vi skapar en Bluetooth -högtalare, så det betyder att media skickas från vår källa till Raspberry Pi och det kan göras ganska enkelt, låt oss komma in i det!
Min källa för Bluetooth-anslutningen:
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
ström på
Skapa en parningsagent
agent på
default-agent
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 helt ansluten till vårt hallon och du borde kunna spela media från din källenhet på Pi -högtalaren.
Steg 7: Skriva hela backend
Så nu är installationen klar, vi kan äntligen börja skriva vårt backend -program!
Jag använde PyCharm för hela mitt backend, du behöver bara se till att ditt PyCharm -projekt är anslutet till din Raspberry Pi, det betyder att din distributionsväg är konfigurerad i dina inställningar och att du har installerat alla paket vi behöver, bör redan göras i steg 4.
Jag använde mina egna klasser och dessa ingår också alla i min GitHub. Länken finns i introt ifall du missade det;)
I min backend -fil använde jag trådklasser, så att allt kan köras samtidigt och det avbryter inte varandra. 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 & CSS gjordes ganska enkelt, försökte arbeta mobil först så mycket som möjligt, eftersom vi oftast ansluter till Bluetooth från en mobil enhet, skulle det 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 så svårt, arbetade med några få från mina backend -rutter, massor av eventlyssnare och några socketio -strukturer.
Steg 9: Bygga mitt fall och sätta ihop det hela
Jag började först med några skisser på hur jag ville att fallet 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.
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 började med ett fodral för vinflaskor och började precis såga virket. När jag väl hade mitt grundfodral var jag bara tvungen att borra hål i det (mycket på framsidan av fodralet, som du kan se på bilderna: P) och sätta några spikar i det, det är ett riktigt grundläggande fodral, men det ser ganska cool ut och passar perfekt.
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.
Steg 10: Några problem jag hade på min väg att skapa Slimbox -högtalaren …
Bluetooth- och bluealsa -fel
Varje gång jag ville spela musik eller ansluta till bluetooth fick jag fel från bluetooth och bluealsa. Jag undersökte det och det här var lösningen på mitt problem. Så av någon anledning var min bluetooth mjukblockerad, inte säker på om det här är standardmjukt blockerat. Du kan se om det är genom att skriva följande kommando i din kitt.
rfkill lista
Så om det är mjukblockerat, använd bara detta:
rfkill avblockera bluetooth
Och du kanske vill starta om efter detta, min källa:
Problem med seriell anslutning
Så ett annat stort problem jag hade var att jag inte kunde skapa någon koppling med min Arduino genom nivåhöjaren, efter lite sökning fick jag reda på att min '/dev/ttyS0' var borta och detta kan bero på en uppdatering av din RPi. Hittade också en lösning på detta
Du måste återaktivera seriekonsolen med raspi-config, starta om och sedan manuellt ta bort "console = serial0, 115200" -biten från '/boot/cmdline.txt'. Bekräfta att "enable_uart = 1" är i' /boot/config.txt ', och starta om igen. Det borde få tillbaka din ttyS0 -port, liksom'/dev/serial0 'mjuk länk till den.
Källa:
Rekommenderad:
Smart Desk LED -ljus - Smart Lighting W/ Arduino - Neopixels arbetsyta: 10 steg (med bilder)
Smart Desk LED -ljus | Smart Lighting W/ Arduino | Neopixels arbetsyta: Nu till dags spenderar vi mycket tid hemma, studerar och arbetar virtuellt, så varför inte göra vår arbetsyta större med ett anpassat och smart belysningssystem Arduino och Ws2812b lysdioder baserade. Här visar jag dig hur du bygger din Smart LED -lampa i skrivbordet som
Hur man bygger SMARS Robot - Arduino Smart Robot Tank Bluetooth: 16 steg (med bilder)
Hur man bygger SMARS Robot - Arduino Smart Robot Tank Bluetooth: Den här artikeln är stolt sponsrad av PCBWAY. PCBWAY gör prototyper av högkvalitativ PCB för människor över hela världen. Prova själv och få 10 PCB för bara $ 5 på PCBWAY med mycket bra kvalitet, tack PCBWAY. Motorskyddet för Arduino Uno
Smart väckarklocka: en smart väckarklocka tillverkad med hallon Pi: 10 steg (med bilder)
Smart väckarklocka: en smart väckarklocka tillverkad med hallon Pi: Har du någonsin velat ha en smart klocka? I så fall är detta lösningen för dig! Jag gjorde Smart Alarm Clock, det här är en klocka som du kan ändra alarmtiden enligt webbplatsen. När larmet går går det ett ljud (summer) och 2 lampor lyser
Hur man tar isär en dator med enkla steg och bilder: 13 steg (med bilder)
Hur man tar isär en dator med enkla steg och bilder: Detta är en instruktion om hur man demonterar en dator. De flesta av de grundläggande komponenterna är modulära och lätt att ta bort. Det är dock viktigt att du är organiserad kring det. Detta hjälper dig att inte förlora delar, och även för att göra ommonteringen
Smart gatubelysning med IR -sensor med Arduino: 4 steg (med bilder)
Smart Street Light som använder Ir -sensor med Arduino: Prenumerera på min kanal för fler projekt.Detta projekt handlar om Smart gatubelysning, gatlyset tänds medan fordonet passerar genom det. Här använder vi 4 IR -sensorer som känner av positionen för fordonet, varje IR -sensor styr