Obsah:

Reproduktor nálady- výkonný reproduktor na prehrávanie hudby nálady na základe teploty okolia: 9 krokov
Reproduktor nálady- výkonný reproduktor na prehrávanie hudby nálady na základe teploty okolia: 9 krokov
Anonim
Reproduktor nálady- výkonný reproduktor na prehrávanie hudby nálady na základe teploty okolia
Reproduktor nálady- výkonný reproduktor na prehrávanie hudby nálady na základe teploty okolia

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

Schéma a zapojenie
Schéma a zapojenie
Schéma a zapojenie
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

Návrh databázy
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

Nastavenie databázy na RPi!
Nastavenie databázy na 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

Zostavenie môjho prípadu a všetko dohromady
Zostavenie môjho prípadu a všetko dohromady
Zostavenie môjho prípadu a všetko dohromady
Zostavenie môjho prípadu a všetko dohromady
Zostavenie môjho prípadu a všetko dohromady
Zostavenie môjho prípadu a všetko dohromady
Zostavenie môjho prípadu a všetko dohromady
Zostavenie môjho prípadu a všetko dohromady

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.

Odporúča: