Mũ bảo hiểm Spartan Voice Changer: 14 bước (có hình ảnh)
Mũ bảo hiểm Spartan Voice Changer: 14 bước (có hình ảnh)
Anonim
Mũ bảo hiểm Spartan Voice Changer
Mũ bảo hiểm Spartan Voice Changer
Mũ bảo hiểm Spartan Voice Changer
Mũ bảo hiểm Spartan Voice Changer

Xin chào! Chúng tôi là một nhóm gồm 4 sinh viên từ trường Bách khoa của Đại học Sorbonne:

  • Louis Buchert
  • Bilal Melehi
  • Bao Tinh Piot
  • Marco Longépé

Dự án này được thực hiện như một phần trong nghiên cứu của chúng tôi và nhằm mục đích sử dụng một số công cụ, cũng như chứng minh những thành tựu lý thuyết của chúng tôi.

Vật thể nổi tiếng có hình dáng bên ngoài giống như một chiếc mũ bảo hiểm của anh hùng trong một trò chơi điện tử nào đó sẽ bị mất tên. Đối với mặt thiết kế, chúng tôi có một màn hình hiển thị biến đổi Fourier của tín hiệu âm thanh phát ra từ loa. Mục đích của tai nghe này là thay đổi giọng nói của nhà cung cấp dịch vụ trong thời gian thực bằng cách sử dụng một số hiệu ứng có thể chọn.

Mục tiêu giáo dục:

  • Ghi lại âm thanh từ micrô
  • Khuếch đại, lọc, số hóa tín hiệu
  • Nhận ra FFT của một tín hiệu
  • Hiển thị FFT này trên màn hình
  • Tổng hợp tín hiệu
  • Lấy âm thanh ra khỏi loa
  • Nhận ra các hiệu ứng trên âm thanh (độ vang, tiếng vang, v.v.)

Bây giờ chúng tôi đã đặt nền và trình bày dự án, đã đến lúc bạn bắt tay vào thực hiện!

Bước 1: Yêu cầu 1/3 - Phần cứng

Yêu cầu 1/3 - Phần cứng
Yêu cầu 1/3 - Phần cứng

Để xây dựng thành công mũ bảo hiểm của bạn, chúng tôi sẽ cần một số phần cứng để chạy thiết bị.

  • Bảng phát triển DE0-Nano-SoC bởi Terasic + Adafruit Màn hình LCD TFT (Arduino)
  • Truy cập vào máy in 3D để làm mũ bảo hiểm (Nếu bạn là sinh viên đại học di chuyển đến gần trường đại học của bạn, một số có phòng thí nghiệm cho sinh viên)
  • Máy tính có kết nối Internet và kết nối tối thiểu (USB, Ethernet). Máy tính của bạn cũng cần phải có bộ xử lý mạnh vì việc biên dịch các chương trình trên Qsys mất rất nhiều thời gian.
  • (Không bắt buộc) Máy in tạo Bảng mạch in (PCB) từ tệp Gerber để thu nhỏ kích thước mạch + mỏ hàn để đặt các thành phần trên PCB.
  • (Mạnh mẽ phản đối): Một ly cà phê ngon để thưởng thức công việc của bạn với Người hướng dẫn của chúng tôi:)

Bước 2: Yêu cầu 2/3 - Các thành phần cho mạch của bạn

Yêu cầu 2/3 - Các thành phần cho mạch của bạn
Yêu cầu 2/3 - Các thành phần cho mạch của bạn
Yêu cầu 2/3 - Các thành phần cho mạch của bạn
Yêu cầu 2/3 - Các thành phần cho mạch của bạn
Yêu cầu 2/3 - Các thành phần cho mạch của bạn
Yêu cầu 2/3 - Các thành phần cho mạch của bạn

Dưới đây là các thành phần cần thiết cho mạch của bạn:

  • Bộ khuếch đại âm thanh lớp Texas Instrument LM386 AB
  • BreadBoard
  • Bộ cáp Male-Male, Male-Female
  • Bộ chuyển đổi tín hiệu kỹ thuật số sang tương tự (DAC) LM358P
  • Loa
  • Micrô nhỏ được sử dụng trong mạch tương tự
  • Một bộ điện trở trò chơi từ 1kOhm đến 220kOhm
  • Tụ điện 1.5nF
  • Tụ điện 50nF
  • Tụ điện 100nF
  • Tụ điện 100uF
  • Tụ điện 220uF
  • x4 Tụ điện 10uF

Bước 3: Yêu cầu 3/3 - Phần mềm

Yêu cầu 3/3 - Phần mềm
Yêu cầu 3/3 - Phần mềm
Yêu cầu 3/3 - Phần mềm
Yêu cầu 3/3 - Phần mềm

Cuối cùng nhưng không kém phần quan trọng, bạn sẽ cần phần mềm:

  • Quartus 15.1: Phiên bản Lite
  • Một trình biên dịch C (gcc chẳng hạn)
  • Altium cho thiết kế PCB
  • Bộ nhúng SoC của Altera để giao tiếp với bản đồ SoC

  • Bột trét

Bước 4: Mạch đầu vào

Mạch đầu vào
Mạch đầu vào
Mạch đầu vào
Mạch đầu vào
Mạch đầu vào
Mạch đầu vào
Mạch đầu vào
Mạch đầu vào

Hãy xây dựng mạch. Sử dụng hình ảnh trên của mạch để lắp ráp nó trên breadboard của bạn. Bạn cũng sẽ thấy hình ảnh của BreadBoard và mạch bên trong để xem các chân được kết nối như thế nào. Toàn bộ mạch được cấp nguồn bằng dòng điện một chiều (DC) 5V. Đối với điều này, bạn có thể sử dụng pin 5V với bộ chuyển đổi USB-B hoặc bộ tạo chức năng.

Một số lời nhắc:

  • Nguồn điện 5V và mặt đất được kết nối trên các đường ngang riêng biệt của bảng mạch
  • Nếu bạn muốn kết nối song song 2 thành phần, hãy đặt chúng vào một đường chung của breadboard
  • Nếu bạn muốn kết nối 2 thành phần nối tiếp, các thành phần chỉ phải có một chân trong một đường chung của bảng mạch.

Đừng ngần ngại xem hướng dẫn chuyên dụng về cách sử dụng breadboard và nối mạch trên đó. Cũng đừng quên đọc kỹ vị trí chân cắm của Bộ khuếch đại âm thanh LM358P (xem hình trên)

Bước 5: Mạch đầu ra

Mạch đầu ra
Mạch đầu ra
Mạch đầu ra
Mạch đầu ra
Mạch đầu ra
Mạch đầu ra
Mạch đầu ra
Mạch đầu ra

Hướng dẫn khá giống như Bước 4. Bốn đầu vào: SDI, không phải CS, SCK, không phải LDAC là từ Bảng DE0-Nano-Soc của bạn. Chúng ta sẽ xem cách tạo chúng ở phần sau.

Đừng quên đọc kỹ các vị trí chân cắm của Bộ khuếch đại âm thanh LM386 (xem hình trên)

Bước 6: [TÙY CHỌN] Tạo Borad mạch in và các thành phần hàn

[TÙY CHỌN] Tạo Borad mạch in và các thành phần hàn
[TÙY CHỌN] Tạo Borad mạch in và các thành phần hàn
[TÙY CHỌN] Tạo Borad mạch in và các thành phần hàn
[TÙY CHỌN] Tạo Borad mạch in và các thành phần hàn
[TÙY CHỌN] Tạo Borad mạch in và các thành phần hàn
[TÙY CHỌN] Tạo Borad mạch in và các thành phần hàn

Nếu bạn đủ may mắn sở hữu một Máy in Bảng mạch hoặc có thể sử dụng một chiếc, chúng tôi sẽ tạo Bảng mạch in (PCB) của riêng mình. Lưu ý rằng bước này là tùy chọn. Bước này chỉ bao gồm chuyển mạch của bạn từ breadboard sang PCB.

Bạn sẽ cần 2 tệp GERBER này.

Các tệp này được tạo trên Altium. Sử dụng chúng trên phần mềm máy in PCB của bạn để in PCB của bạn. Khi bạn nhận được PCB của mình, hãy đảm bảo rằng PCB của bạn sạch sẽ và các bản nhạc được in chính xác.

Bây giờ ở đây là vấn đề thực sự: Hàn. 2 hình trên là bản đồ của mạch trên PCB. Mỗi thành phần có tên (R6, C4, MK1, v.v.). Hình ở Bước 4 và 5 hiển thị các thông số thành phần (Điện trở, độ dẫn điện..). Đặt từng thành phần từ breadboard của bạn vào PCB theo tên của chúng.

Khi bạn đã hàn mọi thứ bằng mỏ hàn của mình, hãy kiểm tra mọi thành phần bằng vôn kế để kiểm tra xem có hiện tượng đoản mạch nào không.

Bước 7: Thiết lập SoC

Thiết lập SoC
Thiết lập SoC
Thiết lập SoC
Thiết lập SoC

Liên quan đến thiết lập SoC, bạn sẽ cần chạy một số lệnh và tập lệnh có trong bộ SoC nhúng trong một thiết bị đầu cuối. Để làm điều này, bạn sẽ cần thêm một số $ PATH. PATH được sử dụng trong một thiết bị đầu cuối để tìm kiếm một tệp trong các thư mục được cung cấp bởi đường dẫn khi bạn đang chạy một lệnh. Để làm như vậy, hãy nhập dòng lệnh sau:

xuất PATH = / cygdrive / c / altera_lite / 15.1 / quartus / sopc_builder / bin: $ PATH

Sau đó, gõ dòng lệnh để tạo tiêu đề từ tệp mềm. Bạn có được tệp mềm bằng cách biên dịch dự án của mình trên Quartus. Để làm như vậy, hãy nhập:./generate_header.

Bước 8: Lập trình C HPS

Lập trình C HPS
Lập trình C HPS

Chúng ta cần nhận ra 2 điều trong phần này, đó là đọc giá trị của ADC và ghi nó vào SPI.

1. Đọc giá trị của ADC

Địa chỉ của bộ nhớ chứa ADC không thể truy cập trực tiếp, trên thực tế, hệ thống linux có trên thẻ thiết lập một phần trừu tượng của bộ nhớ. Để thực sự truy cập địa chỉ ADC, chúng tôi sẽ sử dụng chức năng mmap.

"h2p_lw_spi_addr = virtual_base + ((unsigned long) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (unsigned long) (HW_REGS_MASK));"

Lệnh này cho phép thêm một độ lệch vào đầu địa chỉ cơ sở để đến địa chỉ của bộ nhớ được cấp phát cho ADC và thực hiện trên địa chỉ kết quả một logic AND để tính đến việc che.

Sau đó, bạn chỉ cần tham khảo con trỏ trong chương trình để lấy giá trị của nó.

2. Viết giá trị của ADC trong SPI

Thao tác giống hệt nhau, lần này chúng tôi cung cấp cho mmap offset để hạ cánh trên địa chỉ được SPI cấp phát. Trong khi viết SPI, tài liệu kỹ thuật chỉ định rằng bạn phải ghi vào địa chỉ + 1 giá trị của adc.

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

Hướng dẫn này cho phép bạn ghi vào SPI. Thật vậy, bit 4, vì vậy 1 << 12, là bit cho phép kích hoạt SPI. Với OR logic, do đó chúng tôi cung cấp cả bit kích hoạt và giá trị của ADC cho SPI.

Bước 9: Thu thập kỹ thuật số ADC từ thẻ

Thu thập kỹ thuật số ADC từ thẻ
Thu thập kỹ thuật số ADC từ thẻ
Thu thập kỹ thuật số ADC từ thẻ
Thu thập kỹ thuật số ADC từ thẻ
Thu thập kỹ thuật số ADC từ thẻ
Thu thập kỹ thuật số ADC từ thẻ
Thu thập kỹ thuật số ADC từ thẻ
Thu thập kỹ thuật số ADC từ thẻ

Trước hết, bạn sẽ phải đặt địa chỉ IP Ethernet cho máy tính của mình thông qua Control Panel -> Network -> Card Parmesals. Chọn giao diện ethernet của thẻ, thuộc tính, địa chỉ ipv4 và nhập IP cố định, mặt nạ, v.v.

Tiếp theo, kết nối thẻ từ phía giắc cắm nguồn với cáp micro USB. Mở trình lập trình Quartus và khởi chạy quá trình xuất. Thao tác này sẽ được thực hiện lại sau mỗi lần tắt nguồn của thẻ.

Thay đổi cáp cắm micro USB, để kết nối lần này bên cạnh giắc cắm Ethernet. Bây giờ, với Putty, bạn sẽ cần phải kết nối với thẻ bằng liên kết nối tiếp. Cấu hình có thể nhìn thấy trong ảnh, ý tưởng là thay thế COM5 bằng COM theo sau là số mà bạn có thể tìm thấy trong trình quản lý thiết bị của mình (nhấp chuột phải vào biểu tượng cửa sổ để mở nó).

Nhấn enter, bạn đã kết nối.

Thông tin để khởi động lại dự án: - Sửa ip ethernet tương ứng với thẻ - Bật thẻ lên, mỗi lần bật nguồn cần đưa "chương trình" theo quartus dự án đã biên dịch trong thẻ. Việc này được thực hiện thông qua cổng micro-USB - Để có thể hiển thị kết quả của chương trình chúng ta sử dụng thêm micro USB nhưng UART - Với putty được cấu hình cho nối tiếp COM5 (hoặc 6 watch gestinnaire periph) Kết nối với card. - Đặt mật khẩu (passwd) - Đặt địa chỉ IP ifconfig ethxx IPchoice (IP cách đó không xa cho đời máy PC) - Tạo tiêu đề theo Qsys với thiết bị đầu cuối được nhúng (xuất PATH) - make - scp l. bản đồ - thực hiện theo quy trình của putty

Bước 10: Tính toán FFT

Tính toán FFT
Tính toán FFT

Để có được Fast Fourier Transform trong chương trình C của chúng tôi, chúng tôi sẽ sử dụng một thư viện được viết bởi Mark Borgerding: Kiss FFT. Bạn có thể tải thư viện tại đây: https://kissfft.sourceforge.net/. Việc áp dụng FFT trên một tín hiệu là cần thiết để sửa đổi và áp dụng các hiệu ứng tín hiệu. Nó cũng có thể dùng để hiển thị phổ của tín hiệu.

Bước đầu tiên trong chương trình C của bạn bao gồm cấp phát bộ nhớ để lưu trữ kết quả FFT. Kích thước của bộ nhớ phụ thuộc vào số điểm được sử dụng để tính FFT. Bạn càng có nhiều điểm, FFT sẽ càng phức tạp hơn. Tuy nhiên, chương trình sẽ chạy chậm hơn và sẽ sử dụng nhiều bộ nhớ hơn. Lưu ý rằng bạn sẽ nhận được hai mảng từ hàm kiss_fft: đầu vào và đầu ra của hàm (cx_in và cx_out)

Khi mảng của chúng ta được lấp đầy bằng các giá trị FFT mới, tức là khi r = Win - 1, chúng ta đang xử lý FFT. Liên quan đến màn hình, chúng tôi chỉ hiển thị phần dương của quang phổ, vì có sự đối xứng giữa phần âm và phần dương.

Liên quan đến trục hoành, chúng tôi đang giảm các giá trị đỉnh xuống 100 * height / (height²) để phân biệt các đỉnh của các tần số chính.

Chúng tôi đang sử dụng lệnh gọi hệ thống usleep để xác định tần suất đọc cho các giá trị ADC. Tần số này hiện được đặt ở 1, 5 Hz.

Bước 11: Hiển thị FFT

Hiển thị FFT
Hiển thị FFT
Hiển thị FFT
Hiển thị FFT

Dựa trên một ví dụ được đưa ra trên Màn hình LCD TFT của Adafruit có sẵn tại đây: https://www.terasic.com/downloads/cd-rom/de0-nano-s…, chúng tôi đã lập trình NIOS của Hội đồng quản trị của chúng tôi để anh ta có thể đọc giá trị ADC.

Vì vậy, thanh ghi ADC được chia sẻ giữa NIOS và HPS vì các giá trị ADC sẽ được sử dụng để hiển thị FFT trên màn hình NIOS và các giá trị tương tự đó sẽ được ghi trên SPI để được xuất ra bảng và cuối cùng được chuyển đổi bằng DAC để nhận tín hiệu tương tự.

Bước 12: Lắp ráp

cuộc họp
cuộc họp

Chúng tôi đã gần hoàn thành! Bạn sẽ cần phải lắp ráp mọi phần của projet (mạch vào, mạch ra và Bo mạch). Đảm bảo kết nối các bộ phận với các chân chính xác theo Dự án Quartus.

  1. Mạch đầu vào sẽ gửi tín hiệu âm thanh mà micro thu được, khuếch đại, lọc và bù trừ.
  2. Chương trình C hiện diện trên thẻ sẽ đọc các giá trị của ADC như chúng ta đã thấy trước đó và sẽ ghi nó trên SPI để chúng ta có thể khôi phục giá trị trên GPIO của thẻ.
  3. Sau đó GPIO đầu ra của SPI sẽ truyền thông tin sẽ được giải mã bởi DAC của chúng tôi và khuếch đại bằng cách chạy tới loa.

Bước 13: Hiệu ứng âm thanh

Hiệu ứng âm thanh
Hiệu ứng âm thanh
Hiệu ứng âm thanh
Hiệu ứng âm thanh

Bước duy nhất còn lại là hiệu ứng âm thanh.

Các hiệu ứng có sẵn là:

  • Bộ lọc tần số cao
  • Bộ lọc tần số thấp

Bạn có thể chuyển đổi giữa các hiệu ứng nhờ một nút. Nút này sẽ thay đổi một biến trong chương trình C của chúng tôi, vì vậy nó có thể áp dụng hiệu ứng phù hợp.

Bước 14: [TÙY CHỌN] Làm mũ bảo hiểm

[TÙY CHỌN] Làm mũ bảo hiểm
[TÙY CHỌN] Làm mũ bảo hiểm
[TÙY CHỌN] Làm mũ bảo hiểm
[TÙY CHỌN] Làm mũ bảo hiểm
[TÙY CHỌN] Làm mũ bảo hiểm
[TÙY CHỌN] Làm mũ bảo hiểm

Đây là bước thủ công nhất của dự án:

  1. Đầu tiên, chúng tôi dán các bộ phận in 3D khác nhau của mũ bảo hiểm.
  2. Để lấp đầy khoảng trống giữa các miếng dán, chúng tôi đã thêm một lớp hoàn thiện bằng cách sử dụng bút 3D.
  3. Chúng tôi đánh bóng các điểm giao nhau bằng bút và mũ bảo hiểm nói chung hơn để bức tranh được giữ tốt sau đó.
  4. Chúng tôi sơn chiếc mũ bảo hiểm với 2 lớp: Lớp thứ nhất màu đen antraxit, cận cảnh và lớp thứ hai là màu xanh lá cây chính từ xa hơn để tạo ra các sắc thái của màu xanh lá cây đậm hơn.
  5. Cuối cùng chúng tôi in logo của trường chúng tôi trên mặt của Mũ bảo hiểm