Sadržaj:

Slimbox - pametni Bluetooth zvučnik!: 10 koraka (sa slikama)
Slimbox - pametni Bluetooth zvučnik!: 10 koraka (sa slikama)

Video: Slimbox - pametni Bluetooth zvučnik!: 10 koraka (sa slikama)

Video: Slimbox - pametni Bluetooth zvučnik!: 10 koraka (sa slikama)
Video: Samsung Level Slim Box - recenzja głośnika |Opinie RTV AGD 2024, Studeni
Anonim
Slimbox - pametni Bluetooth zvučnik!
Slimbox - pametni Bluetooth zvučnik!

Hej tamo!

Za svoj školski projekt u MCT Howest Kortrijk izradio sam pametni Bluetooth zvučnik s različitim senzorima, uključujući LCD i RGB NeoPixel prsten. Sve radi na Raspberry Pi -u (baza podataka, web -poslužitelj, pozadina).

Dakle, u ovom uputstvu ću vam pokazati kako sam napravio ovaj projekt u 3 tjedna, korak po korak, pa ako netko od vas želi ponovno stvoriti moj projekt, to možete učiniti jednostavno!

Ovo je ujedno i moje prvo uputstvo, ako imate pitanja, pokušat ću odgovoriti na njih što je brže moguće!

Moj GitHub:

Korak 1: Opskrba

Pribor
Pribor
Pribor
Pribor
Pribor
Pribor

Senzor temperature DS18B20

DS18B20 je jednožični senzor koji mjeri temperaturu, proizveo Maxim Integrated. Postoje dvije vrste senzora DS18B20, samo komponenta (koju sam koristio) i vodootporna verzija, koja je mnogo veća, ali to nije ono što mi je trebalo za moj projekt, pa sam koristio samo komponentu. Senzor može mjeriti temperaturu u rasponu od -55 ° C do +125 ° C (-67 ° F do +257 ° F) i ima točnost od 0,5 ° C od -10 ° C do +85 ° C. Također ima programibilnu rezoluciju od 9 bita do 12 bita.

Tehnički list:

Senzor potenciometra

Potenciometar je otpornik s tri priključka koji se ručno podešava jednostavnim okretanjem gornjeg dijela senzora. Položaj gornjeg dijela određuje izlazni napon potenciometra.

LSM303 Akcelerometar + Kompas

LSM303 probojna ploča kombinacija je troosnog akcelerometra i magnetometra / kompasa, proizvođača Adafruit. Koristi se s I2C sučeljem Raspberry Pi.

Pregled:

Tehnički list:

MCP3008

Za čitanje podataka s mog potenciometra koristio sam MCP3008, koji je 8 -kanalni 10 -bitni analogno -digitalni pretvarač sa SPI sučeljem i prilično ga je lako programirati.

Tehnički list:

Zvučnik - 3”promjer - 8 Ohm 1 Watt

Ovo je konus zvučnika koji sam odabrao nakon što sam izračunao napon i ampere koji su mu potrebni, a ovo je savršeno odgovaralo mom projektu Raspberry Pi, proizvođača Adafruit.

Pregled:

MAX98357 I2S Class-D mono pojačalo

Ovo je pojačalo koje dolazi sa zvučnikom, ne samo da je pojačalo, već je i I2S digitalno -analogni pretvarač, tako da je i savršeno odgovara za moj zvučnik i audio sustav.

Pregled:

Tehnički list:

Arduino Uno

Arduino Uno je ploča otvorenog koda za mikrokontroler zasnovana na mikrokontroleru Microchip ATmega328P, proizvođača Arduino.cc. Uno ploča ima 14 digitalnih pinova, 6 analognih pinova i potpuno je programabilna s Arduino IDE softverom

Pregled:

Promjenjivač razina

Ovo je mala ploča koja se brine za komunikaciju između Arduino Uno i Raspberry Pi i različitih napona, Arduino: 5V i Raspberry Pi: 3.3V. To je potrebno jer je NeoPixel prsten povezan s Arduinom i tamo radi, dok sve ostale stvari rade na Raspberry Pi.

RGB NeoPixel prsten

Ovo je mali prsten ispunjen s 12 RGB LED dioda (ako želite, možete kupiti veće prstenove s više RGB LED dioda). Što je u mom slučaju povezano s Arduino Uno, ali također se može povezati s mnogim drugim uređajima i stvarno je jednostavno za korištenje.

Pregled:

LCD zaslon 16x2

Koristio sam osnovni LCD zaslon za ispis temperature, volumena i IP adrese.

Tehnički list:

Raspberry Pi 3B+ i 16 GB SD kartica

Cijeli moj projekt radi na mom Raspberry Pi 3B+ s konfiguriranom slikom, koju ću vam kasnije pomoći u konfiguriranju u mojim uputama.

GPIO T-dio, 2 oglasne ploče i puno premosnika

Za povezivanje svega što mi je potrebno za matične ploče i kratkospojnike upotrijebio sam GPIO T-dio tako da imam više prostora i jasno je koji je pin koji.

Korak 2: Shema i ožičenje

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

Za moju shemu koristio sam Fritzing, to je program koji možete instalirati koji vam omogućuje da stvorite shemu jako jednostavno u različitim vrstama prikaza.

Preuzmite Fritzing:

Stoga pazite da sve povežete na pravi način! U mom slučaju boje žica nisu iste kao na shemi.

Korak 3: Dizajn baze podataka

Dizajn baze podataka
Dizajn baze podataka

Prikupljamo mnogo podataka sa 3 spojena senzora, pa nam je potrebna baza podataka za pohranu podataka i senzora. Kasnije ćemo vidjeti kako konfigurirati bazu podataka na Raspberry Pi -u i kako joj dodati podatke. Ali prvo se mora napraviti dizajn baze podataka ili ERD (Entity Relationship Diagram), a moj je također normaliziran s 3NF. Zato smo senzore podijelili u drugu tablicu i radili s identifikacijskim oznakama.

Sve u svemu, ovo je zaista osnovni i jednostavan dizajn baze podataka za daljnji rad.

Korak 4: Priprema Raspberry Pi

Dakle, sada kada smo napravili neke osnove projekta. Počnimo s Raspberry Pi!

Konfiguracija SD kartice

Prvo vam je potrebna SD kartica od 16 GB na koju možete staviti svoju sliku i program za postavljanje početne slike na SD karticu.

Softver:

Početna slika:

Dakle, nakon što se preuzmu:

  1. Stavite SD karticu u računalo.
  2. Otvorite Win32 koji ste upravo preuzeli.
  3. Odaberite datoteku slike Raspbian koju ste također upravo preuzeli.
  4. Pritisnite "zapiši" na mjesto svoje SD kartice.

To može potrajati, ovisno o hardveru. Nakon što to učinimo, spremni smo napraviti neke posljednje prilagodbe prije stavljanja slike u naš RPi.

  1. Idite u direktorij svoje SD kartice, potražite datoteku pod nazivom 'cmdline.txt' i otvorite je.
  2. Sada dodajte 'ip = 169.254.10.1' u isti redak.
  3. Spremite datoteku.
  4. Napravite datoteku pod nazivom 'ssh' bez proširenja ili sadržaja.

Sada možete SIGURNO izbaciti SD karticu iz računala i staviti je u Raspberry Pi BEZ napajanja. Nakon što SD kartica uđe u RPI, spojite LAN kabel s računala na RPi LAN priključak, nakon što je ovo spojeno, možete spojiti napajanje na RPi.

Sada želimo kontrolirati naš Raspberry Pi, to se radi putem Puttyja.

Softver za kit:

Nakon preuzimanja otvorite Putty i umetnite IP '169.254.10.1' i Port '22' te vrstu veze: SSH. Sada konačno možemo otvoriti sučelje naredbenog retka i prijaviti se s podacima za prijavu za početak -> Korisnik: pi & Lozinka: malina.

Raspi-config

sudo raspi-config

Ono što je zaista važno za ovaj projekt je odjeljak sučelja, moramo omogućiti puno različitih sučelja, omogućiti sva sljedeća sučelja:

  • Jednožilni
  • SPI
  • I2C
  • Serijski

Sada kada smo završili s raspi-configom, pokušajmo uspostaviti vezu s internetom.

Wi-Fi veza

Prvo morate biti root za sljedeće naredbe

sudo -i

Nakon što ste root, upotrijebite sljedeću naredbu. SSID je naziv vaše mreže, a lozinka je očito lozinka.

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

U slučaju da ste pogriješili, možete provjeriti, ažurirati ili izbrisati ovu mrežu jednostavnim unosom te datoteke:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Dakle, nakon što smo ušli u našu mrežu, uđimo u WPA klijentsko sučelje

wpa_cli

Odaberite svoje sučelje

sučelje wlan0

Ponovno učitajte datoteku

ponovno konfigurirati

I na kraju možete vidjeti jeste li dobro povezani:

ip a

Ažuriraj i nadogradi

Sada kada smo spojeni na internet, ažuriranje već instaliranih paketa bio bi pametan potez, pa učinimo to prije instaliranja drugih paketa.

sudo apt-get ažuriranje

sudo apt-get nadogradnja

Baza podataka MariaDB

Instalirajte poslužitelj baze podataka MariaDB:

sudo apt-get install mariadb-server

Apache2 web poslužitelj

Instalirajte web poslužitelj Apache2:

sudo apt instalirajte apache2

Piton

Instalirajte Python:

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

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

Python paket

Morat ćete instalirati sve ove pakete kako bi pozadina radila savršeno:

  • Boca
  • Flask-Cors
  • Flask-MySql
  • Utičnica za utičnicuIO
  • PyMySQL
  • Zahtjevi
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket
  • Ujson
  • Wsaccel

Biblioteka zvučnika

Instalirajte biblioteku zvučnika s tvrtke Adafruit:

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

Vrijeme je za ponovno pokretanje

sudo ponovno podizanje sustava

Korak 5: Proslijedite inženjering naše baze podataka na RPi

Sada kada smo instalirali sve što nam je potrebno, stavimo našu bazu podataka koju smo dizajnirali na naš Raspberry Pi!

Dakle, prvo moramo proslijediti inženjering naše baze podataka na radnom stolu MySql, dok to radimo, kopirajte cijeli kôd baze podataka i izbrišite sve 'vidljive' riječi u njoj. Pa kad se to kopira, ponovno otvorimo kit, prijavite se i upišite:

sudo mysql

i sada ste na sučelju mysql, kopirajte kôd baze podataka u njega i pritisnite enter.

Sada samo trebamo stvoriti korisnika

CREATE USER 'user' IDENTIFIED BY 'user';

OSTVARITE SVE PRIVILEGIJE NA *. * 'Korisniku';

Sada ponovno pokrenite.

Dakle, sada bi sve trebalo biti postavljeno, možete uspostaviti vezu i sa svojim Pi i MySql radnim stolom, tako da je lakše provjeriti sve podatke u vašim tablicama.

Korak 6: Konfiguriranje Bluetootha na našim RPi -ima

Stvaramo Bluetooth zvučnik, pa to znači da se mediji šalju s našeg izvora na Raspberry Pi, a to se može učiniti prilično jednostavno, prijeđimo odmah na to!

Moj izvor Bluetooth veze:

Uklanjanje već pokrenute bluealse

sudo rm/var/run/bluealsa/*

Dodajte ulogu sudopera A2DP profila

sudo bluealsa -p a2dp -umivaonik &

Otvorite bluetooth sučelje i uključite bluetooth

bluetoothctl

uključeno

Postavite agenta za uparivanje

agent uključen

default-agent

Neka vaš RPi bude otkriven

otkriven na

  • Sada sa svog bluetooth uređaja potražite RPi i povežite se s njim.
  • Potvrdite uparivanje na oba uređaja, upišite "da" u svoj kit.
  • Ovlastite A2DP uslugu, ponovno upišite 'da'.
  • Nakon što to učinimo, možemo vjerovati svom uređaju pa ne moramo sve ovo prolaziti svaki put kad se želimo povezati

povjerenje XX: XX: XX: XX: XX: XX (Vaša bluetooth mac adresa s našeg izvornog uređaja)

Ako želite da vaš RPi i dalje bude otkriven, to je vaš vlastiti izbor, ali radije bih ga ponovno isključio, tako da se ljudi ne mogu pokušati povezati s vašim kutijom

otkriven off

Tada možemo izaći iz našeg bluetooth sučelja

Izlaz

I na kraju naše usmjeravanje zvuka: izvorni uređaj koji prosljeđuje na naš RPi

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

Sada je naš uređaj potpuno povezan s našom malinom i trebali biste moći reproducirati medije s izvornog uređaja na zvučniku Pi.

Korak 7: Pisanje potpune pozadine

Dakle, sada je postavljanje završeno, konačno možemo početi pisati naš pozadinski program!

Koristio sam PyCharm za cijeli svoj backkend, samo trebate provjeriti je li vaš PyCharm projekt povezan s vašim Raspberry Pi, to znači da je vaš put implementacije postavljen u vašim postavkama i da ste instalirali sve potrebne pakete, što bi trebalo biti učinjeno već u koraku 4.

Koristio sam vlastite tečajeve i svi su oni također uključeni u moj GitHub. Link je u uvodu u slučaju da ste propustili;)

U svojoj pozadinskoj datoteci koristio sam klase threadinga, tako da sve može raditi u isto vrijeme i neće se međusobno prekidati. A pri dnu imate sve rute tako da možemo lako doći do podataka na našem sučelju.

Korak 8: Pisanje sučelja (HTML, CSS i JavaScript)

Sada kada je pozadina gotova, možemo početi pisati cijeli front-end.

HTML i CSS učinjeni su prilično jednostavno, pokušali smo raditi na mobilnom uređaju što je više moguće, budući da se najčešće povezujemo s Bluetoothom s mobilnog uređaja, bilo bi lakše upravljati s mobilne nadzorne ploče.

Svoju nadzornu ploču možete dizajnirati na bilo koji način, samo ću ostaviti svoj kôd i dizajn ovdje, možete raditi što god želite!

A Javascript nije bio tako težak, radio je s nekoliko GET -ova s mojih pozadinskih ruta, tonama slušatelja događaja i nekim socketio strukturama.

Korak 9: Izgradite svoj slučaj i spojite ga zajedno

Izgraditi svoj slučaj i sve to spojiti
Izgraditi svoj slučaj i sve to spojiti
Izgraditi svoj slučaj i sve to spojiti
Izgraditi svoj slučaj i sve to spojiti
Izgraditi svoj slučaj i sve to spojiti
Izgraditi svoj slučaj i sve to spojiti

Prvo sam počeo s nekim skicama kako želim da kućište izgleda, nešto važno je bilo da mora biti dovoljno veliko da se sve uklopi, budući da imamo veliki krug za umetanje u kućište.

Napravio sam kućište od drveta, mislim da je s njim najlakše raditi kad nemate toliko iskustva u izgradnji kućišta, a imate i puno toga što možete učiniti s njim.

Počeo sam od futrole za boce vina i tek sam počeo piljeti drvo. Nakon što sam imao svoj osnovni kovčeg, samo sam morao izbušiti rupe u njemu (puno na prednjoj strani kućišta, kao što možete vidjeti na slikama: P) i staviti nekoliko čavala u njega, to je doista osnovni slučaj, ali izgleda super i savršeno pristaje.

A kad je slučaj gotov, došlo je vrijeme da sve to spojite, kao što vidite na posljednjoj slici! Unutar kutije je nered, ali sve funkcionira i nisam imao toliko prostora, pa vam savjetujem da možda stvorite veći slučaj ako ponovno stvarate moj projekt.

Korak 10: Neki problemi koje sam imao na putu stvaranja zvučnika Slimbox …

Pogreške Bluetootha i bluealse

Svaki put kad sam htio pustiti glazbu ili se povezati s bluetoothom, dobivao sam greške od bluetootha i bluealse. Istražio sam to i to je bilo rješenje za moj problem. Pa mi je iz nekog razloga bluetooth bio softblokiran, nisam siguran je li ovo standardni soft soft blokiran. Možete provjeriti je li tako da upišete sljedeću naredbu u svoj Putty.

rfkill popis

Dakle, ako je softblocked, samo upotrijebite ovo:

rfkill deblokiraj bluetooth

Možda biste htjeli ponovno pokrenuti sustav nakon ovoga, moj izvor:

Problemi sa serijskim povezivanjem

Drugi veliki problem koji sam imao bio je taj što nisam mogao uspostaviti nikakvu vezu sa svojim Arduinom putem prebacivača razina, nakon nekog pretraživanja otkrio sam da je moj '/dev/ttyS0' nestao, a to bi moglo biti zbog ažuriranja vašeg RPi -ja. I za to sam pronašao rješenje

Morat ćete ponovno omogućiti serijsku konzolu s raspi-config, ponovno pokrenuti sistem, a zatim ručno ukloniti bit "console = serial0, 115200" iz '/boot/cmdline.txt'. Potvrdite da je "enable_uart = 1" u' /boot/config.txt "i ponovno pokrenite sustav. To bi trebalo vratiti vaš ttyS0 port, kao i"/dev/serial0 "meku vezu do njega.

Izvor:

Preporučeni: