Satura rādītājs:

Slimbox - viedais Bluetooth skaļrunis!: 10 soļi (ar attēliem)
Slimbox - viedais Bluetooth skaļrunis!: 10 soļi (ar attēliem)

Video: Slimbox - viedais Bluetooth skaļrunis!: 10 soļi (ar attēliem)

Video: Slimbox - viedais Bluetooth skaļrunis!: 10 soļi (ar attēliem)
Video: Almost Broke My Trunk With A 8” Skar Subwoofer 😳 #shorts 2024, Jūlijs
Anonim
Slimbox - viedais Bluetooth skaļrunis!
Slimbox - viedais Bluetooth skaļrunis!

Sveiks!

Skolas projektam MCT Howest Kortrijk es izveidoju viedu Bluetooth skaļruņu ierīci ar dažādiem sensoriem, ieskaitot LCD un RGB NeoPixel gredzenu. Viss darbojas Raspberry Pi (datu bāze, tīmekļa serveris, aizmugure).

Tāpēc šajā pamācībā soli pa solim es jums parādīšu, kā es izveidoju šo projektu 3 nedēļu laikā, tādēļ, ja kāds no jums, puiši, vēlas atjaunot manu projektu, to var viegli izdarīt!

Šī ir arī mana pirmā pamācība, ja jums ir kādi jautājumi, es centīšos uz tiem atbildēt pēc iespējas ātrāk!

Mans GitHub:

1. solis: Piegādes

Piegādes
Piegādes
Piegādes
Piegādes
Piegādes
Piegādes

DS18B20 temperatūras sensors

DS18B20 ir viena stieples sensors, kas mēra temperatūru, ražo Maxim Integrated. Ir divu veidu DS18B20 sensori, tikai komponents (kuru es izmantoju) un ūdensnecaurlaidīgā versija, kas ir daudz lielāka, taču tas nav tas, kas man vajadzīgs projektam, tāpēc es izmantoju tikai komponentu. Sensors var izmērīt temperatūru diapazonā no -55 ° C līdz +125 ° C (-67 ° F līdz +257 ° F), un tā precizitāte ir 0,5 ° C no -10 ° C līdz +85 ° C. Tam ir arī programmējama izšķirtspēja no 9 bitiem līdz 12 bitiem.

Datu lapa:

Potenciometra sensors

Potenciometrs ir rezistors ar trim spailēm, ko var manuāli regulēt, vienkārši pagriežot sensora augšējo daļu. Augšējās daļas stāvoklis nosaka potenciometra izejas spriegumu.

LSM303 akselerometrs + kompasa izlaušanās

LSM303 sadalīšanas dēlis ir trīs asu akselerometra un magnetometra / kompasa kombinācija, ko ražo Adafruit. To izmanto kopā ar Raspberry Pi I2C saskarni.

Pārskats:

Datu lapa:

MCP3008

Lai nolasītu datus no sava potenciometra, es izmantoju MCP3008, kas ir 8 kanālu 10 bitu analogo ciparu pārveidotājs ar SPI saskarni un ir diezgan viegli programmējams.

Datu lapa:

Skaļrunis - 3”diametrs - 8 omi 1 vats

Šo skaļruņu konusu es izvēlējos pēc tam vajadzīgā sprieguma un ampēru aprēķināšanas, un tas bija ideāli piemērots manam Raspberry Pi projektam, ko ražoja Adafruit.

Pārskats:

MAX98357 I2S D klases mono pastiprinātājs

Šis ir pastiprinātājs, kas tiek piegādāts kopā ar skaļruni, tas ir ne tikai pastiprinātājs, bet arī I2S digitālais -analogais pārveidotājs, tāpēc tas ir arī lieliski piemērots manam skaļrunim un audio sistēmai.

Pārskats:

Datu lapa:

Arduino Uno

Arduino Uno ir atvērtā koda mikrokontrolleru plate, kuras pamatā ir mikrokontroles ATmega328P mikrokontrolleris, ko ražo uzņēmums Arduino.cc. Uno plāksnei ir 14 digitālās tapas, 6 analogās tapas, un tā ir pilnībā programmējama ar Arduino IDE programmatūru

Pārskats:

Līmeņu pārslēdzējs

Šī ir neliela tāfele, kas rūpējas par saziņu starp Arduino Uno un Raspberry Pi un dažādiem spriegumiem, Arduino: 5V un Raspberry Pi: 3.3V. Tas ir nepieciešams, jo NeoPixel gredzens ir savienots ar Arduino un darbojas tur, bet viss pārējais darbojas uz Raspberry Pi.

RGB NeoPixel gredzens

Šis ir neliels gredzens, kas piepildīts ar 12 RGB gaismas diodēm (ja vēlaties, varat iegādāties lielākus gredzenus ar vairāk RGB gaismas diodēm). Kas manā gadījumā ir savienots ar Arduino Uno, bet var tikt savienots arī ar daudzām citām ierīcēm un ir patiešām vienkārši lietojams.

Pārskats:

LCD displejs 16x2

Es izmantoju vienkāršu LCD displeju, lai drukātu temperatūru, skaļumu un IP adresi.

Datu lapa:

Raspberry Pi 3B+ un 16 GB SD karte

Viss mans projekts darbojas ar manu Raspberry Pi 3B+ ar konfigurētu attēlu, kuru es jums vēlāk palīdzēšu konfigurēt savā instrukcijā.

GPIO T-Part, 2 Breadboards un daudz jumperwires

Lai savienotu visu nepieciešamo maizes dēļu un jumperwires, es izmantoju GPIO T-daļu, tāpēc man ir vairāk vietas un ir skaidrs, kura tapa ir kura.

2. darbība. Shēma un elektroinstalācija

Shēma un elektroinstalācija
Shēma un elektroinstalācija
Shēma un elektroinstalācija
Shēma un elektroinstalācija
Shēma un elektroinstalācija
Shēma un elektroinstalācija

Manai shēmai es izmantoju Fritzing, tā ir programma, kuru varat instalēt un kas ļauj jums izveidot ļoti vienkāršu shematisku skatu dažādos veidos.

Lejupielādēt Fritzing:

Tāpēc pārliecinieties, ka viss ir savienots pareizi! Manā gadījumā vadu krāsas nav tādas pašas kā shēmā.

3. darbība. Datu bāzes dizains

Datu bāzes dizains
Datu bāzes dizains

Mēs apkopojam daudz datu no 3 pievienotajiem sensoriem, tāpēc mums ir nepieciešama datu bāze, kurā glabāt datus un sensorus. Vēlāk mēs redzēsim, kā konfigurēt datu bāzi Raspberry Pi un kā tam pievienot datus. Bet vispirms ir jāizveido datu bāzes dizains vai ERD (entītiju attiecību diagramma), un arī mana tika normalizēta ar 3NF. Tāpēc mēs sadalījām sensorus citā tabulā un strādājam ar ID.

Kopumā tas ir patiešām vienkāršs un vienkāršs datu bāzes dizains, ar kuru turpmāk strādāt.

4. solis: Raspberry Pi sagatavošana

Tātad, tagad, kad esam sagatavojuši dažus projekta pamatus. Sāksim ar Raspberry Pi!

SD kartes konfigurācija

Pirmkārt, jums ir nepieciešama 16 GB SD karte, kurā varat ievietot savu attēlu, un programma, lai augšupielādētu sākuma attēlu SD kartē.

Programmatūra:

Sākuma attēls:

Tātad, kad tie ir lejupielādēti:

  1. Ievietojiet SD karti savā datorā.
  2. Atveriet tikko lejupielādēto Win32.
  3. Atlasiet Raspbian attēla failu, kuru arī tikko lejupielādējāt.
  4. Noklikšķiniet uz "rakstīt" līdz SD kartes atrašanās vietai.

Tas var aizņemt kādu laiku, atkarībā no aparatūras. Kad tas ir izdarīts, mēs esam gatavi veikt dažus galīgos pielāgojumus pirms attēla ievietošanas mūsu RPi.

  1. Dodieties uz SD kartes direktoriju, atrodiet failu ar nosaukumu cmdline.txt un atveriet to.
  2. Tagad tajā pašā rindā pievienojiet “ip = 169.254.10.1”.
  3. Saglabājiet failu.
  4. Izveidojiet failu ar nosaukumu 'ssh' bez paplašinājuma vai satura.

Tagad jūs varat DROŠI izņemt SD karti no datora un ievietot to Raspberry Pi BEZ barošanas. Kad SD karte ir ievietota RPI, pievienojiet LAN kabeli no datora RPi LAN portam, kad tas ir pievienots, varat pievienot barošanu RPi.

Tagad mēs vēlamies kontrolēt savu Raspberry Pi, tas tiek darīts, izmantojot Putty.

Putty programmatūra:

Pēc lejupielādes atveriet Putty un ievietojiet IP '169.254.10.1' un portu '22' un savienojuma veidu: SSH. Tagad mēs beidzot varam atvērt komandrindas saskarni un pieteikties, izmantojot startera pieteikšanās informāciju -> Lietotājs: pi & Parole: aveņu.

Raspi-config

sudo raspi-config

Šim projektam patiešām svarīga ir saskarņu sadaļa, mums ir jāiespējo daudz dažādu saskarņu, jāiespējo visas šādas saskarnes:

  • Viena stieples
  • SPI
  • I2C
  • Seriāls

Tagad, kad esam pabeiguši raspi-config, mēģināsim izveidot savienojumu ar internetu.

Wi-Fi savienojums

Pirmkārt, jums ir jābūt root šādām komandām

sudo -i

Kad esat root, izmantojiet šo komandu. SSID ir jūsu tīkla nosaukums, un parole acīmredzot ir tā parole.

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

Ja esat pieļāvis kļūdu, varat pārbaudīt, atjaunināt vai izdzēst šo tīklu, vienkārši ievadot šo failu:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Tātad, pēc tam, kad mēs ievadījām mūsu tīklu, ievadīsim WPA klienta saskarni

wpa_cli

Izvēlieties savu saskarni

interfeiss wlan0

Pārlādēt failu

pārkonfigurēt

Visbeidzot, jūs varat redzēt, vai esat labi savienots:

ip a

Atjaunināt un jaunināt

Tagad, kad mums ir izveidots savienojums ar internetu, jau instalēto pakotņu atjaunināšana būtu gudrs solis, tāpēc vispirms darīsim to pirms citu pakotņu instalēšanas.

sudo apt-get update

sudo apt-get jauninājums

MariaDB datu bāze

Instalējiet MariaDB datu bāzes serveri:

sudo apt-get install mariadb-server

Apache2 tīmekļa serveris

Instalējiet Apache2 tīmekļa serveri:

sudo apt instalēt apache2

Python

Instalējiet Python:

update-alternatives --install/usr/bin/python python /usr/bin/python2.7 1

update-alternatives-instalēt/usr/bin/python python/usr/bin/python3 2

Python pakete

Lai aizmugurējā sistēma darbotos nevainojami, jums būs jāinstalē visas šīs paketes:

  • Kolba
  • Kolbas-korķi
  • Kolba-MySql
  • Flask-SocketIO
  • PyMySQL
  • Pieprasījumi
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket
  • Ujsons
  • Vakels

Skaļruņu bibliotēka

Instalējiet skaļruņu bibliotēku no Adafruit:

čokurošanās -sS https://raw.githubusercontent.com/adafruit/Raspbe… | bash

Laiks atsāknēt

sudo atsāknēšana

5. solis: pārsūtiet mūsu datu bāzi uz RPi

Tagad, kad esam instalējuši visu nepieciešamo, ievietojam mūsu izstrādāto datu bāzi mūsu Raspberry Pi!

Tātad vispirms mums ir jāpārveido sava datu bāze MySql darbgaldā, vienlaikus kopējot pilnu datu bāzes kodu un izdzēšot tajā visus “redzamos” vārdus. Tātad, kad tas ir nokopēts, atkal atveriet špakteli, piesakieties un ierakstiet:

sudo mysql

un tagad jūs atrodaties mysql saskarnē, nokopējiet tajā savu datu bāzes kodu un nospiediet enter.

Tagad mums vienkārši jāizveido lietotājs

CREATE USER 'user' IDENTIFIED BY 'user';

Piešķiriet visas privilēģijas *. * “Lietotājam”;

Tagad pārstartējiet.

Tāpēc tagad viss ir jāiestata, jūs varat arī izveidot savienojumu ar savu Pi un MySql Workbench, lai būtu vieglāk pārbaudīt visus tabulās esošos datus.

6. darbība: Bluetooth konfigurēšana mūsu RPi

Mēs veidojam Bluetooth skaļruni, tāpēc tas nozīmē, ka multivide tiek sūtīta no mūsu avota uz Raspberry Pi, un to var izdarīt diezgan vienkārši, sāksim uzreiz!

Mans Bluetooth savienojuma avots:

Noņemot jau darbojošos bluealsa

sudo rm/var/run/bluealsa/*

Pievienojiet A2DP profila izlietnes lomu

sudo bluealsa -p a2dp -izlietne &

Atveriet Bluetooth saskarni un ieslēdziet Bluetooth

bluetoothctl

ieslēgt

Iestatiet pāra aģentu

aģents ieslēgts

noklusējuma aģents

Padariet savu RPi atklājamu

atklājams

  • Tagad savā Bluetooth ierīcē meklējiet RPi un izveidojiet savienojumu ar to.
  • Apstipriniet savienošanu pārī abās ierīcēs, špakteles veidā ierakstiet “jā”.
  • Atļaut A2DP pakalpojumu, vēlreiz ierakstiet “jā”.
  • Kad tas ir izdarīts, mēs varam uzticēties savai ierīcei, tāpēc mums tas nav jāiziet katru reizi, kad vēlamies izveidot savienojumu

uzticība XX: XX: XX: XX: XX: XX (jūsu Bluetooth Mac adrese no mūsu avota ierīces)

Ja vēlaties, lai jūsu RPi arī turpmāk būtu atklājams, tā ir jūsu izvēle, bet es gribētu to atkal izslēgt, lai cilvēki nevarētu mēģināt izveidot savienojumu ar jūsu kastīti

atklājams

Tad mēs varam iziet no mūsu Bluetooth saskarnes

Izeja

Un visbeidzot mūsu audio maršrutēšana: mūsu avota ierīce pārsūta uz mūsu RPi

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

Tagad mūsu ierīce ir pilnībā savienota ar mūsu Raspberry, un jums vajadzētu būt iespējai atskaņot multividi no avota ierīces Pi skaļrunī.

7. solis: pilnīgas aizmugures sistēmas uzrakstīšana

Tātad, tagad iestatīšana ir pabeigta, mēs beidzot varam sākt rakstīt savu aizmugures programmu!

Es izmantoju PyCharm visai savai aizmugurei, jums vienkārši jāpārliecinās, vai jūsu PyCharm projekts ir savienots ar jūsu Raspberry Pi, tas nozīmē, ka jūsu izvietošanas ceļš ir iestatīts jūsu iestatījumos un esat instalējis visas nepieciešamās paketes, un tas jau ir jāizdara 4.

Es izmantoju savas nodarbības, un tās visas ir iekļautas arī manā GitHub. Saite ir ievadā, ja esat to palaidis garām;)

Savā aizmugures failā es izmantoju pavedienu nodarbības, tāpēc viss var darboties vienlaikus un tas nepārtrauc viens otru. Apakšā jūs atradāt visus maršrutus, lai mēs varētu viegli iegūt datus savā priekšgalā.

8. darbība: priekšējās daļas rakstīšana (HTML, CSS un JavaScript)

Tagad, kad aizmugure ir pabeigta, mēs varam sākt rakstīt pilnu priekšgalu.

HTML un CSS tika paveikts diezgan vienkārši, vispirms pēc iespējas mēģinot strādāt ar mobilajām ierīcēm, jo vairumā gadījumu mēs izveidojam savienojumu ar Bluetooth no mobilās ierīces, un to būtu vieglāk kontrolēt no mobilā informācijas paneļa.

Jūs varat noformēt savu informācijas paneli, kā vien vēlaties, es vienkārši atstāšu savu kodu un dizainu šeit, jūs varat darīt visu, kas jums patīk!

Un Javascript nebija tik smags, strādāja ar dažiem GET no maniem aizmugures maršrutiem, daudzām notikumu klausītājām un dažām socketio struktūrām.

9. solis: izveidojiet manu lietu un salieciet to visu kopā

Veidot manu lietu un salikt to visu kopā
Veidot manu lietu un salikt to visu kopā
Veidot manu lietu un salikt to visu kopā
Veidot manu lietu un salikt to visu kopā
Veidot manu lietu un salikt to visu kopā
Veidot manu lietu un salikt to visu kopā

Vispirms es sāku ar dažām skicēm, kā es gribēju lietas izskatīšanos, kaut kas svarīgs bija tas, ka tam bija jābūt pietiekami lielam, lai viss ietilptu, jo mēs saņēmām lielu ķēdi, ko ielikt lietā.

Es izgatavoju korpusu no koka, es domāju, ka ar to ir visvieglāk strādāt, ja jums nav tik daudz pieredzes ar korpusu veidošanu, un jums ir arī daudzas lietas, ko ar to var darīt.

Es sāku no vīna pudeļu futrāļa un tikko sāku zāģēt koku. Kad man bija pamata lieta, man vienkārši vajadzēja tajā urbt caurumus (daudz lietas priekšpusē, kā jūs varat redzēt attēlos: P) un ievietot tajā dažas naglas, tas ir patiešām pamata gadījums, bet tas izskatās diezgan forši un der ideāli.

Un, kad lieta bija pabeigta, bija pienācis laiks to visu salikt kopā, kā redzams pēdējā attēlā! Kastes iekšienē ir tāds kā juceklis, bet viss darbojas, un man nebija tik daudz vietas, tāpēc iesaku varbūt izveidot lielāku lietu, ja veidojat manu projektu.

10. solis: dažas problēmas, kas man radās, veidojot Slimbox skaļruni …

Bluetooth un zilās kļūdas

Ikreiz, kad vēlējos atskaņot mūziku vai izveidot savienojumu ar Bluetooth, es saņēmu kļūdas no Bluetooth un bluealsa. Es to izpētīju, un tas bija risinājums manai problēmai. Tāpēc kāda iemesla dēļ mans Bluetooth bija bloķēts, neesmu pārliecināts, vai tas ir standarta mīksts bloķēts. Jūs varat redzēt, vai tā ir, ierakstot Putty šādu komandu.

rfkill saraksts

Tātad, ja tas ir softblocked, vienkārši izmantojiet šo:

rfkill atbloķējiet Bluetooth

Un, iespējams, vēlēsities pēc tam atsāknēt, mans avots:

Sērijas savienojuma problēmas

Vēl viena liela problēma, kas man bija, bija tāda, ka es nevarēju izveidot savienojumu ar savu Arduino, izmantojot līmeņu pārslēgu, pēc dažiem meklējumiem es uzzināju, ka mans '/dev/ttyS0' ir pazudis, un tas varētu būt saistīts ar jūsu RPi atjauninājumu. Atrada arī risinājumu šajā jautājumā

Jums būs atkārtoti jāiespējo sērijas konsole, izmantojot raspi-config, pārstartējiet un pēc tam manuāli noņemiet bitu "console = serial0, 115200" no '/boot/cmdline.txt'. Pārliecinieties, ka "enable_uart = 1" ir /boot/config.txt "un restartējiet vēlreiz. Tam vajadzētu atgriezt ttyS0 portu, kā arī mīksto saiti"/dev/serial0 ".

Avots:

Ieteicams: