Talaan ng mga Nilalaman:

Mood Speaker- isang Napakahusay na Tagapagsalita para sa Musika ng Mood na Patugtugin Batay sa Saklaw na Temperatura: 9 Mga Hakbang
Mood Speaker- isang Napakahusay na Tagapagsalita para sa Musika ng Mood na Patugtugin Batay sa Saklaw na Temperatura: 9 Mga Hakbang

Video: Mood Speaker- isang Napakahusay na Tagapagsalita para sa Musika ng Mood na Patugtugin Batay sa Saklaw na Temperatura: 9 Mga Hakbang

Video: Mood Speaker- isang Napakahusay na Tagapagsalita para sa Musika ng Mood na Patugtugin Batay sa Saklaw na Temperatura: 9 Mga Hakbang
Video: Let's Chop It Up Episode 14 Saturday January 16, 2021 2024, Nobyembre
Anonim
Mood Speaker- isang Napakahusay na Tagapagsalita para sa Musika ng Mood na Patugtugin Batay sa Saklaw na Temperatura
Mood Speaker- isang Napakahusay na Tagapagsalita para sa Musika ng Mood na Patugtugin Batay sa Saklaw na Temperatura

Hoy, ikaw!

Para sa aking proyekto sa paaralan sa MCT Howest Kortrijk, gumawa ako ng Mood Speaker ito ay isang matalinong aparato ng Bluetooth speaker na may iba't ibang mga sensor, kasama ang isang LCD at WS2812b ledstrip. Ang nagsasalita ay nagpe-play ng musikang background batay sa temperatura ngunit maaari ding magamit bilang isang regular na Bluetooth tagapagsalita Tumatakbo ang lahat sa Raspberry Pi (Database, Webserver, Backend).

Kaya't ang itinuturo na ito ay isang hakbang-hakbang na proseso kung paano ko napagtanto ang proyektong ito sa 3 linggo. Kaya't kung nais mong likhain muli ang aking proyekto maaari mong sundin ang gabay

Ang itinuturo na ito ay ang aking una na isinulat ko kaya kung mayroong anumang mga reyna, Susubukan kong sagutin ang mga ito nang mabilis hangga't makakaya ko!

Aking GitHub:

Hakbang 1: Mga Panustos

Raspberry Pi 3B & 16GB SD Card

Ang aking buong proyekto ay tumatakbo sa aking Raspberry Pi 3B na may isang naka-configure na imahe, na ipapaliwanag ko sa isang susunod na hakbang (Hakbang 4: I-setup ang Raspberry Pi)

LCD Display 16x2

Gumamit ako ng pangunahing LCD Display upang mai-print ang aking temperatura, ningning at IP address.

Datasheet:

DS18B20 Temperatura Sensor

Ang DS18B20 ay isang sensor na may isang wire na sumusukat sa temperatura, na gawa ng Maxim Integrated. Mayroong 2 uri ng mga sensor ng DS18B20, ang sangkap lamang (Na ginamit ko) at ang hindi tinatagusan ng tubig na bersyon, na mas malaki, ngunit hindi iyon ang kailangan ko para sa aking proyekto, kaya ginamit ko lang ang sangkap. Maaaring sukatin ng sensor ang temperatura sa saklaw na -55 ° C hanggang + 125 ° C (-67 ° F hanggang + 257 ° F) at mayroon itong katumpakan na 0.5 ° C mula -10 ° C hanggang + 85 ° C. Mayroon din itong isang programmable na resolusyon mula 9 na piraso hanggang 12 piraso.

Datasheet:

MCP3008

Upang mabasa ang data mula sa aking LDR at PIR-sensor Gumamit ako ng isang MCP3008, na kung saan ay isang 8 channel 10 bit analog sa digital converter sa interface ng SPI at medyo madali itong mai-program.

Datasheet:

Sensor ng paggalaw ng PIR

Upang matukoy kung may taong pumapasok at umalis sa aking silid, gumamit ako ng isang passive infrared sensor na bacuse madali silang gamitin at maliit.

Datasheet:

LDR

Gumamit ako ng isang photoresistor o LDR (Banayad na Pagbabawas ng Paglaban, o risistor na umaasa sa ilaw) upang makita ang antas ng liwanag ng silid na papasok dito. At upang buksan din ang aking Ledstrip kapag ito ay madilim.

Speaker - 3”Diameter - 4 Ohm 3 Watt

Ito ang pinili kong speaker cone pagkatapos makalkula ang Voltage at Amperes na kakailanganin nito at ito ay isang perpektong akma para sa aking proyekto na Raspberry Pi, na ginawa ng Adafruit.

Pangkalahatang-ideya:

MAX98357 I2S Class-D Mono Amplifier

Ito ang amplifier na kasama ng nagsasalita, hindi lamang ito isang amplifier, isa rin itong I2S digital sa analog converter, kaya perpekto din ito para sa aking speaker at audio system.

Pangkalahatang-ideya:

Datasheet:

Arduino Uno

Ang Arduino Uno ay isang open-source microcontroller board batay sa Microchip ATmega328P microcontroller, na ginawa ng Arduino.cc. Ang Uno board ay mayroong 14 Digital pin, 6 analog pin at ganap na mai-program sa software ng Arduino IDE

Pangkalahatang-ideya:

Levelshifter

Ito ay isang maliit na board na nangangalaga sa komunikasyon sa pagitan ng Arduino Uno at ng Raspberry Pi at ng iba't ibang mga voltages, Arduino: 5V & Raspberry Pi: 3.3V. Kailangan ito dahil ang ledstrip ay konektado sa Arduino at tumatakbo doon, habang ang lahat ng iba pang mga bagay ay tumatakbo sa Raspberry Pi.

WS2812B - Ledstrip

Ito ay isang ledstrip na may 60 RGB leds (maaari kang bumili ng mas mahahabang piraso ng mas maraming RGB leds, kung nais mo). Alin ang sa aking kaso na konektado sa Arduino Uno, ngunit maaari ring maiugnay sa maraming iba pang mga aparato at talagang simpleng gamitin.

Datasheet:

GPIO T-Bahagi, 1 Breadboard at maraming mga jumperwires

Upang ikonekta ang lahat ng kailangan ko ng mga breadboard at jumperwires, hindi ko ginamit ang GPIO T-part ngunit maaari mo itong magamit upang malinaw na malaman kung aling bin ang pupunta kung saan.

Hakbang 2: Skematika at Mga Kable

Schematic at Kable
Schematic at Kable
Schematic at Kable
Schematic at Kable

Para sa paggawa ng aking eskematiko ginamit ko ang Fritzing, ito ay isang programa na maaari mong mai-install na nagbibigay-daan sa iyo upang lumikha ng isang eskematiko talagang madali sa iba't ibang mga uri ng pananaw. Ginamit ko ang view ng breadboard at eskematiko.

I-download ang Fritzing:

Siguraduhin na ang lahat ay konektado nang tama. Gumamit ako ng mga kulay upang gawing mas malinaw ito upang malaman kung saan ikonekta ang mga wire. Sa aking kaso gumamit ako ng iba't ibang mga kulay para sa mga wire

Hakbang 3: Disenyo ng Database

Disenyo ng Database
Disenyo ng Database

Nangongolekta kami ng maraming data mula sa 3 sensor (Temperatura mula sa DS18B20, Liwanag mula sa LDR at Katayuan mula sa PIR-sensor). Kaya't pinakamahusay na itago ang lahat ng data na ito sa isang database. Ipapaliwanag ko sa isang susunod na hakbang kung paano i-configure ang database (Hakbang 5: Ipasa ang Inhenyeriyang Ang aming Database sa RPi!) Ngunit una ang disenyo o ERD (Entity Relasyon ng Diagram) ay dapat gawin. Ang minahan ay na-normalize sa 3NF kaya nga pinaghiwalay namin ang mga bahagi at ang kasaysayan ng mga sangkap sa isa pang mesa. Ginagamit namin ang database ng Musika upang subaybayan ang mga kanta na napakinggan.

Sa pangkalahatan ito ay isang talagang pangunahing at madaling disenyo ng database upang higit na gumana.

Hakbang 4: I-setup ang Raspberry Pi

Kaya ngayon na mayroon kaming ilang mga pangunahing kaalaman sa tapos na proyekto. Magsimula tayo sa pag-set up ng Raspberry Pi!

Bahagi 1: Pag-configure ng SD Card

1) I-download ang Kinakailangan na Software at Mga File

Kailangan mong mag-download ng 2 software at 1 OS ibig sabihin, Raspbian para sa kumpletong proseso na ito.1st software: Ang unang software ay Win32 Disk Imager.

sourceforge.net/projects/win32diskimager/

Ika-2 software: Pangalawang software ay ang SD Card Formatter.

www.sdcard.org/downloads/formatter_4/

Raspbian OS: Ito ang Pangunahing operating system ng Pi.

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

I-extract ang lahat ng mga file sa desktop.

2) Kunin ang SD Card at ang Reader ng Card

Kumuha ng isang minimum na 8GB class 10 SD card na may isang card reader. Ipasok ang card na iyon sa card reader at isaksak iyon sa USB port.

3) I-format ang SD Card

Buksan ang SD Card Formatter at piliin ang drive.

Mag-click sa format at huwag baguhin ang anumang iba pang mga pagpipilian.

Kapag nakumpleto ang pag-format, mag-click sa OK.

4) Isulat ang OS sa SD Card

Buksan ang win32diskimager.

I-browse ang.img file ng Raspbian OS na nakuha mula sa na-download na file.

Mag-click sa bukas at pagkatapos ay mag-click sa Isulat.

Kung may anumang babala na pop up pagkatapos ay huwag pansinin ang mga sa pamamagitan ng pag-click sa OK. Hintaying makumpleto ang pagsulat at maaaring magtagal ng ilang minuto. Kaya maging matiyaga.

n

5) Kapag tapos na ito, handa na kaming gumawa ng mga huling pagsasaayos bago ilagay ang imahe sa aming RPi.

Pumunta sa direktoryo ng iyong SD card, hanapin ang file na pinangalanang 'cmdline.txt' at buksan ito.

Ngayon idagdag ang 'ip = 169.254.10.1' sa parehong isang linya.

I-save ang file.

Lumikha ng isang file na pinangalanang 'ssh' nang walang extension o nilalaman. (Pinakamadaling paraan ay upang lumikha ng isang txt file at alisin ang.txt pagkatapos)

Ngayon na ang lahat ay naka-install sa SD card maaari mo itong ligtas na palabasin mula sa iyong computer at ilagay ito sa Raspberry Pi TANANG ikonekta ang lakas. Kapag ang SD card ay nasa RPI, ikonekta ang isang LAN cable mula sa iyong computer sa RPi LAN port, sa sandaling nakakonekta ito maaari mong ikonekta ang lakas sa RPi.

Bahagi 2: Pag-configure ng RPi

Putty

Ngayon nais naming i-configure ang aming Raspberry Pi, ginagawa ito sa pamamagitan ng Putty.

Putty software:

Kapag na-download na, buksan ang Putty at ipasok ang IP '169.254.10.1' at Port '22' at uri ng koneksyon: SSH.

Ngayon ay maaari na nating buksan ang aming interface ng command line at mag-login gamit ang impormasyon sa pag-login ng starter -> Gumagamit: pi & Password: raspberry. (Inirerekumenda nito na baguhin ito nang mabilis hangga't maaari. Narito ang isang gabay kung paano:

Raspi-config

Kailangan naming paganahin ang iba't ibang mga interface at upang gawin iyon kailangan muna naming i-type ang sumusunod na code:

sudo raspi-config

Ang mga bagay na kailangan naming paganahin ay nasa seksyon ng interfacing. Kailangan naming paganahin ang mga sumusunod na interface:

  • One-wire
  • Serial
  • I2C
  • SPI

Iyon ang lahat ng kailangan naming gawin sa raspi-config

Pagdaragdag ng iyong WIFI

Una, kailangan mong maging ugat para sa sumusunod na utos na maging ugat

sudo -i

Kapag nag-ugat ka na, gamitin ang sumusunod na utos: (Palitan ang SSID ng iyong pangalan ng network at password ng iyong password sa network)

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

Kung sakaling may nagawa kang mali, maaari mong suriin, i-update o tanggalin ang network na ito sa pamamagitan lamang ng pagpasok ng sumusunod na utos:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Kaya pagkatapos na ipasok ang aming network, ipasok natin ang interface ng WPA client

wpa_cli

Piliin ang iyong interface

interface wlan0

I-reload ang file

muling pag-configure

At sa wakas makikita mo kung nakakonekta ka nang maayos:

ip a

Bahagi 3: Ina-update ang RPi + pag-install ng software

Ngayong nakakonekta na tayo sa internet, ang pag-update ng naka-install na mga pakete ay magiging isang matalinong paglipat, kaya gawin muna natin iyon bago mag-install ng iba pang mga pakete.

sudo apt-get update

sudo apt-get upgrade

Matapos i-update ang RPi kailangan naming i-install ang sumusunod na software:

MariaDB Database

sudo apt-get install mariadb-server

Apache2 Webserver

sudo apt i-install ang apache2

Sawa

update-alternatives --install / usr / bin / python python /usr/bin/python3.7 1 mga alternatibong pag-update - install / usr / bin / python python / usr / bin / python3 2

Pakete ng sawa

Kailangan mong i-install ang lahat ng mga package na ito upang gawing perpekto ang backend:

  • Prasko
  • Flask-Cors
  • Flask-MySql
  • Flask-SocketIO
  • Mga Kahilingan sa PyMySQL
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket

Speaker library

Para sa paggamit ng tagapagsalita na may amplifier kailangan naming mag-install ng isang silid-aklatan para dito

curl -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

Pag-set up ng Database sa RPi!
Pag-set up ng Database sa RPi!

Ngayon na na-install na namin ang lahat ng kailangan namin, ilagay ang aming Database na dinisenyo namin sa aming Raspberry Pi!

Para sa pag-set up ng database magkakaroon kami upang ikonekta ang MySql at RPi. Para doon bubuksan namin ang MySQLWorkbench at gagawa ng isang bagong koneksyon. Kapag tinitingnan ang imahe kailangan mong baguhin upang baguhin ang impormasyon sa iyo.

Kung hindi mo pa nababago ang anumang maaari mong gamitin para sa SSH pi at raspberry, para sa MySQL MySQL at MySQL.

Kapag may isang bagay na hindi malinaw maaari mo ring sundin ang tutorial na ito:

Upang mai-export ang iyong database dapat itong mas madali gamit ang PHPmyAdmin dahil maaari kang makakuha ng maraming mga error sa paggawa nito sa MySql

Hakbang 6: Pag-configure ng Bluetooth sa Aming RPi

Lumilikha kami ng isang Mood speaker, na maaari din naming magamit sa aming sariling musika kaya't mas madali ito kapag ang RPi

conected sa bluetooth Sinundan ko ang isang tutorial para dito na maaari mong makita dito:

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

Sinulat ko ang lahat dito pati na rin para sa lahat na nais na muling likhain ito

Inaalis ang tumatakbo na bluealsa

sudo rm / var / run / bluealsa / *

Magdagdag ng A2DP profile Sink role

sudo bluealsa -p a2dp-sink &

Buksan ang interface ng Bluetooth at paganahin ang iyong bluetooth

Bluetooth power on

Mag-set up ng isang ahente ng pagpapares

ahente sa default-ahente

Gawing matuklasan ang iyong RPi

matuklasan sa

  • Ngayon mula sa iyong aparatong Bluetooth, hanapin ang RPi at kumonekta dito.
  • Kumpirmahin ang pagpapares sa parehong mga aparato, i-type ang 'oo' sa iyong masilya.
  • Pahintulutan ang serbisyo ng A2DP, i-type muli ang 'oo'.
  • Kapag tapos na ito, mapagkakatiwalaan namin ang aming aparato, kaya hindi na namin ito pinagdadaanan tuwing nais naming kumonekta

tiwala XX: XX: XX: XX: XX: XX (Ang iyong blu mac mac address mula sa aming pinagmulang aparato)

Kung nais mong mapanatili ang pagiging tuklas ng iyong RPi, iyon ang iyong sariling pagpipilian, ngunit mas gusto ko itong patayin muli, upang hindi masubukan ng mga tao na kumonekta sa iyong kahon

matutuklasan

Pagkatapos ay makakalabas kami ng aming interface ng Bluetooth

labasan

At sa wakas ang aming audio routing: ang aming pinagmulang aparato na nagpapasa sa aming RPi

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

Ngayon ang aming aparato ay konektado sa aming Raspberry na may bluetooth at dapat mong masubukan ito sa pamamagitan ng pag-play ng anumang media halimbawa ng Spotify, atbp.

Hakbang 7: Pagsulat ng Kumpletong Backend

Kaya't ngayon ang pag-setup ay tapos na, maaari na nating magsimula sa pagsulat ng aming backend program!

Ginamit ko ang Visual Studio Code para sa aking buong backend, kailangan mo lamang tiyakin na ang iyong proyekto sa Visual Studio ay konektado sa iyong Raspberry Pi, nangangahulugan ito na ang iyong LAN cabel ay dapat na konektado sa iyong RPi at upang makagawa ng isang koneksyon sa SSH. (Ang impormasyon sa kung paano lumikha ng isang malayuang koneksyon ay matatagpuan dito:

Gumamit ako ng sarili kong mga klase at lahat din ito ay kasama sa aking GitHub.

Sa aking backend file na ginamit ko ang iba't ibang mga klase, sa gayon ang lahat ay maaaring magamit nang hiwalay at upang ang aking pangunahing code ay hindi gulo sa lahat ng magkakaibang mga thread. Ginamit ko ang threading upang patakbuhin ang lahat ng magkakaibang mga klase nang sabay-sabay. At sa ibaba nakuha mo ang lahat ng mga ruta upang madali kaming makakuha ng data sa aming frontend.

Hakbang 8: Pagsulat ng Frontend (HTML, CSS & JavaScript)

Ngayon na tapos na ang backend, maaari naming simulang isulat ang buong front-end.

Ang HTML at CSS ay medyo mahirap para sa akin ginawa ko ang aking makakaya upang gawin itong mobile muna dahil maaari akong kumonekta dito sa Bluetooth upang baguhin ang mga kanta sa Spotify. Kaya mas madaling kontrolin mula sa isang mobile dashboard

Maaari mong idisenyo ang iyong dashboard sa anumang paraan na nais mong, iiwan ko lamang ang aking code at disenyo dito, maaari mong gawin ang nais mo!

At ang Javascript ay hindi madali para sa akin, nagtrabaho kasama ang ilang mga GET mula sa aking mga ruta sa backend, tone-toneladang tagapakinig ng kaganapan at ilang mga socketio na istraktura upang makuha ang data mula sa aking mga sensor.

Hakbang 9: Pagbubuo ng Aking Kaso at Pagsasama-sama sa Lahat ng Ito

Pagbubuo ng Aking Kaso at Pagsasama-sama sa Lahat ng Ito
Pagbubuo ng Aking Kaso at Pagsasama-sama sa Lahat ng Ito
Pagbubuo ng Aking Kaso at Pagsasama-sama sa Lahat ng Ito
Pagbubuo ng Aking Kaso at Pagsasama-sama sa Lahat ng Ito
Pagbubuo ng Aking Kaso at Pagsasama-sama sa Lahat ng Ito
Pagbubuo ng Aking Kaso at Pagsasama-sama sa Lahat ng Ito
Pagbubuo ng Aking Kaso at Pagsasama-sama sa Lahat ng Ito
Pagbubuo ng Aking Kaso at Pagsasama-sama sa Lahat ng Ito

Sinimulan ko muna ang pag-sketch kung paano ko nais na tingnan ang kaso, isang bagay na mahalaga ay dapat sapat na malaki para sa lahat upang magkasya, dahil nakakuha kami ng isang malaking circuit upang ilagay sa kaso ngunit kailangang manatiling compact upang hindi ito ' t kumuha ng maraming espasyo

Ginawa ko ang kaso sa kahoy, sa palagay ko ito ang pinakamadaling magtrabaho kapag wala kang gaanong karanasan sa mga kaso ng pagbuo at mayroon ka ding maraming mga bagay na magagawa mo dito.

Nagsimula ako mula sa isang matandang tabla na inilatag ko at nagsimula na lang akong magbas ng kahoy. Kapag nagkaroon ako ng aking pangunahing kaso, kailangan ko lamang mag-drill ng mga butas dito (maraming sa harap ng kaso, tulad ng nakikita mo sa mga larawan at naglagay ng ilang mga kuko dito, ito ay talagang pangunahing kaso, ngunit mukhang cool ito at ganap na magkasya. Napagpasyahan ko din na pintahan ito ng puti upang ito ay magmukhang maganda.

At sa sandaling tapos na ang kaso, oras na upang pagsamahin ang lahat, tulad ng nakikita mo sa huling larawan! Ito ay isang gulo sa loob ng kahon, ngunit ang lahat ay gumagana at wala akong gaanong mas maraming puwang, kaya pinapayuhan ko kayo na baka lumikha ng isang mas malaking kaso kung muling nililikha mo ang aking proyekto.

Inirerekumendang: