Indholdsfortegnelse:
- Trin 1: Forbrugsvarer
- Trin 2: Skematisk og ledningsføring
- Trin 3: Databasedesign
- Trin 4: Forberedelse af Raspberry Pi
- Trin 5: Videresend vores database til RPi
- Trin 6: Konfiguration af Bluetooth på vores RPi
- Trin 7: Skrivning af den komplette backend
- Trin 8: Skrivning af frontend (HTML, CSS og JavaScript)
- Trin 9: Byg min sag og sammensæt det hele
- Trin 10: Nogle problemer, jeg havde på min vej med at oprette Slimbox -højttaleren …
Video: Slimbox - en smart Bluetooth -højttaler !: 10 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
Hej med dig!
Til mit skoleprojekt på MCT Howest Kortrijk lavede jeg en smart Bluetooth -højttalerenhed med forskellige sensorer, en LCD og RGB NeoPixel ring inkluderet. Alt kører på Raspberry Pi (Database, Webserver, Backend).
Så i denne instruktive vil jeg vise dig, hvordan jeg lavede dette projekt på 3 uger, trin for trin, så hvis nogen af jer vil genskabe mit projekt, kan I sagtens gøre det!
Dette er også min første vejledning, hvis du har spørgsmål, vil jeg prøve at besvare dem så hurtigt som muligt!
Min GitHub:
Trin 1: Forbrugsvarer
DS18B20 Temperatursensor
DS18B20 er en en-tråds sensor, der måler temperaturen, fremstillet af Maxim Integrated. Der er 2 slags DS18B20 -sensorer, kun komponenten (som jeg brugte) og den vandtætte version, som er meget større, men det var ikke det, jeg havde brug for til mit projekt, så jeg brugte kun komponenten. Sensoren kan måle temperaturen i et område fra -55 ° C til +125 ° C (-67 ° F til +257 ° F), og den har en nøjagtighed på 0,5 ° C fra -10 ° C til +85 ° C. Det har også en programmerbar opløsning fra 9 bit til 12 bit.
Datablad:
Potentiometer sensor
Et potentiometer er en modstand med tre terminaler, som kan justeres manuelt ved blot at dreje sensorens øvre del. Placeringen af den øvre del bestemmer udgangsspændingen af potentiometeret.
LSM303 Accelerometer + Compass Breakout
LSM303 breakout board er en kombination af et triple-axis accelerometer og et magnetometer / kompas, fremstillet af Adafruit. Det bruges med I2C -grænsefladen på Raspberry Pi.
Oversigt:
Datablad:
MCP3008
For at læse dataene fra mit potentiometer brugte jeg en MCP3008, som er en 8 -kanals 10 bit analog til digital konverter med SPI -interface og er ret let at programmere.
Datablad:
Højttaler - 3”Diameter - 8 Ohm 1 Watt
Dette er den højttalerkegle, jeg valgte efter at have beregnet den spænding og ampere, den ville have brug for, og dette passede perfekt til mit Raspberry Pi -projekt, fremstillet af Adafruit.
Oversigt:
MAX98357 I2S klasse-D mono forstærker
Dette er forstærkeren, der følger med højttaleren, det er ikke kun en forstærker, det er også en I2S digital til analog konverter, så den er også perfekt til min højttaler og lydsystem.
Oversigt:
Datablad:
Arduino Uno
Arduino Uno er et open-source mikrokontrollerkort baseret på Microchip ATmega328P mikrokontroller, fremstillet af Arduino.cc. Uno -kortet har 14 digitale ben, 6 analoge ben og er fuldt programmerbart med Arduino IDE -softwaren
Oversigt:
Niveauskift
Dette er et lille bord, der tager sig af kommunikationen mellem Arduino Uno og Raspberry Pi og de forskellige spændinger, Arduino: 5V & Raspberry Pi: 3.3V. Dette er nødvendigt, fordi NeoPixel -ringen er forbundet til Arduino og kører der, mens alle de andre ting kører på Raspberry Pi.
RGB NeoPixel ring
Dette er en lille ring fyldt med 12 RGB leds (du kan købe større ringe med flere RGB leds, hvis du vil). Hvilket i mit tilfælde er forbundet til Arduino Uno, men også kan tilsluttes mange andre enheder og er virkelig enkel at bruge.
Oversigt:
LCD -skærm 16x2
Jeg brugte en grundlæggende LCD -skærm til at udskrive min temperatur, volumen og IP -adresse.
Datablad:
Raspberry Pi 3B+ og 16 GB SD -kort
Hele mit projekt kører på min Raspberry Pi 3B+ med et konfigureret billede, som jeg vil hjælpe dig med at konfigurere senere i min instruerbare.
GPIO T-Part, 2 brødbrætter og masser af jumperwires
For at forbinde alt, hvad jeg havde brug for brødbrætter og jumperwires, brugte jeg GPIO T-delen, så jeg har mere plads, og det er klart, hvilken pin er hvilken.
Trin 2: Skematisk og ledningsføring
For min skematiske brugte jeg Fritzing, det er et program, du kan installere, som giver dig mulighed for at oprette en skematisk virkelig let i forskellige slags visninger.
Download Fritzing:
Så sørg for at forbinde alt på den rigtige måde! I mit tilfælde er farven på ledningerne ikke den samme som på skematisk.
Trin 3: Databasedesign
Vi indsamler en masse data fra de 3 tilsluttede sensorer, så vi har brug for en database til at gemme data og sensorer i. Senere ser vi, hvordan du konfigurerer databasen på Raspberry Pi, og hvordan vi tilføjer data til den. Men først skal databasedesignet eller ERD (Entity Relationship Diagram) laves, og mit blev også normaliseret med 3NF. Derfor deler vi sensorerne op i et andet bord og arbejder med ID'er.
Samlet set er dette et virkelig grundlæggende og let databasedesign at arbejde videre med.
Trin 4: Forberedelse af Raspberry Pi
Så nu hvor vi har gjort nogle grundlæggende elementer i projektet. Lad os komme i gang med Raspberry Pi!
Konfiguration af SD -kort
Først skal du bruge et 16 GB SD -kort, hvor du kan sætte dit billede på og et program til at uploade et startbillede til SD -kortet.
Software:
Start billede:
Så når disse er downloadet:
- Sæt dit SD -kort i din computer.
- Åbn Win32, som du lige har downloadet.
- Vælg den Raspbian -billedfil, som du også lige har downloadet.
- Klik på 'skriv' til placeringen af dit SD -kort.
Dette kan tage noget tid, afhængigt af din hardware. Når dette er gjort, er vi klar til at foretage nogle sidste justeringer, før vi sætter billedet i vores RPi.
- Gå til dit SD -korts bibliotek, søg efter filen med navnet 'cmdline.txt', og åbn den.
- Tilføj nu 'ip = 169.254.10.1' på den samme linje.
- Gem filen.
- Opret en fil med navnet 'ssh' uden udvidelse eller indhold.
Nu kan du SIKKERT skubbe SD -kortet ud af din computer og sætte det i Raspberry Pi UDEN strøm. Når SD -kortet er sat i RPI'en, skal du slutte et LAN -kabel fra din computer til RPi LAN -porten, når dette er tilsluttet, kan du slutte strøm til RPi.
Nu vil vi kontrollere vores Raspberry Pi, dette gøres gennem Putty.
Kittesoftware:
Når du har downloadet, skal du åbne Putty og indsætte IP '169.254.10.1' og Port '22' og forbindelsestype: SSH. Nu kan vi endelig åbne vores kommandolinjegrænseflade og logge ind med starter -loginoplysningerne -> Bruger: pi & Adgangskode: hindbær.
Raspi-konfiguration
sudo raspi-config
Det, der virkelig er vigtigt for dette projekt, er grænsefladesektionen, vi skal aktivere mange forskellige grænseflader, aktivere alle følgende grænseflader:
- En-ledning
- SPI
- I2C
- Seriel
Nu hvor vi er færdige med raspi-config, lad os prøve at oprette forbindelse til internettet.
Wi-Fi-forbindelse
Først skal du være root for følgende kommandoer
sudo -i
Når du er root, skal du bruge følgende kommando. SSID er dit netværksnavn, og adgangskoden er naturligvis adgangskoden.
wpa_passphrase "ssid" "password" >> /etc/wpa_supplicant/wpa_supplicant.conf
Hvis du begik en fejl, kan du kontrollere, opdatere eller slette dette netværk ved blot at indtaste filen:
nano /etc/wpa_supplicant/wpa_supplicant.conf
Så efter at vi kom ind i vores netværk, lad os gå ind i WPA -klientgrænsefladen
wpa_cli
Vælg din grænseflade
grænseflade wlan0
Genindlæs filen
omkonfigurere
Og endelig kan du se, om du har god forbindelse:
ip a
Opdater og opgrader
Nu hvor vi har forbindelse til internettet, ville opdatering af de allerede installerede pakker være et smart træk, så lad os gøre det først, før vi installerer andre pakker.
sudo apt-get opdatering
sudo apt-get opgradering
MariaDB Database
Installer MariaDB -databaseserveren:
sudo apt-get install mariadb-server
Apache2 webserver
Installer Apache2 webserveren:
sudo apt installere apache2
Python
Installer Python:
opdateringsalternativer-install/usr/bin/python python /usr/bin/python2.7 1
opdateringsalternativer-install/usr/bin/python python/usr/bin/python3 2
Python -pakke
Du bliver nødt til at installere alle disse pakker for at få backend til at fungere perfekt:
- Kolbe
- Kolbe-Cors
- Kolbe-MySql
- Kolbe-SocketIO
- PyMySQL
- Anmodninger
- Python-socketio
- RPi. GPIO
- Gevent
- Gevent-websocket
- Ujson
- Wsaccel
Højttalerbibliotek
Installer højttalerbiblioteket fra Adafruit:
curl -sS https://raw.githubusercontent.com/adafruit/Raspbe… | bash
Tid til at genstarte
sudo genstart
Trin 5: Videresend vores database til RPi
Nu hvor vi har installeret alt, hvad vi havde brug for, lad os lægge vores database, vi designede på vores Raspberry Pi!
Så først skal vi videresende vores database i MySql -arbejdsbordet, mens du gør det, kopierer du din fulde databasekode og sletter alle de 'synlige' ord i den. Så når det er kopieret, kan vi åbne spartel igen, logge ind og skrive:
sudo mysql
og nu er du i mysql -grænsefladen, kopier din databasekode i den, og tryk på enter.
Nu mangler vi bare at oprette en bruger
Opret BRUGER 'bruger' IDENTIFICERET AF 'bruger';
TILDELE ALLE PRIVILEGER TIL *. * TIL 'bruger';
Genstart nu.
Så alt burde være konfigureret nu, du kan også oprette forbindelse til din Pi og MySql Workbench, så det er lettere at kontrollere alle data i dine tabeller.
Trin 6: Konfiguration af Bluetooth på vores RPi
Vi opretter en Bluetooth -højttaler, så det betyder, at medierne sendes fra vores kilde til Raspberry Pi, og det kan gøres ret let, lad os komme ind i det!
Min kilde til bluetooth-forbindelsen:
Fjernelse af den allerede kørende bluealsa
sudo rm/var/run/bluealsa/*
Tilføj A2DP -profil Sink -rolle
sudo bluealsa -p a2dp -vask &
Åbn bluetooth -grænsefladen, og tænd din bluetooth
bluetoothctl
tænd
Opret en parringsagent
agent på
standardagent
Gør din RPi synlig
findes på
- Nu skal du søge efter RPi'en fra din bluetooth -enhed og oprette forbindelse til den.
- Bekræft parringen på begge enheder, skriv 'ja' i din kit.
- Godkend A2DP -service, skriv 'ja' igen.
- Når dette er gjort, kan vi stole på vores enhed, så vi ikke behøver at gå igennem alt dette, hver gang vi vil oprette forbindelse
tillid XX: XX: XX: XX: XX: XX (Din bluetooth mac -adresse fra vores kildeenhed)
Hvis du vil have, at din RPi bliver ved med at være synlig, er det dit eget valg, men jeg foretrækker at slukke den igen, så folk ikke kan prøve at oprette forbindelse til din boks
opdagelig off
Derefter kan vi forlade vores bluetooth -interface
Afslut
Og endelig vores audio routing: vores kildeenhed videresender til vores RPi
bluealsa-aplay 00: 00: 00: 00: 00: 00
Nu er vores enhed fuldt tilsluttet vores Raspberry, og du skal kunne afspille medier fra din kildeenhed på Pi -højttaleren.
Trin 7: Skrivning af den komplette backend
Så nu er opsætningen færdig, vi kan endelig begynde at skrive vores backend -program!
Jeg brugte PyCharm til hele min backend, du skal bare sørge for, at dit PyCharm -projekt er forbundet til din Raspberry Pi, det betyder, at din implementeringssti er konfigureret i dine indstillinger, og du har installeret alle de pakker, vi har brug for, burde allerede være udført i trin 4.
Jeg brugte mine egne klasser, og disse er også alle inkluderet i min GitHub. Linket er i introduktionen, hvis du gik glip af det;)
I min backend -fil brugte jeg trådklasser, så alt kan køre på samme tid, og det vil ikke afbryde hinanden. Og i bunden har du alle ruterne, så vi nemt kan få data i vores frontend.
Trin 8: Skrivning af frontend (HTML, CSS og JavaScript)
Nu hvor backend er færdig, kan vi begynde at skrive hele front-end.
HTML & CSS blev gjort ret let, prøvede at arbejde med mobilen først så meget som muligt, da vi for det meste forbinder med Bluetooth fra en mobilenhed, ville det være lettere at styre fra et mobilt instrumentbræt.
Du kan designe dit dashboard på enhver måde, du vil, jeg vil bare efterlade min kode og designe her, du kan gøre, hvad du vil!
Og Javascript var ikke så svært, arbejdede med et par GET'er fra mine backend -ruter, masser af eventlyttere og nogle socketio -strukturer.
Trin 9: Byg min sag og sammensæt det hele
Jeg startede først med nogle skitser af, hvordan jeg ville have, at sagen skulle se ud, noget vigtigt var, at den skulle være stor nok til, at alt kunne passe ind, da vi fik et stort kredsløb at sætte i sagen.
Jeg har lavet sagen ud af træ, jeg synes, det er det letteste at arbejde med, når man ikke har så meget erfaring med at bygge sager, og man også har mange ting, man kan gøre med det.
Jeg startede med en æske til vinflasker og begyndte lige at save træet. Når jeg havde min grundkasse, skulle jeg bare bore huller i den (meget på forsiden af sagen, som du kan se på billederne: P) og sætte nogle søm i den, det er en virkelig grundlæggende sag, men det ser ret cool ud og passer perfekt.
Og når sagen var færdig, var det tid til at sætte det hele sammen, som du kan se på det sidste billede! Det er lidt rod i kassen, men alt fungerer, og jeg havde ikke så meget mere plads, så jeg råder dig til måske at oprette en større sag, hvis du genskaber mit projekt.
Trin 10: Nogle problemer, jeg havde på min vej med at oprette Slimbox -højttaleren …
Bluetooth- og bluealsa -fejl
Hver gang jeg ville spille musik eller oprette forbindelse til bluetooth, modtog jeg fejl fra bluetooth og bluealsa. Jeg undersøgte det, og det var løsningen på mit problem. Så af en eller anden grund var min bluetooth blokeret, ikke sikker på om dette er standard blødt blokeret. Du kan se, om det er ved at skrive følgende kommando i din kit.
rfkill liste
Så hvis det er softblocket, skal du bare bruge dette:
rfkill fjern blokering af bluetooth
Og du vil måske genstarte efter dette, min kilde:
Problemer med seriel forbindelse
Så et andet stort problem, jeg havde, var, at jeg ikke kunne oprette forbindelse med min Arduino gennem levelhifter, efter lidt søgning fandt jeg ud af, at min '/dev/ttyS0' var væk, og dette kunne skyldes en opdatering af din RPi. Fandt også en løsning på dette
Du bliver nødt til at genaktivere den serielle konsol med raspi-config, genstarte og derefter manuelt fjerne "console = serial0, 115200" bit fra '/boot/cmdline.txt'. Bekræft, at "enable_uart = 1" er i' /boot/config.txt ', og genstart igen. Det skulle få din ttyS0 -port tilbage, samt'/dev/serial0 'soft linket til den.
Kilde:
Anbefalede:
Smart skrivebord LED -lys - Smart Lighting W/ Arduino - Neopixels -arbejdsområde: 10 trin (med billeder)
Smart skrivebord LED -lys | Smart Lighting W/ Arduino | Neopixels Workspace: Nu til dage bruger vi meget tid derhjemme, studerer og arbejder virtuelt, så hvorfor ikke gøre vores arbejdsområde større med et brugerdefineret og smart belysningssystem Arduino og Ws2812b LED'er baseret. Her viser jeg dig, hvordan du bygger din Smart Skrivebord LED -lys, der
Sådan opbygges SMARS Robot - Arduino Smart Robot Tank Bluetooth: 16 trin (med billeder)
Sådan bygger du SMARS Robot - Arduino Smart Robot Tank Bluetooth: Denne artikel er stolt sponsoreret af PCBWAY. PCBWAY laver prototyper af PCB'er af høj kvalitet til mennesker over hele verden. Prøv det selv og få 10 PCB'er for kun $ 5 på PCBWAY med meget god kvalitet, tak PCBWAY. Motorskærmen til Arduino Uno
Smart vækkeur: et smart vækkeur lavet med hindbær Pi: 10 trin (med billeder)
Smart vækkeur: et smart vækkeur lavet med Raspberry Pi: Har du nogensinde ønsket et smart ur? I så fald er dette løsningen for dig! Jeg lavede Smart Alarm Clock, dette er et ur, hvor du kan ændre alarmtiden i henhold til webstedet. Når alarmen går, kommer der en lyd (summer) og 2 lyser
DIY smart skala med vækkeur (med Wi-Fi, ESP8266, Arduino IDE og Adafruit.io): 10 trin (med billeder)
DIY Smart Scale With Alarm Clock (med Wi-Fi, ESP8266, Arduino IDE og Adafruit.io): I mit tidligere projekt udviklede jeg en smart badevægt med Wi-Fi. Det kan måle brugerens vægt, vise det lokalt og sende det til skyen. Du kan få flere detaljer om dette på linket herunder: https: //www.instructables.com/id/Wi-Fi-Smart-Scale-wi
Sådan adskilles en computer med nemme trin og billeder: 13 trin (med billeder)
Sådan adskilles en computer med nemme trin og billeder: Dette er en instruktion om, hvordan du adskiller en pc. De fleste af de grundlæggende komponenter er modulopbyggede og nemme at fjerne. Det er dog vigtigt, at du er organiseret omkring det. Dette hjælper med at forhindre dig i at miste dele og også ved at lave genmonteringen til