Turinys:

„Mood Speaker“- galingas garsiakalbis, leidžiantis groti nuotaikai, atsižvelgiant į aplinkos temperatūrą: 9 žingsniai
„Mood Speaker“- galingas garsiakalbis, leidžiantis groti nuotaikai, atsižvelgiant į aplinkos temperatūrą: 9 žingsniai

Video: „Mood Speaker“- galingas garsiakalbis, leidžiantis groti nuotaikai, atsižvelgiant į aplinkos temperatūrą: 9 žingsniai

Video: „Mood Speaker“- galingas garsiakalbis, leidžiantis groti nuotaikai, atsižvelgiant į aplinkos temperatūrą: 9 žingsniai
Video: Ремонт лифта ► 5 Прохождение Signalis 2024, Liepa
Anonim
„Mood Speaker“- galingas garsiakalbis, leidžiantis groti nuotaikai, atsižvelgiant į aplinkos temperatūrą
„Mood Speaker“- galingas garsiakalbis, leidžiantis groti nuotaikai, atsižvelgiant į aplinkos temperatūrą

Labas!

Savo mokyklos projektui MCT Howest Kortrijk aš sukūriau „Mood Speaker“, tai yra išmanusis „Bluetooth“garsiakalbių įrenginys su įvairiais jutikliais, LCD ir WS2812b LED juosta. Garsiakalbis leidžia foninę muziką pagal temperatūrą, tačiau taip pat gali būti naudojamas kaip įprastas „Bluetooth“garsiakalbis. Viskas veikia „Raspberry Pi“(duomenų bazė, interneto serveris, „Backend“).

Taigi šis nurodymas yra žingsnis po žingsnio, kaip aš supratau šį projektą per 3 savaites. Taigi, jei jūs, vaikinai, norite atkurti mano projektą, galite sekti vadovą

Ši pamokoma pamoka yra mano pirmoji, kurią parašiau, taigi, jei kyla kokių nors abejonių, pabandysiu kuo greičiau į jas atsakyti!

Mano „GitHub“:

1 žingsnis: reikmenys

Raspberry Pi 3B ir 16 GB SD kortelė

Visas mano projektas veikia mano „Raspberry Pi 3B“su sukonfigūruotu vaizdu, kurį paaiškinsiu vėliau (4 veiksmas: „Raspberry Pi“sąranka)

LCD ekranas 16x2

Temperatūrai, ryškumui ir IP adresui spausdinti naudojau paprastą LCD ekraną.

Duomenų lapas:

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:

MCP3008

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

Duomenų lapas:

PIR judesio jutiklis

Norėdami nustatyti, kada kažkas įeina ir išeina iš mano kambario, aš naudoju pasyvų infraraudonųjų spindulių jutiklį, nes juos lengva naudoti ir jie yra maži.

Duomenų lapas:

LDR

Aš naudoju fotorezistorių arba LDR (šviesos mažėjimo pasipriešinimą arba nuo šviesos priklausomą rezistorių), kad nustatyčiau kambario šviesumo lygį. Taip pat įjungiau savo „Ledstrip“, kai tamsu.

Garsiakalbis - 3 colių skersmuo - 4 omai 3 vatai

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 LED juosta yra prijungta prie „Arduino“ir veikia toliau, o visa kita - „Raspberry Pi“.

WS2812B - Ledstrip

Tai yra LED juostelė su 60 RGB lempučių (jei norite, galite nusipirkti ilgesnes juosteles 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.

Duomenų lapas:

GPIO T dalis, 1 duonos lenta ir daugybė jungiamųjų laidų

Norėdami prijungti viską, ko man reikia, lentas ir jungiamuosius laidus, aš nenaudojau GPIO T dalies, bet jūs galite ją naudoti, kad aiškiai žinotumėte, kuri šiukšliadėžė yra kur.

2 žingsnis: schema ir laidai

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

Norėdami sukurti savo schemą, aš naudoju „Fritzing“, tai programa, kurią galite įdiegti ir kuri leidžia jums sukurti schemą tikrai lengvai įvairiuose vaizduose. Aš naudoju duonos lentą ir scheminį vaizdą.

Atsisiųskite „Fritzing“:

Įsitikinkite, kad viskas tinkamai prijungta. Naudojau spalvas, kad būtų šiek tiek aiškiau žinoti, kur prijungti laidus. Mano atveju laidams naudojau skirtingas spalvas

3 žingsnis: duomenų bazės projektavimas

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

Mes renkame daug duomenų iš 3 jutiklių (temperatūra nuo DS18B20, ryškumas pagal LDR ir būsena iš PIR jutiklio). Taigi geriausia visus šiuos duomenis laikyti duomenų bazėje. Vėlesniame žingsnyje paaiškinsiu, kaip sukonfigūruoti duomenų bazę (5 žingsnis: persiųskite mūsų duomenų bazę į RPi!) Tačiau pirmiausia reikia sukurti dizainą arba ERD (objektų santykių diagrama). Mano buvo normalizuota naudojant 3NF, todėl komponentus ir komponentų istoriją padalijome į kitą lentelę. Mes naudojame muzikos duomenų bazę, kad galėtume sekti klausomas dainas.

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

4 žingsnis: nustatykite „Raspberry Pi“

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

1 dalis: SD kortelės konfigūravimas

1) Atsisiųskite reikalingą programinę įrangą ir failus

Norėdami užbaigti šį procesą, turite atsisiųsti 2 programinę įrangą ir 1 OS, ty Raspbian. 1 -oji programinė įranga: pirmoji programinė įranga yra „Win32 Disk Imager“.

sourceforge.net/projects/win32diskimager/

Antroji programinė įranga: antroji programinė įranga yra SD kortelės formatavimas.

www.sdcard.org/downloads/formatter_4/

Raspbian OS: Tai yra pagrindinė „Pi“operacinė sistema.

www.raspberrypi.org/downloads/raspberry-pi-os/

Ištraukite visus failus į darbalaukį.

2) Gaukite SD kortelę ir kortelių skaitytuvą

Įsigykite mažiausiai 8 GB 10 klasės SD kortelę su kortelių skaitytuvu. Įdėkite tą kortelę į kortelių skaitytuvą ir prijunkite prie USB prievado.

3) Formatuokite SD kortelę

Atidarykite „SD Card Formatter“ir pasirinkite diską.

Spustelėkite formatą ir nekeiskite jokių kitų parinkčių.

Kai formatavimas bus baigtas, spustelėkite Gerai.

4) Įrašykite OS į SD kortelę

Atidarykite win32diskimager.

Naršykite Raspbian OS.img failą, kuris buvo išgautas iš atsisiųsto failo.

Spustelėkite atidaryti, tada spustelėkite Rašyti.

Jei pasirodo įspėjimas, ignoruokite jį spustelėdami Gerai. Palaukite, kol rašymas bus baigtas, ir tai gali užtrukti kelias minutes. Taigi būkite kantrūs.

n

5) Kai tai bus padaryta, prieš dėdami vaizdą į RPi, esame pasirengę atlikti kai kuriuos galutinius 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. (Lengviausias būdas yra sukurti txt failą ir vėliau pašalinti.txt)

Dabar, kai viskas yra įdiegta SD kortelėje, galite SAUGIAI ją išstumti iš kompiuterio ir įdėti į „Raspberry Pi“, neprijungdami 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.

2 dalis: RPi konfigūravimas

Glaistas

Dabar norime sukonfigūruoti „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ė. (Rekomenduojama jį pakeisti kuo greičiau. Štai vadovas, kaip tai padaryti:

Raspi-config

Turėsime įjungti skirtingas sąsajas ir tam pirmiausia turime įvesti šį kodą:

sudo raspi-config

Dalykai, kuriuos turime įgalinti, yra sąsajų skyriuje. Turime įgalinti šias sąsajas:

  • Vieno laido
  • Serijinis
  • I2C
  • SPI

Tai buvo viskas, ką mums reikėjo padaryti su raspi-config

Pridedamas WIFI

Pirmiausia turite būti root, kad ši komanda taptų root

sudo -i

Kai būsite root, naudokite šią komandą: (Pakeiskite SSID savo tinklo pavadinimu ir slaptažodžiu savo tinklo slaptažodžiu)

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

Jei padarėte kažką ne taip, galite patikrinti, atnaujinti arba ištrinti šį tinklą tiesiog įvesdami šią komandą:

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

3 dalis: RPi + diegimo programinės įrangos atnaujinimas

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

Atnaujinę RPi turėsime įdiegti šią programinę įrangą:

„MariaDB“duomenų bazė

sudo apt-get install mariadb-server

„Apache2“žiniatinklio serveris

sudo apt įdiegti apache2

Python

update-alternatives-install/usr/bin/python python /usr/bin/python3.7 1 atnaujinimo alternatyvos-install/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“užklausos
  • „Python-socketio“
  • RPi. GPIO
  • Geventas
  • Gevent-websocket

Pranešėjų biblioteka

Norėdami naudoti garsiakalbį su stiprintuvu, turėsime įdiegti jo biblioteką

garbanė -SS > | bash

Step 4: Reboot

After everything has been installed we will have to reboot the pi to make sure everything works correctly

sudo reboot

Step 5: Setting Up the Database to the RPi

Nustatykite duomenų bazę RPi!
Nustatykite duomenų bazę RPi!

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

Norėdami sukurti duomenų bazę, turėsime prijungti „MySql“ir „RPi“. Tam atidarysime „MySQLWorkbench“ir užmezgsime naują ryšį. Žiūrėdami į paveikslėlį turėsite pakeisti, kad pakeistumėte informaciją į savo.

Jei dar nieko nepakeitėte, galite naudoti SSH pi ir avietes, MySQL mysql ir mysql.

Kai kažkas neaišku, taip pat galite vadovautis šia pamoka:

Eksportuoti savo duomenų bazę turėtų būti lengviau naudojant PHPmyAdmin, nes naudodami „MySql“galite gauti daug klaidų

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

Mes kuriame „Mood“garsiakalbį, kurį taip pat galime naudoti su savo muzika, kad tai būtų lengviau, kai yra RPi

prisijungęs prie „Bluetooth“, aš vadovavausi jo pamoka, kurią galite rasti čia:

scribles.net/streaming-bluetooth-audio-fr…

Aš čia viską taip pat parašiau visiems, kurie nori tai atkurti

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“

įjunkite „Bluetooth“

Nustatykite susiejimo agentą

agentas pagal numatytąjį agentą

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 prijungtas prie „Raspberry“naudojant „Bluetooth“ir jūs turėtumėte galėti jį išbandyti paleisdami bet kokią laikmeną, pvz., „Spotify“ir kt.

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 „Visual Studio Code“, jums tiesiog reikia įsitikinti, kad „Visual Studio“projektas yra prijungtas prie jūsų „Raspberry Pi“, tai reiškia, kad jūsų LAN kabelis turi būti prijungtas prie jūsų RPi ir prisijungti prie SSH. (informaciją apie tai, kaip sukurti nuotolinį ryšį, rasite čia:

Aš naudoju savo pamokas ir visos jos yra įtrauktos į mano „GitHub“.

Savo vidiniame faile naudoju skirtingas klases, todėl viską galima naudoti atskirai ir kad mano pagrindinis kodas nebūtų netvarka su visomis skirtingomis gijomis. Aš naudoju sriegimą, kad paleisčiau visas skirtingas klases vienu metu. 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 man buvo gana sunku, aš padariau viską, kad pirmiausia taptų mobili, nes galiu prisijungti prie „Bluetooth“, kad pakeisčiau dainas naudodami „Spotify“. Taigi 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“man nebuvo lengviau, dirbo su keliais GET iš mano galinių maršrutų, daugybės įvykių klausytojų ir kai kurių „Socketio“struktūrų, kad gaučiau duomenis iš mano jutiklių.

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
Mano bylos kūrimas ir visa tai kartu
Mano bylos kūrimas ir visa tai kartu

Pirmiausia pradėjau piešti, kaip norėčiau, kad korpusas atrodytų, kažkas svarbaus buvo tai, kad jis turėjo būti pakankamai didelis, kad viskas tilptų, nes mes turėjome didelę grandinę, kurią turėjome įdėti į dėklą, tačiau turėjome išlikti kompaktiški, kad taip nebūtų “. neužima daug vietos

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 senos lentos, kurią buvau uždėjęs, ir tik pradėjau pjauti medieną. Kai turėjau savo pagrindinį dėklą, tiesiog turėjau jame išgręžti skyles (daug korpuso priekyje, kaip matote nuotraukose ir įkiškite keletą vinių, tai tikrai paprastas atvejis, bet atrodo gana šauniai) ir puikiai tinka. Nusprendžiau ir nudažyti balta spalva, kad atrodytų gerai.

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ą.

Rekomenduojamas: