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, Novembar
Anonim
Slimbox - pametni Bluetooth zvučnik!
Slimbox - pametni Bluetooth zvučnik!

Zdravo!

Za svoj školski projekt u MCT Howest Kortrijk napravio 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 projekat u 3 sedmice, korak po korak, pa ako neko od vas želi da rekreira moj projekat, to možete lako učiniti!

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: Potrošni materijal

Supplies
Supplies
Supplies
Supplies
Supplies
Supplies

DS18B20 Senzor temperature

DS18B20 je jednožični senzor koji mjeri temperaturu, proizveden od strane Maxim Integrated. Postoje dvije vrste senzora DS18B20, samo komponentna (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 tačnost od 0,5 ° C od -10 ° C do +85 ° C. Takođe ima programibilnu rezoluciju od 9 bita do 12 bita.

Tehnički list:

Senzor potenciometra

Potenciometar je otpornik s tri stezaljke 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 sa I2C interfejsom 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”prečnik - 8 Ohm 1 Watt

Ovo je konus zvučnika koji sam odabrao nakon izračunavanja napona i ampera koji su mu potrebni, a ovo je savršeno odgovaralo mom projektu Raspberry Pi, koji je proizveo 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 se savršeno uklapa i u moj zvučnik i audio sistem.

Pregled:

Tehnički list:

Arduino Uno

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

Pregled:

Levelshifter

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 sa 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 se može povezati i sa mnogim drugim uređajima i zaista je jednostavno za korištenje.

Pregled:

LCD ekran 16x2

Koristio sam osnovni LCD ekran za štampanje temperature, zapremine i IP adrese.

Tehnički list:

Raspberry Pi 3B+ i 16GB SD kartica

Cijeli moj projekt radi na mom Raspberry Pi 3B+ sa 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 svoju shemu koristio sam Fritzing, to je program koji možete instalirati koji vam omogućuje da kreirate shemu vrlo jednostavno u različitim vrstama prikaza.

Preuzmite Fritzing:

Zato 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 povezana 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 je potrebno napraviti dizajn baze podataka ili ERD (Entity Relationship Diagram), a moj je također normaliziran sa 3NF. Zato smo senzore podijelili u drugu tablicu i radili s ID -ovima.

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

Korak 4: Priprema Raspberry Pi

Dakle, sada kada smo završili neke osnove projekta. Započ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čunar.
  2. Otvorite Win32 koji ste upravo preuzeli.
  3. Odaberite datoteku slike Raspbian koju ste upravo preuzeli.
  4. Pritisnite 'upiši' na lokaciju svoje SD kartice.

To može potrajati, ovisno o vašem hardveru. Kada se to učini, spremni smo za konačna prilagođavanja prije stavljanja slike u RPi.

  1. Idite u direktorij vaše SD kartice, potražite datoteku pod nazivom 'cmdline.txt' i otvorite je.
  2. Sada dodajte 'ip = 169.254.10.1' u isti red.
  3. Sačuvajte datoteku.
  4. Napravite datoteku pod nazivom 'ssh' bez ekstenzije ili sadržaja.

Sada možete SIGURNO izbaciti SD karticu iz računara i staviti je u Raspberry Pi BEZ napajanja. Nakon što SD kartica uđe u RPI, povežite LAN kabel s računara na RPi LAN port. Nakon što je ovo spojeno, možete priključiti 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 naredbene linije 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 mnogo različitih sučelja, omogućiti sva sljedeća sučelja:

  • Jednožilni
  • SPI
  • I2C
  • Serial

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

Wi-Fi veza

Prvo morate biti root za sljedeće naredbe

sudo -i

Nakon što ste root, koristite 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

interfejs wlan0

Ponovo učitajte datoteku

ponovo 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 update

sudo apt-get nadogradnja

MariaDB baza podataka

Instalirajte server baze podataka MariaDB:

sudo apt-get install mariadb-server

Apache2 Web server

Instalirajte web server Apache2:

sudo apt instalirajte apache2

Python

Instalirajte Python:

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

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

Python paket

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

  • Flask
  • Flask-Cors
  • Flask-MySql
  • Flask-SocketIO
  • PyMySQL
  • Zahtjevi
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket
  • Ujson
  • Wsaccel

Biblioteka zvučnika

Instalirajte biblioteku zvučnika s Adafruit -a:

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

Vrijeme je za ponovno pokretanje

sudo reboot

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, ponovo otvorimo kit, prijavite se i upišite:

sudo mysql

i sada ste u mysql sučelju, 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 ponovo pokrenite sistem.

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

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 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, unesite kit u svoj kit.
  • Ovlastite A2DP uslugu, ponovo upišite 'da'.
  • Nakon što to učinimo, možemo vjerovati svom uređaju, pa ne moramo sve ovo prolaziti svaki put kada 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 ga isključujem ponovo, tako da se ljudi ne mogu pokušati povezati s vašim kutijom

otkriveno isključeno

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 Pi zvučniku.

Korak 7: Pisanje kompletne 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ša putanja postavljanja postavljena u vašim postavkama i da ste instalirali sve potrebne pakete, što bi trebalo biti učinjeno već u koraku 4.

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

U pozadinskoj datoteci koristio sam klase threadinga, tako da sve može raditi u isto vrijeme i neće se međusobno prekidati. A na 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 su bili prilično jednostavni, pokušali smo raditi na mobilnom uređaju što je više moguće, budući da se najčešće povezujemo putem Bluetootha s mobilnog uređaja, bilo bi lakše kontrolirati s mobilne nadzorne ploče.

Možete dizajnirati svoju nadzornu ploču 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 sa mojih pozadinskih ruta, tonama slušalaca događaja i nekim socketio strukturama.

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

Izgradnja mog kućišta i sve to zajedno
Izgradnja mog kućišta i sve to zajedno
Izgradnja mog kućišta i sve to zajedno
Izgradnja mog kućišta i sve to zajedno
Izgradnja mog kućišta i sve to zajedno
Izgradnja mog kućišta i sve to zajedno

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 kada nemate toliko iskustva u izgradnji kućišta, a imate i puno stvari koje možete s njim učiniti.

Počeo sam od futrole za vinske boce i tek počeo pilati drvo. Jednom kada sam imao svoj osnovni kovčeg, morao sam samo 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 zaista osnovni kovčeg, ali izgleda super i savršeno pristaje.

I kad je slučaj završen, došlo je vrijeme da se sve spoji, kao što vidite na posljednjoj slici! U kutiji je nekakav 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 …

Greške Bluetootha i bluealse

Svaki put kad sam htio puštati muziku ili se povezati sa bluetoothom, dobivao sam greške od bluetootha i bluealse. Istraživao sam o tome i to je bilo rješenje za moj problem. Tako je iz nekog razloga moj 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 lista

Dakle, ako je softblokirano, samo upotrijebite ovo:

rfkill deblokirajte bluetooth

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

Problemi sa serijskim povezivanjem

Još jedan veliki problem koji sam imao je taj što nisam mogao uspostaviti nikakvu vezu sa svojim Arduinom putem prebacivača nivoa, nakon nekog pretraživanja otkrio sam da je moj '/dev/ttyS0' nestao i da je to možda zbog ažuriranja vašeg RPi -ja. Našao sam rješenje i po ovom pitanju

Morat ćete ponovo omogućiti serijsku konzolu s raspi-config, ponovo 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 ponovo pokrenite sistem. To bi trebalo vratiti vaš ttyS0 port, kao i'/dev/serial0 'soft vezu do njega.

Izvor:

Preporučuje se: