Mục lục:

Trình tạo nhạc dựa trên thời tiết (Trình tạo âm trung dựa trên ESP8266): 4 bước (có hình ảnh)
Trình tạo nhạc dựa trên thời tiết (Trình tạo âm trung dựa trên ESP8266): 4 bước (có hình ảnh)

Video: Trình tạo nhạc dựa trên thời tiết (Trình tạo âm trung dựa trên ESP8266): 4 bước (có hình ảnh)

Video: Trình tạo nhạc dựa trên thời tiết (Trình tạo âm trung dựa trên ESP8266): 4 bước (có hình ảnh)
Video: [Lập trình ESP8266]Bài 5 - Thiết lập chức năng thu phát wifi trên chíp ESP8266 2024, Tháng mười một
Anonim
Máy tạo nhạc dựa trên thời tiết (Máy phát điện Midi dựa trên ESP8266)
Máy tạo nhạc dựa trên thời tiết (Máy phát điện Midi dựa trên ESP8266)
Máy tạo nhạc dựa trên thời tiết (Máy phát điện Midi dựa trên ESP8266)
Máy tạo nhạc dựa trên thời tiết (Máy phát điện Midi dựa trên ESP8266)

Xin chào, hôm nay tôi sẽ giải thích cách tạo trình tạo Nhạc dựa trên thời tiết nhỏ của riêng bạn.

Nó dựa trên ESP8266, giống như Arduino, và nó phản ứng với nhiệt độ, mưa và cường độ ánh sáng.

Đừng mong đợi nó tạo ra toàn bộ bài hát hoặc tiến trình hợp âm. Nó giống như Âm nhạc tổng hợp mà mọi người đôi khi tạo ra bằng Bộ tổng hợp mô-đun. Nhưng nó ít ngẫu nhiên hơn một chút, ví dụ, nó dính vào một số Cân nhất định.

Quân nhu

ESP8266 (Tôi đang sử dụng Feather Huzzah ESP8266 từ Adafruit)

Cảm biến nhiệt độ, độ ẩm và áp suất khí quyển BME280 (Phiên bản I2C)

Cảm biến mưa Arduino

25K LDR (Điện trở phụ thuộc vào ánh sáng)

Một số điện trở (hai 47, một 100, một 220 và một 1k Ohm)

Đầu nối Midi Nữ (5 Pin Din) thích hợp để gắn PCB

Dây nhảy

Breadboard hoặc một số loại bảng Prototyping

Máy tính, tôi sẽ sử dụng một máy chạy Windows 8.1, nhưng nó sẽ hoạt động trên bất kỳ hệ điều hành nào theo tôi biết.

Tùy chọn: Pin LiPo 1250 mAh với đầu nối JST từ Adafruit (chỉ tương thích với một số ESP)

Bước 1: Bước 1: Phần mềm

Trước hết, bạn cần Arduino IDE.

Sau đó, bạn cần trình điều khiển SiLabs CP2104 và Gói hội đồng quản trị ESP8266.

Điều này cho phép máy tính của bạn lập trình ESP thông qua UART được tích hợp sẵn và cho phép Arduino IDE lập trình ESP.

Bạn có thể tìm thấy tất cả thông tin về IDE, Driver và Board Package trên trang này trên trang web Adafruit.

Bạn cũng sẽ cần Thư viện Arduino Midi để có thể gửi dữ liệu Midi. Nó có thể được thực hiện mà không cần, nhưng điều này chỉ làm cho mọi thứ dễ dàng hơn rất nhiều.

Để giao tiếp với BME280, tôi đã sử dụng thư viện BME280-I2C-ESP32 này. (Đây là phiên bản I2C của BME280)

Và đến lượt nó, thư viện yêu cầu Adafruit Unified Sensor Driver. Đây không phải là lần đầu tiên tôi cần thư viện này để sử dụng một thư viện khác mà không gặp sự cố, vì vậy tôi luôn đánh dấu Thư viện này ở đâu đó.

Bước 2: Bước 2: Phần cứng

Bước 2: Phần cứng
Bước 2: Phần cứng
Bước 2: Phần cứng
Bước 2: Phần cứng
Bước 2: Phần cứng
Bước 2: Phần cứng

Đúng vậy, cuối cùng chúng ta cũng có được những thứ tốt, phần cứng.

Như đã đề cập, tôi đã sử dụng Adafruit ESP này, nhưng nó sẽ hoạt động tốt với NodeMCU. Tôi đề xuất phiên bản V2 vì tôi tin rằng nó phù hợp hơn rất nhiều trên breadboard và bạn có thể mua chúng rất rẻ từ eBay hoặc AliExpress. Tôi thích thực tế là Adafruit ESP có CPU nhanh hơn, đi kèm với đầu nối JST nữ cho LiPo và mạch sạc. Cũng dễ dàng hơn một chút để tìm ra Pin bạn đang sử dụng. Tôi tin rằng trên một NodeMCU, ví dụ như pin được gắn nhãn D1 thực sự là GPIO5, vì vậy bạn luôn cần một biểu đồ sơ đồ có sẵn. Không phải là một vấn đề lớn, nhưng chỉ thuận tiện cho người mới, họ đã dán nhãn Adafruit một cách rõ ràng.

Trước hết, hãy kết nối BME280, vì có một số biến thể trong mô hình này. Như bạn có thể thấy từ hình ảnh của tôi có một lỗ lớn, nhưng cũng có một số có 2 lỗ. Bạn có thể thấy nó có 4 đầu vào và đầu ra, 1 cho nguồn, một cho mặt đất và một SCL và SDA. Điều này có nghĩa là nó giao tiếp qua I2C. Tôi tin rằng các mô hình khác giao tiếp qua SPI. Và trong một số, bạn có thể chọn SPI hoặc I2C. SPI có thể yêu cầu một Thư viện khác hoặc ít nhất là mã khác và hệ thống dây điện khác nhau. Tôi cũng tin rằng S trong SPI là viết tắt của Serial và tôi không thể nói liệu điều này có ảnh hưởng đến phần Midi của dự án này hay không vì nó cũng hoạt động thông qua kết nối Serial.

Kết nối BME này là khá thẳng về phía trước. Trên ESP8266, bạn có thể thấy chân 4 và 5 được gắn nhãn SDA và SCL tương ứng. Chỉ cần kết nối trực tiếp các chân đó với chân SDA và SCL trên BME. Tất nhiên cũng kết nối VIN với Đường sắt tích cực của Breadboard và GND với Đường sắt âm. Chúng lần lượt được kết nối với chân 3V3 và GND của ESP.

Tiếp theo, chúng tôi sẽ kết nối LDR. Trong ví dụ Fritzing, bạn có thể thấy 3,3 volt đi qua một điện trở, sau đó nó được chia thành LDR và một điện trở khác. Sau đó, sau khi LDR, nó lại được tách thành một điện trở và ADC.

Điều này là để bảo vệ ESP khỏi nhận điện áp quá cao và đảm bảo rằng nó nhận được các giá trị có thể đọc được. ADC có thể xử lý 0-1 Volt nhưng 3V3 cung cấp 3,3 volt. Nó có thể sẽ không nổ bất cứ thứ gì nếu bạn lên trên 1 volt, nhưng nó sẽ không hoạt động tốt.

Vì vậy, đầu tiên chúng tôi sử dụng Bộ chia điện áp sử dụng điện trở 220 và 100 ohm để giảm điện áp từ 3,3 xuống 1,031 vôn. Sau đó, LDR 25k ohm và điện trở 1k ohm tạo thành một Voltage Devider khác để đưa điện áp xuống từ bất kỳ đâu trong khoảng từ 1,031 đến 0 volt tùy thuộc vào lượng ánh sáng mà LDR nhận được.

Sau đó, chúng tôi có Cảm biến mưa. Một phần ghi FC-37, phần khác ghi HW-103. Tôi vừa mua cái đầu tiên tôi tìm thấy trên Ebay nói rằng nó có thể xử lý 3,3 á và 5 volt. (Tôi nghĩ tất cả họ đều có thể).

Điều này khá đơn giản, chúng tôi có thể sử dụng đầu ra Analog, nhưng chúng tôi có thể chỉ cần xoay Trimpot nhỏ để làm cho cảm biến nhạy như chúng tôi muốn (và chúng tôi đã sử dụng một chân Analog trên ESP). Như với các cảm biến khác, chúng ta phải cung cấp Nguồn từ Đường ray tích cực và kết nối nó với Thanh ray nối đất. Đôi khi thứ tự của các chân khác nhau. Trên tôi là VCC, Ground, Digital, Analog, nhưng trên hình Fritzing thì khác. Nhưng nếu bạn chỉ chú ý, điều này sẽ dễ dàng làm đúng.

Và cuối cùng là Jack Midi. Trên Breadboard của tôi, nó không thể nằm trên mép của breadboard, vì tất cả các chân không đều thẳng hàng. Nếu điều này làm phiền bạn, tôi sẽ cố gắng lấy một breadboard trong một cửa hàng thực. Hoặc kiểm tra các hình ảnh rất tốt.

Như bạn có thể thấy từ sơ đồ, điện áp dương và tín hiệu Nối tiếp đều đi qua một điện trở 47 ohm.

Nếu bạn thực hiện dự án này với Arduino Uno chẳng hạn, hãy đảm bảo sử dụng điện trở 220 ohm !! Các ESP này hoạt động trên logic 3.3 V, nhưng hầu hết Arduino sử dụng 5.0 V, vì vậy bạn phải hạn chế dòng điện đi qua cáp Midi nhiều hơn.

Và cuối cùng là kết nối chốt giữa với Ground rail. 2 chân khác từ 5 Pin Din không được sử dụng.

Bước 3: Bước 3: Mã

Và cuối cùng chúng ta có mã!

Trong tệp Zip này, tôi đặt 2 bản phác thảo. 'LightRainTemp' chỉ đơn giản là kiểm tra tất cả các cảm biến và gửi lại giá trị của chúng. (Đảm bảo mở Cửa sổ đầu cuối!)

Và tất nhiên chúng ta có bản phác thảo LRTGenerativeMidi (LRT là viết tắt của Light, Rain, Temperature).

Bên trong, bạn có thể tìm thấy một loạt lời giải thích trong các bình luận về những gì đang xảy ra. Tôi sẽ không đi sâu vào cách tôi đã viết toàn bộ, điều đó sẽ mất hàng giờ. Nếu bạn muốn biết bắt đầu từ đâu với những thứ như thế này, tôi có một số dự án khác trong tâm trí. Một trình tạo Riff ngẫu nhiên nhỏ với một vài nút và Trình tạo trình tự với một loạt các tính năng mà tôi không thể tìm thấy trên các mô hình khác.

Nhưng những thứ tôi sẽ phải hoàn thành việc thiết kế và viết mã trước. Hãy cho tôi biết nếu bạn muốn được cập nhật về các dự án khác. Tôi vẫn chưa quyết định xem mình sẽ thực hiện nhiều hướng dẫn hơn hay làm một loạt video.

Bước 4: Bước 4: Kết nối và kiểm tra nó

Và bây giờ là lúc để kiểm tra nó!

Chỉ cần kết nối cáp Midi, đảm bảo đặt Synth / Bàn phím của bạn phản hồi với kênh 1 hoặc thay đổi kênh trong mã Arduino và xem nó có hoạt động không!

Tôi thực sự tò mò muốn xem và nghe những gì bạn làm với nó. Nếu bạn thực hiện các thay đổi, nâng cấp, chỉnh sửa (như đối với các giá trị Cảm biến ánh sáng và Nhiệt độ. Bên ngoài nó có thể hoạt động tốt hơn hoặc tệ hơn thì bên trong).

Tôi cũng tò mò muốn biết liệu nó có hoạt động tốt với tất cả các Bộ tổng hợp hay không. Trên Volca Bass của tôi, nó hoạt động hoàn hảo, nhưng trên Neutron của tôi, LFO bị kẹt ngay khi tôi gửi Midi Note. Nó ổn khi tôi khởi động lại nó, nhưng thật kỳ lạ. Tôi không chắc liệu có điều gì đó trong Thư viện Midi hoặc trong mã của mình hay không, tôi có thể thử làm điều đó sớm mà không cần Thư viện và xem liệu nó có tốt hơn không.

Cảm ơn đã đọc và xem và chúc may mắn !!

Đề xuất: