Kazalo:

Slimbox - pameten zvočnik Bluetooth!: 10 korakov (s slikami)
Slimbox - pameten zvočnik Bluetooth!: 10 korakov (s slikami)

Video: Slimbox - pameten zvočnik Bluetooth!: 10 korakov (s slikami)

Video: Slimbox - pameten zvočnik Bluetooth!: 10 korakov (s slikami)
Video: Trải nghiệm Loa Samsung Lever Box Slim IPx7 (Quà tặng Galaxy A3 2017) 2024, Julij
Anonim
Slimbox - pameten Bluetooth zvočnik!
Slimbox - pameten Bluetooth zvočnik!

Živijo!

Za svoj šolski projekt v MCT Howest Kortrijk sem izdelal pametno zvočniško napravo Bluetooth z različnimi senzorji, vključno z obročem LCD in RGB NeoPixel. Vse deluje na Raspberry Pi (baza podatkov, spletni strežnik, zaledje).

V tem navodilu vam bom po korakih pokazal, kako sem naredil ta projekt v treh tednih, tako da, če kdo od vas želi poustvariti moj projekt, lahko to preprosto storite!

To je tudi moj prvi pouk, če imate kakršna koli vprašanja, vam bom poskušal čim prej odgovoriti!

Moj GitHub:

1. korak: Zaloge

Zaloge
Zaloge
Zaloge
Zaloge
Zaloge
Zaloge

Temperaturni senzor DS18B20

DS18B20 je enožični senzor za merjenje temperature, ki ga proizvaja Maxim Integrated. Obstajata dve vrsti senzorjev DS18B20, samo sestavni del (ki sem ga uporabil) in vodotesna različica, ki je veliko večja, vendar to ni tisto, kar sem potreboval za svoj projekt, zato sem uporabil samo komponento. Senzor lahko meri temperaturo v območju od -55 ° C do +125 ° C (-67 ° F do +257 ° F) in ima natančnost 0,5 ° C od -10 ° C do +85 ° C. Ima tudi programabilno ločljivost od 9 do 12 bitov.

Podatkovni list:

Senzor potenciometra

Potenciometer je upor s tremi sponkami, ki ga lahko ročno nastavite tako, da zavrtite zgornji del senzorja. Položaj zgornjega dela določa izhodno napetost potenciometra.

Merilnik pospeška LSM303 + prelom kompasa

Odklopna plošča LSM303 je kombinacija troosnega merilnika pospeška in magnetometra / kompasa proizvajalca Adafruit. Uporablja se z vmesnikom I2C Raspberry Pi.

Pregled:

Podatkovni list:

MCP3008

Za branje podatkov s potenciometra sem uporabil MCP3008, ki je 8 -kanalni 10 -bitni analogno -digitalni pretvornik z vmesnikom SPI in ga je zelo enostavno programirati.

Podatkovni list:

Zvočnik - 3”premer - 8 ohmov 1 vat

To je zvočniški stožec, ki sem ga izbral po izračunu napetosti in amperov, ki bi jih potreboval, in to je bilo odlično za moj projekt Raspberry Pi, ki ga je izdelal Adafruit.

Pregled:

MAX98357 I2S Mono ojačevalnik razreda D

To je ojačevalnik, ki je priložen zvočniku, ne samo, da je ojačevalnik, je tudi digitalno -analogni pretvornik I2S, zato je tudi popolnoma primeren za moj zvočnik in avdio sistem.

Pregled:

Podatkovni list:

Arduino Uno

Arduino Uno je odprtokodna mikrokrmilna plošča, ki temelji na mikrokrmilniku Microchip ATmega328P, proizvajalca Arduino.cc. Plošča Uno ima 14 digitalnih zatičev, 6 analognih zatičev in je popolnoma programirana s programsko opremo Arduino IDE

Pregled:

Preklopnik ravni

To je majhna plošča, ki skrbi za komunikacijo med Arduino Uno in Raspberry Pi ter različnimi napetostmi, Arduino: 5V in Raspberry Pi: 3.3V. To je potrebno, ker je obroč NeoPixel povezan z Arduinom in tam deluje, medtem ko vse ostale stvari delujejo na Raspberry Pi.

RGB prstan NeoPixel

To je majhen prstan, napolnjen z 12 RGB LED diodami (če želite, lahko kupite večje obroče z več RGB LED). Kar je v mojem primeru povezano z Arduino Uno, lahko pa ga povežem tudi s številnimi drugimi napravami in je zelo preprosto za uporabo.

Pregled:

LCD zaslon 16x2

Za tiskanje temperature, glasnosti in naslova IP sem uporabil osnovni LCD zaslon.

Podatkovni list:

Kartica SD Raspberry Pi 3B+ in 16 GB

Celoten projekt teče na mojem Raspberry Pi 3B+ s konfigurirano sliko, ki vam jo bom kasneje pomagal konfigurirati v mojem navodilu.

GPIO T-del, 2 ploščice in veliko mostičnih žic

Za povezavo vsega, kar sem potreboval, so bile plošče in mostični kabli, ki sem jih uporabil, da sem imel več prostora in je jasno, kateri pin je kateri.

2. korak: Shema in ožičenje

Shema in ožičenje
Shema in ožičenje
Shema in ožičenje
Shema in ožičenje
Shema in ožičenje
Shema in ožičenje

Za svojo shemo sem uporabil Fritzing, to je program, ki ga lahko namestite in vam omogoča, da preprosto ustvarite shemo v različnih pogledih.

Prenesite Fritzing:

Zato poskrbite, da boste vse povezali na pravi način! V mojem primeru barve žic niso enake kot na shemi.

3. korak: Oblikovanje baze podatkov

Oblikovanje baze podatkov
Oblikovanje baze podatkov

Zbiramo veliko podatkov s povezanih treh senzorjev, zato potrebujemo bazo podatkov za shranjevanje podatkov in senzorjev. Kasneje bomo videli, kako konfigurirati bazo podatkov na Raspberry Pi in kako ji dodati podatke. Najprej pa je treba izdelati zasnovo baze podatkov ali ERD (Entity Relationship Diagram), moj pa je bil normaliziran tudi s 3NF. Zato smo senzorje razdelili v drugo mizo in sodelovali z ID -ji.

Na splošno je to res osnovna in enostavna zasnova baze podatkov za nadaljnje delo.

4. korak: Priprava Raspberry Pi

Zdaj, ko smo naredili nekaj osnov projekta. Začnimo z Raspberry Pi!

Konfiguracija kartice SD

Najprej potrebujete kartico SD velikosti 16 GB, na katero lahko vstavite svojo sliko, in program za nalaganje začetne slike na kartico SD.

Programska oprema:

Začetna slika:

Torej, ko jih naložite:

  1. Vstavite kartico SD v računalnik.
  2. Odprite Win32, ki ste ga pravkar prenesli.
  3. Izberite slikovno datoteko Raspbian, ki ste jo pravkar prenesli.
  4. Kliknite »napiši« na mesto svoje kartice SD.

To lahko traja nekaj časa, odvisno od vaše strojne opreme. Ko to naredimo, smo pripravljeni narediti nekaj zadnjih prilagoditev, preden sliko vstavimo v RPi.

  1. Pojdite v imenik kartice SD, poiščite datoteko z imenom 'cmdline.txt' in jo odprite.
  2. Zdaj dodajte "ip = 169.254.10.1" v isto vrstico.
  3. Shranite datoteko.
  4. Ustvarite datoteko z imenom 'ssh' brez razširitve ali vsebine.

Zdaj lahko VARNO izvlečete kartico SD iz računalnika in jo vstavite v Raspberry Pi BREZ napajanja. Ko je kartica SD v RPI, priključite kabel LAN iz računalnika na vrata RPi LAN, ko je ta priključen, lahko priključite napajanje na RPi.

Zdaj želimo nadzorovati naš Raspberry Pi, to se naredi prek Puttyja.

Programska oprema za kiti:

Ko naložite, odprite Putty in vstavite IP '169.254.10.1' in vrata '22' ter vrsto povezave: SSH. Zdaj lahko končno odpremo vmesnik ukazne vrstice in se prijavimo z začetnimi podatki za prijavo -> Uporabnik: pi & Geslo: malina.

Raspi-config

sudo raspi-config

Za ta projekt je resnično pomemben odsek vmesnikov, omogočiti moramo veliko različnih vmesnikov, omogočiti vse naslednje vmesnike:

  • Enožilni
  • SPI
  • I2C
  • Serijski

Zdaj, ko smo končali z raspi-config, poskusimo vzpostaviti povezavo z internetom.

Povezava Wi-Fi

Najprej morate biti root za naslednje ukaze

sudo -i

Ko ste root, uporabite naslednji ukaz. SSID je ime vašega omrežja in geslo je očitno geslo.

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

Če ste naredili napako, lahko to omrežje preverite, posodobite ali izbrišete tako, da preprosto vnesete to datoteko:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Torej, ko smo vstopili v naše omrežje, vstopimo v odjemalski vmesnik WPA

wpa_cli

Izberite svoj vmesnik

vmesnik wlan0

Znova naložite datoteko

ponovno konfigurirati

In končno lahko vidite, ali ste dobro povezani:

ip a

Posodobi in nadgradi

Zdaj, ko smo povezani z internetom, bi bila posodobitev že nameščenih paketov pametna poteza, zato naredimo to najprej, preden namestimo druge pakete.

sudo apt-get posodobitev

sudo apt-get nadgradnja

Baza podatkov MariaDB

Namestite strežnik zbirke podatkov MariaDB:

sudo apt-get install mariadb-server

Spletni strežnik Apache2

Namestite spletni strežnik Apache2:

sudo apt namestite apache2

Python

Namestite Python:

posodobitvene alternative --install/usr/bin/python python /usr/bin/python2.7 1

posodobitvene alternative --install/usr/bin/python python/usr/bin/python3 2

Paket Python

Za popolno delovanje zaledja boste morali namestiti vse te pakete:

  • Bučka
  • Bučke
  • Flask-MySql
  • Vtičnica za bučkoIO
  • PyMySQL
  • Zahteve
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket
  • Ujson
  • Wsaccel

Knjižnica zvočnikov

Namestite knjižnico zvočnikov iz Adafruit:

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

Čas je za ponovni zagon

sudo ponovni zagon

5. korak: Posredujte inženiring naše baze podatkov v RPi

Zdaj, ko smo namestili vse, kar potrebujemo, postavimo našo bazo podatkov, ki smo jo oblikovali, na naš Raspberry Pi!

Zato moramo najprej posredovati našo bazo podatkov v delovni mizi MySql, pri tem pa kopirati celotno kodo zbirke podatkov in izbrisati vse 'vidne' besede v njej. Torej, ko je to kopirano, znova odprite kit, se prijavite in vnesite:

sudo mysql

in zdaj ste v vmesniku mysql, vanj kopirajte kodo baze podatkov in pritisnite enter.

Zdaj moramo samo ustvariti uporabnika

CREATE USER 'user' IDENTIFIED BY 'user';

DAJTE VSE PRIVILEGIJE NA *. * 'Uporabniku';

Zdaj znova zaženite.

Zato bi bilo treba zdaj vse nastaviti, vzpostavite lahko tudi povezavo s svojim Pi in MySql Workbench, da boste lažje preverili vse podatke v tabelah.

6. korak: Konfiguriranje Bluetootha na naših RPi

Ustvarjamo zvočnik Bluetooth, zato to pomeni, da se mediji pošiljajo iz našega vira v Raspberry Pi in to je mogoče storiti precej enostavno, pojdimo takoj!

Moj vir povezave bluetooth:

Odstranitev že delujoče bluealse

sudo rm/var/run/bluealsa/*

Dodaj vlogo A2DP profila Umivalnik

sudo bluealsa -p a2dp -umivalnik &

Odprite vmesnik bluetooth in vklopite bluetooth

bluetoothctl

vklop

Nastavite agenta za seznanjanje

agent vklopljen

default-agent

Naj bo vaš RPi odkrit

odkriti na

  • Zdaj v napravi Bluetooth poiščite RPi in se povežite z njim.
  • Potrdite seznanjanje na obeh napravah, v svoj kiti vnesite "da".
  • Pooblastite storitev A2DP, znova vnesite "da".
  • Ko to storimo, lahko zaupamo svoji napravi, zato nam ni treba iti skozi vse to vsakič, ko se želimo povezati

zaupajte XX: XX: XX: XX: XX: XX (vaš Mac -naslov bluetooth iz naše izvorne naprave)

Če želite, da je vaš RPi še vedno odkrit, je to vaša lastna izbira, vendar ga raje znova izklopim, da se ljudje ne bodo mogli povezati z vašim ohišjem

odkrito izključeno

Nato lahko zapustimo vmesnik bluetooth

izhod

In končno naše usmerjanje zvoka: naša izvorna naprava, ki posreduje v naš RPi

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

Zdaj je naša naprava v celoti povezana z našo malino in na zvočniku Pi bi morali predvajati predstavnost iz izvorne naprave.

7. korak: Pisanje celotnega ozadja

Zdaj je nastavitev končana, končno lahko začnemo pisati naš zaledni program!

PyCharm sem uporabljal za celotno zaledje, le prepričati se morate, da je vaš projekt PyCharm povezan z vašo Raspberry Pi, to pomeni, da je vaša pot razmestitve nastavljena v vaših nastavitvah in ste namestili vse potrebne pakete, to bi morali narediti že v koraku 4.

Uporabljal sem svoje razrede in vsi so vključeni tudi v moj GitHub. Link je v uvodu, če ste ga zamudili;)

V svoji zaledni datoteki sem uporabljal razrede niti, tako da lahko vse teče hkrati in se ne bo motilo. Na dnu pa imate vse poti, da lahko enostavno dobimo podatke na naši strani.

8. korak: Pisanje vmesnika (HTML, CSS in JavaScript)

Zdaj, ko je zaledje končano, lahko začnemo pisati celoten sprednji del.

HTML in CSS sta bila narejena precej preprosto, najprej smo poskusili delovati z mobilnimi telefoni, saj se večinoma povežemo prek Bluetootha z mobilne naprave, bi bilo to lažje upravljati z mobilne nadzorne plošče.

Armaturno ploščo lahko oblikujete na kakršen koli način, svojo kodo in oblikovanje bom pustil tukaj, lahko delate kar želite!

In Javascript ni bil tako trd, delal je z nekaj GET -i iz mojih zalednih poti, na tone poslušalcev dogodkov in nekaj socketio struktur.

9. korak: Zgraditi svoj primer in ga združiti

Zgraditi svoj primer in vse skupaj združiti
Zgraditi svoj primer in vse skupaj združiti
Zgraditi svoj primer in vse skupaj združiti
Zgraditi svoj primer in vse skupaj združiti
Zgraditi svoj primer in vse skupaj združiti
Zgraditi svoj primer in vse skupaj združiti

Najprej sem začel z nekaj skicami o tem, kako želim, da zadeva izgleda, nekaj pomembnega pa je bilo, da mora biti dovolj velika, da se vse prilega, saj imamo v ohišju veliko vezje.

Ohišje sem naredil iz lesa, mislim, da je z njim najlažje delati, ko nimaš toliko izkušenj z gradnjo etuijev in imaš tudi veliko stvari, ki jih lahko narediš z njim.

Začel sem s kovčkom za steklenice vina in šele začel žagati les. Ko sem imel svoj osnovni etui, sem moral v njem izvrtati luknje (veliko na sprednji strani ohišja, kot lahko vidite na slikah: P) in vanj vstaviti nekaj žebljev, to je res osnovni kovček, ampak izgleda zelo kul in se odlično prilega.

In ko je bil primer končan, je bil čas, da vse skupaj sestavite, kot vidite na zadnji sliki! V škatli je nekakšen nered, vendar vse deluje in nisem imel toliko več prostora, zato vam svetujem, da morda ustvarite večji primer, če na novo ustvarjate moj projekt.

10. korak: Nekatere težave, ki sem jih imel na poti ustvarjanja zvočnika Slimbox …

Napake Bluetooth in bluealsa

Vsakič, ko sem hotel predvajati glasbo ali se povezati z bluetoothom, sem od bluetootha in bluealse prejemal napake. Naredil sem nekaj raziskav o tem in to je bila rešitev mojega problema. Torej je bil moj bluetooth iz nekega razloga mehko blokiran, nisem prepričan, ali je to standardno mehko blokiran. Ali je tako, lahko preverite tako, da v svoj Putty vnesete naslednji ukaz.

rfkill seznam

Če je torej mehka, uporabite samo to:

rfkill odblokiraj bluetooth

Po tem boste morda želeli znova zagnati, moj vir:

Težave pri serijski povezavi

Druga velika težava, ki sem jo imel, je bila ta, da prek menjalnika nivojev nisem mogel vzpostaviti nobene povezave z mojim Arduinom, po nekaj iskanju sem ugotovil, da mojega '/dev/ttyS0' ni več, kar je lahko posledica posodobitve vašega RPi -ja. Tudi za to sem našel rešitev

Serijsko konzolo boste morali znova omogočiti z raspi-config, znova zagnati in nato ročno odstraniti bit "console = serial0, 115200" iz '/boot/cmdline.txt'. Potrdite, da je "enable_uart = 1" v ' /boot/config.txt "in znova zaženite. To bi moralo vrniti vrata ttyS0 in mehko povezavo '/dev/serial0" do njega.

Vir:

Priporočena: