Мазмуну:

Маанай спикери- Абанын температурасына негизделген маанай музыкасы үчүн күчтүү динамик: 9 кадам
Маанай спикери- Абанын температурасына негизделген маанай музыкасы үчүн күчтүү динамик: 9 кадам

Video: Маанай спикери- Абанын температурасына негизделген маанай музыкасы үчүн күчтүү динамик: 9 кадам

Video: Маанай спикери- Абанын температурасына негизделген маанай музыкасы үчүн күчтүү динамик: 9 кадам
Video: Загадка Титаника : Как они могли не заметить айсберг?! Самая подробная история! 2024, Июль
Anonim
Маанай спикери- Абанын температурасына негизделген маанай музыкасы үчүн күчтүү динамик
Маанай спикери- Абанын температурасына негизделген маанай музыкасы үчүн күчтүү динамик

Эй!

MCT Howest Kortrijk мектебиндеги менин долбоорум үчүн, мен маанай спикери кылдым, бул - ар кандай сенсорлору бар, ЖК жана WS2812b лентасы бар акылдуу Bluetooth спикери, спикер температурага негизделген фондук музыканы ойнойт, бирок аны кадимки Bluetooth катары да колдонсо болот баяндамачы Бардыгы Raspberry Piде иштейт (маалымат базасы, вебсервер, Backend).

Ошентип, бул көрсөтмө 3 жуманын ичинде бул долбоорду кантип ишке ашырганымды этап -этабы менен көрсөтүп турат. Андыктан, эгер сиздер менин долбоорумду кайра жаратууну кааласаңыздар, жетектемени ээрчип алсаңыздар болот

Бул менин эң биринчи жазганым, эгерде кандайдыр бир көйгөйлөр болсо, мен аларга мүмкүн болушунча тезирээк жооп берүүгө аракет кылам!

Менин GitHub:

1 -кадам: Берилиштер

Raspberry Pi 3B жана 16 ГБ SD карта

Менин бүт проектим Raspberry Pi 3Bде конфигурацияланган сүрөт менен иштейт, мен аны кийинки кадамда түшүндүрөм (4 -кадам: Raspberry Pi орнотуу)

ЖК дисплей 16х2

Мен температурамды, жарыктыгымды жана IP дарегимди басып чыгаруу үчүн негизги ЖК дисплейди колдондум.

Маалымат жадыбалы:

DS18B20 температура сенсору

DS18B20-бул температураны өлчөгөн бир зымдуу сенсор, Maxim Integrated тарабынан чыгарылган. DS18B20 сенсорлорунун 2 түрү бар, бир гана компоненти (мен колдонгон) жана суу өткөрбөй турган версиясы, андан чоңураак, бирок бул менин проектиме керектүү нерсе эмес, ошондуктан мен компонентти гана колдондум. Сенсор температураны -55 ° Cдан +125 ° C (-67 ° F - +257 ° F) диапазонунда өлчөй алат жана ал 0,5 ° C -10 ° Cден +85 ° C чейин тактыкка ээ. Ошондой эле 9 биттен 12 битке чейин программалоочу токтому бар.

Маалымат жадыбалы:

MCP3008

Менин LDR жана PIR-сенсорумдан маалыматтарды окуу үчүн мен SPCP интерфейси бар санариптик конверторго 8 каналдуу 10 бит аналогу болгон MCP3008ди колдондум жана программалоо абдан оңой.

Маалымат жадыбалы:

PIR кыймыл сенсору

Кимдир бирөө бөлмөмө кирип -чыгып жатканын аныктоо үчүн мен пассивдүү инфракызыл сенсорун колдондум, анткени алар колдонууга оңой жана кичинекей.

Маалымат жадыбалы:

LDR

Мен фоторезисторду же LDRди (Жарыктын төмөндөшү каршылыгы же жарыкка көз каранды каршылыгын) бөлмөнүн жарыктыгын аныктоо үчүн колдондум. Ledstripти караңгыда күйгүзүү үчүн.

Динамик - 3”Диаметри - 4 Ом 3 Ватт

Бул керектүү болгон чыңалууну жана амперди эсептеп чыккандан кийин тандап алган спикердин конусу жана бул менин Adafruit тарабынан чыгарылган Raspberry Pi долбоорума эң ылайыктуу болгон.

Обзор:

MAX98357 I2S Class-D моно күчөткүч

Бул динамик менен келген күчөткүч, ал күчөткүч гана эмес, I2S санариптен аналогдук которгуч, ошондуктан менин динамигиме жана аудио тутумума эң сонун шайкеш келет.

Обзор:

Маалымат жадыбалы:

Arduino Uno

Arduino Uno-бул Arduino.cc тарабынан чыгарылган Microchip ATmega328P микроконтроллерине негизделген ачык булак микроконтроллер тактасы. Uno тактасында 14 санарип казык, 6 аналогдук төөнөгүч бар жана Arduino IDE программасы менен толук программаланат.

Обзор:

Levelshifter

Бул Arduino Uno менен Raspberry Pi ортосундагы байланышка жана ар кандай чыңалууга кам көргөн кичинекей такта, Arduino: 5V & Raspberry Pi: 3.3V. Бул керектелет, анткени LED тилкеси Arduino менен туташкан жана ал жерде иштейт, калган нерселердин баары Raspberry Piде иштейт.

WS2812B - Ledstrip

Бул 60 RGB светодиоддору бар LED тилкеси (эгер кааласаңыз, көбүрөөк RGB лед менен узун тилкелерди сатып алсаңыз болот). Бул менин учурда Arduino Uno менен байланышкан, бирок башка көптөгөн түзмөктөргө туташтырылышы мүмкүн жана колдонууга абдан жөнөкөй.

Маалыматтар жадыбалы:

GPIO T-Part, 1 Breadboard жана jumperwires көп

Мага керектүү нерселердин бардыгын туташтыруу үчүн, мен GPIO T-бөлүгүн колдонгон жокмун, бирок сиз аны кайсы куту кайда баратканын так билүү үчүн колдоно аласыз.

2 -кадам: Схема жана зымдар

Схема жана электр өткөргүчтөрү
Схема жана электр өткөргүчтөрү
Схема жана электр өткөргүчтөрү
Схема жана электр өткөргүчтөрү

Менин схемамды түзүү үчүн мен Fritzingди колдондум, бул сиз орното ала турган программа, ал сизге ар кандай көрүнүштөрдө чынында эле оңой схеманы түзүүгө мүмкүндүк берет.

Fritzingди жүктөп алыңыз:

Баары туура туташканын текшериңиз. Мен зымдарды кайда туташтыруу керек экенин билүү үчүн түстөрдү колдондум. Менин учурда мен зымдар үчүн ар кандай түстөрдү колдондум

3 -кадам: Маалыматтар базасынын дизайны

Маалыматтар базасынын дизайны
Маалыматтар базасынын дизайны

Биз 3 сенсордон көп маалыматтарды чогултуп жатабыз (DS18B20дан температура, LDRден жарыктык жана PIR-сенсордон абал). Ошентип, бул маалыматтардын бардыгын маалымат базасында сактоо эң жакшы. Мен маалымат базасын кантип конфигурациялоо керектигин кийинки кадамда түшүндүрөм (5 -кадам: Биздин маалымат базабызды RPiге илгерилетүү!) Бирок адегенде дизайн же ERD (Entity Relationship Diagram) жасалышы керек. Меники 3NF менен нормалдаштырылган, ошондуктан биз компоненттерди жана компоненттердин тарыхын башка столго бөлдүк. Биз угулган ырларды көзөмөлдөө үчүн Music маалымат базасын колдонобуз.

Жалпысынан, бул чындыгында базалык жана оңой иштөө үчүн базанын дизайны.

4 -кадам: Raspberry Pi орнотуу

Ошентип, азыр биз долбоордун кээ бир негиздерин аткардык. Келгиле, Raspberry Pi орнотууну баштайлы!

1 -бөлүк: SD картасын конфигурациялоо

1) Керектүү программалык камсыздоону жана файлдарды жүктөп алыңыз

Бул толук процесс үчүн 2 программалык камсыздоону жана 1 ОС, башкача айтканда Raspbian жүктөп алышыңыз керек.1st программалык камсыздоо: Биринчи программа Win32 Disk Imager.

sourceforge.net/projects/win32diskimager/

Экинчи программалык камсыздоо: Экинчи программалык камсыздоо - SD Card Formatter.

www.sdcard.org/downloads/formatter_4/

Raspbian OS: Бул Piнин негизги операциялык тутуму.

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

Бардык файлдарды столго алыңыз.

2) SD картаны жана картты окуу куралын алыңыз

Минималдуу 8GB класстагы 10 SD картаны карта окугуч менен алыңыз. Ошол картаны картты окуучуга салып, USB портуна сайыңыз.

3) SD картаны форматтаңыз

SD картаны форматтоочу программасын ачып, дискти тандаңыз.

Форматты чыкылдатыңыз жана башка параметрлерди өзгөртпөңүз.

Форматтоо аяктагандан кийин, чыкылдатыңыз ОК.

4) ОСту SD картага жазыңыз

Win32diskimager ачуу.

Жүктөлүп алынган файлдан алынган Raspbian OSтин.img файлын карап чыгыңыз.

Ачуу баскычын чыкылдатыңыз жана Жазуу.

Эгерде кандайдыр бир эскертүү пайда болсо, анда ОК басуу менен аларды этибарга албаңыз. Жазуунун бүтүшүн күтө туруңуз жана бир нече мүнөт талап кылынышы мүмкүн. Андыктан сабырдуу болуңуз.

п

5) Бул бүткөндөн кийин, биз сүрөттү биздин RPiге киргизүүдөн мурун, акыркы өзгөртүүлөрдү киргизүүгө даярбыз.

SD картаңыздын директориясына өтүңүз, "cmdline.txt" деп аталган файлды издеп ачыңыз.

Эми ошол эле сапка 'ip = 169.254.10.1' кошуңуз.

Файлды сактаңыз.

Кеңейтүүсүз же мазмунсуз "ssh" аттуу файл түзүңүз. (Эң оңой жолу - txt файлын түзүү жана.txt кийин алып салуу)

Азыр баары SD картага орнотулгандыктан, сиз аны компьютериңизден КАФИЗА чыгарып, кубаттуулукту туташтырбай туруп Raspberry Pi ичине коё аласыз. SD карта RPIге киргенден кийин, компьютериңизден LAN кабелин RPi LAN портуна туташтырыңыз, бул туташкандан кийин сиз RPiге туташтыра аласыз.

2 -бөлүк: RPi конфигурациялоо

Putty

Эми биз Raspberry Pi'ди конфигурациялагыбыз келет, бул Putty аркылуу жасалат.

Putty программалык камсыздоо:

Жүктөлгөндөн кийин, Putty программасын ачыңыз жана IP '169.254.10.1' жана Порт '22' жана туташуу түрүн киргизиңиз: SSH.

Эми биз акыры командалык сап интерфейсибизди ача алабыз жана башталгыч логин маалыматы менен кире алабыз -> Колдонуучу: pi & Сырсөз: малина. (Аны мүмкүн болушунча тезирээк өзгөртүү сунушталат. Бул жерде кантип көрсөтмө бар:

Raspi-config

Биз ар кандай интерфейстерди иштетишибиз керек жана муну үчүн адегенде төмөнкү кодду теришибиз керек:

sudo raspi-config

Биз иштетүүбүз керек болгон нерселер интерфейс бөлүмүндө. Биз төмөнкү интерфейстерди иштетишибиз керек:

  • Бир зым
  • Сериялык
  • I2C
  • SPI

Бул raspi-config менен эмне кылышыбыз керек эле

WIFI кошулууда

Биринчиден, сиз төмөнкү буйруктун тамыры болуш үчүн тамыры болушуңуз керек

sudo -i

Сиз тамыр болгондон кийин, төмөнкү буйрукту колдонуңуз: (SSIDди тармагыңыздын атын жана сырсөзүңүздү тармактык сырсөзүңүз менен алмаштырыңыз)

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

Туура эмес бир нерсе кылган болсоңуз, төмөнкү тармакты текшерип, жаңыртып же жок кыла аласыз:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Ошентип, биздин тармакка киргенден кийин, WPA кардар интерфейсине кирели

wpa_cli

Интерфейсти тандаңыз

wlan0 интерфейси

Файлды кайра жүктөңүз

кайра конфигурациялоо

Акыры сиз жакшы туташып турганыңызды көрө аласыз:

ip a

3 -бөлүк: RPi + орнотуу программасын жаңыртуу

Эми биз интернетке туташкандан кийин, буга чейин орнотулган пакеттерди жаңыртуу акылдуу кадам болмок, андыктан башка пакеттерди орнотуудан мурун муну жасайбыз.

sudo apt-get update

sudo apt-get жогорулатуу

RPi жаңырткандан кийин биз төмөнкү программаны орнотушубуз керек болот:

MariaDB маалымат базасы

sudo apt-get mariadb-серверин орнотуңуз

Apache2 Webserver

sudo apt install apache2

Python

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

Python пакети

Арткы жактагы кемчиликсиз иштөө үчүн бул пакеттердин бардыгын орнотушуңуз керек болот:

  • Колба
  • Flask-Cors
  • Flask-MySql
  • Flask-SocketIO
  • PyMySQL сурамдары
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket

Баяндамачынын китепканасы

Динамикти күчөткүч менен колдонуу үчүн ага китепкана орнотушубуз керек болот

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

Маалыматтар базасын RPiге орнотуу!
Маалыматтар базасын RPiге орнотуу!

Эми биз керектүү нерселердин бардыгын орноткон соң, келгиле, өзүбүздүн маалымат базабызды Raspberry Piге орнотолу!

Маалыматтар базасын орнотуу үчүн биз MySql жана RPi менен туташышыбыз керек болот. Бул үчүн биз MySQLWorkbenchти ачып, жаңы байланыш түзөбүз. Сүрөттү карап жатканда маалыматты сиздикине өзгөртүү үчүн өзгөртүүгө туура келет.

Эгерде сиз эч нерсени өзгөртө элек болсоңуз, анда SSH pi жана малина үчүн, MySQL mysql жана mysql үчүн колдонсоңуз болот.

Бир нерсе түшүнүксүз болгондо, сиз дагы бул окуу куралын ээрчип алсаңыз болот:

Маалымат базаңызды экспорттоо үчүн PHPmyAdminди колдонуу оңой болушу керек, анткени сиз MySql менен көп ката кетире аласыз.

6 -кадам: Биздин RPiде Bluetoothду конфигурациялоо

Биз Mood спикерин түзүп жатабыз, аны өзүбүздүн музыкабыз менен да колдоно алабыз, ошондуктан RPi болгондо бул оңой болот

блютузга туташкан, мен аны бул жерден таба турган окуу куралын ээрчидим:

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

Мен бул жерге баарын кайра жазууну каалагандар үчүн жаздым

Буга чейин иштеп жаткан блюсаланы алып салуу

sudo rm/var/run/bluealsa/*

A2DP профилин Чөгүү ролун кошуңуз

sudo bluealsa -p a2dp -sink &

Bluetooth интерфейсин ачыңыз жана Bluetooth күйгүзүңүз

bluetoothctl күйгүзүү

Жупташтыруу агентин орнотуңуз

демейки агент боюнча агент

Сиздин RPi табылгыс кылыңыз

ачылышы мүмкүн

  • Эми Bluetooth түзмөгүңүздөн RPi издеп, аны менен туташыңыз.
  • Эки түзмөктө теңдештирүүнү ырастаңыз, шыбагыңызга "ооба" деп териңиз.
  • A2DP кызматына уруксат бериңиз, кайра "ооба" деп териңиз.
  • Муну аяктагандан кийин, биз өзүбүздүн түзмөгүбүзгө ишене алабыз, андыктан биз туташкысы келген сайын бул аркылуу өтүүнүн кажети жок

ишеним XX: XX: XX: XX: XX: XX (Биздин bluetooth mac дарегиңиз биздин булактан)

Эгерде сиз RPiңиздин ачылышын улантууну кааласаңыз, бул сиздин жеке тандооңуз, бирок мен аны кайра өчүрүүнү туура көрөм, андыктан адамдар сиздин кутуңузга туташууга аракет кыла алышпайт

табууга болот

Андан кийин биз Bluetooth интерфейсинен чыга алабыз

чыгуу

Акыры биздин аудио маршрутубуз: биздин булак түзмөгү биздин RPiге багытталат

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

Азыр биздин түзмөк биздин Малинага bluetooth менен туташкан жана сиз аны каалаган медианы ойнотуу менен сынап көрүшүңүз керек, мисалы Spotify ж.

7 -кадам: Толук Backend жазуу

Ошентип, азыр орнотуу аяктады, биз акыры биздин арткы программаны жаза баштайбыз!

Мен Visual Studio кодун бүт колдо колдондум, сиз болгону Visual Studio долбооруңуз Raspberry Pi менен туташкандыгын текшеришиңиз керек, бул сиздин LAN кабелиңиздин RPi менен туташуусу жана SSH туташуусу үчүн керек. (алыстан туташууну кантип түзүү жөнүндө маалыматты бул жерден тапса болот:

Мен өзүмдүн класстарымды колдондум, мунун баары менин GitHubга киргизилген.

Менин арткы файлымда мен ар кандай класстарды колдондум, ошондуктан бардыгын өзүнчө колдонсо болот жана менин негизги кодум бардык башка темалар менен баш аламан болбойт. Мен ар кандай класстарды бир убакта иштетүү үчүн жипти колдондум. Ал эми түбүндө сиз бардык маршруттарды алдыңыз, андыктан биз фронттон маалыматтарды оңой ала алабыз.

8 -кадам: Frontend жазуу (HTML, CSS жана JavaScript)

Эми арткы аяктагандан кийин, биз толук фронталдык жазууну баштай алабыз.

HTML жана CSS мен үчүн абдан кыйын болду, мен аны мобилдик кылуу үчүн болгон күчүмдү жумшадым, анткени Spotify менен ырларды өзгөртүү үчүн Bluetooth менен туташа алам. Ошентип, мобилдик тактадан көзөмөлдөө оңой болмок

Сиз өзүңүздүн каалооңуз боюнча панелиңизди жасай аласыз, мен жөн эле кодумду жана дизайнымды ушул жерге калтырам, сиз каалаганыңызды жасай аласыз!

Жаваскрипт мен үчүн оңой болгон жок, менин сенсорлорумдан маалыматтарды алуу үчүн, менин маршруттарымдагы бир нече GET менен, көптөгөн иш -чараларды угуучулар менен жана кээ бир сокетио структуралары менен иштедим.

9 -кадам: Менин ишимди куруп, баарын бириктирүү

Менин ишимди куруп, баарын бириктирүү
Менин ишимди куруп, баарын бириктирүү
Менин ишимди куруп, баарын бириктирүү
Менин ишимди куруп, баарын бириктирүү
Менин ишимди куруп, баарын бириктирүү
Менин ишимди куруп, баарын бириктирүү
Менин ишимди куруп, баарын бириктирүү
Менин ишимди куруп, баарын бириктирүү

Мен алгач корпустун кандайча каралышын каалаганымдын эскизин баштадым, маанилүү нерсе - бул бардык нерсеге туура келиши үчүн чоң болушу керек болчу, анткени бизде чоң схема бар, бирок биз аны чакан бойдон калтырышыбыз керек болчу. көп орун албайт

Мен корпусту жыгачтан жасадым, менимче, эгерде сизде корпустарды куруу боюнча көп тажрыйбаңыз жок болсо жана аны менен кыла турган нерселериңиз көп болсо, иштөө эң оңой.

Мен тегеректеп турган эски тактайдан баштагам жана жыгачты араалай баштадым. Негизги корпусумду алгандан кийин, анын тешиктерин бурушум керек болчу (корпустун алдыңкы бетинде көп, сүрөттөрдө көрүп тургандай жана ага мыктарды салыңыз, бул чындыгында негизги корпус, бирок ал абдан сонун көрүнөт жана идеалдуу келет. Мен аны жакшы көрүнүшү үчүн ак түскө боёууну чечтим.

Жана бул иш бүткөндөн кийин, акыркы сүрөттө көрүнүп тургандай, баарын чогултуу убактысы келди! Бул кутучанын ичинде кандайдыр бир баш аламандык, бирок баары иштейт жана менде анчалык бош орун жок болчу, ошондуктан мен сизге долбоорумду кайра жаратып жатсаңыз, чоңураак корпус түзүүнү сунуштайм.

Сунушталууда: