Obsah:
- Krok 1: Spotrebný materiál
- Krok 2: Schéma a zapojenie
- Krok 3: Návrh databázy
- Krok 4: Nastavte Raspberry Pi
- Step 5: Setting Up the Database to the RPi
- Krok 6: Konfigurácia Bluetooth na našich RPi
- Krok 7: Napísanie kompletného backendu
- Krok 8: Písanie frontendu (HTML, CSS a JavaScript)
- Krok 9: Zostavenie môjho prípadu a jeho spojenie
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Hej vy tam!
Pre svoj školský projekt na MCT Howest Kortrijk som vyrobil reproduktor Mood Speaker, ktorý je inteligentným reproduktorovým zariadením Bluetooth s rôznymi senzormi a súčasťou je aj LED pásik a páska WS2812b. Reproduktor prehráva hudbu na pozadí podľa teploty, ale je možné ho použiť aj ako bežný bluetooth reproduktor. Všetko beží na Raspberry Pi (databáza, webový server, backend).
Tento návod je krok za krokom k tomu, ako som tento projekt zrealizoval za 3 týždne. Ak teda chcete znova vytvoriť môj projekt, môžete postupovať podľa sprievodcu
Tento návod je mojím prvým, ktorý som napísal, takže ak existujú nejaké kvestie, pokúsim sa ich čo najrýchlejšie zodpovedať!
Môj GitHub:
Krok 1: Spotrebný materiál
Karta Raspberry Pi 3B a 16 GB SD
Celý môj projekt beží na mojom Raspberry Pi 3B s nakonfigurovaným obrázkom, ktorý vysvetlím v neskoršom kroku (Krok 4: Nastavenie Raspberry Pi)
LCD displej 16x2
Na vytlačenie teploty, jasu a adresy IP som použil základný LCD displej.
Dátový list:
Snímač teploty DS18B20
DS18B20 je jednovodičový senzor na meranie teploty, ktorý vyrába spoločnosť Maxim Integrated. Existujú 2 druhy senzorov DS18B20, iba komponent (ktorý som použil) a vodotesná verzia, ktorá je oveľa väčšia, ale to nie je to, čo som pre svoj projekt potreboval, takže som použil iba komponent. Senzor môže merať teplotu v rozsahu -55 ° C až +125 ° C (-67 ° F až +257 ° F) a má presnosť 0,5 ° C od -10 ° C do +85 ° C. Má tiež programovateľné rozlíšenie od 9 bitov do 12 bitov.
Dátový list:
MCP3008
Na čítanie údajov z môjho snímača LDR a PIR som použil MCP3008, čo je 8-kanálový 10-bitový analógovo-digitálny prevodník s rozhraním SPI a programovanie je veľmi jednoduché.
Dátový list:
Snímač pohybu PIR
Aby som zistil, či niekto vstupuje a vystupuje z mojej miestnosti, použil som pasívny infračervený senzor, pretože sa ľahko používajú a sú malé.
Dátový list:
LDR
Na zistenie úrovne jasu miestnosti, v ktorej sa nachádza, som použil fotoodpor alebo LDR (odpor znižujúci svetlo alebo odpor závislý na svetle). Tiež som zapol Ledstrip, keď bola tma.
Reproduktor - priemer 3 palce - 4 ohmy, 3 watty
Toto je reproduktorový kužeľ, ktorý som si vybral po výpočte napätia a ampérov, ktoré bude potrebovať, a to sa perfektne hodilo pre môj projekt Raspberry Pi, vyrábaný spoločnosťou Adafruit.
Prehľad:
MAX98357 I2S Mono zosilňovač triedy D
Toto je zosilňovač, ktorý je súčasťou reproduktora, nie je to len zosilňovač, ale je to tiež prevodník digitálneho signálu na analógový I2S, takže je tiež perfektne vhodný pre môj reproduktor a zvukový systém.
Prehľad:
Dátový list:
Arduino Uno
Arduino Uno je doska mikrokontroléra s otvoreným zdrojovým kódom založená na mikrokontroléri Microchip ATmega328P, ktorý vyrába spoločnosť Arduino.cc. Doska Uno má 14 digitálnych pinov, 6 analógových pinov a je plne programovateľná pomocou softvéru Arduino IDE
Prehľad:
Posunovač úrovní
Jedná sa o malú dosku, ktorá sa stará o komunikáciu medzi Arduino Uno a Raspberry Pi a rôznymi napätiami, Arduino: 5V a Raspberry Pi: 3,3V. Je to potrebné, pretože LED pás je pripojený k Arduinu a beží tam, zatiaľ čo všetky ostatné položky bežia na Raspberry Pi.
WS2812B - Ledstrip
Jedná sa o LED pás so 60 RGB LED diódami (ak chcete, môžete si kúpiť dlhšie pásy s viacerými RGB LED diódami). Čo je v mojom prípade pripojené k Arduino Uno, ale dá sa pripojiť aj k mnohým ďalším zariadeniam a použitie je skutočne jednoduché.
Dátový list:
GPIO T-Part, 1 Breadboard a veľa prepojovacích drôtov
Aby som prepojil všetko, čo som potreboval, chlebové dosky a prepojovacie mostíky, nepoužil som T-časť GPIO, ale môžete pomocou nej jasne vedieť, ktorý kôš ide kam.
Krok 2: Schéma a zapojenie
Na zostavenie schémy som použil Fritzing, je to program, ktorý si môžete nainštalovať a ktorý vám umožní vytvoriť schému skutočne jednoducho v rôznych druhoch zobrazení. Použil som tabuľu a schematický pohľad.
Stiahnite si Fritzing:
Uistite sa, že je všetko správne zapojené. Použil som farby, aby bolo o niečo jasnejšie vedieť, kam zapojiť vodiče. V mojom prípade som na vodiče použil rôzne farby
Krok 3: Návrh databázy
Zhromažďujeme veľa údajov z troch senzorov (teplota z DS18B20, jas z LDR a stav zo senzora PIR). Preto je najlepšie uchovávať všetky tieto údaje v databáze. V neskoršom kroku vysvetlím, ako konfigurovať databázu (Krok 5: Forward Engineering Our Database to the RPi!) Najprv však musíte urobiť návrh alebo ERD (Entity Relationship Diagram). Moja bola normalizovaná pomocou 3NF, preto sme rozdelili komponenty a históriu komponentov do ďalšej tabuľky. Databázu hudby používame na sledovanie skladieb, ktoré ste si vypočuli.
Celkovo je to skutočne základný a ľahký návrh databázy, s ktorým je možné ďalej pracovať.
Krok 4: Nastavte Raspberry Pi
Takže teraz, keď máme hotové niektoré základy projektu. Začnime s nastavením Raspberry Pi!
Časť 1: Konfigurácia karty SD
1) Stiahnite si požadovaný softvér a súbory
Na tento úplný proces si musíte stiahnuť 2 softvér a 1 OS, tj. Raspbian. 1. softvér: Prvým softvérom je Win32 Disk Imager.
sourceforge.net/projects/win32diskimager/
2. softvér: Druhý softvér je formátovač karty SD.
www.sdcard.org/downloads/formatter_4/
Raspbian OS: Toto je hlavný operačný systém Pi.
www.raspberrypi.org/downloads/raspberry-pi-os/
Extrahujte všetky súbory na plochu.
2) Získajte kartu SD a čítačku kariet
Získajte minimálne 8 GB kartu SD triedy 10 s čítačkou kariet. Vložte kartu do čítačky kariet a zapojte ju do portu USB.
3) Naformátujte kartu SD
Otvorte formátovač karty SD a vyberte jednotku.
Kliknite na formát a nemeňte žiadne ďalšie možnosti.
Po dokončení formátovania kliknite na tlačidlo OK.
4) Napíšte operačný systém na kartu SD
Otvorte win32diskimager.
Prezrite si súbor.img systému Raspbian OS, ktorý bol extrahovaný zo stiahnutého súboru.
Kliknite na položku otvoriť a potom kliknite na položku Napísať.
Ak sa zobrazí nejaké upozornenie, ignorujte ich kliknutím na tlačidlo OK. Počkajte na dokončenie zápisu a môže to trvať niekoľko minút. Takže buďte trpezliví.
n
5) Akonáhle to bude hotové, sme pripravení vykonať posledné úpravy pred vložením obrázku do nášho RPi.
Prejdite do adresára svojej karty SD, vyhľadajte súbor s názvom „cmdline.txt“a otvorte ho.
Teraz na ten istý riadok pridajte „ip = 169.254.10.1“.
Uložte súbor.
Vytvorte súbor s názvom „ssh“bez prípony alebo obsahu. (Najľahšie je vytvoriť súbor txt a súbor.txt potom odstrániť).
Teraz, keď je na SD kartu nainštalované všetko, ju môžete BEZPEČNE vysunúť z počítača a vložiť do Raspberry Pi BEZ pripojenia k napájaniu. Akonáhle je karta SD zapojená do RPI, pripojte kábel LAN z počítača k portu LAN RPi. Po pripojení môžete k RPi pripojiť napájanie.
Časť 2: Konfigurácia RPi
Tmel
Teraz chceme nakonfigurovať náš Raspberry Pi, to sa deje pomocou Putty.
Software pre tmely:
Po stiahnutí otvorte Putty a vložte IP „169.254.10.1“a port „22“a typ pripojenia: SSH.
Teraz môžeme konečne otvoriť naše rozhranie príkazového riadku a prihlásiť sa pomocou prihlasovacích údajov štartéra -> Používateľ: pi & Heslo: malina. (Odporúčame zmeniť ho čo najrýchlejšie. Tu je návod, ako:
Raspi-config
Budeme musieť povoliť rôzne rozhrania a na to musíme najskôr napísať nasledujúci kód:
sudo raspi-config
Veci, ktoré musíme povoliť, sú v časti o prepojení. Musíme povoliť nasledujúce rozhrania:
- Jednodrátové
- Sériové
- I2C
- SPI
To bolo všetko, čo sme potrebovali urobiť s raspi-config
Pridanie WIFI
Najprv musíte byť root, aby sa z nasledujúceho príkazu stal root
sudo -i
Akonáhle ste root, použite nasledujúci príkaz: (Nahraďte SSID názvom siete a heslom sieťovým heslom)
wpa_passphrase "ssid" "heslo" >> /etc/wpa_supplicant/wpa_supplicant.conf
V prípade, že ste urobili niečo nesprávne, môžete túto sieť skontrolovať, aktualizovať alebo odstrániť zadaním nasledujúceho príkazu:
nano /etc/wpa_supplicant/wpa_supplicant.conf
Potom, čo sme vstúpili do našej siete, vstúpime do klientskeho rozhrania WPA
wpa_cli
Vyberte svoje rozhranie
rozhranie wlan0
Znova načítajte súbor
prekonfigurovať
A nakoniec môžete vidieť, či ste dobre spojení:
ip a
Časť 3: Aktualizácia inštalačného softvéru RPi +
Teraz, keď sme pripojení k internetu, by aktualizácia už nainštalovaných balíkov bola múdra akcia, urobme to teda pred inštaláciou ďalších balíkov.
sudo apt-get aktualizácia
sudo apt-get upgrade
Po aktualizácii RPi budeme musieť nainštalovať nasledujúci softvér:
Databáza MariaDB
sudo apt-get install mariadb-server
Webový server Apache2
sudo apt nainštalovať apache2
Python
update-alternatives --install/usr/bin/python python /usr/bin/python3.7 1 update-alternatives --install/usr/bin/python python/usr/bin/python3 2
Balík Python
Aby perfektne fungovalo backend, budete musieť nainštalovať všetky tieto balíky:
- Banka
- Flask-Cors
- Flask-MySql
- Flask-SocketIO
- Požiadavky PyMySQL
- Python-socketio
- RPi. GPIO
- Gevent
- Gevent-websocket
Knižnica reproduktorov
Na používanie reproduktora so zosilňovačom budeme musieť pre neho nainštalovať knižnicu
zvinutie -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
Teraz, keď sme nainštalovali všetko, čo sme potrebovali, vložme databázu, ktorú sme navrhli, na náš Raspberry Pi!
Na nastavenie databázy budeme musieť prepojiť MySql a RPi. Za týmto účelom otvoríme MySQLWorkbench a vytvoríme nové pripojenie. Pri pohľade na obrázok budete musieť zmeniť, aby ste zmenili informácie na svoje.
Ak ste ešte nič nezmenili, môžete použiť SSH pi a raspberry, pre MySQL mysql a mysql.
Ak vám niečo nie je jasné, môžete použiť aj tento návod:
Export databázy by mal byť jednoduchší pomocou PHPmyAdmin, pretože pri použití MySql môžete získať veľa chýb.
Krok 6: Konfigurácia Bluetooth na našich RPi
Vytvárame reproduktor Mood, ktorý môžeme používať aj s vlastnou hudbou, takže keď je RPi, je to jednoduchšie
pripojený k bluetooth Nasledoval som jeho návod, ktorý nájdete tu:
scribles.net/streaming-bluetooth-audio-fr…
Napísal som tu tiež všetko pre všetkých, ktorí to chcú znova vytvoriť
Odstránenie už spustenej bluealsy
sudo rm/var/run/bluealsa/*
Pridať rolu umývadla v profile A2DP
sudo bluealsa -p a2dp -sink &
Otvorte rozhranie Bluetooth a zapnite ho
zapnutie bluetoothctl
Nastavte agenta párovania
agent na predvolenom agentovi
Urobte svoje RPi objaviteľnými
objaviteľné na
- Teraz zo svojho zariadenia bluetooth vyhľadajte RPi a spojte sa s ním.
- Potvrďte párovanie na oboch zariadeniach, do tmelu zadajte „áno“.
- Autorizujte službu A2DP, zadajte znova „áno“.
- Keď to bude hotové, môžeme svojmu zariadeniu dôverovať, takže to nebudeme musieť absolvovať vždy, keď sa budeme chcieť pripojiť
dôverujte XX: XX: XX: XX: XX: XX (Vaša bluetooth mac adresa z nášho zdrojového zariadenia)
Ak chcete, aby boli vaše RPi stále objaviteľné, je to vaša vlastná voľba, ale radšej ho vypnem, aby sa ľudia nemohli pokúsiť spojiť s vašim boxom
zistiteľné vypnuté
Potom môžeme opustiť naše rozhranie bluetooth
východ
A nakoniec naše smerovanie zvuku: naše zdrojové zariadenie presmerováva na naše RPi
bluealsa-aplay 00: 00: 00: 00: 00: 00
Teraz je naše zariadenie pripojené k nášmu Raspberry pomocou bluetooth a mali by ste ho mať možnosť otestovať prehrávaním akéhokoľvek média, napríklad Spotify atď.
Krok 7: Napísanie kompletného backendu
Takže teraz je nastavenie dokončené, môžeme konečne začať písať náš backendový program!
Na celý svoj backend som použil kód Visual Studio, stačí sa uistiť, že je váš projekt Visual Studio pripojený k vášmu Raspberry Pi, to znamená, že váš LAN kábel musí byť pripojený k vášmu RPi a aby sa vytvorilo pripojenie SSH. (informácie o vytvorení vzdialeného pripojenia nájdete tu:
Použil som svoje vlastné triedy a všetky sú tiež zahrnuté v mojom GitHub.
V mojom súbore backend som použil rôzne triedy, takže všetko je možné použiť samostatne a aby môj hlavný kód nebol zmätok so všetkými rôznymi vláknami. Na spustenie všetkých rôznych tried naraz som použil vlákno. A v spodnej časti máte všetky trasy, aby sme mohli ľahko získať údaje v našom klientskom rozhraní.
Krok 8: Písanie frontendu (HTML, CSS a JavaScript)
Teraz, keď je backend hotový, môžeme začať písať celý front-end.
HTML a CSS boli pre mňa dosť ťažké. Urobil som všetko pre to, aby bol najskôr mobilný, pretože sa k nemu môžem pripojiť pomocou bluetooth a meniť skladby pomocou Spotify. Ovládanie by bolo teda jednoduchšie z mobilnej palubnej dosky
Palubný panel si môžete navrhnúť akýmkoľvek spôsobom chcete, ja tu nechám svoj kód a dizajn, môžete si robiť, čo sa vám páči!
A Javascript nebol pre mňa jednoduchší, pracoval s niekoľkými GET z mojich koncových trás, tonami poslucháčov udalostí a niektorými štruktúrami socketio, aby získal údaje z mojich senzorov.
Krok 9: Zostavenie môjho prípadu a jeho spojenie
Najprv som začal načrtávať, ako chcem, aby prípad vyzeral. Dôležité bolo, že musí byť dostatočne veľký, aby sa doň všetko zmestilo, pretože sme do kufra vložili veľký obvod, ale museli sme zostať kompaktní, aby sa tak nestalo. nezaberie veľa miesta
Skriňu som vyrobil z dreva, myslím si, že sa s ňou najľahšie pracuje, keď nemáte toľko skúseností so stavebnicami a máte tiež veľa vecí, ktoré s ňou môžete robiť.
Začal som zo starej dosky, ktorú som mal položenú okolo a práve som začal píliť drevo. Keď som mal svoje základné puzdro, musel som do neho jednoducho vyvŕtať otvory (veľa na prednej strane puzdra, ako vidíte na obrázkoch, a vložili ste doň niekoľko klincov), je to skutočne základné puzdro, ale vyzerá celkom dobre a perfektne sedí. Tiež som sa rozhodol namaľovať ho na bielo, aby vyzeral dobre.
A keď bol prípad hotový, bolo načase dať to všetko dohromady, ako vidíte na poslednom obrázku! Vnútri krabice je trochu neporiadok, ale všetko funguje a nemal som toľko priestoru, preto vám radím, aby ste vytvorili väčší prípad, ak rekonštruujete môj projekt.