Spisu treści:

Generator muzyki oparty na pogodzie (generator Midi oparty na ESP8266): 4 kroki (ze zdjęciami)
Generator muzyki oparty na pogodzie (generator Midi oparty na ESP8266): 4 kroki (ze zdjęciami)

Wideo: Generator muzyki oparty na pogodzie (generator Midi oparty na ESP8266): 4 kroki (ze zdjęciami)

Wideo: Generator muzyki oparty na pogodzie (generator Midi oparty na ESP8266): 4 kroki (ze zdjęciami)
Wideo: 10 Najpotężniejszych rosyjskich broni zniszczonych na Ukrainie 2024, Lipiec
Anonim
Generator muzyki oparty na pogodzie (generator Midi oparty na ESP8266)
Generator muzyki oparty na pogodzie (generator Midi oparty na ESP8266)
Generator muzyki oparty na pogodzie (generator Midi oparty na ESP8266)
Generator muzyki oparty na pogodzie (generator Midi oparty na ESP8266)

Cześć, dzisiaj wyjaśnię, jak stworzyć swój własny mały generator muzyki oparty na pogodzie.

Jest oparty na ESP8266, który jest trochę jak Arduino i reaguje na temperaturę, deszcz i intensywność światła.

Nie oczekuj, że będzie tworzyć całe utwory lub progresje akordów. To bardziej jak muzyka generatywna, którą ludzie czasami tworzą na syntezatorach modułowych. Ale jest to trochę mniej przypadkowe, na przykład trzyma się niektórych Wagi.

Kieszonkowe dzieci

ESP8266 (używam Feather Huzzah ESP8266 firmy Adafruit)

Czujnik temperatury, wilgotności i ciśnienia barometrycznego BME280 (wersja I2C)

Czujnik deszczu Arduino

25K LDR (rezystor zależny od światła)

Niektóre rezystory (dwa 47, jeden 100, jeden 220 i jeden 1k Ohm)

Złącze żeńskie Midi (5 Pin Din) odpowiednie do montażu na płytce drukowanej

Przewody połączeniowe

Deska do krojenia chleba lub jakaś tablica prototypowa

Komputer, będę używał jednego z systemem Windows 8.1, ale powinien działać na każdym systemie operacyjnym, o ile wiem.

Opcjonalnie: akumulator LiPo 1250 mAh ze złączem JST firmy Adafruit (kompatybilny tylko z niektórymi ESP)

Krok 1: Krok 1: Oprogramowanie

Przede wszystkim potrzebujesz Arduino IDE.

Następnie potrzebujesz sterownika SiLabs CP2104 i pakietu płyty ESP8266.

Pozwala to komputerowi na programowanie ESP za pomocą wbudowanego UART i pozwala Arduino IDE na programowanie ESP.

Wszystkie informacje na temat pakietu IDE, sterowników i płyt można znaleźć na tej stronie w witrynie Adafruit.

Będziesz także potrzebować biblioteki Arduino Midi, aby móc wysyłać dane Midi. Można to zrobić bez, ale to po prostu ułatwia wszystko.

Do komunikacji z BME280 użyłem tej biblioteki BME280-I2C-ESP32. (Dotyczy to wersji I2C BME280)

A ta biblioteka z kolei wymaga Adafruit Unified Sensor Driver. To nie pierwszy raz, gdy potrzebuję tej biblioteki, aby bezproblemowo korzystać z innej biblioteki, więc zawsze mam tę bibliotekę gdzieś dodaną do zakładek.

Krok 2: Krok 2: Sprzęt

Krok 2: Sprzęt
Krok 2: Sprzęt
Krok 2: Sprzęt
Krok 2: Sprzęt
Krok 2: Sprzęt
Krok 2: Sprzęt

W porządku, więc w końcu dotarliśmy do dobrych rzeczy, sprzętu.

Jak wspomniano, użyłem tego ESP Adafruit, ale powinno działać dobrze z NodeMCU. Polecam wersję V2, ponieważ uważam, że znacznie lepiej pasuje do płytki prototypowej i można ją kupić bardzo tanio z eBay lub AliExpress. Podoba mi się fakt, że Adafruit ESP ma szybszy procesor, jest wyposażony w żeńskie złącze JST dla LiPo i układ ładowania. Nieco łatwiej jest też ustalić, jakiego Pina używasz. Wierzę, że na NodeMCU pin oznaczony jako D1 to na przykład GPIO5, więc zawsze potrzebujesz pod ręką wykresu Pinout. Wcale nie jest to duży problem, ale po prostu wygodny dla początkujących, którzy tak wyraźnie oznaczyli Adafruit.

Najpierw podłączmy BME280, bo w tym modelu są pewne odmiany. Jak widać na zdjęciach, kopalnia ma jedną dużą dziurę, ale są też takie, które mają dwie dziury. Widać, że ma 4 wejścia i wyjścia, 1 do zasilania, jedno do masy oraz SCL i SDA. Oznacza to, że komunikuje się przez I2C. Uważam, że inne modele komunikują się przez SPI. W niektórych możesz wybrać SPI lub I2C. SPI może wymagać innej biblioteki lub przynajmniej innego kodu i innego okablowania. Uważam również, że S w SPI oznacza Serial i nie mogę powiedzieć, czy będzie to kolidować z częścią Midi tego projektu, ponieważ działa to również przez połączenie szeregowe.

Podłączenie tego BME jest całkiem proste. W ESP8266 można zobaczyć piny 4 i 5 oznaczone odpowiednio SDA i SCL. Po prostu podłącz te piny bezpośrednio do pinów SDA i SCL na BME. Oczywiście podłącz również VIN do szyny dodatniej płyty chlebowej i GND do szyny ujemnej. Te z kolei są podłączone do pinów 3V3 i GND ESP.

W następnej kolejności podłączymy LDR. W przykładzie Fritzing widać, że 3,3 V przechodzi przez rezystor, a następnie jest rozdzielone na LDR i inny rezystor. Następnie po LDR jest ponownie dzielony na rezystor i na ADC.

Ma to na celu ochronę ESP przed uzyskaniem zbyt wysokich napięć i upewnienie się, że otrzymuje czytelne wartości. ADC może obsłużyć 0-1 V, ale 3V3 dostarcza 3,3 V. Prawdopodobnie niczego nie wysadzi, jeśli przekroczysz 1 V, ale to nie zadziała dobrze.

Więc najpierw używamy dzielnika napięcia za pomocą rezystorów 220 i 100 omów, aby obniżyć napięcie z 3,3 do 1,031 wolta. Następnie LDR 25 kΩ i rezystor 1 kΩ tworzą kolejny dzielnik napięcia, który obniża napięcie z dowolnego miejsca między 1,031 a 0 woltów, w zależności od ilości światła, jaką otrzymuje LDR.

Następnie mamy czujnik deszczu. Jedna część to FC-37, druga to HW-103. Właśnie kupiłem pierwszy, który znalazłem w serwisie eBay, który powiedział, że może obsługiwać 3,3 i 5 woltów. (Myślę, że wszyscy mogą).

To całkiem proste, moglibyśmy użyć wyjścia analogowego, ale możemy po prostu obrócić mały Trimpot, aby czujnik był tak czuły, jak chcemy (a już użyliśmy naszego jednego pinu analogowego w ESP). Podobnie jak w przypadku innych czujników, musimy dostarczyć zasilanie z szyny dodatniej i podłączyć ją do szyny uziemiającej. Czasami jednak kolejność pinów jest różna. U mnie to VCC, Ground, Digital, Analog, ale na obrazie Fritzinga jest inaczej. Ale jeśli po prostu zwrócisz na to uwagę, powinno to być łatwe.

I wreszcie Midi Jack. Na mojej płytce do krojenia chleba nie może leżeć na krawędzi płytki do krojenia chleba, ponieważ szpilki nie są wyrównane. Jeśli ci to przeszkadza, spróbowałbym kupić deskę do krojenia chleba w fizycznym sklepie. Lub przejrzyj zdjęcia bardzo dobrze.

Jak widać na schemacie, zarówno napięcie dodatnie, jak i sygnał Serial przechodzą przez rezystor 47 omów.

Jeśli wykonasz ten projekt z Arduino Uno na przykład, upewnij się, że używasz rezystorów 220 omów! Te ESP działają na logice 3,3 V, ale większość Arduino używa 5,0 V, więc musisz bardziej ograniczyć prąd przepływający przez kabel Midi.

I na koniec podłącz środkowy pin do szyny uziemiającej. Pozostałe 2 piny z 5 Pin Din nie są używane.

Krok 3: Krok 3: Kod

I wreszcie mamy kod!

W tym pliku Zip umieściłem 2 szkice. „LightRainTemp” po prostu testuje wszystkie czujniki i odsyła ich wartości. (Pamiętaj, aby otworzyć okno terminala!)

I oczywiście mamy szkic LRTGenerativeMidi (LRT to skrót od Light, Rain, Temperature).

W środku można znaleźć garść wyjaśnień w komentarzach na temat tego, co się dzieje. Nie zamierzam wchodzić w to, jak to wszystko napisałem, to zajęłoby godziny. Jeśli chcesz wiedzieć, od czego zacząć coś takiego, mam na myśli kilka innych projektów. Mały generator Random Riff z kilkoma przyciskami i Sequencerem z mnóstwem funkcji, których nie mogę znaleźć w innych modelach.

Ale te będę musiał najpierw skończyć projektowanie i kodowanie. Daj mi znać, jeśli chcesz być na bieżąco z innymi projektami. Nie zdecydowałem, czy zrobię więcej instrukcji, czy zrobię serię wideo.

Krok 4: Krok 4: Podłącz i przetestuj

A teraz czas to przetestować!

Po prostu podłącz kabel Midi, upewnij się, że ustawiłeś syntezator/klawiaturę tak, aby odpowiadał na kanał 1 lub zmień kanał w kodzie Arduino i sprawdź, czy działa!

Jestem naprawdę ciekawa, co z nim zrobisz. Jeśli dokonasz zmian, ulepszeń, poprawek (takich jak czujnik światła i wartości temperatury. Na zewnątrz może działać lepiej lub gorzej niż w środku) cokolwiek.

Jestem też ciekaw, czy działa dobrze ze wszystkimi syntezatorami. Na moim Volca Bass działa idealnie, ale na moim Neutronie LFO zacina się, gdy tylko wyślę Midi Note. Po ponownym uruchomieniu jest w porządku, ale to dziwne. Nie jestem pewien, czy coś jest w Bibliotece Midi lub w moim kodzie, mogę spróbować zrobić to bez Biblioteki wkrótce i zobaczyć, czy będzie lepiej.

Dzięki za czytanie i oglądanie i powodzenia!!

Zalecana: