Mục lục:
- Quân nhu
- Bước 1: Hiểu quy trình
- Bước 2: Thiết lập máy chủ - Ngrok
- Bước 3: Đặt máy chủ - Node-Red
- Bước 4: Thiết lập Máy chủ - MQTT (Mosquitto)
- Bước 5: Mã
- Bước 6: In Mô hình 3D
- Bước 7: Lắp ráp và hàn
- Bước 8: Chơi một số vòng lặp với bạn bè của bạn
Video: Giai điệu: 8 bước (có hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:30
Bên cạnh nhiều ưu điểm và giải pháp công nghệ cho phép làm việc tại nhà, khó khăn trong việc hình thành và tạo sự hỗ trợ cuộc sống giữa các đồng nghiệp vẫn còn. MELODY là một thiết bị vật lý kỹ thuật số cho phép tạo ra các đoạn nhạc ngắn cộng tác. Đồng nghiệp điều phối thời gian và thiết bị đặt phiên kẹt với các lượt và âm thanh ngẫu nhiên khác nhau. Người tham gia đầu tiên đặt một nhịp điệu cụ thể, sau đó mỗi người tham gia thêm phần âm nhạc của riêng họ tương ứng với nhịp điệu đã đặt. Để giúp người dùng không có nền tảng âm nhạc dễ dàng hơn, phần mềm giúp họ theo kịp tốc độ bằng cách lấy mẫu các lần nhấp và điều chỉnh theo nhịp điệu thích hợp. Buổi học kết thúc sau khoảng 3 phút khi tất cả học viên đã ghi xong phần của mình.
Làm thế nào nó hoạt động?
Melody dựa trên phần cứng ESP2866, giao tiếp với máy chủ Node-Red qua giao thức MQTT. Thiết bị chuyển các ghi chú của người chơi thành một chuỗi ký tự được gửi đến máy chủ và từ máy chủ trở lại những người chơi khác. Điều này cho phép mọi người chơi và nghe giai điệu mà không bị gián đoạn kết nối mạng của họ.
Melody có hai chỉ số hình ảnh chính. Đầu tiên là dải đèn LED cho phép người chơi biết khi nào Vòng lặp bắt đầu và khi nào kết thúc và cho biết đã đến lượt của người chơi hay chưa. Thứ hai là màn hình LED ở trung tâm của sản phẩm, được sử dụng để hiển thị trực quan giai điệu hiện có. Đếm ngược từ 3 đến 1 cho biết bắt đầu phát và màn hình hiển thị thời gian hướng dẫn người dùng về thời điểm và cách họ muốn đóng góp cho Giai điệu của nhóm. Bản ghi sẽ tự động được lưu vào đám mây của công ty để sử dụng trong tương lai.
Dự án này được thiết kế bởi bốn sinh viên tại phòng thí nghiệm đổi mới Truyền thông (MiLab) tại Trung tâm liên ngành Herzliya (IDC): Shahar Agassy, Eden Bar-Tov, Gal Eshchar và Gad Stern. Với sự hỗ trợ của Zvika Markfeld, Netta Ofer và Michal Leschinsky và sự hướng dẫn của Noa Morag và Oren Zuckerman.
cảm ơn Tom Granot vì đã tạo một tài liệu hướng dẫn tuyệt vời giúp tôi học cách triển khai một số điều ở đây (một số bước ở đây được mô phỏng theo tài liệu hướng dẫn tuyệt vời này).
Quân nhu
- máy in 3D
- ESP8266
- 7 nút
- Ma trận LED 8X8
- Dải đèn LED WS2812B
- Bộ khuếch đại I2S
- Giắc cắm âm thanh 4 cực 1/8 "(3,5 mm) nữ
- Điện trở 4X 1K
- Điện trở 1X3K
Bước 1: Hiểu quy trình
Trong dự án này, chúng tôi đã cố gắng giải quyết một số vấn đề:
- Làm thế nào chúng tôi có thể tạo nó trực tuyến để người chơi có thể chơi cùng một lúc?
- Làm cách nào chúng ta có thể khắc phục độ trễ của internet và tạo ra trải nghiệm liền mạch?
- Làm thế nào chúng ta có thể tạo ra âm nhạc hay ngay cả đối với những người không có nền tảng âm nhạc?
Thời gian và tuần tự của âm nhạc
Để giải quyết vấn đề đầu tiên, chúng tôi đã xem xét giao thức MIDI và cố gắng sử dụng nó, nhưng chúng tôi thấy rằng nó mạnh mẽ hơn, sau đó những gì chúng tôi thực sự cần cũng là chúng tôi thực sự muốn làm cho nó đơn giản để chúng tôi có thể xây dựng nguyên mẫu hoạt động đầu tiên. Vì vậy, chúng tôi đã lấy cảm hứng từ MIDI và làm cho vòng lặp âm nhạc của chúng tôi được biểu diễn bằng một chuỗi số (từ 0-5) nhân với thời gian kích thước vòng lặp của người chơi (chúng tôi sẽ giải thích tất cả các phép toán âm nhạc sau).
Trong âm nhạc, chúng tôi chia các nhịp điệu thành các thanh nhạc. Mỗi ô nhịp về cơ bản là một phân đoạn thời gian nhỏ, chúng tôi chọn sử dụng 4/4 (có nghĩa là 4 nhịp trong một ô nhịp) - nhịp phổ biến nhất.
Mỗi nhịp sau đó được chia thành 4 cửa sổ lấy mẫu để mỗi nốt được phát sẽ được tự động căn chỉnh đến một vị trí tốt và cũng cho phép chúng tôi biểu diễn một bài hát dưới dạng một chuỗi số để gửi đến máy chủ.
Để thân thiện với những người chơi không có nền tảng âm nhạc, chúng tôi đã làm ba điều:
- Giới hạn số lượng phím để khiến người chơi tập trung vào ít lựa chọn hơn.
- Chúng tôi đã chọn các nốt trên cùng một âm giai chơi tốt với nhau để không có bất kỳ âm thanh bất hòa nào.
- Mỗi lần nhấn được đặt thành "cửa sổ" của nhịp điệu, do đó, nhạc của trình phát sẽ khác với nhịp điệu
Các giao thức giao tiếp
Vì vậy, sau khi chúng tôi hiểu logic đằng sau âm nhạc, làm thế nào chúng tôi có thể giao tiếp nó giữa những người chơi của chúng tôi?
vì vậy, chúng tôi sử dụng MQTT, một giao thức mạng đăng ký xuất bản để truyền tải thông điệp giữa các thiết bị.
mỗi người chơi được đăng ký vào hai chủ đề: vòng lặp (lấy vòng lặp mới nhất) và lượt (lấy id của người chơi hiện tại cho mục đích đồng bộ).
Đến lượt của họ khi người chơi chơi xong giai điệu, họ sẽ nhấn nút LÊN và vòng lặp (bản cập nhật) sẽ được gửi đến nhà môi giới MQTT, sẽ truyền lại cho tất cả người chơi trên kênh vòng lặp.
vòng lặp này sẽ ở trạng thái "không hoạt động" cho đến khi vòng lặp hiện tại được phát xong và sau đó sẽ thay thế nó. do đó nó sẽ được minh bạch với người chơi. cũng vì vòng lặp mới hiện được lưu cục bộ trên thiết bị trình phát nên không có độ trễ internet cho âm nhạc, vì vậy chúng tôi đã giải quyết vấn đề thứ hai.
Bước 2: Thiết lập máy chủ - Ngrok
ngrok là một dịch vụ đào đường hầm. Nó cho phép chúng tôi hiển thị một dịch vụ đang chạy cục bộ (trong trường hợp của chúng tôi là Node-RED) với thế giới bên ngoài - mà không gặp rắc rối khi thiết lập máy chủ hoặc xử lý các bản ghi DNS. Bạn chỉ cần chạy Node-RED trên máy tính của mình, sau đó chạy ngrok trên cùng một cổng mà Node-RED đang chạy.
Vậy là xong - bạn sẽ nhận được một URL mà bạn có thể sử dụng để truy cập Node-RED từ mọi nơi trên thế giới, bất kể nó được kết nối với mạng nào.
Cài đặt & Cấu hình
- Tải xuống ngrok cho hệ điều hành của bạn từ đây.
- Làm theo bước trên trang tải xuống cho đến bước "Kích hoạt".
- Trong "Bước khởi động", hãy hoán đổi 80 cho 1883 - và http thành tcp như trong,./ngrok tcp 1883 tùy thuộc vào
- lưu URL và số cổng (đã thấy trong hình ảnh), chúng tôi sẽ cần, sau này.
Bước 3: Đặt máy chủ - Node-Red
Logic Máy chủ của dự án, Node-RED là một môi trường lập trình trực quan cho phép bạn kết nối nhiều phần mềm (và phần cứng!).
Ở đây, chúng tôi đã thực hiện logic của giao tiếp giữa tất cả người chơi (chia sẻ và nhận các vòng lặp và điều phối các lượt)
Cài đặt Node-Red
làm theo các bước sau để tải luồng Node-RED của chúng tôi trên máy tính cục bộ của bạn:
- Node-RED yêu cầu Node.js, hãy cài đặt nó từ đây
- tự cài đặt Node-RED bằng cách sử dụng các hướng dẫn tại đây.
Bây giờ bạn đã cài đặt Node-RED, hãy chạy nó theo hướng dẫn ở bước trên và xác thực, bạn có thể thấy một trang canvas trống. Nó phải được đặt tại
Bây giờ bạn sẽ cần nhập luồng mà chúng tôi đã sử dụng cho dự án này, bạn có thể tìm thấy nó ở đây và chỉ cần nhấn nhập thêm tệp JSON và nhấn Triển khai.
Cài đặt Node-Red:
Nếu bạn nhìn vào hình ảnh được đính kèm ở bước này, bạn có thể thấy chúng tôi có 2 "hành động" chính, chúng tôi nhận một vòng lặp hiện tại từ một trong những người chơi của chúng tôi và sau đó chúng tôi truyền nó cho tất cả những người chơi khác. Ngoài ra, chúng tôi phát sóng lượt mới cho tất cả người chơi. để trò chơi luôn đồng bộ.
Bước 4: Thiết lập Máy chủ - MQTT (Mosquitto)
Vì Node-RED không có nhà môi giới MQTT riêng và chúng tôi sẽ cần giao tiếp với các bộ cảm biến và bộ kích hoạt của chúng tôi qua MQTT, chúng tôi sẽ sử dụng một nhà môi giới MQTT chuyên dụng. Vì Node-RED đề xuất Mosquitto nên đây là cái mà chúng tôi sẽ sử dụng. Xem tại đây để biết một số thông tin về MQTT và lý do tại sao nó thường được sử dụng trong các dự án IoT.
Cài đặt & Cấu hình
- Tải xuống Mosquitto từ đây và cài đặt nó, tất cả tùy theo hệ điều hành của bạn.
- Thông thường, bạn cần làm theo hướng dẫn tại đây để kết nối Node-RED với Mosquitto. Tuy nhiên, nếu bạn đã sử dụng quy trình của chúng tôi, thì quy trình đó đã được định cấu hình sẵn cho bạn. Miễn là bạn cài đặt quy trình và Mosquitrro đúng cách, và Mosquitto chạy trên cổng 1883 (trên đó nó chạy theo mặc định), thì nó sẽ hoạt động tốt.
- Lưu ý rằng điều này có nghĩa là nhà môi giới MQTT và máy chủ Node-RED của bạn chạy trên cùng một máy. Điều này rất hữu ích để đơn giản hóa giao tiếp bên trong hệ thống. Xem ghi chú bên dưới để biết thêm thông tin.
Giám sát lưu lượng MQTT
Tôi đã sử dụng MQTTfx để theo dõi lưu lượng, đó là một công cụ tuyệt vời với GUI rất đơn giản.
Bước 5: Mã
bạn có thể tìm thấy mã trong GitHub (với tất cả các tệp dữ liệu và config.h)
Sự phụ thuộc:
trước khi tải mã vào esp2866, bạn sẽ cần cài đặt một số thư viện:
- libmad-8266 (giải mã nhạc từ SPIFF và sang I2S)
- EspMQTTClient
- ESP8266WiFi
- Adafruit_NeoPixel
Tải âm thanh lên ESP bằng SPIFF:
- làm theo hướng dẫn tuyệt vời này.
- thêm thư mục dữ liệu vào thư mục mã nguồn.
- Trong Arduino IDE dưới Công cụ thay đổi kích thước Flash thành "4MB (FS: 3MB TOA: ~ 512KB)"
- Cũng trong Công cụ, Nhấn ESP2866 Tải lên dữ liệu phác thảo
Cài đặt các thông số:
sau đó, truy cập tệp config.h và thêm dữ liệu cần thiết như thông tin đăng nhập WIFI, URL và cổng ngrok từ bước trước (kiểm tra ảnh đính kèm để tham khảo).
p.s - Tôi vẫn chưa thêm tính năng tự động kết nối để giúp bạn đặt dữ liệu WIFI và ngrok từ điện thoại thông minh của mình, vì nó chỉ là bằng chứng đầu tiên về khái niệm, tôi muốn bổ sung nó vào một ngày nào đó.
Đặt số lượng người chơi bạn muốn (trò chơi này hoạt động tốt nhất cho 2-3 người chơi và ngoài hộp, nó được tải với một loạt âm thanh cho 2 người chơi). nhưng có thể dễ dàng điều chỉnh để biết thêm:
đối với mỗi người chơi, hãy thêm một luồng khác trong nút màu đỏ để xuất bản một vòng lặp trong một chủ đề dành riêng cho người dùng.
Ngoài ra, bạn có thể chỉnh sửa âm thanh âm nhạc bằng cách sắp xếp mảng này thành âm thanh tùy chỉnh của bạn:
ở đây bạn có thể thấy 3 loại nhạc cụ (Chrods cho người chơi 0, Chì cho người chơi 1 và Bass cho người chơi 2)
const char * path [NUMofNotes] = {"/blank1.wav", "/Chords_Am.wav", "/Chords_F.wav", "/Chords_C.wav", "/Chords_G.wav", "/Chords_Dm.wav", "/blank2.wav", "/Lead_C.wav", "/Lead_D.wav", "/Lead_E.wav", "/Lead_G.wav", "/Lead_A.wav", "/blank0.wav", "/Bass_C3.wav", "/Bass_D3.wav", "/Bass_F3.wav", "/Bass_G3.wav", "/Bass_A3.wav"};
Bước 6: In Mô hình 3D
Đối với bước đầu tiên, hãy tải xuống STL và in chúng.
sau khi tháo giá đỡ và có thể chà nhám một chút (tùy thuộc vào độ phân giải của máy in)
sơn nó với màu sắc mong muốn
Bước 7: Lắp ráp và hàn
Vì vậy, về cơ bản đây là nơi điều kỳ diệu thực sự xảy ra.
bạn có thể làm theo những sơ đồ này và hàn mọi thứ lại với nhau.
lưu ý rằng bạn có thể thay đổi vị trí của các mã PIN chỉ cần nhớ thay đổi nó trong mã.
A0 và I2S được cố định khá chặt chẽ tại chỗ:
vì A0 dành cho cầu điện trở (chúng tôi sử dụng sự khác biệt trong dòng điện để biết nút nào trong số 5 đã được nhấn - tương tự như Bảng hướng dẫn này.
I2S có một mã hóa cụ thể, bạn có thể tìm thấy nó ở đây
Bước 8: Chơi một số vòng lặp với bạn bè của bạn
Đề xuất:
Giai điệu giai điệu Arduino đơn giản: 3 bước
Giai điệu Arduino đơn giản: Giai điệu giai điệu Arduino đơn giản là một cách bắt đầu với các dự án Arduino vì bạn chỉ tải lên mã từ phần mềm Arduino trực tiếp mà không cần phải viết gì cả
Cách sử dụng Piezo để tạo ra giai điệu: Khái niệm cơ bản: 4 bước (có hình ảnh)
Cách sử dụng Piezo để tạo ra giai điệu: Khái niệm cơ bản: Xin chào tất cả mọi người, Trong phần hướng dẫn này, chúng tôi sẽ sử dụng bộ rung Piezo để tạo ra âm sắc. Piezo là một thiết bị điện tử có thể được sử dụng cả để tạo ra cũng như phát hiện âm thanh. Ứng dụng: Bạn có thể sử dụng cùng một mạch để phát
Một bộ tạo giai điệu đơn giản: 7 bước (có hình ảnh)
Trình tạo giai điệu đơn giản: Trình tạo giai điệu Arduino là một bộ công tắc chia sẻ một thiết bị đầu cuối chung với GND trong khi các chân còn lại được kết nối với 2, 3, 4, 5, 6, 7, 8 và 9 chân kỹ thuật số Arduino và với một loa. được cài đặt giữa GND và chân kỹ thuật số 11 từ Arduino Uno
Hộp giai điệu: 4 bước (có hình ảnh)
Hộp giai điệu: Xin chào bạn! Tôi đã tạo một hộp có 3 nút với mỗi giai điệu khác nhau. Mỗi giai điệu có một màu đèn LED khác nhau và sẽ tiếp tục khi một nốt nhạc đang được phát. Bất cứ khi nào bạn đẩy nút " tiến " nhấn nút, giai điệu sẽ nhanh hơn. Những thứ bạn cần: -
Bộ công cụ huấn luyện bộ điều chế biên độ và giải điều chế: 5 bước (có hình ảnh)
Bộ điều chế biên độ và bộ điều chế giải điều chế: • Điều chế là quá trình thay đổi một hoặc nhiều thuộc tính của dạng sóng tuần hoàn (tín hiệu sóng mang) với tín hiệu điều chế (thông tin) được truyền đi. &Bull; Bộ điều chế là thiết bị thực hiện điều chế. &Bull; Bộ giải điều chế là một thiết bị