Mục lục:
- Quân nhu
- Bước 1: Bước 1: Phần mềm
- Bước 2: Bước 2: Phần cứng
- Bước 3: Bước 3: Mã
- Bước 4: Bước 4: Kết nối và kiểm tra nó
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)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
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
Đú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:
Trạm thời tiết NaTaLia: Trạm thời tiết sử dụng năng lượng mặt trời Arduino Đã thực hiện đúng cách: 8 bước (có hình ảnh)
Trạm thời tiết NaTaLia: Trạm thời tiết sử dụng năng lượng mặt trời Arduino Đã hoàn thành đúng cách: Sau 1 năm hoạt động thành công trên 2 địa điểm khác nhau, tôi đang chia sẻ kế hoạch dự án trạm thời tiết sử dụng năng lượng mặt trời của mình và giải thích cách nó phát triển thành một hệ thống thực sự có thể tồn tại trong thời gian dài thời kỳ từ năng lượng mặt trời. Nếu bạn theo dõi
Nến thời tiết - Xem nhanh thời tiết và nhiệt độ: 8 bước
Nến thời tiết - Xem nhanh thời tiết và nhiệt độ: Sử dụng ngọn nến kỳ diệu này, bạn có thể cho biết nhiệt độ hiện tại và điều kiện bên ngoài ngay lập tức
Acurite 5 trong 1 Trạm thời tiết sử dụng Raspberry Pi và Weewx (các trạm thời tiết khác tương thích): 5 bước (có Hình ảnh)
Trạm thời tiết Acurite 5 trong 1 Sử dụng Raspberry Pi và Weewx (các Trạm thời tiết khác Tương thích): Khi tôi mua trạm thời tiết Acurite 5 trong 1, tôi muốn có thể kiểm tra thời tiết tại nhà của mình khi tôi đi vắng. Khi tôi về nhà và thiết lập nó, tôi nhận ra rằng tôi phải có màn hình kết nối với máy tính hoặc mua trung tâm thông minh của họ,
Thông báo thời tiết dựa trên SIM900 GSM: 3 bước (có hình ảnh)
Máy thông báo thời tiết dựa trên SIM900 GSM: Chúng tôi luôn cần cập nhật thời tiết trên điện thoại di động của mình. Nó có thể là từ ứng dụng trực tuyến hoặc ứng dụng hệ thống sử dụng internet. Nhưng ở đây tôi sẽ chỉ cho bạn cách sử dụng tính năng Nhắn tin Văn bản trên điện thoại di động của chúng tôi để nhận các bản cập nhật về Nhiệt độ và Độ ẩm, bạn có thể mở rộng
Theo dõi thời tiết và đồng hồ mạng dựa trên ESP8266: 3 bước (có hình ảnh)
Theo dõi thời tiết và đồng hồ mạng dựa trên ESP8266: Dự án cuối tuần ngắn và đơn giản với ESP8266 và Màn hình OLED 0,96 '' 128x64. Thiết bị là đồng hồ mạng, tức là lấy thời gian từ máy chủ ntp. Nó cũng Hiển thị thông tin thời tiết với các biểu tượng từ openweathermap.org Mô-đun ESP8266 (A