Mundarija:

Kayfiyat dinamikasi- Atrof muhit haroratiga qarab kayfiyatli musiqani ijro etadigan kuchli dinamik: 9 qadam
Kayfiyat dinamikasi- Atrof muhit haroratiga qarab kayfiyatli musiqani ijro etadigan kuchli dinamik: 9 qadam

Video: Kayfiyat dinamikasi- Atrof muhit haroratiga qarab kayfiyatli musiqani ijro etadigan kuchli dinamik: 9 qadam

Video: Kayfiyat dinamikasi- Atrof muhit haroratiga qarab kayfiyatli musiqani ijro etadigan kuchli dinamik: 9 qadam
Video: INSONLAR SIZNI HURMAT QILISHI VA SIZGA QULOQ SOLISHLARINI XOHLAYSIZMI ? 2024, Iyul
Anonim
Kayfiyat dinamikasi- Atrof-muhit haroratiga qarab kayfiyatli musiqani ijro etish uchun kuchli dinamik
Kayfiyat dinamikasi- Atrof-muhit haroratiga qarab kayfiyatli musiqani ijro etish uchun kuchli dinamik

Salom!

MCT Howest Kortrijk -dagi maktab loyihasi uchun men Mood dinamikini yaratdim, bu turli xil sensorli, LCD va WS2812b lentali, aqlli Bluetooth dinamikli qurilma. Karnay haroratga qarab fon musiqasini ijro etadi, lekin uni oddiy bluetooth sifatida ham ishlatish mumkin. ma'ruzachi Hammasi Raspberry Pi -da ishlaydi (ma'lumotlar bazasi, veb -server, Backend).

Shunday qilib, men bu loyihani 3 hafta ichida qanday amalga oshirganimning bosqichma -bosqich ko'rsatmasi. Shunday qilib, agar siz mening loyihamni qayta tiklamoqchi bo'lsangiz, ko'rsatmaga amal qilishingiz mumkin

Bu ko'rsatma - bu mening birinchi yozganim, shuning uchun agar biron bir muammo bo'lsa, men ularga iloji boricha tezroq javob berishga harakat qilaman!

Mening GitHub:

1 -qadam: materiallar

Raspberry Pi 3B va 16 Gb SD -karta

Mening butun loyiham Raspberry Pi 3B -da sozlangan tasvir bilan ishlaydi, men buni keyingi bosqichda tushuntiraman (4 -qadam: Raspberry Pi -ni sozlash)

LCD displey 16x2

Men harorat, nashrida va IP manzilimni chop etish uchun asosiy LCD displeydan foydalandim.

Ma'lumotlar jadvali:

DS18B20 harorat sensori

DS18B20-haroratni o'lchaydigan bitta simli sensor, Maxim Integrated tomonidan ishlab chiqarilgan. DS18B20 datchiklarining 2 turi mavjud, faqat komponenti (men ishlatganman) va suv o'tkazmaydigan versiya, bu ancha katta, lekin bu mening loyiham uchun kerak bo'lgan narsa emas, shuning uchun men faqat komponentdan foydalandim. Sensor haroratni -55 ° C dan +125 ° C gacha (-67 ° F dan +257 ° F gacha) o'lchashi mumkin va aniqligi -10 ° C dan +85 ° C gacha 0,5 ° S gacha. Bundan tashqari, 9 bitdan 12 bitgacha programlanadigan piksellar soniga ega.

Ma'lumotlar jadvali:

MCP3008

LDR va PIR sensori ma'lumotlarini o'qish uchun men MCP3008-dan foydalandim, u 8 kanalli 10-bitli SPI interfeysli raqamli konvertor va dasturlash uchun juda oson.

Ma'lumotlar jadvali:

PIR harakat sensori

Kimdir mening xonamga kirayotganini yoki chiqayotganini aniqlash uchun men passiv infraqizil sensorni ishlatardim, chunki ulardan foydalanish oson va kichik.

Ma'lumotlar jadvali:

LDR

Xonaning yorug'lik darajasini aniqlash uchun men fotorezistor yoki LDR (Yorug'likni pasaytiruvchi qarshilik yoki nurga bog'liq qarshilik) dan foydalanardim. Ledstripni qorong'i bo'lganda yoqish uchun.

Karnay - 3 "diametri - 4 Ohm 3 Vatt

Bu men kerak bo'ladigan kuchlanish va amperlarni hisoblagandan so'ng tanlagan karnay konusidir va bu mening Adafruit tomonidan ishlab chiqarilgan Raspberry Pi loyihamga juda mos keladi.

Umumiy ma'lumot:

MAX98357 I2S Class-D mono kuchaytirgich

Bu karnay bilan birga keladigan kuchaytirgich, bu nafaqat kuchaytirgich, balki I2S raqamli -analogli konvertor, shuning uchun u karnay va audio tizimim uchun juda mos keladi.

Umumiy nuqtai:

Ma'lumotlar jadvali:

Arduino Uno

Arduino Uno-bu Arduino.cc tomonidan ishlab chiqarilgan Microchip ATmega328P mikrokontrolleriga asoslangan ochiq manbali mikrokontroller taxtasi. Uno taxtasida 14 ta raqamli pin, 6 ta analog pin bor va Arduino IDE dasturi bilan to'liq dasturlashtirilgan.

Umumiy ma'lumot:

Darajani o'zgartirish

Bu Arduino Uno va Raspberry Pi o'rtasidagi aloqa va Arduino: 5V va Raspberry Pi: 3.3V turli xil kuchlanishlari bilan shug'ullanadigan kichik taxta. Bu kerak, chunki LED chizig'i Arduino -ga ulangan va u erda ishlaydi, qolganlari esa Raspberry Pi -da ishlaydi.

WS2812B - Led chizig'i

Bu 60 RGB svetodiodli chiziqli chiziq (agar xohlasangiz, ko'proq RGB svetodiodli uzunroq chiziqlar sotib olishingiz mumkin). Bu mening holatimda Arduino Uno -ga ulangan, lekin uni boshqa ko'plab qurilmalarga ulash mumkin va ulardan foydalanish juda oddiy.

Ma'lumotlar jadvali:

GPIO T-qismi, 1 ta taxtali va ko'plab o'tish simlari

Menga kerak bo'lgan hamma narsani ulash paneli va o'tish simlari uchun men GPIO T-qismini ishlatmadim, lekin siz uni qaysi quti qayerga ketishini aniq bilib olishingiz mumkin.

2 -qadam: sxemalar va simlar

Sxemalar va simlar
Sxemalar va simlar
Sxemalar va simlar
Sxemalar va simlar

Men sxemani tuzish uchun Fritzing -dan foydalandim, bu siz o'rnatishingiz mumkin bo'lgan dastur bo'lib, u sizga har xil ko'rinishda juda oson sxemani yaratishga imkon beradi.

Fritzing -ni yuklab oling:

Hamma narsa to'g'ri ulanganligiga ishonch hosil qiling. Men simlarni qaerga ulash kerakligini bilish uchun ranglardan foydalanardim. Mening holatimda simlar uchun turli xil ranglardan foydalanardim

3 -qadam: ma'lumotlar bazasini loyihalash

Ma'lumotlar bazasi dizayni
Ma'lumotlar bazasi dizayni

Biz 3 ta sensordan (DS18B20 dan harorat, LDR-dan yorqinlik va PIR-sensordan holat) juda ko'p ma'lumotlarni to'playapmiz. Shunday qilib, barcha ma'lumotlarni ma'lumotlar bazasida saqlash yaxshidir. Ma'lumotlar bazasini qanday sozlash kerakligini keyingi bosqichda tushuntiraman (5 -qadam: Ma'lumotlar bazamizni RPi -ga yo'naltirish!) Lekin avval dizayn yoki ERD (shaxslar bilan munosabatlar diagrammasi) tuzilishi kerak. Meniki 3NF bilan normallashdi, shuning uchun biz komponentlar va komponentalar tarixini boshqa jadvalga ajratdik. Biz Musiqa ma'lumotlar bazasidan tinglangan qo'shiqlarni kuzatib borish uchun foydalanamiz.

Umuman olganda, bu ma'lumotlar bazasi dizayni bilan ishlash uchun juda oddiy.

4 -qadam: Raspberry Pi -ni o'rnating

Shunday qilib, endi biz loyihaning ba'zi asoslarini tayyorladik. Raspberry Pi -ni o'rnatishni boshlaylik!

1 -qism: SD -kartani sozlash

1) Kerakli dastur va fayllarni yuklab oling

Bu to'liq jarayon uchun 2 ta dasturiy ta'minot va 1 ta operatsion tizimni, ya'ni Raspbian -ni yuklab olishingiz kerak.1 -dasturiy ta'minot: Birinchi dastur - Win32 Disk Imager.

sourceforge.net/projects/win32diskimager/

Ikkinchi dasturiy ta'minot: Ikkinchi dasturiy ta'minot - SD -kartani formatlash.

www.sdcard.org/downloads/formatter_4/

Raspbian OS: Bu Pi -ning asosiy operatsion tizimi.

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

Barcha fayllarni ish stoliga chiqarib oling.

2) SD -kartani va o'qish kartasini oling

Kartani o'qish moslamasi bilan kamida 8 Gb sinf 10 SD -kartani oling. Kartani o'quvchiga joylashtiring va USB portiga ulang.

3) SD -kartani formatlash

SD -kartani formatlashni oching va drayverni tanlang.

Formatni bosing va boshqa variantlarni o'zgartirmang.

Formatlashtirish tugallangach, OK ni bosing.

4) SD -kartaga OS yozing

Win32diskimager -ni oching.

Yuklangan fayldan olingan Raspbian OS.img faylini ko'rib chiqing.

Ochish -ni bosing va keyin Yozish -ni bosing.

Agar biron bir ogohlantirish paydo bo'lsa, "OK" tugmasini bosish orqali ularni e'tiborsiz qoldiring. Yozish tugashini kuting va bir necha daqiqa o'tishi mumkin. Shuning uchun sabr qiling.

n

5) Bu bajarilgandan so'ng, biz tasvirni RPi -ga joylashtirishdan oldin ba'zi yakuniy o'zgartirishlar kiritishga tayyormiz.

SD -kartangiz katalogiga o'ting, "cmdline.txt" nomli faylni toping va oching.

Endi bitta qatorga 'ip = 169.254.10.1' qo'shing.

Faylni saqlang.

"Ssh" nomli faylni kengaytma va kontentsiz yarating. (Eng oson yo'li - txt faylini yaratish va keyin.txtni olib tashlash)

Hamma narsa SD -kartaga o'rnatilgandan so'ng, siz uni kompyuterdan XAVFSIZLIK bilan chiqarib olishingiz va Raspberry Pi -ga quvvatni ulamasdan qo'yishingiz mumkin. SD -karta RPI -ga kirgandan so'ng, kompyuterdan LAN kabelini RPi -LAN portiga ulang, ulangandan so'ng siz quvvatni RPi -ga ulashingiz mumkin.

2 -qism: RPi -ni sozlash

Macun

Endi biz Raspberry Pi -ni sozlamoqchimiz, bu Putty orqali amalga oshiriladi.

Putty dasturi:

Yuklab olingandan so'ng, Putty -ni oching va "169.254.10.1" IP va "22" portini va ulanish turini kiriting: SSH.

Endi biz nihoyat buyruq satri interfeysini ochib, boshlang'ich login ma'lumotlari -> Foydalanuvchi: pi va Parol: malina bilan kirishimiz mumkin. (Uni iloji boricha tezroq o'zgartirishni tavsiya qiladi. Mana ko'rsatma:

Raspi-config

Biz turli xil interfeyslarni yoqishimiz kerak va buning uchun avval quyidagi kodni kiritishimiz kerak bo'ladi:

sudo raspi-config

Biz yoqishimiz kerak bo'lgan narsalar interfeys bo'limida. Biz quyidagi interfeyslarni yoqishimiz kerak:

  • Bir simli
  • Seriyali
  • I2C
  • SPI

Bu raspi-config bilan qilishimiz kerak bo'lgan hamma narsa edi

Wi -Fi tarmog'ingiz qo'shilmoqda

Birinchidan, quyidagi buyruq ildiz bo'lishi uchun siz root bo'lishingiz kerak

sudo -i

Siz ildiz otganingizdan so'ng, quyidagi buyruqdan foydalaning: (SSID -ni tarmoq nomi va parolni tarmoq parolingiz bilan almashtiring)

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

Agar siz noto'g'ri ish qilgan bo'lsangiz, quyidagi buyruqni kiritish orqali ushbu tarmoqni tekshirishingiz, yangilashingiz yoki o'chirishingiz mumkin:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Shunday qilib, biz tarmoqqa kirganimizdan so'ng, keling, WPA mijoz interfeysiga kiraylik

wpa_cli

O'zingizning interfeysingizni tanlang

wlan0 interfeysi

Faylni qayta yuklang

qayta sozlamoq

Va nihoyat, siz yaxshi aloqada ekanligingizni ko'rishingiz mumkin:

ip a

3 -qism: RPi + dasturini o'rnatish

Endi biz Internetga ulangan bo'lsak, allaqachon o'rnatilgan paketlarni yangilash aqlli harakat bo'ladi, shuning uchun boshqa paketlarni o'rnatishdan oldin buni qilaylik.

sudo apt-get yangilanishi

sudo apt-get upgrade

RPi yangilanganidan so'ng biz quyidagi dasturlarni o'rnatishimiz kerak bo'ladi:

MariaDB ma'lumotlar bazasi

sudo apt-get o'rnatish mariadb-server

Apache2 veb -server

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 to'plami

Orqa fonni mukammal ishlashi uchun siz ushbu paketlarning barchasini o'rnatishingiz kerak bo'ladi:

  • Shisha
  • Flask-Cors
  • Flask-MySql
  • Shisha-rozetka
  • PyMySQL so'rovlari
  • Python-soket
  • RPi. GPIO
  • Gevent
  • Gevent-veb-rozetkasi

Karnay kutubxonasi

Karnayni kuchaytirgich bilan ishlatish uchun biz unga kutubxona o'rnatishimiz kerak bo'ladi

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

Ma'lumotlar bazasini RPi -ga o'rnatish!
Ma'lumotlar bazasini RPi -ga o'rnatish!

Endi biz kerakli hamma narsani o'rnatganimizdan so'ng, Raspberry Pi -ga o'z ma'lumotlar bazamizni joylashtiraylik!

Ma'lumotlar bazasini o'rnatish uchun biz MySql va RPi -ni ulashimiz kerak bo'ladi. Buning uchun biz MySQLWorkbench -ni ochamiz va yangi ulanishni o'rnatamiz. Rasmga qaraganingizda, ma'lumotni o'zingiznikiga o'zgartirish uchun o'zgartirishingiz kerak bo'ladi.

Agar siz hali biror narsani o'zgartirmagan bo'lsangiz, SSH pi va malina uchun MySQL mysql va mysql uchun foydalanishingiz mumkin.

Agar biror narsa aniq bo'lmasa, siz ham ushbu qo'llanmani bajarishingiz mumkin:

Ma'lumotlar bazasini eksport qilish PHPmyAdmin -dan foydalanish osonroq bo'lishi kerak, chunki siz MySql -da ko'p xatolarga yo'l qo'yishingiz mumkin.

6 -qadam: Bluetooth -ni RPi -da sozlash

Biz Mood dinamikini yaratmoqdamiz, uni biz o'z musiqamiz bilan ham ishlata olamiz, shuning uchun RPi bo'lganda bu osonroq bo'ladi

bluetooth -ga ulanganman, buning uchun qo'llanmani bu erda topishingiz mumkin:

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

Men bu erda hamma narsani qayta yozmoqchi bo'lganlar uchun yozdim

Allaqachon ishlayotgan bluealsani olib tashlash

sudo rm/var/run/bluealsa/*

A2DP profilini cho'ktirish rolini qo'shing

sudo bluealsa -p a2dp -sink va

Bluetooth interfeysini oching va bluetooth -ni yoqing

bluetoothctl yoqilgan

Birlashtiruvchi agentni o'rnating

standart agentda agent

RPi -ni kashf qilinadigan qilib qo'ying

aniqlanishi mumkin

  • Endi bluetooth qurilmangizdan RPi -ni qidiring va unga ulaning.
  • Ikkala qurilmada ham ulanishni tasdiqlang, macuningizga "ha" yozing.
  • A2DP xizmatiga ruxsat bering, yana "ha" yozing.
  • Bu amalga oshgandan so'ng, biz o'z qurilmamizga ishonishimiz mumkin, shuning uchun har safar ulanishni xohlaganimizda hammasini o'tkazib yubormasligimiz kerak

ishonch XX: XX: XX: XX: XX: XX (Sizning bluetooth mac manzilingiz manba qurilmamizdan)

Agar siz RPI -ni kashf etishni davom ettirishni xohlasangiz, bu sizning shaxsiy tanlovingiz, lekin men uni o'chirib qo'yishni afzal ko'raman, shunda odamlar sizning qutingizga ulanishga harakat qila olmaydi

aniqlanishi mumkin

Keyin biz bluetooth interfeysidan chiqishimiz mumkin

Chiqish

Va nihoyat, bizning audio marshrutizatsiyamiz: manba qurilmamiz RPi -ga yo'naltiriladi

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

Endi bizning qurilmamiz bluetooth bilan Raspberry -ga ulangan va siz uni har qanday ommaviy axborot vositalarida, masalan Spotify va boshqalarda sinab ko'rishingiz kerak.

7 -qadam: To'liq orqa qismini yozish

Shunday qilib, endi sozlash tugadi, biz nihoyat orqa dasturimizni yozishni boshlashimiz mumkin!

Men Visual Studio kodini butun orqa tomonim uchun ishlatardim, faqat sizning Visual Studio loyihangiz Raspberry Pi -ga ulanganligiga ishonch hosil qilishingiz kerak, bu sizning LAN kabeli sizning RPi -ga ulangan va SSH ulanishi kerak degan ma'noni anglatadi. (masofadan ulanishni yaratish haqida ma'lumotni bu erda topishingiz mumkin:

Men o'z darslarimdan foydalandim va ularning hammasi GitHub -ga kiritilgan.

Mening arxiv faylimda men turli xil sinflarni ishlatardim, shuning uchun hamma narsani alohida ishlatish mumkin va mening asosiy kodim har xil mavzular bilan aralashmasligi uchun. Men bir vaqtning o'zida har xil sinflarni ishga tushirish uchun ishlatardim. Va pastki qismida siz barcha yo'nalishlarga egasiz, shuning uchun biz ma'lumotni old tomondan osongina olishimiz mumkin.

8 -qadam: Frontendni yozish (HTML, CSS va JavaScript)

Endi orqa qism tugagach, biz to'liq oldingi qismini yozishni boshlashimiz mumkin.

HTML va CSS men uchun juda qiyin edi, men birinchi navbatda uni mobil qilish uchun qo'limdan kelganini qildim, chunki bluetooth orqali qo'shiqlarni Spotify yordamida o'zgartirish mumkin. Shunday qilib, mobil boshqaruv panelidan boshqarish osonroq bo'ladi

Siz xohlagan usulda asboblar panelini loyihalashtirishingiz mumkin, men o'z kodimni va dizaynimni shu erda qoldiraman, siz xohlagan narsani qilishingiz mumkin!

Va men uchun Javascript oson emas edi, men sensorlarimdan ma'lumotlarni olish uchun bir nechta GET -lar bilan ishladim, ko'plab tinglovchilar va ba'zi soket tuzilmalari bilan ishladim.

9 -qadam: Mening ishimni tuzish va barchasini birlashtirish

Mening ishimni qurish va barchasini birlashtirish
Mening ishimni qurish va barchasini birlashtirish
Mening ishimni qurish va barchasini birlashtirish
Mening ishimni qurish va barchasini birlashtirish
Mening ishimni qurish va barchasini birlashtirish
Mening ishimni qurish va barchasini birlashtirish
Mening ishimni qurish va barchasini birlashtirish
Mening ishimni qurish va barchasini birlashtirish

Men birinchi marta ishning qanday ko'rinishini xohlaganimni chizishni boshladim, muhim narsa shundaki, u hamma narsaga mos bo'lishi uchun etarlicha katta bo'lishi kerak edi, chunki bizda sumkani qo'yish uchun katta zanjir bor edi, lekin u ixcham qolishi kerak edi. ko'p joy egallamang

Men korpusni yog'ochdan yasadim, menimcha, agar sizda korpus qurishda unchalik tajribangiz bo'lmasa va sizda ko'p narsalar bo'lsa, u bilan ishlash eng oson.

Men eski taxtadan yotardim va o'tinni ko'rishni boshladim. Menda asosiy korpusim bo'lganida, men shunchaki teshiklarni burishim kerak edi (korpusning old tomonida, rasmlarda ko'rib turganingizdek, unga mixlar solingan, bu juda oddiy korpus, lekin juda zo'r ko'rinadi) Men uni oq rangda bo'yashga qaror qildim.

Va ish tugagach, oxirgi rasmda ko'rib turganingizdek, hammasini yig'ish vaqti keldi! Bu qutida qandaydir tartibsizlik, lekin hamma narsa ishlaydi va menda unchalik bo'sh joy yo'q edi, shuning uchun sizga maslahat beraman, agar siz mening loyihamni qayta yaratayotgan bo'lsangiz, kattaroq sumka yarating.

Tavsiya: