Turinys:
- 1 žingsnis: reikmenys
- 2 žingsnis: schema ir laidai
- 3 žingsnis: duomenų bazės projektavimas
- 4 žingsnis: „Raspberry Pi“paruošimas
- 5 žingsnis: persiųskite mūsų duomenų bazę į RPi
- 6 veiksmas: „Bluetooth“konfigūravimas mūsų RPi
- 7 veiksmas: parašykite visą vidinę programą
- 8 veiksmas: „Frontend“rašymas (HTML, CSS ir „JavaScript“)
- 9 žingsnis: sukurkite mano bylą ir viską sudėkite
- 10 veiksmas: kai kurios problemos, su kuriomis susidūriau kurdamas „Slimbox“garsiakalbį …
Video: „Slimbox“- išmanusis „Bluetooth“garsiakalbis!: 10 žingsnių (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
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
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
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
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:
- Įdėkite SD kortelę į kompiuterį.
- Atidarykite ką tik atsisiųstą „Win32“.
- Pasirinkite „Raspbian“vaizdo failą, kurį taip pat ką tik atsisiuntėte.
- 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.
- Eikite į savo SD kortelės katalogą, suraskite failą pavadinimu „cmdline.txt“ir atidarykite.
- Dabar toje pačioje eilutėje pridėkite „ip = 169.254.10.1“.
- Išsaugokite failą.
- 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
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:
Belaidis dviračiu tvirtinamas „Bluetooth“garsiakalbis: 11 žingsnių (su nuotraukomis)
Belaidis dviračiu tvirtinamas „Bluetooth“garsiakalbis: Sveiki! Šioje instrukcijoje aš jums parodysiu, kaip sukūriau savo belaidį dviračiu montuojamą „Bluetooth“garsiakalbį. Turiu pasakyti, kad tai gali būti vienas iš mano mėgstamiausių projektų. Jis puikiai atrodo, turi puikų garsą ir turi tokią futuristinę išvaizdą! Kaip al
„Pasidaryk pats“„Bluetooth Boombox“garsiakalbis - KAIP: 13 žingsnių (su nuotraukomis)
„Pasidaryk pats“„Bluetooth Boombox“garsiakalbis | KAIP: Sveiki! Ačiū, kad patikrinote šį projektą, šis yra mano mėgstamiausių sąraše! Labai džiaugiuosi, kad pavyko įgyvendinti šį nuostabų projektą. Viso projekto metu buvo naudojama daug naujų metodų, siekiant pagerinti bendrą spektaklio kokybę ir apdailą
„Pasidaryk pats“„Bluetooth“garsiakalbis su baterijomis // Kaip sukurti - medžio apdirbimas: 14 žingsnių (su nuotraukomis)
„Pasidaryk pats“„Bluetooth“garsiakalbis su akumuliatoriumi // Kaip sukurti-medžio apdirbimas: Aš sukūriau šį įkraunamą, baterijomis maitinamą, nešiojamą „Bluetooth“garsiakalbio garsiakalbį, naudodamas „Parts Express C-Note“garsiakalbių komplektą ir jų KAB stiprintuvo plokštę (nuorodos į visas žemiau esančias dalis). Tai buvo mano pirmasis garsiakalbio kūrimas ir aš nuoširdžiai nustebau, koks nuostabus
„HiFi“kelių kambarių „WiFi“ir „Bluetooth“garsiakalbis: 10 žingsnių (su nuotraukomis)
„HiFi“kelių kambarių „WiFi“ir „Bluetooth“garsiakalbis: „Wi-Fi“prijungti garsiakalbiai gali užtikrinti žymiai geresnę garso kokybę nei „Bluetooth“parinktys. Jie nesuspaudžia garso turinio prieš jį paleisdami, o tai gali neigiamai paveikti garsą, nes sumažina detalumo lygį
„Pasidaryk pats“„Pelican 1050“„Bluetooth“garsiakalbis Deitonas Garsas: 14 žingsnių (su nuotraukomis)
„Pasidaryk pats“„Pelican 1050“„Bluetooth“garsiakalbis Deitono garsas: Nuo pirmojo pradėto projekto aš visada norėjau padaryti „Bluetooth“garsiakalbius. Aš nebuvau įgudęs dirbti su elektra, todėl pradėjau tyrinėti ir žiūrėti valandų valandas vaizdo įrašus. Po šimto projektų aš pagaliau jaučiausi pakankamai patogiai, kad galėčiau pradėti