İçindekiler:

Mood Speaker - Ortam Sıcaklığına Göre Mood Müziğinin Çalınması için Güçlü Bir Hoparlör: 9 Adım
Mood Speaker - Ortam Sıcaklığına Göre Mood Müziğinin Çalınması için Güçlü Bir Hoparlör: 9 Adım

Video: Mood Speaker - Ortam Sıcaklığına Göre Mood Müziğinin Çalınması için Güçlü Bir Hoparlör: 9 Adım

Video: Mood Speaker - Ortam Sıcaklığına Göre Mood Müziğinin Çalınması için Güçlü Bir Hoparlör: 9 Adım
Video: gülmekten anırdığım videolar 2024, Temmuz
Anonim
Mood Speaker - Ortam Sıcaklığına Göre Mood Müziğinin Çalınması için Güçlü Bir Hoparlör
Mood Speaker - Ortam Sıcaklığına Göre Mood Müziğinin Çalınması için Güçlü Bir Hoparlör

Selam!

MCT Howest Kortrijk'teki okul projem için Mood Speaker yaptım. konuşmacı. Her şey Raspberry Pi (Veritabanı, Web Sunucusu, Arka Uç) üzerinde çalışır.

Dolayısıyla bu talimat, bu projeyi 3 hafta içinde nasıl gerçekleştirdiğimin adım adım bir sürecidir. Projemi yeniden oluşturmak istiyorsanız kılavuzu takip edebilirsiniz.

Bu talimat benim ilk yazdığımdır, bu yüzden herhangi bir soru varsa, elimden geldiğince çabuk cevaplamaya çalışacağım!

GitHub'ım:

Adım 1: Sarf Malzemeleri

Raspberry Pi 3B & 16GB SD Kart

Tüm projem, daha sonraki bir adımda açıklayacağım yapılandırılmış bir görüntü ile Raspberry Pi 3B'mde çalışıyor (Adım 4: Raspberry Pi Kurulumu)

LCD Ekran 16x2

Sıcaklığımı, parlaklığımı ve IP adresimi yazdırmak için basit bir LCD Ekran kullandım.

Veri sayfası:

DS18B20 Sıcaklık Sensörü

DS18B20, Maxim Integrated tarafından üretilen, sıcaklığı ölçen tek kablolu bir sensördür. 2 çeşit DS18B20 sensörü vardır, sadece bileşen (Ben bunu kullandım) ve çok daha büyük olan su geçirmez versiyon, ancak projem için ihtiyacım olan bu değildi, bu yüzden sadece bileşeni kullandım. Sensör, sıcaklığı -55°C ila +125°C (-67°F ila +257°F) aralığında ölçebilir ve -10°C ila +85°C arasında 0.5°C hassasiyete sahiptir. Ayrıca 9 bitten 12 bite kadar programlanabilir bir çözünürlüğe sahiptir.

Veri sayfası:

MCP3008

LDR ve PIR sensörümden gelen verileri okumak için, SPI arayüzlü 8 kanallı 10 bit analogdan dijitale dönüştürücü olan ve programlanması oldukça kolay olan bir MCP3008 kullandım.

Veri sayfası:

PIR hareket sensörü

Odama giren ve çıkan biri olduğunu algılamak için pasif kızılötesi sensör kullandım çünkü kullanımı kolay ve küçükler.

Veri sayfası:

LDR

İçinde bulunduğu odanın parlaklık seviyesini algılamak için bir fotodirenç veya LDR (Işık Azaltma Direnci veya ışığa bağlı direnç) kullandım. Ayrıca karanlık olduğunda Ledstrip'imi açmak için.

Hoparlör – 3” Çap – 4 Ohm 3 Watt

Bu, ihtiyaç duyacağı Voltaj ve Amper değerlerini hesapladıktan sonra seçtiğim hoparlör konisi ve Adafruit tarafından üretilen Raspberry Pi projem için mükemmel bir seçimdi.

Genel Bakış:

MAX98357 I2S D Sınıfı Mono Amplifikatör

Bu, hoparlörle birlikte gelen amplifikatördür, yalnızca bir amplifikatör değil, aynı zamanda bir I2S dijitalden analoğa dönüştürücüdür, bu nedenle hoparlörüm ve ses sistemim için de mükemmel bir seçimdir.

Genel Bakış:

Veri sayfası:

Arduino Uno'su

Arduino Uno, Arduino.cc tarafından üretilen Microchip ATmega328P mikrodenetleyicisine dayalı açık kaynaklı bir mikro denetleyici kartıdır. Uno kartında 14 Dijital pin, 6 analog pin bulunur ve Arduino IDE yazılımı ile tamamen programlanabilir

Genel Bakış:

seviye değiştirici

Bu, Arduino Uno ve Raspberry Pi arasındaki iletişimi ve farklı voltajlar olan Arduino: 5V ve Raspberry Pi: 3.3V ile ilgilenen küçük bir karttır. Bu gereklidir, çünkü led şerit Arduino'ya bağlanır ve orada çalışır, diğer tüm şeyler Raspberry Pi'de çalışır.

WS2812B - Led şerit

Bu, 60 RGB ledli bir led şerittir (isterseniz daha fazla RGB ledli daha uzun şeritler satın alabilirsiniz). Bu benim durumumda Arduino Uno'ya bağlı, ancak diğer birçok cihaza da bağlanabilir ve kullanımı gerçekten basittir.

Veri sayfası:

GPIO T-Part, 1 Breadboard ve çok sayıda jumperwire

Breadboard'lara ve atlama tellerine ihtiyacım olan her şeyi bağlamak için GPIO T-parçasını kullanmadım ama hangi kutunun nereye gittiğini açıkça bilmek için kullanabilirsiniz.

Adım 2: Şematik ve Kablolama

Şematik ve Kablolama
Şematik ve Kablolama
Şematik ve Kablolama
Şematik ve Kablolama

Şemamı yapmak için Fritzing kullandım, yükleyebileceğiniz ve farklı görünümlerde gerçekten kolay bir şema oluşturmanıza izin veren bir program. Breadboard ve şematik görünümü kullandım.

Fritzing'i indirin:

Her şeyin doğru şekilde bağlandığından emin olun. Kabloları nereye bağlayacağımı bilmeyi biraz daha net hale getirmek için renkleri kullandım. Benim durumumda teller için farklı renkler kullandım

Adım 3: Veritabanı Tasarımı

Veri tabanı tasarımı
Veri tabanı tasarımı

3 sensörden çok fazla veri topluyoruz (DS18B20'den Sıcaklık, LDR'den Parlaklık ve PIR sensöründen Durum). Bu yüzden tüm bu verileri bir veritabanında tutmak en iyisidir. Veritabanının nasıl yapılandırılacağını daha sonraki bir adımda anlatacağım (Adım 5: Veritabanımızı RPi'ye Yönlendirin!) Ama önce tasarımın veya ERD'nin (Varlık İlişki Şeması) yapılması gerekiyor. Benimki 3NF ile normalleştirildi, bu yüzden bileşenleri ve bileşenlerin geçmişini başka bir tabloya ayırdık. Dinlenen şarkıların kaydını tutmak için Müzik veritabanını kullanıyoruz.

Genel olarak bu, daha fazla çalışmak için gerçekten basit ve kolay bir veritabanı tasarımıdır.

Adım 4: Raspberry Pi'yi Kurun

Şimdi, yaptığımız projenin bazı temellerine sahibiz. Raspberry Pi'yi kurmaya başlayalım!

Bölüm 1: SD Kartı Yapılandırma

1) Gerekli Yazılım ve Dosyaları İndirin

Bu tam işlem için 2 yazılım ve 1 OS yani Raspbian indirmeniz gerekiyor. 1. yazılım: İlk yazılım Win32 Disk Imager'dır.

sourceforge.net/projects/win32diskiimager/

2. yazılım: İkinci yazılım SD Kart Formatlayıcıdır.

www.sdcard.org/downloads/formatter_4/

Raspbian OS: Bu, Pi'nin Ana işletim sistemidir.

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

Tüm dosyaları masaüstüne çıkarın.

2) SD Kartı ve Kart Okuyucuyu Alın

Kart okuyuculu minimum 8 GB sınıf 10 SD kart alın. Bu kartı kart okuyucuya takın ve bunu USB bağlantı noktasına takın.

3) SD Kartı Biçimlendirin

SD Kart Formatlayıcı'yı açın ve sürücüyü seçin.

Biçime tıklayın ve diğer seçenekleri değiştirmeyin.

Biçimlendirme tamamlandığında, Tamam'a tıklayın.

4) İşletim Sistemini SD Karta yazın

win32diskiimager'ı açın.

İndirilen dosyadan çıkarılan Raspbian OS'nin.img dosyasına göz atın.

Aç'a ve ardından Yaz'a tıklayın.

Herhangi bir uyarı açılırsa, Tamam'ı tıklatarak bunları yoksayın. Yazmanın tamamlanmasını bekleyin ve birkaç dakika sürebilir. Bu yüzden sabırlı ol.

n

5) Bu yapıldıktan sonra, resmi RPi'mize koymadan önce bazı son ayarlamalar yapmaya hazırız.

SD kartınızın dizinine gidin, 'cmdline.txt' adlı dosyayı arayın ve açın.

Şimdi aynı satıra 'ip=169.254.10.1' ekleyin.

Dosya 'yı kaydet.

Uzantısı veya içeriği olmayan 'ssh' adında bir dosya oluşturun.(en kolay yol, bir txt dosyası oluşturmak ve daha sonra.txt'yi kaldırmaktır)

Artık her şey SD karta yüklendiğine göre, onu bilgisayarınızdan GÜVENLE çıkarabilir ve gücü bağlamadan Raspberry Pi'ye koyabilirsiniz. SD kart RPI'ye takıldığında, bilgisayarınızdan bir LAN kablosunu RPi LAN bağlantı noktasına bağlayın, bu bağlandığında gücü RPi'ye bağlayabilirsiniz.

Bölüm 2: RPi'yi Yapılandırma

Macun

Şimdi Raspberry Pi'mizi yapılandırmak istiyoruz, bu Putty üzerinden yapılıyor.

Putty yazılımı:

İndirdikten sonra Putty'yi açın ve IP '169.254.10.1' ve Port '22' ve bağlantı tipini ekleyin: SSH.

Artık nihayet komut satırı arayüzümüzü açabilir ve başlangıç oturum açma bilgileri -> Kullanıcı: pi & Şifre: ahududu ile giriş yapabiliriz. (Mümkün olduğunca çabuk değiştirmenizi tavsiye ederiz. İşte nasıl yapılacağına dair bir rehber:

Raspi-yapılandırma

Farklı arayüzleri etkinleştirmemiz gerekecek ve bunu yapmak için önce aşağıdaki kodu yazmalıyız:

sudo raspi yapılandırması

Etkinleştirmemiz gereken şeyler arayüz bölümündedir. Aşağıdaki arayüzleri etkinleştirmemiz gerekiyor:

  • Tek telli
  • Seri
  • I2C
  • SPI

Raspi-config ile yapmamız gereken her şey buydu.

WIFI'nızı ekleme

İlk olarak, aşağıdaki komutun root olması için root olmanız gerekir.

sudo -i

Kök olduğunuzda, aşağıdaki komutu kullanın: (SSID'yi ağ adınızla ve şifrenizi ağ şifrenizle değiştirin)

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

Yanlış bir şey yaptıysanız, aşağıdaki komutu girerek bu ağı kontrol edebilir, güncelleyebilir veya silebilirsiniz:

nano /etc/wpa_supplicant/wpa_supplicant.conf

O halde ağımıza girdikten sonra WPA istemci arayüzüne girelim.

wpa_cli

Arayüzünüzü seçin

arayüz wlan0

Dosyayı yeniden yükle

yeniden yapılandırmak

Ve nihayet, iyi bir şekilde bağlı olup olmadığınızı görebilirsiniz:

ip bir

Bölüm 3: RPi + yükleme yazılımının güncellenmesi

Artık internete bağlı olduğumuza göre, kurulu paketleri güncellemek akıllıca bir hareket olacaktır, o yüzden diğer paketleri kurmadan önce bunu yapalım.

sudo apt-get güncellemesi

sudo apt-get yükseltme

RPi'yi güncelledikten sonra aşağıdaki yazılımı yüklememiz gerekecek:

MariaDB Veritabanı

sudo apt-get install mariadb-server

Apache2 Web sunucusu

sudo apt apache2'yi kurun

piton

güncelleme alternatifleri --install /usr/bin/python python /usr/bin/python3.7 1 güncelleme alternatifleri --install /usr/bin/python python /usr/bin/python3 2

Python paketi

Arka ucun kusursuz çalışması için tüm bu paketleri kurmanız gerekecek:

  • şişe
  • Şişe-Kors
  • Flask-MySql
  • Şişe-SoketIO
  • PyMySQL İstekleri
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket

Hoparlör kitaplığı

Hoparlörü amplifikatör ile kullanmak için bunun için bir kütüphane kurmamız gerekecek.

kıvrılma -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

Veritabanını RPI'ye Ayarlama!
Veritabanını RPI'ye Ayarlama!

Artık ihtiyacımız olan her şeyi yüklediğimize göre, Raspberry Pi'mizin üzerine tasarladığımız Veritabanımızı koyalım!

Veritabanını kurmak için MySql ve RPi'yi bağlamamız gerekecek. Bunun için MySQLWorkbench'i açıp yeni bir bağlantı yapacağız. Resme bakarken, bilgileri sizinkiyle değiştirmek için değiştirmeniz gerekecektir.

Henüz hiçbir şeyi değiştirmediyseniz, MySQL mysql ve mysql için SSH pi ve ahududu için kullanabilirsiniz.

Bir şey net olmadığında, bu öğreticiyi de takip edebilirsiniz:

Veritabanınızı dışa aktarmak için PHPmyAdmin'i kullanmak daha kolay olmalı çünkü MySql ile bunu yaparken birçok hata alabilirsiniz.

Adım 6: Bluetooth'u RPi'mizde Yapılandırma

Kendi müziğimizle de kullanabileceğimiz bir Mood hoparlörü oluşturuyoruz, böylece RPi olduğunda bu daha kolay.

bluetooth'a bağlı olarak burada bulabileceğiniz bir öğreticiyi takip ettim:

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

Yeniden yaratmak isteyenler için her şeyi buraya da yazdım.

Halihazırda çalışan bluealsa'yı kaldırmak

sudo rm /var/run/bluealsa/*

A2DP profili ekleyin Havuz rolü

sudo bluealsa -p a2dp-sink &

Bluetooth arayüzünü açın ve bluetooth'unuzu açın

bluetoothctl güç açık

Bir eşleştirme aracısı kurun

varsayılan aracı üzerinde aracı

RPI'nizi keşfedilebilir yapın

keşfedilebilir

  • Şimdi bluetooth cihazınızdan RPI'yi arayın ve ona bağlanın.
  • Her iki cihazda da eşleştirmeyi onaylayın, macununuza 'evet' yazın.
  • A2DP servisini yetkilendirin, tekrar 'evet' yazın.
  • Bu yapıldıktan sonra, cihazımıza güvenebiliriz, bu yüzden her bağlanmak istediğimizde tüm bunlardan geçmek zorunda değiliz.

güven XX:XX:XX:XX:XX:XX (Kaynak cihazımızdan bluetooth mac adresiniz)

RPI'nızın keşfedilebilir olmaya devam etmesini istiyorsanız, bu sizin seçiminizdir, ancak insanların kutunuzla bağlantı kurmaya çalışmaması için tekrar kapatmayı tercih ederim

keşfedilebilir kapalı

Ardından bluetooth arayüzümüzden çıkabiliriz

çıkış

Ve son olarak ses yönlendirmemiz: RPi'mize yönlendirme yapan kaynak cihazımız

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

Artık cihazımız Ahududu'muza bluetooth ile bağlı ve Spotify vb. herhangi bir medyayı oynatarak test edebilmelisiniz.

7. Adım: Komple Arka Uç Yazma

Şimdi kurulum tamamlandı, nihayet arka uç programımızı yazmaya başlayabiliriz!

Tüm arka ucum için Visual Studio Code kullandım, Visual Studio projenizin Raspberry Pi'nize bağlı olduğundan emin olmanız yeterlidir, bu, LAN kablonuzun RPi'nize bağlı olması ve bir SSH bağlantısı kurması gerektiği anlamına gelir. (Uzak bağlantının nasıl oluşturulacağı hakkında bilgi burada bulunabilir:

Kendi sınıflarımı kullandım ve bunların hepsi GitHub'a dahil edildi.

Arka uç dosyamda farklı sınıflar kullandım, böylece her şey ayrı ayrı kullanılabilir ve böylece ana kodum tüm farklı iş parçacıklarını karıştırmaz. Tüm farklı sınıfları aynı anda çalıştırmak için iş parçacığı kullandım. Ve en altta tüm rotaları aldınız, böylece ön ucumuzda kolayca veri alabiliriz.

Adım 8: Ön Uç Yazma (HTML, CSS ve JavaScript)

Artık arka uç bittiğine göre, tam ön ucu yazmaya başlayabiliriz.

HTML ve CSS benim için oldukça zordu, ilk önce mobil hale getirmek için elimden geleni yaptım çünkü Spotify ile şarkı değiştirmek için bluetooth ile bağlanabiliyorum. Böylece bir mobil kontrol panelinden kontrol etmek daha kolay olurdu

Kontrol panelinizi istediğiniz şekilde tasarlayabilirsiniz, ben sadece kodumu ve tasarımımı buraya bırakacağım, istediğinizi yapabilirsiniz!

Javascript benim için daha kolay değildi, arka uç yollarımdan birkaç GET, tonlarca olay dinleyicisi ve sensörlerimden verileri almak için bazı socketio yapıları ile çalıştı.

9. Adım: Vakamı Oluşturmak ve Hepsini Bir araya getirmek

Vakamı Oluşturmak ve Hepsini Bir Araya Getirmek
Vakamı Oluşturmak ve Hepsini Bir Araya Getirmek
Vakamı Oluşturmak ve Hepsini Bir Araya Getirmek
Vakamı Oluşturmak ve Hepsini Bir Araya Getirmek
Vakamı Oluşturmak ve Hepsini Bir Araya Getirmek
Vakamı Oluşturmak ve Hepsini Bir Araya Getirmek
Vakamı Oluşturmak ve Hepsini Bir Araya Getirmek
Vakamı Oluşturmak ve Hepsini Bir Araya Getirmek

Önce kasanın nasıl görünmesini istediğimi çizmeye başladım, önemli olan şey her şeyin sığabileceği kadar büyük olmasıydı, çünkü kasaya koyacak büyük bir devremiz var ama olmaması için kompakt kalmamız gerekiyordu. çok yer kaplamaz

Kasayı tahtadan yaptım, kasa inşa etme konusunda bu kadar deneyiminiz olmadığında ve bununla yapabileceğiniz birçok şeyiniz olduğunda çalışmanın en kolay olduğunu düşünüyorum.

Etrafa serdiğim eski bir tahtadan başladım ve ahşabı kesmeye başladım. Temel davamı aldıktan sonra, sadece delikler açmak zorunda kaldım (kasanın ön tarafında çok fazla, resimlerde görebileceğiniz gibi ve içine biraz çivi koydum, bu gerçekten basit bir dava, ama oldukça havalı görünüyor ve mükemmel uyuyor. Ayrıca iyi görünmesi için beyaza boyamaya karar verdim.

Ve dava bittiğinde, son resimde de görebileceğiniz gibi, hepsini bir araya getirme zamanı geldi! Kutunun içi biraz karışık, ama her şey çalışıyor ve o kadar fazla alanım yoktu, bu yüzden projemi yeniden yaratıyorsanız daha büyük bir dava oluşturmanızı tavsiye ederim.

Önerilen: