Turinys:

„Slimbox“- išmanusis „Bluetooth“garsiakalbis!: 10 žingsnių (su nuotraukomis)
„Slimbox“- išmanusis „Bluetooth“garsiakalbis!: 10 žingsnių (su nuotraukomis)

Video: „Slimbox“- išmanusis „Bluetooth“garsiakalbis!: 10 žingsnių (su nuotraukomis)

Video: „Slimbox“- išmanusis „Bluetooth“garsiakalbis!: 10 žingsnių (su nuotraukomis)
Video: Šilelis T-1 Plus 2024, Liepa
Anonim
„Slimbox“- išmanusis „Bluetooth“garsiakalbis!
„Slimbox“- išmanusis „Bluetooth“garsiakalbis!

Labas!

Savo mokyklos projektui MCT Howest Kortrijk aš sukūriau išmanųjį „Bluetooth“garsiakalbių įrenginį su skirtingais jutikliais, įskaitant LCD ir RGB „NeoPixel“žiedą. Viskas veikia „Raspberry Pi“(duomenų bazė, interneto serveris, „Backend“).

Taigi šioje pamokoje žingsnis po žingsnio parodysiu, kaip aš sukūriau šį projektą per 3 savaites, taigi, jei kas nors iš jūsų, vaikinai, nori atkurti mano projektą, galite lengvai tai padaryti!

Tai taip pat yra mano pirmasis pamokomas dalykas, jei turite klausimų, pasistengsiu į juos atsakyti kuo greičiau!

Mano „GitHub“:

1 žingsnis: reikmenys

Prekės
Prekės
Prekės
Prekės
Prekės
Prekės

DS18B20 temperatūros jutiklis

„DS18B20“yra vieno laido jutiklis, matuojantis temperatūrą, pagamintas „Maxim Integrated“. Yra dviejų tipų DS18B20 jutikliai, tik komponentas (kurį naudojau) ir vandeniui atsparus variantas, kuris yra daug didesnis, bet tai ne tai, ko man reikėjo mano projektui, todėl naudojau tik komponentą. Jutiklis gali matuoti temperatūrą nuo -55 ° C iki +125 ° C (nuo -67 ° F iki +257 ° F) ir jo tikslumas yra 0,5 ° C nuo -10 ° C iki +85 ° C. Jis taip pat turi programuojamą skiriamąją gebą nuo 9 bitų iki 12 bitų.

Duomenų lapas:

Potenciometro jutiklis

Potenciometras yra rezistorius su trimis gnybtais, kurį rankiniu būdu galima reguliuoti tiesiog sukant viršutinę jutiklio dalį. Viršutinės dalies padėtis lemia potenciometro išėjimo įtampą.

LSM303 Akselerometras + kompaso pertrauka

LSM303 pertraukimo plokštė yra trijų ašių akselerometro ir magnetometro / kompaso derinys, pagamintas „Adafruit“. Jis naudojamas su „Raspberry Pi“I2C sąsaja.

Apžvalga:

Duomenų lapas:

MCP3008

Norėdami perskaityti duomenis iš savo potenciometro, naudoju MCP3008, kuris yra 8 kanalų 10 bitų analoginis -skaitmeninis keitiklis su SPI sąsaja ir kurį gana lengva užprogramuoti.

Duomenų lapas:

Garsiakalbis - 3 colių skersmuo - 8 omai 1 vatas

Tai yra garsiakalbio kūgis, kurį pasirinkau apskaičiuodamas tam reikalingą įtampą ir amperus, ir tai puikiai tiko mano Raspberry Pi projektui, kurį pagamino „Adafruit“.

Apžvalga:

MAX98357 I2S D klasės monofoninis stiprintuvas

Tai stiprintuvas, pateikiamas kartu su garsiakalbiu, ne tik stiprintuvas, bet ir I2S skaitmeninis -analoginis keitiklis, todėl jis taip pat puikiai tinka mano garsiakalbiui ir garso sistemai.

Apžvalga:

Duomenų lapas:

Arduino Uno

„Arduino Uno“yra atvirojo kodo mikrovaldiklio plokštė, pagrįsta „Microchip ATmega328P“mikrovaldikliu, kurį gamina „Arduino.cc“. „Uno“plokštė turi 14 skaitmeninių kaiščių, 6 analoginius kaiščius ir yra visiškai programuojama naudojant „Arduino IDE“programinę įrangą

Apžvalga:

Lygio perjungiklis

Tai maža plokštė, kuri rūpinasi ryšiu tarp „Arduino Uno“ir „Raspberry Pi“bei skirtingos įtampos, „Arduino“: 5 V ir „Raspberry Pi“: 3,3 V. To reikia, nes „NeoPixel“žiedas yra prijungtas prie „Arduino“ir veikia toliau, o visa kita - „Raspberry Pi“.

RGB NeoPixel žiedas

Tai mažas žiedas, užpildytas 12 RGB lempučių (jei norite, galite nusipirkti didesnių žiedų su daugiau RGB lempučių). Kuris mano atveju yra prijungtas prie „Arduino Uno“, bet taip pat gali būti prijungtas prie daugelio kitų įrenginių ir yra tikrai paprastas naudoti.

Apžvalga:

LCD ekranas 16x2

Temperatūrai, garsumui ir IP adresui spausdinti naudojau paprastą LCD ekraną.

Duomenų lapas:

Raspberry Pi 3B+ ir 16 GB SD kortelė

Visas mano projektas veikia mano „Raspberry Pi 3B+“su sukonfigūruotu vaizdu, kurį vėliau padėsiu sukonfigūruoti vadovaudamasis.

„GPIO T-Part“, 2 lentos ir daugybė jungiamųjų laidų

Norėdami prijungti viską, ko man reikia, lentas ir trumpiklius, naudoju GPIO T dalį, todėl turiu daugiau vietos ir aišku, kuris kaištis yra.

2 žingsnis: schema ir laidai

Schema ir laidai
Schema ir laidai
Schema ir laidai
Schema ir laidai
Schema ir laidai
Schema ir laidai

Savo schemoje naudojau „Fritzing“- tai programa, kurią galite įdiegti ir kuri leidžia jums sukurti schemą išties lengvai įvairiuose rodiniuose.

Atsisiųskite „Fritzing“:

Taigi įsitikinkite, kad viską sujungėte teisingai! Mano atveju laidų spalvos nėra tokios kaip schemoje.

3 žingsnis: duomenų bazės projektavimas

Duomenų bazės dizainas
Duomenų bazės dizainas

Mes renkame daug duomenų iš 3 prijungtų jutiklių, todėl mums reikia duomenų bazės, kurioje būtų saugomi duomenys ir jutikliai. Vėliau pamatysime, kaip sukonfigūruoti „Raspberry Pi“duomenų bazę ir kaip prie jos pridėti duomenų. Bet pirmiausia turi būti sukurtas duomenų bazės dizainas arba ERD (objektų santykių diagrama), o mano taip pat buvo normalizuota naudojant 3NF. Štai kodėl mes padalijome jutiklius į kitą lentelę ir dirbame su ID.

Apskritai tai tikrai paprastas ir lengvas duomenų bazės dizainas, su kuriuo galima toliau dirbti.

4 žingsnis: „Raspberry Pi“paruošimas

Taigi dabar, kai mes atlikome keletą projekto pagrindų. Pradėkime nuo Raspberry Pi!

SD kortelės konfigūracija

Pirma, jums reikia 16 GB SD kortelės, kurioje galite įdėti savo atvaizdą, ir programos, skirtos įkelti pradinį vaizdą į SD kortelę.

Programinė įranga:

Pradinis vaizdas:

Taigi, kai jie bus atsisiųsti:

  1. Įdėkite SD kortelę į kompiuterį.
  2. Atidarykite ką tik atsisiųstą „Win32“.
  3. Pasirinkite „Raspbian“vaizdo failą, kurį taip pat ką tik atsisiuntėte.
  4. Spustelėkite „rašyti“į savo SD kortelės vietą.

Tai gali užtrukti, priklausomai nuo jūsų aparatūros. Kai tai bus padaryta, prieš dėdami vaizdą į RPi, esame pasirengę atlikti kai kuriuos paskutinius pakeitimus.

  1. Eikite į savo SD kortelės katalogą, suraskite failą pavadinimu „cmdline.txt“ir atidarykite.
  2. Dabar toje pačioje eilutėje pridėkite „ip = 169.254.10.1“.
  3. Išsaugokite failą.
  4. Sukurkite failą pavadinimu „ssh“be plėtinio ar turinio.

Dabar galite SAUGIAI išimti SD kortelę iš savo kompiuterio ir įdėti ją į „Raspberry Pi“be maitinimo. Įdėję SD kortelę į RPI, prijunkite LAN kabelį iš kompiuterio prie RPi LAN prievado, kai jis bus prijungtas, galėsite prijungti maitinimą prie RPi.

Dabar norime valdyti savo „Raspberry Pi“, tai daroma naudojant „Putty“.

Glaistymo programinė įranga:

Atsisiuntę atidarykite „Putty“ir įterpkite IP „169.254.10.1“ir „22“prievadą bei ryšio tipą: SSH. Dabar pagaliau galime atidaryti savo komandinės eilutės sąsają ir prisijungti naudodami pradinę prisijungimo informaciją -> Vartotojas: pi & Slaptažodis: avietė.

Raspi-config

sudo raspi-config

Šiam projektui tikrai svarbu sąsajų skyrius, turime įgalinti daugybę skirtingų sąsajų, įgalinti visas šias sąsajas:

  • Vieno laido
  • SPI
  • I2C
  • Serijinis

Dabar, kai baigsime raspi-config, pabandykime užmegzti ryšį su internetu.

„Wi-Fi“ryšys

Pirmiausia turite būti šių komandų root

sudo -i

Kai būsite root, naudokite šią komandą. SSID yra jūsų tinklo pavadinimas, o slaptažodis akivaizdžiai yra slaptažodis.

wpa_passphrase "ssid" "slaptažodis" >> /etc/wpa_supplicant/wpa_supplicant.conf

Jei padarėte klaidą, galite patikrinti, atnaujinti arba ištrinti šį tinklą tiesiog įvesdami tą failą:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Taigi, įėję į mūsų tinklą, įeikime į WPA kliento sąsają

wpa_cli

Pasirinkite savo sąsają

sąsaja wlan0

Iš naujo įkelti failą

perkonfigūruoti

Ir pagaliau galite pamatyti, ar esate gerai prisijungę:

ip a

Atnaujinti ir atnaujinti

Dabar, kai esame prisijungę prie interneto, atnaujinti jau įdiegtus paketus būtų protingas žingsnis, todėl prieš diegdami kitus paketus pirmiausia tai padarysime.

sudo apt-get atnaujinimas

sudo apt-get atnaujinimas

„MariaDB“duomenų bazė

Įdiekite „MariaDB“duomenų bazės serverį:

sudo apt-get install mariadb-server

„Apache2“žiniatinklio serveris

Įdiekite „Apache2“žiniatinklio serverį:

sudo apt įdiegti apache2

Python

Įdiekite „Python“:

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

atnaujinimo alternatyvos-įdiegti/usr/bin/python python/usr/bin/python3 2

Python paketas

Turėsite įdiegti visus šiuos paketus, kad pagrindinė sistema veiktų puikiai:

  • Kolba
  • Kolbos-kamšteliai
  • Kolba-MySql
  • Kolba-lizdasIO
  • „PyMySQL“
  • Prašymai
  • „Python-socketio“
  • RPi. GPIO
  • Geventas
  • Gevent-websocket
  • Ujsonas
  • Wsaccel

Pranešėjų biblioteka

Įdiekite garsiakalbių biblioteką iš „Adafruit“:

curl -sS https://raw.githubusercontent.com/adafruit/Raspbe… | mušti

Laikas perkrauti

sudo perkraukite

5 žingsnis: persiųskite mūsų duomenų bazę į RPi

Dabar, kai jau įdiegėme viską, ko mums reikėjo, įdėkime savo sukurtą duomenų bazę į Raspberry Pi!

Taigi pirmiausia turime persiųsti savo duomenų bazės kūrimą „MySql“darbalaukyje, o tai darydami nukopijuokite visą duomenų bazės kodą ir ištrinkite visus „matomus“žodžius. Taigi, kai tai bus nukopijuota, vėl atidarykite glaistą, prisijunkite ir įveskite:

sudo mysql

ir dabar esate „mysql“sąsajoje, nukopijuokite į ją savo duomenų bazės kodą ir paspauskite „Enter“.

Dabar mums tereikia sukurti vartotoją

KURTI NAUDOTOJĄ „vartotojas“, kurį identifikavo „vartotojas“;

Suteikite visas privilegijas *. * „Vartotojui“;

Dabar paleiskite iš naujo.

Taigi dabar viskas turėtų būti nustatyta, taip pat galite užmegzti ryšį su „Pi“ir „MySql Workbench“, kad būtų lengviau patikrinti visus lentelių duomenis.

6 veiksmas: „Bluetooth“konfigūravimas mūsų RPi

Mes kuriame „Bluetooth“garsiakalbį, todėl tai reiškia, kad žiniasklaida siunčiama iš mūsų šaltinio į „Raspberry Pi“ir tai galima padaryti gana lengvai, pradėkime nuo to!

Mano „Bluetooth“ryšio šaltinis:

Jau veikiančios „bluealsa“pašalinimas

sudo rm/var/run/bluealsa/*

Pridėti A2DP profilio kriauklės vaidmenį

sudo bluealsa -p a2dp -kriauklė &

Atidarykite „Bluetooth“sąsają ir įjunkite „Bluetooth“

bluetoothctl

įjunkite maitinimą

Nustatykite susiejimo agentą

agentas įjungtas

numatytasis agentas

Padarykite savo RPi atpažįstamą

galima atrasti

  • Dabar iš „Bluetooth“įrenginio ieškokite RPi ir prisijunkite prie jo.
  • Patvirtinkite abiejų įrenginių susiejimą, glaistai įveskite „taip“.
  • Įgalinkite A2DP paslaugą, dar kartą įveskite „taip“.
  • Kai tai bus padaryta, galime pasitikėti savo prietaisu, todėl mums nereikia to daryti kiekvieną kartą, kai norime prisijungti

pasitikėjimas XX: XX: XX: XX: XX: XX (jūsų „Bluetooth“„Mac“adresas iš mūsų šaltinio įrenginio)

Jei norite, kad jūsų RPi ir toliau būtų aptinkamas, tai yra jūsų pasirinkimas, bet aš norėčiau jį vėl išjungti, kad žmonės negalėtų bandyti prisijungti prie jūsų dėžutės

galima atrasti

Tada galime išeiti iš „Bluetooth“sąsajos

išeiti

Ir pagaliau mūsų garso nukreipimas: mūsų šaltinio įrenginys peradresuoja į mūsų RPi

„bluealsa-aplay“00: 00: 00: 00: 00: 00

Dabar mūsų įrenginys yra visiškai prijungtas prie „Raspberry“ir jūs turėtumėte galėti leisti laikmeną iš savo šaltinio įrenginio „Pi“garsiakalbiu.

7 veiksmas: parašykite visą vidinę programą

Taigi dabar sąranka baigta, pagaliau galime pradėti rašyti savo vidinę programą!

Visai savo vidinei sistemai naudojau „PyCharm“, jums tiesiog reikia įsitikinti, kad jūsų „PyCharm“projektas yra prijungtas prie jūsų „Raspberry Pi“, tai reiškia, kad jūsų diegimo kelias yra nustatytas jūsų nustatymuose ir įdiegėte visus reikalingus paketus. 4.

Aš naudoju savo pamokas ir visos jos yra įtrauktos į mano „GitHub“. Nuoroda yra įžangoje, jei praleidote;)

Savo vidiniame faile naudoju sriegimo klases, todėl viskas gali veikti vienu metu ir tai netrukdys vienas kitam. Apačioje rasite visus maršrutus, kad galėtume lengvai gauti duomenis savo priekinėje sistemoje.

8 veiksmas: „Frontend“rašymas (HTML, CSS ir „JavaScript“)

Dabar, kai užpakalinė dalis yra baigta, galime pradėti rašyti visą priekinę dalį.

HTML ir CSS buvo padaryta gana lengvai, pirmiausia pabandykite kuo daugiau dirbti mobiliuosiuose, nes dažniausiai prisijungiame prie „Bluetooth“iš mobiliojo įrenginio, todėl būtų lengviau valdyti iš mobiliojo prietaisų skydelio.

Prietaisų skydelį galite suprojektuoti bet kokiu būdu, aš tiesiog palieku savo kodą ir dizainą čia, galite daryti viską, kas jums patinka!

Ir „Javascript“nebuvo toks sunkus, dirbo su keliais GET iš mano galinių maršrutų, daugybės įvykių klausytojų ir kai kurių „Socketio“struktūrų.

9 žingsnis: sukurkite mano bylą ir viską sudėkite

Mano bylos kūrimas ir visa tai kartu
Mano bylos kūrimas ir visa tai kartu
Mano bylos kūrimas ir visa tai kartu
Mano bylos kūrimas ir visa tai kartu
Mano bylos kūrimas ir visa tai kartu
Mano bylos kūrimas ir visa tai kartu

Pirmiausia pradėjau nuo eskizų, kaip norėčiau, kad korpusas atrodytų, kažkas svarbaus buvo tai, kad jis turėjo būti pakankamai didelis, kad viskas tilptų, nes gavome didelę grandinę.

Aš padariau dėklą iš medžio, manau, kad su juo lengviausia dirbti, kai neturite tiek daug patirties dėklų statyboje ir taip pat turite daug dalykų, kuriuos galite su juo padaryti.

Pradėjau nuo vyno butelių dėklo ir tik pradėjau pjauti medieną. Kai turėjau savo pagrindinį dėklą, aš tiesiog turėjau jame išgręžti skyles (daug korpuso priekyje, kaip matote nuotraukose: P) ir įkišti keletą vinių, tai tikrai paprastas atvejis, bet atrodo gana šauniai ir puikiai tinka.

Ir kai byla buvo baigta, atėjo laikas viską sujungti, kaip matote paskutinėje nuotraukoje! Dėžutėje yra tam tikra netvarka, tačiau viskas veikia ir aš neturėjau daug daugiau vietos, todėl patariu jums galbūt sukurti didesnį dėklą, jei atkuriate mano projektą.

10 veiksmas: kai kurios problemos, su kuriomis susidūriau kurdamas „Slimbox“garsiakalbį …

„Bluetooth“ir „bluealsa“klaidos

Kiekvieną kartą, kai norėjau leisti muziką ar prisijungti prie „Bluetooth“, gavau klaidų iš „Bluetooth“ir „bluealsa“. Aš tai šiek tiek ištyriau ir tai buvo mano problemos sprendimas. Taigi dėl kokių nors priežasčių mano „Bluetooth“buvo užblokuotas minkštai, nesu tikras, ar tai yra standartinis minkštas užblokavimas. Galite pamatyti, ar taip yra, įvesdami šią komandą „Putty“.

rfkill sąrašas

Taigi, jei jis yra minkštas, tiesiog naudokite tai:

„rfkill“atblokuoti „Bluetooth“

Po to galbūt norėsite iš naujo paleisti, mano šaltinis:

Serijinio ryšio problemos

Taigi dar viena didelė problema buvo ta, kad negalėjau užmegzti jokio ryšio su „Arduino“per lygių perjungiklį, po kelių paieškų sužinojau, kad mano „/dev/ttyS0“nebėra, ir tai galėjo būti dėl jūsų RPi atnaujinimo. Taip pat rado sprendimą šiuo klausimu

Turėsite iš naujo įjungti serijinę konsolę naudodami raspi-config, perkrauti ir rankiniu būdu pašalinti bitą "console = serial0, 115200" iš '/boot/cmdline.txt'. Patikrinkite, ar yra "enable_uart = 1" /boot/config.txt “ir paleiskite iš naujo. Tai turėtų atkurti jūsų„ ttyS0 “prievadą ir„/dev/serial0 “minkštą nuorodą.

Šaltinis:

Rekomenduojamas: