Obsah:

Slimbox - chytrý reproduktor Bluetooth!: 10 kroků (s obrázky)
Slimbox - chytrý reproduktor Bluetooth!: 10 kroků (s obrázky)

Video: Slimbox - chytrý reproduktor Bluetooth!: 10 kroků (s obrázky)

Video: Slimbox - chytrý reproduktor Bluetooth!: 10 kroků (s obrázky)
Video: Toshiba Encore 2 8" (Computex 2014) 2024, Červenec
Anonim
Slimbox - chytrý reproduktor Bluetooth!
Slimbox - chytrý reproduktor Bluetooth!

Zdravím!

Pro svůj školní projekt na MCT Howest Kortrijk jsem vyrobil chytré Bluetooth reproduktorové zařízení s různými senzory, včetně LCD a RGB NeoPixel kroužku. Vše běží na Raspberry Pi (databáze, webový server, backend).

V tomto návodu vám tedy ukážu, jak jsem tento projekt vytvořil za 3 týdny, krok za krokem, takže pokud někdo z vás chce můj projekt znovu vytvořit, můžete to snadno udělat!

Toto je také můj první pokyn, pokud máte nějaké otázky, pokusím se je zodpovědět co nejrychleji!

Můj GitHub:

Krok 1: Spotřební materiál

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

Snímač teploty DS18B20

DS18B20 je jednovodičový senzor měřící teplotu, vyráběný společností Maxim Integrated. Existují 2 druhy senzorů DS18B20, pouze komponenta (kterou jsem použil) a vodotěsná verze, která je mnohem větší, ale to není to, co jsem pro svůj projekt potřeboval, takže jsem použil pouze komponentu. Senzor může měřit teplotu v rozsahu -55 ° C až +125 ° C (-67 ° F až +257 ° F) a má přesnost 0,5 ° C od -10 ° C do +85 ° C. Má také programovatelné rozlišení od 9 bitů do 12 bitů.

Datasheet:

Senzor potenciometru

Potenciometr je rezistor se třemi vývody, který lze ručně nastavit pouhým otáčením horní části snímače. Poloha horní části určuje výstupní napětí potenciometru.

Akcelerometr LSM303 + kompas

Odlamovací deska LSM303 je kombinací trojosého akcelerometru a magnetometru / kompasu, vyrobeného společností Adafruit. Používá se s rozhraním I2C Raspberry Pi.

Přehled:

Datasheet:

MCP3008

Ke čtení dat z mého potenciometru jsem použil MCP3008, což je 8kanálový 10bitový analogově digitální převodník s rozhraním SPI a programování je docela snadné.

Datasheet:

Reproduktor - průměr 3 palce - 8 ohmů, 1 watt

Toto je kužel reproduktoru, který jsem si vybral po výpočtu napětí a ampér, které by potřeboval, a to se perfektně hodilo pro můj projekt Raspberry Pi, vyráběný společností Adafruit.

Přehled:

MAX98357 I2S Mono zesilovač třídy D

Toto je zesilovač, který je dodáván s reproduktorem, nejen že je to zesilovač, ale je to také převodník digitálního signálu na analogový I2S, takže se také perfektně hodí pro můj reproduktor a audio systém.

Přehled:

Datasheet:

Arduino Uno

Arduino Uno je deska s mikrokontrolérem s otevřeným zdrojovým kódem založená na mikrokontroléru Microchip ATmega328P, vyráběném společností Arduino.cc. Deska Uno má 14 digitálních pinů, 6 analogových pinů a je plně programovatelná pomocí softwaru Arduino IDE

Přehled:

Posuvník úrovně

Jedná se o malou desku, která se stará o komunikaci mezi Arduino Uno a Raspberry Pi a různými napětími, Arduino: 5V a Raspberry Pi: 3,3V. To je potřeba, protože prsten NeoPixel je připojen k Arduinu a běží tam, zatímco všechny ostatní věci běží na Raspberry Pi.

RGB NeoPixel prsten

Jedná se o malý prsten naplněný 12 RGB LED diodami (pokud chcete, můžete si koupit větší prsteny s více RGB LED diodami). Který je v mém případě připojen k Arduino Uno, ale může být také připojen k mnoha dalším zařízením a jeho použití je opravdu jednoduché.

Přehled:

LCD displej 16x2

K tisku teploty, objemu a adresy IP jsem použil základní LCD displej.

Datasheet:

Karta Raspberry Pi 3B+ a 16 GB SD

Celý můj projekt běží na mém Raspberry Pi 3B+ s nakonfigurovaným obrazem, který vám pomůžu nakonfigurovat později v mém instructable.

GPIO T-Part, 2 prkénka a spousta propojovacích drátů

Abych připojil vše, co jsem potřeboval, prkénka a propojovací vodiče, použil jsem T-část GPIO, abych měl více místa a bylo jasné, který pin je který.

Krok 2: Schéma a zapojení

Schéma a zapojení
Schéma a zapojení
Schéma a zapojení
Schéma a zapojení
Schéma a zapojení
Schéma a zapojení

Pro mé schéma jsem použil Fritzing, je to program, který můžete nainstalovat a který vám umožní vytvořit schéma opravdu snadné v různých druzích zobrazení.

Stáhněte si Fritzing:

Ujistěte se tedy, že vše připojujete správným způsobem! V mém případě nejsou barvy vodičů stejné jako na schématu.

Krok 3: Návrh databáze

Návrh databáze
Návrh databáze

Shromažďujeme mnoho dat ze 3 připojených senzorů, takže potřebujeme databázi, do které data a senzory uložíme. Později se podíváme, jak konfigurovat databázi na Raspberry Pi a jak do ní přidávat data. Nejprve však musí být vytvořen návrh databáze nebo ERD (Entity Relationship Diagram) a můj byl také normalizován pomocí 3NF. Proto jsme senzory rozdělili do jiné tabulky a pracujeme s ID.

Celkově je to opravdu základní a snadný návrh databáze, s nímž lze dále pracovat.

Krok 4: Příprava Raspberry Pi

Takže teď, když máme hotové nějaké základy projektu. Začněme s Raspberry Pi!

Konfigurace karty SD

Nejprve potřebujete 16 GB SD kartu, na kterou můžete vložit svůj obrázek, a program pro nahrání úvodního obrázku na SD kartu.

Software:

Úvodní obrázek:

Jakmile jsou tedy staženy:

  1. Vložte kartu SD do počítače.
  2. Otevřete Win32, který jste právě stáhli.
  3. Vyberte soubor obrázku Raspbian, který jste také právě stáhli.
  4. Klikněte na 'zapsat' do umístění vaší SD karty.

V závislosti na vašem hardwaru to může nějakou dobu trvat. Jakmile to bude hotové, jsme připraveni provést poslední úpravy, než vložíme obrázek do našeho RPi.

  1. Přejděte do adresáře karty SD, vyhledejte soubor s názvem „cmdline.txt“a otevřete jej.
  2. Nyní přidejte 'ip = 169.254.10.1' na stejný řádek.
  3. Uložte soubor.
  4. Vytvořte soubor s názvem 'ssh' bez přípony nebo obsahu.

Nyní můžete BEZPEČNĚ vysunout kartu SD z počítače a vložit ji do Raspberry Pi BEZ napájení. Jakmile je karta SD v RPI, připojte kabel LAN z počítače k portu LAN RPi, jakmile je připojen, můžete k RPi připojit napájení.

Nyní chceme ovládat náš Raspberry Pi, to se provádí pomocí Putty.

Software pro tmely:

Po stažení otevřete Putty a vložte IP '169.254.10.1' a Port '22' a typ připojení: SSH. Nyní můžeme konečně otevřít naše rozhraní příkazového řádku a přihlásit se pomocí přihlašovacích údajů startéru -> Uživatel: pi & Heslo: malina.

Raspi-config

sudo raspi-config

Co je pro tento projekt opravdu důležité, je sekce rozhraní, musíme povolit mnoho různých rozhraní, povolit všechna následující rozhraní:

  • Jednodrátové
  • SPI
  • I2C
  • Seriál

Nyní, když jsme hotovi s raspi-config, zkusme vytvořit připojení k internetu.

Wi-Fi připojení

Nejprve musíte být root pro následující příkazy

sudo -i

Jakmile jste root, použijte následující příkaz. SSID je název vaší sítě a heslo je samozřejmě heslo.

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

V případě, že jste udělali chybu, můžete tuto síť zkontrolovat, aktualizovat nebo odstranit pouhým zadáním tohoto souboru:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Poté, co jsme vstoupili do naší sítě, vstupme do klientského rozhraní WPA

wpa_cli

Vyberte své rozhraní

rozhraní wlan0

Znovu načtěte soubor

přenastavit

A nakonec můžete zjistit, zda jste dobře připojeni:

ip a

Aktualizovat a upgradovat

Nyní, když jsme připojeni k internetu, by aktualizace již nainstalovaných balíčků byla chytrým krokem, takže to uděláme nejprve před instalací dalších balíčků.

sudo apt-get update

sudo apt-get upgrade

Databáze MariaDB

Nainstalujte databázový server MariaDB:

sudo apt-get install mariadb-server

Webový server Apache2

Nainstalujte si webový server Apache2:

sudo apt nainstalovat apache2

Krajta

Nainstalujte 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íček Python

Budete muset nainstalovat všechny tyto balíčky, aby backend fungoval perfektně:

  • Baňka
  • Baňky-Cors
  • Flask-MySql
  • Flask-SocketIO
  • PyMySQL
  • Žádosti
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket
  • Ujson
  • Wsaccel

Knihovna reproduktorů

Nainstalujte si knihovnu reproduktorů z Adafruit:

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

Čas restartovat

sudo restart

Krok 5: Forward Engineering Our Database to the RPi

Nyní, když jsme nainstalovali vše, co jsme potřebovali, vložíme naši databázi, kterou jsme navrhli, na náš Raspberry Pi!

Nejprve tedy musíme přeposlat naši databázi na pracovní stůl MySql a přitom zkopírovat celý kód databáze a odstranit z ní všechna „viditelná“slova. Jakmile je to zkopírováno, znovu otevřete tmel, přihlaste se a zadejte:

sudo mysql

a nyní jste v rozhraní mysql, zkopírujte do něj kód své databáze a stiskněte Enter.

Nyní stačí vytvořit uživatele

VYTVOŘIT UŽIVATELE „uživatele“IDENTIFIKOVANÉ „uživatelem“;

UDĚLIT VŠECHNY PRIVILEGY NA *. * TO 'uživateli';

Nyní restartujte.

Nyní by tedy mělo být vše nastaveno, můžete také navázat spojení se svým pracovním stolem Pi a MySql, takže je snazší zkontrolovat všechna data ve vašich tabulkách.

Krok 6: Konfigurace Bluetooth na našich RPi

Vytváříme reproduktor Bluetooth, takže to znamená, že média jsou odesílána z našeho zdroje na Raspberry Pi a to lze udělat docela snadno, pojďme se do toho pustit!

Můj zdroj pro připojení bluetooth:

Odstranění již spuštěné bluealsy

sudo rm/var/run/bluealsa/*

Přidat roli A2DP profil Potopit

sudo bluealsa -p a2dp -sink &

Otevřete rozhraní bluetooth a zapněte bluetooth

bluetoothctl

zapnutí

Nastavte agenta párování

agent na

default-agent

Zajistěte, aby byly vaše RPi zjistitelné

zjistitelné na

  • Nyní ze svého bluetooth zařízení vyhledejte RPi a spojte se s ním.
  • Potvrďte párování na obou zařízeních, do tmelu zadejte „ano“.
  • Autorizujte službu A2DP, zadejte znovu „ano“.
  • Jakmile to bude hotové, můžeme svému zařízení důvěřovat, takže tím nebudeme muset procházet pokaždé, když se budeme chtít připojit

trust XX: XX: XX: XX: XX: XX (Vaše bluetooth mac adresa z našeho zdrojového zařízení)

Pokud chcete, aby byly vaše RPi stále objevitelné, je to vaše vlastní volba, ale já to raději znovu vypnu, aby se lidé nemohli pokusit spojit s vaším boxem

zjistitelné vypnuto

Poté můžeme opustit naše bluetooth rozhraní

výstup

A nakonec naše směrování zvuku: naše zdrojové zařízení předává do našeho RPi

bluealsa-aplay 00: 00: 00: 00: 00: 00

Nyní je naše zařízení plně připojeno k naší Raspberry a měli byste být schopni přehrávat média ze svého zdrojového zařízení na reproduktoru Pi.

Krok 7: Napište kompletní backend

Nyní je nastavení dokončeno, můžeme konečně začít psát náš backendový program!

Použil jsem PyCharm pro celý svůj backend, stačí se ujistit, že je váš projekt PyCharm připojen k vašemu Raspberry Pi, to znamená, že vaše cesta nasazení je nastavena ve vašem nastavení a nainstalovali jste všechny potřebné balíčky, které by již měly být provedeny v kroku 4.

Použil jsem vlastní třídy a ty jsou také zahrnuty v mém GitHubu. Odkaz je v úvodu pro případ, že jste ho zmeškali;)

V mém backendovém souboru jsem použil třídy závitů, takže vše může běžet současně a nebude se navzájem rušit. A ve spodní části máte všechny trasy, abychom mohli snadno získat data do našeho frontendu.

Krok 8: Psaní frontendu (HTML, CSS a JavaScript)

Nyní, když je backend hotový, můžeme začít psát celý front-end.

HTML & CSS bylo provedeno docela snadno, zkusili jsme nejprve pracovat s mobilem, protože většinu času jsme se připojili k Bluetooth z mobilního zařízení, bylo by snazší ovládání z mobilního palubního panelu.

Řídicí panel si můžete navrhnout jakýmkoli způsobem, já zde nechám svůj kód a design, můžete si dělat, co chcete!

A Javascript nebyl tak těžký, pracoval s několika GET z mých backendových tras, spoustou posluchačů událostí a některými strukturami socketio.

Krok 9: Sestavení mého případu a dát to dohromady

Sestavení mého případu a dát to dohromady
Sestavení mého případu a dát to dohromady
Sestavení mého případu a dát to dohromady
Sestavení mého případu a dát to dohromady
Sestavení mého případu a dát to dohromady
Sestavení mého případu a dát to dohromady

Nejprve jsem začal s několika náčrtky, jak jsem chtěl, aby kufr vypadal, důležité bylo, že musí být dostatečně velký, aby se do něj všechno vešlo, protože jsme dostali velký obvod, který do kufru vložíme.

Pouzdro jsem vyrobil ze dřeva, myslím, že se s ním nejsnadněji pracuje, když nemáte tolik zkušeností se stavebnicemi a navíc máte spoustu věcí, které s ním můžete dělat.

Začal jsem z pouzdra na lahve vína a právě jsem začal řezat dřevo. Jakmile jsem měl své základní pouzdro, musel jsem do něj jednoduše vyvrtat otvory (hodně na přední straně pouzdra, jak vidíte na obrázcích: P) a vložit do něj nějaké hřebíky, je to opravdu základní pouzdro, ale vypadá skvěle a perfektně sedí.

A jakmile byl případ hotový, bylo načase dát to všechno dohromady, jak vidíte na posledním obrázku! Uvnitř krabice je docela nepořádek, ale všechno funguje a já jsem neměl tolik prostoru, takže vám radím, abyste vytvořili větší případ, pokud znovu vytváříte můj projekt.

Krok 10: Některé problémy, které jsem měl na cestě k vytvoření reproduktoru Slimbox…

Chyby Bluetooth a bluealsa

Pokaždé, když jsem chtěl přehrávat hudbu nebo se připojit k bluetooth, zobrazily se mi chyby z bluetooth a bluealsa. Udělal jsem na to nějaký průzkum a toto bylo řešení mého problému. Takže z nějakého důvodu byl můj bluetooth softblokovaný, nejsem si jistý, jestli je to standardní soft-block. Můžete zjistit, zda tomu tak je, zadáním následujícího příkazu do svého tmelu.

rfkill seznam

Pokud je tedy softblokovaný, použijte toto:

rfkill odblokovat bluetooth

A možná budete chtít restartovat poté, můj zdroj:

Problémy se sériovým připojením

Takže dalším velkým problémem, který jsem měl, bylo to, že jsem nemohl vytvořit žádné spojení se svým Arduinem prostřednictvím posunovače úrovní, po nějakém hledání jsem zjistil, že můj '/dev/ttyS0' byl pryč, a to může být kvůli aktualizaci vašeho RPi. Také našel řešení na to

Budete muset znovu povolit sériovou konzolu pomocí raspi-config, restartovat a poté ručně odebrat bit "console = serial0, 115200" z '/boot/cmdline.txt'. Ověřte, že "enable_uart = 1" je v' /boot/config.txt 'a restartujte znovu. To by mělo dostat zpět váš port ttyS0 a také'/dev/serial0 'na něj odkaz.

Zdroj:

Doporučuje: