Mündəricat:

Mood Dinamik- Ətraf Mühitin İstiliyinə Bağlı Çalınacaq Mood Musiqisi üçün Güclü Dinamik: 9 Addım
Mood Dinamik- Ətraf Mühitin İstiliyinə Bağlı Çalınacaq Mood Musiqisi üçün Güclü Dinamik: 9 Addım

Video: Mood Dinamik- Ətraf Mühitin İstiliyinə Bağlı Çalınacaq Mood Musiqisi üçün Güclü Dinamik: 9 Addım

Video: Mood Dinamik- Ətraf Mühitin İstiliyinə Bağlı Çalınacaq Mood Musiqisi üçün Güclü Dinamik: 9 Addım
Video: Learn French While You Sleep - A2 - French Conversation 2024, Iyul
Anonim
Mood Dinamik- Ətraf Mühitin İstiliyinə əsaslanaraq Mood Musiqi Çalınacaq Güclü Dinamik
Mood Dinamik- Ətraf Mühitin İstiliyinə əsaslanaraq Mood Musiqi Çalınacaq Güclü Dinamik

Salam!

MCT Howest Kortrijk məktəb proyektim üçün bir Mood Dinamik hazırladım, bu fərqli sensorlar, bir LCD və WS2812b led şeridi olan ağıllı bir Bluetooth dinamik cihazıdır. Dinamik temperaturdan asılı olaraq fon musiqisini çalır, ancaq adi bluetooth olaraq da istifadə edilə bilər. natiq Hər şey Raspberry Pi üzərində işləyir (Database, Webserver, Backend).

Bu təlimat, bu layihəni 3 həftədə necə həyata keçirdiyimi izah edən addım -addım bir prosesdir. Beləliklə, əgər uşaqlar mənim layihəmi yenidən yaratmaq istəyirsinizsə, bələdçini izləyə bilərsiniz

Bu təlimat mənim yazdığım ilk kitabdır, buna görə hər hansı bir problem varsa, bacardığım qədər tez cavab verməyə çalışacağam!

GitHub'ım:

Addım 1: Təchizat

Raspberry Pi 3B və 16GB SD Kart

Bütün layihəm Raspberry Pi 3B üzərində qurulmuş bir şəkil üzərində işləyir və bunu daha sonra izah edəcəyəm (Addım 4: Raspberry Pi qurmaq)

LCD ekran 16x2

İstilik, parlaqlıq və IP ünvanımı çap etmək üçün əsas bir LCD Ekrandan istifadə etdim.

Məlumat cədvəli:

DS18B20 Temperatur Sensoru

DS18B20, Maxim Integrated tərəfindən istehsal olunan temperaturu ölçən bir telli sensordur. 2 növ DS18B20 sensoru var, yalnız komponenti (istifadə etdiyim) və suya davamlı versiyası, daha böyükdür, amma bu, layihəm üçün ehtiyacım olmadığı üçün yalnız komponentdən istifadə etdim. Sensor temperaturu -55 ° C ilə +125 ° C (-67 ° F - +257 ° F) aralığında ölçə bilir və -10 ° C ilə +85 ° C arasında 0,5 ° C dəqiqliyə malikdir. 9 bitdən 12 bitə qədər proqramlaşdırıla bilən bir qətnaməyə malikdir.

Məlumat cədvəli:

MCP3008

LDR və PIR sensorumdan məlumatları oxumaq üçün SPI interfeysi olan rəqəmsal çeviriciyə 8 kanallı 10 bitlik bir MCP3008 istifadə etdim və proqramlaşdırmaq olduqca asandır.

Məlumat cədvəli:

PIR hərəkət sensoru

Otağıma kimin girib çıxdığını müəyyən etmək üçün istifadə etmək asan və kiçik olduğu üçün passiv infraqırmızı sensor istifadə etdim.

Məlumat cədvəli:

LDR

İçərisində olan otağın parlaqlıq səviyyəsini müəyyən etmək üçün fotorezistor və ya LDR (İşıq Azaldıcı Müqavimət və ya işığa bağlı rezistor) istifadə etdim.

Dinamik - 3ӂap - 4 Ohm 3 Vatt

Lazım olan Gərginlik və Amperləri hesabladıqdan sonra seçdiyim dinamik konusudur və bu, Adafruit tərəfindən istehsal olunan Raspberry Pi layihəmə mükəmməl uyğun gəlir.

Baxış:

MAX98357 I2S Class-D Mono Gücləndirici

Bu dinamiklə birlikdə gələn gücləndiricidir, təkcə gücləndirici deyil, həm də I2S -dən analoqa çeviricidir, buna görə dinamik və səs sistemimə mükəmməl uyğun gəlir.

Baxış:

Məlumat cədvəli:

Arduino Uno

Arduino Uno, Arduino.cc tərəfindən istehsal olunan Microchip ATmega328P mikro nəzarətçisinə əsaslanan açıq mənbəli mikrokontroller lövhəsidir. Uno lövhəsində 14 rəqəmsal pin, 6 analog pin var və Arduino IDE proqramı ilə tam proqramlaşdırıla bilər.

Baxış:

Səviyyə dəyişdirici

Bu, Arduino Uno ilə Raspberry Pi arasındakı əlaqəni və fərqli gərginliklər olan Arduino: 5V və Raspberry Pi: 3.3V -ə diqqət yetirən kiçik bir lövhədir. Lazımdır ki, led zolağı Arduino -ya bağlıdır və orada işləyir, digər şeylər isə Raspberry Pi üzərində işləyir.

WS2812B - Ledstrip

Bu 60 RGB ledli bir lentdir (istəsəniz daha çox RGB ledli daha uzun zolaqlar ala bilərsiniz). Mənim vəziyyətimdə Arduino Uno ilə əlaqəlidir, eyni zamanda bir çox digər cihaza da qoşula bilər və istifadəsi çox sadədir.

Məlumat cədvəli:

GPIO T-Part, 1 Breadboard və çoxlu keçid telləri

Çörək taxtasına və keçid tellərinə ehtiyacım olan hər şeyi birləşdirmək üçün GPIO T hissəsini istifadə etmədim, ancaq hansı zibil qutusunun hara getdiyini dəqiq bilmək üçün istifadə edə bilərsiniz.

Addım 2: Şematik və Kablolama

Sxem və naqillər
Sxem və naqillər
Sxem və naqillər
Sxem və naqillər

Fritzing -dən istifadə etdiyim sxemimi hazırlamaq üçün yükləyə biləcəyiniz bir proqramdır ki, bu da müxtəlif görünüşlərdə həqiqətən asan bir sxem yaratmağa imkan verir.

Fritzing'i yükləyin:

Hər şeyin düzgün bir şəkildə bağlandığından əmin olun. Telləri harada bağlayacağımı bir az daha aydın etmək üçün rənglərdən istifadə etdim. Mənim vəziyyətimdə tellər üçün fərqli rənglərdən istifadə etdim

Addım 3: Verilənlər Bazası Dizaynı

Verilənlər bazası dizaynı
Verilənlər bazası dizaynı

3 sensordan çoxlu məlumat toplayırıq (DS18B20-dən İstilik, LDR-dən Parlaqlıq və PIR-sensordan Status). Bütün bu məlumatları bir verilənlər bazasında saxlamaq ən yaxşısıdır. Verilənlər bazasını necə konfiqurasiya edəcəyinizi bir sonrakı addımda izah edəcəyəm (Addım 5: Veritabanımızı RPi -yə İrəli Mühəndisləşdirin!) Amma əvvəlcə dizayn və ya ERD (Varlıq Əlaqələri Şeması) hazırlanmalıdır. Mina 3NF ilə normallaşdırıldı, buna görə komponentləri və komponentlərin tarixini başqa bir cədvələ ayırdıq. Dinlənilən mahnıları izləmək üçün Musiqi verilənlər bazasından istifadə edirik.

Ümumiyyətlə, bu, gələcəkdə işləmək üçün həqiqətən əsas və asan bir verilənlər bazası dizaynıdır.

Addım 4: Raspberry Pi qurun

İndi layihənin bəzi əsaslarını hazırladıq. Raspberry Pi qurmağa başlayaq!

1 -ci hissə: SD kartı konfiqurasiya edin

1) Lazımi Proqram və Faylları Yükləyin

Bu tam proses üçün 2 proqram və 1 OS yəni Raspbian yükləməlisiniz.1 -ci proqram: İlk proqram Win32 Disk Imager -dir.

sourceforge.net/projects/win32diskimager/

2 -ci proqram: İkinci proqram SD Kart Formatlayıcıdır.

www.sdcard.org/downloads/formatter_4/

Raspbian OS: Bu Pi -nin əsas əməliyyat sistemidir.

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

Bütün faylları masaüstünə çıxarın.

2) SD Kartı və Kart Oxuyucusunu alın

Kart oxuyucusu olan minimum 8GB sinif 10 SD kartı alın. Bu kartı kart oxuyucusuna daxil edin və USB portuna qoşun.

3) SD kartı formatlaşdırın

SD Kart Formatterini açın və sürücünü seçin.

Formatı vurun və digər variantları dəyişdirməyin.

Formatlama tamamlandıqda OK düyməsini basın.

4) Əməliyyat sistemini SD Karta yazın

Win32diskimager açın.

Yüklənmiş fayldan çıxarılan Raspbian OS.img faylına baxın.

Aç düyməsini və sonra Yazı düyməsini basın.

Hər hansı bir xəbərdarlıq görünsə, OK düyməsini basaraq onları göz ardı edin. Yazının tamamlanmasını gözləyin və bir neçə dəqiqə çəkə bilər. Buna görə səbirli olun.

n

5) Bunu etdikdən sonra, görüntüyü RPi -yə qoymadan əvvəl bəzi son düzəlişlər etməyə hazırıq.

SD kartınızın qovluğuna gedin, 'cmdline.txt' adlı faylı axtarın və açın.

İndi eyni xəttə 'ip = 169.254.10.1' əlavə edin.

Faylı qeyd edin.

Uzatma və məzmun olmadan 'ssh' adlı bir fayl yaradın. (Ən asan yol txt faylı yaratmaq və sonra.txt faylını silməkdir)

İndi hər şey SD karta quraşdırıldıqdan sonra onu kompüterinizdən GÜVENLİKLƏ çıxara və gücü bağlamadan Raspberry Pi -yə qoya bilərsiniz. SD kart RPI -ə daxil olduqdan sonra, kompüterinizdən bir LAN kabelini RPi LAN portuna bağlayın, bu bağlandıqdan sonra gücü RPi -yə qoşa bilərsiniz.

2 -ci hissə: RPi -nin konfiqurasiyası

Macun

İndi Raspberry Pi -ni konfiqurasiya etmək istəyirik, bu Putty vasitəsilə edilir.

Putty proqramı:

Yüklədikdən sonra Putty proqramını açın və '169.254.10.1' IP və '22' Portunu və əlaqə növünü daxil edin: SSH.

İndi nəhayət əmr satırı interfeysimizi aça bilərik və başlanğıc giriş məlumatları -> İstifadəçi: pi və Şifrə: moruq. (Mümkün qədər tez dəyişdirməyi tövsiyə edir. İşdə bir bələdçi:

Raspi-konfiqurasiya

Fərqli interfeysləri işə salmalı və bunu etmək üçün əvvəlcə aşağıdakı kodu yazmalıyıq:

sudo raspi-config

Aktiv etməyimiz lazım olan şeylər interfeys bölməsindədir. Aşağıdakı interfeysləri işə salmalıyıq:

  • Bir telli
  • Serial
  • I2C
  • SPI

Bu, raspi-config ilə etməyimiz lazım olan hər şey idi

WIFI əlavə olunur

Əvvəlcə aşağıdakı əmrin kök olması üçün kök olmalısınız

sudo -i

Kökləndikdən sonra aşağıdakı əmri istifadə edin: (SSID -ni şəbəkə adınızla və şifrənizi şəbəkə parolunuzla əvəz edin)

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

Səhv bir şey etmisinizsə, aşağıdakı əmri daxil edərək bu şəbəkəni yoxlaya, yeniləyə və ya silə bilərsiniz:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Beləliklə, şəbəkəmizə daxil olduqdan sonra WPA müştəri interfeysinə daxil olaq

wpa_cli

İnterfeysinizi seçin

wlan0 interfeysi

Faylı yenidən yükləyin

yenidən qurmaq

Və nəhayət, yaxşı əlaqə qurduğunuzu görə bilərsiniz:

ip a

3 -cü hissə: RPi + quraşdırma proqramının yenilənməsi

İndi İnternetə qoşulduğumuz üçün, artıq quraşdırılmış paketləri yeniləmək ağıllı bir hərəkət olardı, buna görə digər paketləri quraşdırmadan əvvəl bunu edək.

sudo apt-get yeniləməsi

sudo apt-get yeniləmə

RPi -ni yenilədikdən sonra aşağıdakı proqramı quraşdırmalıyıq:

MariaDB verilənlər bazası

sudo apt-get mariadb-server quraşdırın

Apache2 veb server

sudo apt install apache2

Python

update-alternatives-install/usr/bin/python python /usr/bin/python3.7 1 yeniləmə alternativləri-install/usr/bin/python python/usr/bin/python3 2

Python paketi

Arxa planın mükəmməl işləməsi üçün bütün bu paketləri quraşdırmalısınız:

  • Şüşə
  • Flask-Cors
  • Flask-MySql
  • Şüşə-SocketIO
  • PyMySQL İstəkləri
  • Python yuvası
  • RPi. GPIO
  • Gevent
  • Gevent-veb yuvası

Dinamik kitabxanası

Dinamikdən gücləndirici ilə istifadə etmək üçün bunun üçün kitabxana qurmalıyıq

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

Verilənlər bazasının RPi -yə qurulması!
Verilənlər bazasının RPi -yə qurulması!

Lazım olan hər şeyi qurduqdan sonra, hazırladığımız Veritabanını Raspberry Pi -yə yerləşdirək!

Verilənlər bazasını qurmaq üçün MySql və RPi -ni birləşdirməliyik. Bunun üçün MySQLWorkbench açacağıq və yeni bir əlaqə quracağıq. Şəkilə baxarkən məlumatı özünüzə çevirmək üçün dəyişdirməlisiniz.

Hələ bir şey dəyişdirməmisinizsə, SSH pi və moruq üçün, MySQL mysql və mysql üçün istifadə edə bilərsiniz.

Bir şey aydın deyilsə, bu təlimatı da izləyə bilərsiniz:

Verilənlər bazanızı ixrac etmək üçün PHPmyAdmin istifadə etmək daha asan olmalıdır, çünki MySql ilə bir çox səhv edə bilərsiniz.

Addım 6: RPi -də Bluetooth -u konfiqurasiya edin

Biz də öz musiqimizlə istifadə edə biləcəyimiz bir Mood dinamikini yaradırıq, buna görə də RPi olduqda bu daha asandır

bluetooth -a bağlı olaraq burada tapa biləcəyiniz bir təlimatı izlədim:

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

Yenidən yaratmaq istəyənlər üçün hər şeyi burada yazdım

Artıq işləyən bluealsa çıxarılır

sudo rm/var/run/bluealsa/*

A2DP profili Sink rolunu əlavə edin

sudo bluealsa -p a2dp -sink &

Bluetooth interfeysini açın və bluetooth -u yandırın

bluetoothctl açılır

Bir eşleme agenti qurun

default-agent üzrə agent

RPi -nizi aşkar olun

aşkar edilə bilər

  • İndi Bluetooth cihazınızdan RPi axtarın və onunla əlaqə qurun.
  • Hər iki cihazda cütləşməni təsdiqləyin, macununuza 'yes' yazın.
  • A2DP xidmətinə icazə verin, yenidən 'yes' yazın.
  • Bunu etdikdən sonra cihazımıza etibar edə bilərik, buna görə də hər dəfə qoşulmaq istədiyimiz zaman bütün bunları keçmək məcburiyyətində deyilik

güvən XX: XX: XX: XX: XX: XX (Mənbə cihazımızdan bluetooth mac ünvanınız)

RPi -nin kəşf olunmağa davam etməsini istəyirsinizsə, bu sizin öz seçiminizdir, amma insanların qutunuzla əlaqə qurmağa çalışmaması üçün yenidən söndürməyi üstün tuturam

aşkar edilə bilər

Sonra bluetooth interfeysimizdən çıxa bilərik

çıxmaq

Və nəhayət, audio marşrutlaşdırma: mənbəy cihazımız RPi -yə yönləndirilir

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

İndi cihazımız bluetooth ilə Raspberry -ə bağlıdır və Spotify, və s.

Addım 7: Tam arxa plan yazmaq

Beləliklə, indi quraşdırma tamamlandı, nəhayət arxa plan proqramımızı yazmağa başlaya bilərik!

Visual Studio Kodunu bütün arxa planım üçün istifadə etdim, sadəcə Visual Studio layihənizin Raspberry Pi ilə əlaqəli olduğundan əmin olmalısınız, bu, LAN kabelinizin RPi -yə qoşulması və SSH bağlantısı qurması deməkdir. (uzaqdan əlaqənin necə qurulacağına dair məlumatı burada tapa bilərsiniz:

Öz dərslərimi istifadə etdim və bunların hamısı GitHub -a daxil edildi.

Arxa sənədimdə fərqli siniflərdən istifadə etdim, buna görə hər şey ayrı -ayrılıqda istifadə oluna bilər və mənim əsas kodum bütün fərqli mövzularla qarışıqlıq yaratmasın. Bütün fərqli sinifləri bir anda işlətmək üçün iş parçacığı istifadə etdim. Və alt hissədə bütün marşrutlar var, beləliklə cəbhəmizdəki məlumatları asanlıqla əldə edə bilərik.

Addım 8: Frontend yazmaq (HTML, CSS və JavaScript)

İndi arxa plan bitdikdən sonra tam ön hissəni yazmağa başlaya bilərik.

HTML və CSS mənim üçün olduqca çətin idi, əvvəlcə mobil etmək üçün əlimdən gələni etdim, çünki mahnıları Spotify ilə dəyişdirmək üçün bluetooth ilə qoşula bilərəm. Buna görə mobil idarəetmə panelindən idarə etmək daha asan olardı

Tablosunuzu istədiyiniz tərzdə dizayn edə bilərsiniz, sadəcə kodumu və dizaynımı burada qoyacağam, istədiyinizi edə bilərsiniz!

Və Javascript mənim üçün daha asan deyildi, sensorlarımdan məlumat almaq üçün arxa marşrutlarımdan, bir çox hadisə dinləyicisindən və bəzi socketio strukturlarından bir neçə GET ilə işlədim.

Addım 9: Davamı qurun və hamısını bir araya gətirin

Davamı qurmaq və hamısını bir araya gətirmək
Davamı qurmaq və hamısını bir araya gətirmək
Davamı qurmaq və hamısını bir araya gətirmək
Davamı qurmaq və hamısını bir araya gətirmək
Davamı qurmaq və hamısını bir araya gətirmək
Davamı qurmaq və hamısını bir araya gətirmək
Davamı qurmaq və hamısını bir araya gətirmək
Davamı qurmaq və hamısını bir araya gətirmək

Əvvəlcə davanın necə görünməsini istədiyimi eskiz etməyə başladım, vacib bir şey, hər şeyin uyğunlaşması üçün kifayət qədər böyük olması idi, çünki qutuya qoymaq üçün böyük bir dövrəmiz var, amma yığılmaması üçün yığcam qalmalıyıq ' çox yer tutmayın

Çantanı taxtadan düzəltdim, düşünürəm ki, tikinti işlərində o qədər də təcrübəniz yoxdur və bununla da edə biləcəyiniz çox şeyiniz varsa, işləmək ən asandır.

Ətrafımda qoyduğum köhnə taxtadan başladım və odunu kəsməyə başladım. Əsas işimi götürdükdən sonra sadəcə deşiklər açmalı oldum (işin ön tərəfində çox şey var, şəkillərdə də gördüyünüz kimi içərisinə dırnaqlar da qoydunuz, bu həqiqətən də sadə bir haldır, amma olduqca sərin görünür və mükəmməl uyğun gəlir. Mən də gözəl görünməsi üçün ağ rəngə boyamağa qərar verdim.

Dava tamamlandıqdan sonra, son şəkildən də gördüyünüz kimi, hər şeyi bir yerə yığmağın vaxtı gəldi! Qutunun içərisində bir növ qarışıqlıq var, amma hər şey işləyir və daha çox yerim yox idi, buna görə də layihəmi yenidən yaratdığınız təqdirdə daha böyük bir hal yaratmağınızı məsləhət görürəm.

Tövsiyə: