Мазмуну:
- 1 -кадам: Берилиштер
- 2 -кадам: Схема жана зымдар
- 3 -кадам: Маалыматтар базасынын дизайны
- 4 -кадам: Raspberry Pi орнотуу
- Step 5: Setting Up the Database to the RPi
- 6 -кадам: Биздин RPiде Bluetoothду конфигурациялоо
- 7 -кадам: Толук Backend жазуу
- 8 -кадам: Frontend жазуу (HTML, CSS жана JavaScript)
- 9 -кадам: Менин ишимди куруп, баарын бириктирүү
Video: Маанай спикери- Абанын температурасына негизделген маанай музыкасы үчүн күчтүү динамик: 9 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:36
Эй!
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
Эми биз керектүү нерселердин бардыгын орноткон соң, келгиле, өзүбүздүн маалымат базабызды 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 -кадам: Менин ишимди куруп, баарын бириктирүү
Мен алгач корпустун кандайча каралышын каалаганымдын эскизин баштадым, маанилүү нерсе - бул бардык нерсеге туура келиши үчүн чоң болушу керек болчу, анткени бизде чоң схема бар, бирок биз аны чакан бойдон калтырышыбыз керек болчу. көп орун албайт
Мен корпусту жыгачтан жасадым, менимче, эгерде сизде корпустарды куруу боюнча көп тажрыйбаңыз жок болсо жана аны менен кыла турган нерселериңиз көп болсо, иштөө эң оңой.
Мен тегеректеп турган эски тактайдан баштагам жана жыгачты араалай баштадым. Негизги корпусумду алгандан кийин, анын тешиктерин бурушум керек болчу (корпустун алдыңкы бетинде көп, сүрөттөрдө көрүп тургандай жана ага мыктарды салыңыз, бул чындыгында негизги корпус, бирок ал абдан сонун көрүнөт жана идеалдуу келет. Мен аны жакшы көрүнүшү үчүн ак түскө боёууну чечтим.
Жана бул иш бүткөндөн кийин, акыркы сүрөттө көрүнүп тургандай, баарын чогултуу убактысы келди! Бул кутучанын ичинде кандайдыр бир баш аламандык, бирок баары иштейт жана менде анчалык бош орун жок болчу, ошондуктан мен сизге долбоорумду кайра жаратып жатсаңыз, чоңураак корпус түзүүнү сунуштайм.
Сунушталууда:
Мистер Динамик - 3D Басылган DSP Портативдик Динамик: 9 Кадам (Сүрөттөр менен)
Мырза спикер - 3D Басылган DSP Портативдик Спикери: Менин атым Саймон Эштон жана мен көп жылдар бою, адатта, жыгачтан көптөгөн динамиктерди кургам. Мен өткөн жылы 3D принтер алдым, ошондуктан мен 3D басып чыгарууга мүмкүн болгон уникалдуу дизайн эркиндигин чагылдырган нерсени жараткым келди. Мен ойной баштадым
Raspberry Pi үчүн CPU температурасына негизделген PWM жөнгө салынган күйөрман: 4 кадам (сүрөттөр менен)
Rawberry Pi үчүн CPU температурасына негизделген PWM жөнгө салынган күйөрман: Raspberry Pi үчүн көптөгөн учурлар CPUны муздатууга жардам берүү үчүн бир аз 5V желдеткич менен келет. Бирок, бул күйөрмандар, адатта, абдан ызы -чуу болушат жана көп адамдар ызы -чууну басаңдатуу үчүн 3V3 төөнөгүчүнө сайышат. Бул күйөрмандар адатта 200 мА үчүн бааланат, бул абдан жакшы
Ардуиного негизделген байланышсыз инфракызыл термометр - IR негизделген термометр Arduino колдонуу: 4 кадам
Ардуиного негизделген байланышсыз инфракызыл термометр | IR негизделген термометр Arduino колдонуу: Салам балдар бул көрсөтмөлөрдө биз ардуинону колдонобуз. ошол сахнада температура
Аба ырайына негизделген музыка генератору (ESP8266 негизделген Midi генератору): 4 кадам (сүрөттөр менен)
Аба ырайына негизделген музыка генератору (ESP8266 негизделген Midi генератору): Саламатсызбы, мен бүгүн өзүңүздүн кичинекей аба ырайына негизделген музыкалык генераторду кантип жасоону түшүндүрүп берем. жана жарыктын интенсивдүүлүгү. Бул бүтүндөй ырларды же аккорд программасын түзөт деп күтпөңүз
Кантип жөнөкөй жана күчтүү туткасын башкаргычты чогултуу керек- Микро негизделген: Бит: 10 кадам (Сүрөттөр менен)
Кантип жөнөкөй жана күчтүү туткаларды башкаргычты чогултуу керек- Микро негизделген: Бит: туткасынын аты Handlebit.The формасы туткасы жана абдан сонун көрүнөт! Эми биз Handlebit жөнүндө киришүү жасай алабыз, ага өтөлү