Spartan Ses Değiştirici Kask: 14 Adım (Resimlerle)
Spartan Ses Değiştirici Kask: 14 Adım (Resimlerle)
Anonim
Spartan Ses Değiştirici Kask
Spartan Ses Değiştirici Kask
Spartan Ses Değiştirici Kask
Spartan Ses Değiştirici Kask

Merhaba! Sorbonne Üniversitesi Politeknik okulundan 4 öğrenciden oluşan bir ekibiz:

  • Louis Buchert
  • Bilal Melehi
  • Bao Tinh Piot
  • Marco Longepe

Bu proje, çalışmalarımızın bir parçası olarak gerçekleştirilir ve teorik başarılarımızı göstermenin yanı sıra bir dizi aracı da ele almayı amaçlar.

Ünlü nesne, adı kaybolacak belirli bir video oyununun kahramanına benzeyen bir kask görünümüne bürünüyor. Tasarım tarafında ayrıca hoparlörden gelen ses sinyalinin Fourier dönüşümünü gösteren bir ekranımız var. Bu kulaklığın amacı, bir dizi seçilebilir efekt kullanarak taşıyıcının sesini gerçek zamanlı olarak değiştirmektir.

Eğitim hedefleri:

  • Sesi bir mikrofondan yakalayın
  • Sinyali yükseltin, filtreleyin, dijitalleştirin
  • Bir sinyalin FFT'sini gerçekleştirin
  • Bu FFT'yi ekranda göster
  • sinyal sentezi
  • Hoparlörden ses alma
  • Ses üzerindeki etkileri fark edin (yankılanma, yankı, vb…)

Şimdi arka planı koyduk ve projeyi sunduk, şimdi elinize geçme zamanı!

Adım 1: Gereksinimler 1/3 - Donanım

Gereksinimler 1/3 - Donanım
Gereksinimler 1/3 - Donanım

Kaskınızı başarılı bir şekilde inşa etmek için, cihazı çalıştırmak için bazı donanımlara ihtiyacımız olacak.

  • DE0-Nano-SoC Terasic Geliştirme Kartı + Adafruit TFT LCD Ekran (Arduino)
  • Kaskı yapmak için bir 3D yazıcıya erişim (Üniversite öğrencisiyseniz üniversitenize daha yakın bir yere gidin, bazılarında öğrencilerin erişebileceği laboratuvarlar vardır)
  • İnternet bağlantısı ve minimum bağlantı (USB, Ethernet) olan bir bilgisayar. Programları Qsys üzerinde derlemek çok zaman aldığından, bilgisayarınızın da güçlü bir işlemciye sahip olması gerekir.
  • (Gerekli değil) Devre boyutunu küçültmek için Gerber dosyalarından Baskılı Devre Kartları (PCB) yapan bir yazıcı + PCB üzerine bileşenleri koymak için bir havya.
  • (Şiddetle Tavsiye Edilir): Eğitilebilirliğimizle işinizin tadını çıkarmak için iyi bir kahve:)

Adım 2: Gereksinimler 2/3 - Devreniz İçin Bileşenler

Gereksinimler 2/3 - Devreniz İçin Bileşenler
Gereksinimler 2/3 - Devreniz İçin Bileşenler
Gereksinimler 2/3 - Devreniz İçin Bileşenler
Gereksinimler 2/3 - Devreniz İçin Bileşenler
Gereksinimler 2/3 - Devreniz İçin Bileşenler
Gereksinimler 2/3 - Devreniz İçin Bileşenler

Devreniz için gerekli bileşenler şunlardır:

  • Texas Instrument LM386 AB sınıfı ses yükseltici
  • ekmek tahtası
  • Erkek-Erkek, Erkek-Dişi kablo seti
  • LM358P Dijitalden Analoh'a dönüştürücü (DAC)
  • hoparlör
  • Analog devrede kullanılan küçük mikrofon
  • 1kOhm'dan 220kOhm'a kadar bir oyun direnç seti
  • Kapasitör 1.5nF
  • Kapasitör 50nF
  • Kapasitör 100nF
  • Kapasitör 100uF
  • Kapasitör 220uF
  • x4 Kapasitörler 10uF

Adım 3: Gereksinimler 3/3 - Yazılım

Gereksinimler 3/3 - Yazılım
Gereksinimler 3/3 - Yazılım
Gereksinimler 3/3 - Yazılım
Gereksinimler 3/3 - Yazılım

Son olarak, yazılıma ihtiyacınız olacak:

  • Quartus 15.1: Lite sürümü
  • AC derleyicisi (örneğin gcc)
  • PCB Tasarımı için Altium
  • Altera'nın SoC haritasıyla iletişim kurmak için gömülü SoC paketi

  • Macun

Adım 4: Giriş Devresi

Giriş Devresi
Giriş Devresi
Giriş Devresi
Giriş Devresi
Giriş Devresi
Giriş Devresi
Giriş Devresi
Giriş Devresi

Devreyi kuralım. Breadboard'unuza monte etmek için devrenin yukarıdaki resmini kullanın. Pinlerin nasıl bağlandığını görmek için BreadBoard'un resmini ve içindeki devreyi de göreceksiniz. Tüm devre 5V Doğru Akım (DC) ile beslenir. Bunun için USB-B dönüştürücülü 5V pil veya fonksiyon üreteci kullanabilirsiniz.

Bazı hatırlatmalar:

  • 5V güç kaynağı ve toprak, breadboard'un ayrı yatay hatlarına bağlanır
  • 2 bileşeni paralel olarak bağlamak istiyorsanız, bunları devre tahtasının ortak bir satırına koyun.
  • 2 seri bileşen bağlamak istiyorsanız, bileşenlerin devre tahtasının ortak satırında yalnızca bir pin olması gerekir.

Bir devre tahtasının nasıl kullanılacağına ve üzerinde bir devrenin nasıl oluşturulacağına ilişkin özel öğreticiyi izlemekten çekinmeyin. Ayrıca LM358P Ses Amplifikatörünün pin konumunu dikkatlice okumayı unutmayın (yukarıdaki resme bakın)

Adım 5: Çıkış Devresi

Çıkış Devresi
Çıkış Devresi
Çıkış Devresi
Çıkış Devresi
Çıkış Devresi
Çıkış Devresi
Çıkış Devresi
Çıkış Devresi

Adım 4 ile tamamen aynı talimatlar: Dört giriş: SDI, CS değil, SCK, LDAC değil DE0-Nano-Soc Board'unuzdandır. Bunları nasıl oluşturacağımızı daha sonra göreceğiz.

LM386 Ses Amplifikatörünün pin pozisyonlarını dikkatlice okumayı unutmayın (yukarıdaki resme bakın)

Adım 6: [İSTEĞE BAĞLI] Baskı Devre Borad ve Lehimleme Bileşenleri Oluşturma

[OPSİYONEL] Baskı Devre Borad ve Lehimleme Bileşenleri Oluşturma
[OPSİYONEL] Baskı Devre Borad ve Lehimleme Bileşenleri Oluşturma
[İSTEĞE BAĞLI] Baskı Devre Borad ve Lehimleme Bileşenleri Oluşturma
[İSTEĞE BAĞLI] Baskı Devre Borad ve Lehimleme Bileşenleri Oluşturma
[OPSİYONEL] Baskı Devre Borad ve Lehimleme Bileşenleri Oluşturma
[OPSİYONEL] Baskı Devre Borad ve Lehimleme Bileşenleri Oluşturma

Bir Devre Kartı Yazıcısına sahip olacak kadar şanslıysanız veya bir tane kullanabiliyorsanız, kendi Baskılı Devre Kartımızı (PCB) oluşturacağız. Bu adımın isteğe bağlı olduğunu unutmayın. Bu adım yalnızca devrenizi bir devre tahtasından bir PCB'ye taşımaktan ibarettir.

Bu 2 GERBER dosyasına ihtiyacınız olacak.

Bu dosyalar Altium'da yapıldı. PCB'nizi yazdırmak için bunları PCB yazıcı yazılımınızda kullanın. PCB'nizi aldıktan sonra, PCB'nizin temiz olduğundan ve parçaların doğru yazdırıldığından emin olun.

Şimdi asıl mesele geliyor: Lehimleme. Yukarıdaki 2 resim devrenin PCB üzerindeki haritasıdır. Her bileşenin adı vardır (R6, C4, MK1 vb.). Adım 4 ve 5'teki resimler, bileşen parametrelerini gösterir (Direnç, iletkenlik..). Breadboard'ınızdaki her bir bileşeni, adlarına göre PCB'ye yerleştirin.

Her şeyi havya ile lehimledikten sonra, kısa devre olup olmadığını kontrol etmek için her bileşeni bir voltmetre ile test edin.

Adım 7: SoC Kurulumu

SoC Kurulumu
SoC Kurulumu
SoC Kurulumu
SoC Kurulumu

SoC kurulumu ile ilgili olarak, bir terminal içinde SoC gömülü paketinde bulunan bazı komutları ve komut dosyalarını çalıştırmanız gerekecektir. Bunu yapmak için biraz $PATH eklemeniz gerekecek. PATH, bir komut çalıştırırken yol tarafından verilen dizinlerde bir dosya aramak için bir terminal içinde kullanılır. Bunu yapmak için aşağıdaki komut satırını yazın:

PATH dışa aktar=/cygdrive/c/altera_lite/15.1/quartus/sopc_builder/bin:$PATH

Ardından, bir sof dosyasından başlıklar oluşturmak için komut satırını yazın. Projenizi Quartus üzerinde derleyerek sof dosyasını elde edersiniz. Bunu yapmak için şunu yazın:./generate_header.

Adım 8: C HPS'nin Programlanması

Programlama C HPS
Programlama C HPS

Bu kısımda 2 şeyin farkına varmamız gerekiyor, yani ADC'nin değerini oku ve SPI'ye yaz.

1. ADC'nin değerini okuyun

ADC'nin bulunduğu belleğin adresine doğrudan erişilemez, aslında kartta bulunan linux sistemi belleğin bir soyutlamasını kurar. ADC adresine gerçekten erişmek için mmap işlevini kullanacağız.

"h2p_lw_spi_addr=virtual_base + ((imzasız uzun)(ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (imzasız uzun)(HW_REGS_MASK));"

Bu komut, ADC için ayrılan belleğin adresine ulaşmak için temel adresin başına bir ofset eklenmesine ve sonuçta ortaya çıkan adreste bir mantık gerçekleştirmesine VE maskelemeyi hesaba katmasına izin verir.

Bundan sonra, değerini elde etmek için programdaki işaretçinin referansını kaldırmak yeterli olacaktır.

2. ADC'nin değerini SPI'ye yazın

Manipülasyon aynıdır, bu sefer mmap'e SPI tarafından tahsis edilen adrese inmesi için ofseti veriyoruz. SPI'da yazarken, teknik dokümantasyonda adc'nin değerini + 1 adresine yazmanız gerektiğini belirtir.

"*(h2p_lw_spi_addr+1) = ((0x1 << 12) | *h2p_lw_adc_addr);"

Bu talimat, SPI'ye yazmanıza izin verir. Gerçekten de bit 4, yani 1 << 12, SPI'yi etkinleştirmeye izin veren bittir. Mantıksal bir VEYA ile bu nedenle SPI'ye hem aktivasyon bitini hem de ADC'nin değerini veriyoruz.

Adım 9: ADC'nin Karttan Dijital Alınması

ADC'nin Karttan Dijital Alınması
ADC'nin Karttan Dijital Alınması
ADC'nin Karttan Dijital Alınması
ADC'nin Karttan Dijital Alınması
ADC'nin Karttan Dijital Alınması
ADC'nin Karttan Dijital Alınması
ADC'nin Karttan Dijital Alınması
ADC'nin Karttan Dijital Alınması

Öncelikle Denetim Masası -> Ağ -> Kart Parmesalleri üzerinden bilgisayarınızın Ethernet IP adresini ayarlamanız gerekecektir. Kartın ethernet arayüzünü, özelliğini, ipv4 adresini seçin ve sabit bir IP, maske vb…

Ardından, mikro USB kablosuyla kartı güç girişi tarafından bağlayın. Quartus programlayıcıyı açın ve dışa aktarmayı başlatın. Bu manipülasyon, kartın her kapatılışından sonra yeniden yapılacaktır.

Bu sefer Ethernet jakının yanına bağlamak için mikro USB fiş kablosunu değiştirin. Şimdi Putty ile karta seri bağlantı ile bağlanmak gerekecek. Konfigürasyon fotoğraflarda görülebilir, fikir COM5'i COM ile değiştirmek ve ardından cihaz yöneticinizde bulabileceğiniz numaradır (açmak için windows logosuna sağ tıklayın).

Enter'a basın, bağlandınız.

Projeyi yeniden başlatmak için bilgi: - Karta karşılık gelen ethernet ipini düzeltin - Kartı açın, gücü her açtığınızda, kartta derlenen projeyi quartus altına "program" ile koymak gerekir. Bu mikro-USB portu üzerinden yapılır - Programın sonucunu görüntüleyebilmek için daha çok mikro USB kullanıyoruz ama UART - Seri COM5 için yapılandırılmış macun ile (veya 6 saat gestinnaire periph) Karta bağlayın. - Bir parola belirleyin (passwd) - ifconfig ethxx IPchoice IP adresini ayarlayın (PC'nin ethx'i için bundan çok uzak olmayan IP) - Terminal gömülü (export PATH) ile Qsys'e göre başlığı oluşturun - make - scp l exec map - prog'u macun altında yürüt

Adım 10: FFT Hesaplaması

FFT Hesaplaması
FFT Hesaplaması

C programımızda Fast Fourier Dönüşümünü elde etmek için Mark Borgerding: Kiss FFT tarafından yazılmış bir kütüphane kullanacağız. Kütüphaneyi buradan indirebilirsiniz: https://kissfft.sourceforge.net/. Sinyal efektlerini değiştirmek ve uygulamak için bir sinyale FFT uygulamak gereklidir. Ayrıca bir sinyalin spektrumunu görüntülemeye de hizmet edebilir.

C programınızdaki ilk adım, FFT sonucunu saklamak için bellek ayırmaktır. Belleğin boyutu, FFT'yi hesaplamak için kullanılan nokta sayısına bağlıdır. Puanınız ne kadar fazlaysa, FFT o kadar kesin olacaktır. Ancak program daha yavaş çalışacak ve daha fazla bellek kullanacaktır. Kiss_fft işlevinden iki dizi alacağınızı unutmayın: işlevin girişi ve çıkışı (cx_in ve cx_out)

Dizimiz yeni FFT değerleriyle dolduğunda, yani r = Win - 1 olduğunda FFT'yi işliyoruz. Görüntü ile ilgili olarak, negatif kısım ile pozitif kısım arasında bir simetri olduğundan, spektrumun sadece pozitif kısmını gösteriyoruz.

Yatay eksen ile ilgili olarak, ana frekansların tepe noktalarını ayırt edebilmek için tepe değerlerini 100*yükseklik/(yükseklik²) azaltıyoruz.

ADC değerleri için bir okuma frekansı tanımlamak için usleep sistem çağrısını kullanıyoruz. Bu frekans şu anda 1, 5 Hz olarak ayarlanmıştır.

Adım 11: FFT'yi Görüntüleme

FFT'yi Görüntüleme
FFT'yi Görüntüleme
FFT'yi Görüntüleme
FFT'yi Görüntüleme

Burada bulunan Adafruit TFT LCD Ekranında verilen bir örneğe dayanarak: https://www.terasic.com/downloads/cd-rom/de0-nano-s… Panomuzun NIOS'unu okuyabilmesi için programladık. ADC değeri.

Böylece ADC kaydı NIOS ve HPS arasında paylaşılır, çünkü ADC değerleri NIOS ekranında FFT'yi görüntülemek için kullanılacaktır ve aynı değerler karttan çıkmak ve son olarak dönüştürülmek için SPI'ye yazılacaktır. Analog bir sinyal almak için DAC tarafından.

Adım 12: Montaj

toplantı
toplantı

Neredeyse bitirdik! Projenin her parçasını (giriş devresi, çıkış devresi ve Pano) bir araya getirmeniz gerekecektir. Parçaları Quartus Projesine göre doğru pinlere bağladığınızdan emin olun.

  1. Giriş devresi, mikrofon tarafından yakalanan, güçlendirilen, filtrelenen ve dengelenen ses sinyalini gönderir.
  2. Kartta bulunan C programı daha önce gördüğümüz gibi ADC değerlerini okuyacak ve kartın GPIO'sundaki değeri kurtarabilmemiz için SPI'ye yazacaktır.
  3. Daha sonra SPI'nin çıkış GPIO'su, DAC'ımız tarafından kodu çözülecek ve hoparlöre ulaşmak için çalıştırılarak güçlendirilecek bilgileri iletecektir.

Adım 13: Ses Efektleri

Ses efektleri
Ses efektleri
Ses efektleri
Ses efektleri

Geriye kalan tek adım ses efektleri.

Kullanılabilir efektler şunlardır:

  • Yüksek Frekans Filtresi
  • Düşük Frekans Filtresi

Bir düğme sayesinde efektler arasında geçiş yapabilirsiniz. Bu buton C programımızda bir değişkeni değiştirecek ve doğru efekti uygulayabilecektir.

Adım 14: [İSTEĞE BAĞLI] Kask Yapımı

[İSTEĞE BAĞLI] Kask Yapımı
[İSTEĞE BAĞLI] Kask Yapımı
[İSTEĞE BAĞLI] Kask Yapımı
[İSTEĞE BAĞLI] Kask Yapımı
[İSTEĞE BAĞLI] Kask Yapımı
[İSTEĞE BAĞLI] Kask Yapımı

İşte projenin en manuel aşamasındayız:

  1. İlk önce kaskın farklı 3D baskılı kısımlarını yapıştırdık.
  2. Yapıştırılan parçalar arasındaki boşlukları doldurmak için 3D kalem kullanarak bir bitiş ekledik.
  3. Kalem ve miğferle doldurulmuş boşlukları daha genel olarak cilaladık, böylece boyama daha sonra iyi durur.
  4. Kaskı 2 katmanla boyadık: İlki yakın antrasit siyahı ve ikincisi daha koyu yeşil tonları vermek için birincil yeşil.
  5. Son olarak kaskın yan tarafına okulumuzun logosunu bastık.