Obsah:

Slimbox - inteligentný reproduktor Bluetooth!: 10 krokov (s obrázkami)
Slimbox - inteligentný reproduktor Bluetooth!: 10 krokov (s obrázkami)

Video: Slimbox - inteligentný reproduktor Bluetooth!: 10 krokov (s obrázkami)

Video: Slimbox - inteligentný reproduktor Bluetooth!: 10 krokov (s obrázkami)
Video: 아이폰 스마트폰 iphone 한정판 프로 슬림 케이스 case 11 폰 12 휴대폰 pro 세탁기 7 8 se2 mini x xs max 2024, November
Anonim
Slimbox - inteligentný reproduktor Bluetooth!
Slimbox - inteligentný reproduktor Bluetooth!

Hej vy tam!

Pre môj školský projekt na MCT Howest Kortrijk som vyrobil inteligentné zariadenie s reproduktorom Bluetooth s rôznymi senzormi, vrátane krúžku LCD a RGB NeoPixel. Všetko beží na Raspberry Pi (databáza, webový server, backend).

V tomto návode vám teda ukážem, ako som tento projekt vypracoval za 3 týždne, krok za krokom, takže ak niekto z vás chce môj projekt znova vytvoriť, ľahko to urobíte!

Toto je tiež môj prvý pokyn, ak máte nejaké otázky, pokúsim sa ich zodpovedať čo najskôr!

Môj GitHub:

Krok 1: Spotrebný materiál

Zásoby
Zásoby
Zásoby
Zásoby
Zásoby
Zásoby

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:

Senzor potenciometra

Potenciometer je rezistor s tromi svorkami, ktorý je ručne nastaviteľný otáčaním hornej časti snímača. Poloha hornej časti určuje výstupné napätie potenciometra.

Akcelerometer LSM303 + kompas

Odlamovacia doska LSM303 je kombináciou trojosového akcelerometra a magnetometra / kompasu, vyrobeného spoločnosťou Adafruit. Používa sa s rozhraním I2C Raspberry Pi.

Prehľad:

Dátový list:

MCP3008

Na čítanie údajov z môjho potenciometra 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:

Reproduktor - priemer 3 palce - 8 ohmov, 1 watt

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 krúžok NeoPixel je pripojený k Arduinu a beží tam, zatiaľ čo všetky ostatné položky bežia na Raspberry Pi.

RGB NeoPixel prsteň

Jedná sa o malý krúžok naplnený 12 RGB LED diódami (ak chcete, môžete si kúpiť väčšie prstene 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é.

Prehľad:

LCD displej 16x2

Na vytlačenie teploty, objemu a adresy IP som použil základný LCD displej.

Dátový list:

Karta Raspberry Pi 3B+ a 16 GB SD

Celý môj projekt beží na mojom Raspberry Pi 3B+ s nakonfigurovaným obrázkom, ktorý vám pomôžem nakonfigurovať neskôr v mojom návode.

GPIO T-Part, 2 Breadboards a veľa prepojovacích drôtov

Aby som prepojil všetko, čo som potreboval, dosky a prepojovacie mostíky, použil som T-časť GPIO, aby som mal viac miesta a bolo jasné, ktorý pin je ktorý.

Krok 2: Schéma a zapojenie

Schéma a zapojenie
Schéma a zapojenie
Schéma a zapojenie
Schéma a zapojenie
Schéma a zapojenie
Schéma a zapojenie

Pre svoju schému 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í.

Stiahnite si Fritzing:

Zaistite teda, aby ste všetko prepojili správnym spôsobom! V mojom prípade farby vodičov nie sú rovnaké ako na schéme.

Krok 3: Návrh databázy

Návrh databázy
Návrh databázy

Zhromažďujeme veľa údajov z 3 pripojených senzorov, takže na uloženie údajov a senzorov potrebujeme databázu. Neskôr uvidíme, ako nakonfigurovať databázu na Raspberry Pi a ako do nej pridať údaje. Najprv však musí byť vytvorený návrh databázy alebo ERD (Entity Relationship Diagram) a môj bol tiež normalizovaný pomocou 3NF. Preto sme senzory rozdelili do ďalšej tabuľky a pracujeme s ID.

Celkovo je to skutočne základný a ľahký návrh databázy, s ktorým je možné ďalej pracovať.

Krok 4: Príprava Raspberry Pi

Takže teraz, keď máme hotové niektoré základy projektu. Začnime s Raspberry Pi!

Konfigurácia karty SD

Najprv potrebujete 16 GB kartu SD, na ktorú môžete vložiť svoj obrázok, a program na odoslanie úvodného obrázku na kartu SD.

Softvér:

Začať obrázok:

Keď sa teda stiahnu tieto:

  1. Vložte kartu SD do počítača.
  2. Otvorte Win32, ktorý ste práve stiahli.
  3. Vyberte súbor s obrázkom Raspbian, ktorý ste si tiež stiahli.
  4. Kliknite na „zapísať“do umiestnenia vašej karty SD.

V závislosti od hardvéru to môže chvíľu trvať. Akonáhle to bude hotové, sme pripravení vykonať posledné úpravy pred vložením obrázku do nášho RPi.

  1. Prejdite do adresára svojej karty SD, vyhľadajte súbor s názvom „cmdline.txt“a otvorte ho.
  2. Teraz na ten istý riadok pridajte „ip = 169.254.10.1“.
  3. Uložte súbor.
  4. Vytvorte súbor s názvom „ssh“bez prípony alebo obsahu.

Teraz môžete BEZPEČNE vysunúť kartu SD z počítača a vložiť ju do Raspberry Pi BEZ napájania. 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.

Teraz chceme ovládať náš Raspberry Pi, to sa deje prostredníctvom 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.

Raspi-config

sudo raspi-config

Čo je pre tento projekt skutočne dôležité, je časť rozhrania, musíme povoliť veľa rôznych rozhraní, povoliť všetky nasledujúce rozhrania:

  • Jednodrátové
  • SPI
  • I2C
  • Sériové

Teraz, keď sme skončili s raspi-config, skúsme vytvoriť pripojenie k internetu.

Wi-Fi pripojenie

Najprv musíte byť root pre nasledujúce príkazy

sudo -i

Akonáhle ste root, použite nasledujúci príkaz. SSID je názov vašej siete a heslo je zrejme heslo.

wpa_passphrase "ssid" "heslo" >> /etc/wpa_supplicant/wpa_supplicant.conf

V prípade, že ste urobili chybu, môžete túto sieť skontrolovať, aktualizovať alebo vymazať zadaním tohto súboru:

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

Aktualizácia a inovácia

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

Databáza MariaDB

Nainštalujte databázový server MariaDB:

sudo apt-get install mariadb-server

Webový server Apache2

Nainštalujte si webový server Apache2:

sudo apt nainštalovať apache2

Python

Nainštalujte Python:

update-alternatives --install/usr/bin/python python /usr/bin/python2.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
  • PyMySQL
  • Žiadosti
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket
  • Ujson
  • Wsaccel

Knižnica reproduktorov

Nainštalujte si knižnicu reproduktorov z Adafruit:

curl -sS https://raw.githubusercontent.com/adafruit/Raspbe… | bash

Čas na reštart

sudo reštart

Krok 5: Postúpte inžinierstvo našej databázy do RPi

Teraz, keď sme nainštalovali všetko, čo sme potrebovali, vložme databázu, ktorú sme navrhli, na náš Raspberry Pi!

Najprv teda musíme preposlať našu databázu na pracovný stôl MySql, pričom skopírujeme celý kód databázy a odstránime z nej všetky „viditeľné“slová. Akonáhle je to skopírované, znova otvorte tmel, prihláste sa a zadajte:

sudo mysql

a teraz ste v rozhraní mysql, skopírujte do neho kód svojej databázy a stlačte kláves Enter.

Teraz stačí vytvoriť používateľa

VYTVORIŤ UŽÍVATEĽA „užívateľ“IDENTIFIKOVANÝ „užívateľom“;

UDELIŤ VŠETKY VÝHODY NA *. * „Používateľovi“;

Teraz reštartujte.

Teraz by malo byť všetko nastavené, môžete sa tiež spojiť s pracovným stolíkom Pi a MySql, takže je jednoduchšie kontrolovať všetky údaje vo vašich tabuľkách.

Krok 6: Konfigurácia Bluetooth na našich RPi

Vytvárame reproduktor Bluetooth, takže to znamená, že médiá sa odosielajú z nášho zdroja na Raspberry Pi a dá sa to celkom jednoducho, poďme na to!

Môj zdroj pre pripojenie bluetooth:

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

bluetoothctl

zapnutie

Nastavte agenta párovania

agent na

default-agent

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 plne prepojené s naším Raspberry a na reproduktore Pi by ste mali mať možnosť prehrávať médiá zo svojho zdrojového zariadenia.

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!

Použil som PyCharm pre celý svoj backend, stačí sa uistiť, že váš projekt PyCharm je pripojený k vášmu Raspberry Pi, to znamená, že vo vašich nastaveniach je nastavená cesta nasadenia a nainštalovali ste všetky potrebné balíčky, ktoré by už mali byť vykonané v kroku. 4.

Použil som svoje vlastné triedy a všetky sú tiež zahrnuté v mojom GitHub. Link je v úvode, ak ste ho zmeškali;)

V mojom backendovom súbore som použil triedy závitov, takže všetko môže bežať súčasne a nebude sa to navzájom prerušovať. 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 & CSS sa robilo celkom jednoducho, pokúsili sme sa najskôr pracovať s mobilným telefónom, pretože pretože sa väčšinou pripájame k Bluetooth z mobilného zariadenia, bolo by jednoduchšie ho ovládať z mobilného palubného panela.

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 taký ťažký, pracoval s niekoľkými GET z mojich backendových trás, tonami poslucháčov udalostí a niektorými štruktúrami socketio.

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

Najprv som začal s niekoľkými náčrtkami, ako som chcel, aby prípad vyzeral. Dôležité bolo, že musí byť dostatočne veľký, aby sa doň všetko zmestilo, pretože sme dostali veľký obvod, ktorý bolo možné vložiť do puzdra.

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 z puzdra na fľaše na víno a práve som začal píliť drevo. Keď som mal svoje základné puzdro, musel som doň jednoducho vyvŕtať otvory (veľa na prednej strane puzdra, ako môžete vidieť na obrázkoch: P) a vložiť do neho niekoľko klincov, je to skutočne základný prípad, ale vyzerá celkom cool a perfektne sedí.

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.

Krok 10: Niektoré problémy, s ktorými som sa stretol pri vytváraní reproduktora Slimbox…

Chyby Bluetooth a bluealsa

Zakaždým, keď som si chcel pustiť hudbu alebo sa pripojiť k bluetooth, zobrazili sa mi chyby z bluetooth a bluealsa. Urobil som na to prieskum a toto bolo riešenie môjho problému. Takže z nejakého dôvodu bol môj bluetooth softblokovaný, nie som si istý, či je to štandardné mäkké blokovanie. Ak to chcete zistiť, zadajte do Putty nasledujúci príkaz.

rfkill zoznam

Ak je teda softblokovaný, použite toto:

rfkill odblokovať bluetooth

A potom možno budete chcieť reštartovať, môj zdroj:

Problémy so sériovým pripojením

Ďalším veľkým problémom, ktorý som mal, bolo to, že som nemohol vytvoriť žiadne spojenie so svojim Arduino prostredníctvom posunovača úrovní, po nejakom hľadaní som zistil, že môj '/dev/ttyS0' bol preč a môže to byť kvôli aktualizácii vášho RPi. Aj na to sa našlo riešenie

Budete musieť znova povoliť sériovú konzolu pomocou raspi-config, reštartovať počítač a potom ručne odstrániť bit „console = serial0, 115200“z súboru /boot/cmdline.txt'. Potvrďte, že „enable_uart = 1“je v /boot/config.txt 'a znova reštartujte. To by malo dostať späť váš port ttyS0, ako aj mäkký odkaz'/dev/serial0 'na neho.

Zdroj:

Odporúča: