Mục lục:

Piano Pi siêu âm với điều khiển bằng cử chỉ!: 10 bước (có hình ảnh)
Piano Pi siêu âm với điều khiển bằng cử chỉ!: 10 bước (có hình ảnh)

Video: Piano Pi siêu âm với điều khiển bằng cử chỉ!: 10 bước (có hình ảnh)

Video: Piano Pi siêu âm với điều khiển bằng cử chỉ!: 10 bước (có hình ảnh)
Video: Xé toạc không gian bằng MẮT của bạn | khanhtrungsi 2024, Tháng bảy
Anonim
Image
Image
Piano Pi siêu âm với điều khiển bằng cử chỉ!
Piano Pi siêu âm với điều khiển bằng cử chỉ!

Dự án này sử dụng cảm biến siêu âm HC-SR04 rẻ tiền làm đầu vào và tạo các nốt MIDI có thể được phát qua bộ tổng hợp trên Raspberry Pi để có âm thanh chất lượng cao.

Dự án cũng sử dụng một hình thức điều khiển cử chỉ cơ bản, trong đó nhạc cụ có thể được thay đổi bằng cách giữ tay của bạn trên hai cảm biến ngoài cùng trong vài giây. Một cử chỉ khác có thể được sử dụng để tắt Raspberry Pi sau khi bạn hoàn tất.

Video trên cho thấy sản phẩm hoàn chỉnh trong một bao vây được cắt bằng laser đơn giản. Có một video chuyên sâu hơn sau trong hướng dẫn này giải thích cách hoạt động của dự án.

Tôi đã tạo dự án này cùng với The Gizmo Dojo (không gian nhà sản xuất địa phương của tôi ở Broomfield, CO) để thực hiện một số cuộc triển lãm tương tác mà chúng tôi có thể tham gia các sự kiện STEM / STEAM địa phương và Maker Faires.

Vui lòng xem tài liệu và hướng dẫn mới nhất tại https://theotherandygrove.com/octasonic/ hiện bao gồm thông tin về phiên bản Python của dự án này (hướng dẫn này được viết cho phiên bản Rust).

Bước 1: Thành phần

Đối với hướng dẫn này, bạn sẽ cần các thành phần sau:

  • Raspberry Pi (2 hoặc 3) với thẻ SD
  • 8 cảm biến siêu âm HC-SR04
  • Bảng đột phá Octasonic
  • Bộ chuyển đổi mức logic hai hướng
  • 32 x 12 "Dây Jumper Nữ-Nữ để kết nối các cảm biến siêu âm
  • Dây Jumper Nữ-Nữ 13 x 6 "để kết nối Bộ chuyển đổi mức độ logic Raspberry Pi, Octasonic và Logic
  • Nguồn điện phù hợp cho Raspberry Pi
  • Loa PC hoặc tương tự

Tôi khuyên bạn nên sử dụng Raspberry Pi 3 nếu có thể vì nó có sức mạnh tính toán cao hơn, mang lại âm thanh dễ chịu và nhạy hơn. Nó có thể hoạt động tốt với Raspberry Pi 2 với một chút tinh chỉnh nhưng tôi sẽ không cố gắng sử dụng Raspberry Pi gốc cho dự án này.

Cảm biến siêu âm HC-SR04 có 4 kết nối - 5V, GND, Trigger và Echo. Thông thường, Trigger và Echo được kết nối với các chân riêng biệt trên vi điều khiển hoặc Raspberry Pi nhưng điều đó có nghĩa là bạn sẽ cần sử dụng 16 chân để kết nối 8 cảm biến và điều này không thực tế. Đây là nơi xuất hiện của bảng đột phá Octasonic. Bảng này kết nối với tất cả các cảm biến và có một bộ vi điều khiển chuyên dụng giám sát các cảm biến và sau đó giao tiếp với Raspberry Pi qua SPI.

HC-SR04 yêu cầu 5V và Raspberry Pi chỉ là 3,3V, vì vậy đây là lý do tại sao chúng ta cũng cần bộ chuyển đổi mức logic sẽ kết nối Raspberry Pi với bảng đột phá Octasonic.

Bước 2: Kết nối Cảm biến siêu âm với Bo mạch Octasonic

Kết nối Cảm biến siêu âm với Bo mạch Octasonic
Kết nối Cảm biến siêu âm với Bo mạch Octasonic
Kết nối Cảm biến siêu âm với Bo mạch Octasonic
Kết nối Cảm biến siêu âm với Bo mạch Octasonic

Sử dụng 4 dây jumper cái-cái để kết nối mỗi cảm biến siêu âm với bo mạch, hãy cẩn thận để kết nối chúng đúng cách xung quanh. Bo mạch được thiết kế để các chân có thứ tự giống như các chân trên cảm biến siêu âm. Từ trái sang phải trên bo mạch, các chân là GND, Trigger, Echo, 5V.

Bước 3: Kết nối Bộ chuyển đổi mức logic với Bảng Octasonic

Kết nối Bộ chuyển đổi mức logic với Bảng Octasonic
Kết nối Bộ chuyển đổi mức logic với Bảng Octasonic

Raspberry Pi và Octasonic Board giao tiếp qua SPI. SPI sử dụng 4 dây:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Đồng hồ nối tiếp (SCK)
  • Lựa chọn nô lệ (SS)

Ngoài ra, chúng ta cần kết nối nguồn (5V và GND).

Bộ chuyển đổi mức logic có hai mặt - điện áp thấp (LV) và điện áp cao (HV). Raspberry sẽ kết nối với phía LV vì nó là 3,3V. Octasonic sẽ kết nối với phía HV vì nó là 5V.

Bước này là để kết nối Octasonic với phía HV của bộ chuyển đổi mức logic

Xem ảnh đính kèm ở bước này cho biết chân nào nên được kết nối với bộ chuyển đổi mức logic.

Các kết nối từ Octasonic đến bộ chuyển đổi Mức Logic phải như sau:

  • 5V đến HV
  • SCK sang HV4
  • MISO sang HV3
  • MOSI sang HV2
  • SS sang HV1
  • GND sang GND

Bước 4: Kết nối Bộ chuyển đổi cấp độ logic với Raspberry Pi

Kết nối Bộ chuyển đổi mức logic với Raspberry Pi
Kết nối Bộ chuyển đổi mức logic với Raspberry Pi

Raspberry Pi và Octasonic Board giao tiếp qua SPI. SPI sử dụng 4 dây:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Đồng hồ nối tiếp (SCK)
  • Lựa chọn nô lệ (SS)

Ngoài ra, chúng ta cần kết nối nguồn (3.3V và GND). Bộ chuyển đổi mức logic có hai mặt - điện áp thấp (LV) và điện áp cao (HV). Raspberry sẽ kết nối với phía LV vì nó là 3,3V. Octasonic sẽ kết nối với phía HV vì nó là 5V.

Bước này là để kết nối Raspberry Pi với phía LV của bộ chuyển đổi mức logic

Các kết nối từ Raspbery Pi đến bộ chuyển đổi Mức logic phải như sau:

  • 3.3V sang LV
  • GPIO11 (SPI_SCLK) đến LV4
  • GPIO09 (SPI_MISO) đến LV3
  • GPIO10 (SPI_MOSI) đến LV2
  • GPIO08 (SPI_CE0_N) SS đến LV1
  • GND sang GND

Sử dụng sơ đồ kèm theo bước này để xác định vị trí các chân chính xác trên Raspberry Pi!

Bước 5: Kết nối Raspberry Pi 5V với Octasonic 5V

Kết nối Raspberry Pi 5V với Octasonic 5V
Kết nối Raspberry Pi 5V với Octasonic 5V
Kết nối Raspberry Pi 5V với Octasonic 5V
Kết nối Raspberry Pi 5V với Octasonic 5V

Có một dây cuối cùng để thêm vào. Chúng tôi thực sự cần cấp nguồn cho bo mạch Octasonic với 5V, vì vậy chúng tôi thực hiện điều đó bằng cách kết nối một trong các chân 5V của Raspberry Pi với chân 5V trên đầu cắm Octasonic AVR. Đây là chân dưới cùng bên trái trong khối tiêu đề AVR (đây là khối 2 x 3 ở trên cùng bên phải của bảng). Xem ảnh đính kèm cho biết vị trí của khối AVR.

Xem sơ đồ đính kèm khác để tìm chân 5V trên Raspberry Pi.

Bước 6: Cài đặt phần mềm

Cài đặt Raspian

Bắt đầu với một bản cài đặt mới Raspbian Jessie, sau đó cập nhật nó lên phiên bản mới nhất:

sudo apt-get cập nhật

sudo apt-get nâng cấp

Bật SPI

Bạn phải kích hoạt SPI trên Raspberry Pi để dự án này hoạt động! Sử dụng tiện ích Cấu hình Raspberry Pi để thực hiện việc này.

Điều quan trọng là phải khởi động lại Pi sau khi bật SPI để nó có hiệu lực

Cài đặt FluidSynth

Fluidsynth là một phần mềm MIDI synth miễn phí tuyệt vời. Bạn có thể cài đặt nó từ dòng lệnh bằng lệnh này:

sudo apt-get install Fluynth

Cài đặt ngôn ngữ lập trình Rust

Ultrasonic Pi Piano được triển khai bằng Ngôn ngữ lập trình Rust của Mozilla (nó giống như C ++ nhưng không có các bit xấu). Đó là thứ mà tất cả những đứa trẻ sành điệu đang sử dụng ngày nay.

Làm theo hướng dẫn tại https://rustup.rs/ để cài đặt Rust. Để tiết kiệm thời gian cho bạn, hướng dẫn là chạy một lệnh này. Bạn có thể chấp nhận câu trả lời mặc định cho bất kỳ câu hỏi nào trong quá trình cài đặt.

LƯU Ý: Kể từ khi đăng bài hướng dẫn này, có một số vấn đề với việc cài đặt Rust trên Raspberry Pi. Thời gian không hợp lệ: - / nhưng tôi đã sửa đổi lệnh bên dưới để giải quyết vấn đề. Hy vọng rằng họ sẽ sớm sửa lỗi này. Tôi đang làm việc để tạo ra một hình ảnh mà mọi người có thể tải xuống và ghi vào thẻ SD. Nếu bạn muốn điều đó, xin vui lòng liên hệ với tôi.

xuất RUSTUP_USE_HYPER = 1curl https://sh.rustup.rs -sSf | NS

Tải xuống mã nguồn Ultrasonic Pi Piano

Mã nguồn của mã nguồn Ultrasonic Pi Piano được lưu trữ trên github. Có hai tùy chọn để lấy mã. Nếu bạn đã quen với git và github, bạn có thể sao chép repo:

git clone [email protected]: TheGizmoDojo / UltrasonicPiPiano.git

Ngoài ra, bạn có thể tải xuống tệp zip có mã mới nhất.

Biên dịch mã nguồn

cd UltrasonicPiPiano

đóng hàng - làm ơn

Kiểm tra mã

Trước khi chuyển sang tạo nhạc ở bước tiếp theo, hãy đảm bảo rằng phần mềm chạy và chúng ta có thể đọc dữ liệu hợp lệ từ các cảm biến.

Sử dụng lệnh sau để chạy ứng dụng. Thao tác này sẽ đọc dữ liệu từ các cảm biến và dịch chúng thành các ghi chú MIDI sau đó được in ra trên bảng điều khiển. Khi bạn di chuyển bàn tay của mình trên các cảm biến, bạn sẽ thấy dữ liệu được tạo ra. Nếu không, hãy chuyển đến phần khắc phục sự cố ở cuối hướng dẫn này.

vận chuyển hàng hóa - xin vui lòng

Nếu bạn tò mò, cờ "--release" cho Rust biên dịch mã hiệu quả nhất có thể, trái ngược với cài đặt "--debug" mặc định.

Bước 7: Tạo một số bản nhạc

Đảm bảo rằng bạn vẫn ở trong thư mục mà bạn đã tải xuống mã nguồn và chạy lệnh sau.

Tập lệnh "run.sh" này đảm bảo rằng mã đã được biên dịch và sau đó chạy mã, chuyển đầu ra thành chất lỏng.

./run.sh

Đảm bảo rằng bạn đã kết nối loa khuếch đại với giắc cắm âm thanh 3,5 mm trên Raspberry Pi và bạn sẽ nghe thấy nhạc khi di chuyển tay qua các cảm biến.

Nếu bạn không nghe thấy nhạc và bạn có gắn màn hình HDMI, thì đầu ra âm thanh có thể sẽ ở đó. Để khắc phục điều này, chỉ cần chạy lệnh này và sau đó khởi động lại Pi Piano:

sudo amixer cset numid = 3 1

Thay đổi âm lượng

Âm lượng (hoặc "độ lợi") được chỉ định với tham số "-g" thành chất lỏng. Bạn có thể sửa đổi tập lệnh run.sh và thay đổi giá trị này. Xin lưu ý rằng những thay đổi nhỏ trong thông số này dẫn đến thay đổi lớn về khối lượng, vì vậy hãy thử tăng nó lên một lượng nhỏ (như 0,1 hoặc 0,2).

Bước 8: Điều khiển bằng cử chỉ

Xem video được đính kèm với bước này để biết minh họa đầy đủ về dự án, bao gồm cả cách hoạt động của các điều khiển cử chỉ.

Khái niệm này là rất đơn giản. Phần mềm theo dõi cảm biến nào được che phủ (trong vòng 10cm) và cảm biến nào không. Điều này chuyển thành 8 số nhị phân (1 hoặc 0). Điều này rất thuận tiện, vì một chuỗi 8 số nhị phân tạo thành một "byte" có thể đại diện cho các số từ 0 đến 255. Nếu bạn chưa biết về số nhị phân thì tôi thực sự khuyên bạn nên tìm kiếm một hướng dẫn. Số nhị phân là một kỹ năng cơ bản cần học nếu bạn muốn học thêm về lập trình.

Phần mềm ánh xạ trạng thái hiện tại của các cảm biến thành một byte duy nhất đại diện cho cử chỉ hiện tại. Nếu số đó giữ nguyên trong một số chu kỳ, thì phần mềm sẽ hoạt động theo cử chỉ đó.

Bởi vì cảm biến siêu âm không phải là siêu đáng tin cậy và có thể có sự can thiệp giữa các cảm biến, bạn sẽ cần kiên nhẫn khi sử dụng các cử chỉ. Thử thay đổi khoảng cách mà bạn nắm tay từ các cảm biến cũng như góc mà bạn cầm tay. Bạn cũng nên thử cầm vật gì đó bằng phẳng và chắc chắn trên các cảm biến để phản xạ âm thanh tốt hơn.

Bước 9: Làm bao vây

Nếu bạn muốn biến nó thành một cuộc triển lãm lâu dài và có thể giới thiệu nó với mọi người, có thể bạn sẽ muốn làm một loại bao vây nào đó. Điều này có thể được làm từ gỗ, bìa cứng hoặc nhiều vật liệu khác. Đây là một video cho thấy bao vây mà chúng tôi đang thực hiện cho dự án này. Cái này được làm từ gỗ, có khoan lỗ để giữ các cảm biến siêu âm tại chỗ.

Bước 10: Khắc phục sự cố và các bước tiếp theo

Xử lý sự cố

Nếu dự án không hoạt động, nó thường là do lỗi dây dẫn. Hãy dành thời gian của bạn để kiểm tra lại tất cả các kết nối.

Một vấn đề phổ biến khác là không thể bật SPI và khởi động lại pi.

Vui lòng truy cập https://theotherandygrove.com/octasonic/ để có tài liệu đầy đủ bao gồm các mẹo khắc phục sự cố, với các bài viết cụ thể về Rust và Python cũng như thông tin về cách nhận hỗ trợ.

Bước tiếp theo

Khi bạn đã có dự án hoạt động, tôi khuyên bạn nên thử nghiệm với mã và thử các loại nhạc cụ khác nhau. Mã công cụ MIDI nằm trong khoảng từ 1 đến 127 và được ghi lại ở đây.

Bạn có muốn một nhạc cụ duy nhất với mỗi cảm biến chơi một quãng tám khác nhau không? Có lẽ bạn muốn mỗi cảm biến là một công cụ riêng biệt? Khả năng gần như là vô hạn!

Tôi hy vọng bạn thích hướng dẫn này. Hãy thích nó nếu bạn đã làm và nhớ đăng ký với tôi tại đây và kênh YouTube của tôi để xem các dự án trong tương lai.

Đề xuất: