Serwisy partnerskie:
Close icon
Serwisy partnerskie

Sonarowy theremin MIDI

Artykuł opisuje instrument muzyczny, który wykorzystuje dwa sonarowe czujniki odległości do kontrolowania wysokości i jakości dźwięków. Nie jest to oczywiście prawdziwy Theremin, ale "Theremin" stał się ogólnym określeniem dla instrumentów, na których gra się, machając rękami.
Article Image

Ma wbudowany syntezator MIDI, wzmacniacz i głośniki. Nuty muzyczne są wytwarzane przez układ scalony MIDI - VS1053 - który ma 127 głosów (czyli rzekomo różnych instrumentów). Ma on dużą polifonię (do 64), dzięki czemu może grać pojedyncze nuty lub akordy.

Prawą ręką steruje się odtwarzaną nutą. W trybie "dyskretnym" przestrzeń po prawej stronie jest podzielona na "pojemniki". Gdy dłoń wchodzi do pojemnika, rozpoczyna się nuta dla tego pojemnika. Po opuszczeniu pojemnika nuta może się zatrzymać (np. w organach) lub naturalnie zaniknąć (np. w fortepianie).

W trybie "ciągłym" miejsce po prawej stronie określa wysokość dźwięku, która może być zmienna w sposób ciągły - tak jak w oryginalnym Thereminie. Nuta zaczyna się, gdy ręka wchodzi w przestrzeń, a kończy, gdy ją opuszcza.

Lewa ręka kontroluje jakość odtwarzanej nuty. Może kontrolować głośność, tremolo, vibrato, pitch-bend, pogłos, itp.

Na małym ekranie LCD znajduje się menu, które umożliwia wybór bieżącego instrumentu, funkcji lewej ręki, skali (lub „klucza”) prawej ręki, vibrato, tremolo, itp. Możesz zapisywać i wczytywać różne "ustawienia" i szybko przełączać się między nimi podczas występu.

Cały instrument MIDI "Theremin" działa samodzielnie, posiada własny głośnik i akumulator.

Jeśli chcesz skopiować moją konstrukcję, będziesz potrzebował Arduino Nano, modułu VS1053, wyświetlacza LCD ST7735 1,44", dwóch modułów HC-SR04 i kilku rezystorów. Będziesz też potrzebował głośników z zasilaniem, być może ogniwa litowego i zasilacza, ale szczegóły będą zależały od tego, jak zdecydujesz się go zbudować. Wszystkie te dodatki zdobyłem na wyprzedażach samochodowych i w sklepach charytatywnych. Będziesz też potrzebował typowych akcesoriów do warsztatu elektronicznego.

Krok 1: Sterowanie modułem VS1053

Wybrałem moduł VS1053 pokazany na rysunku. Zwróć uwagę na dwa stabilizatory SOT223, dwa gniazda jack i położenie złącza. Poszukaj na eBayu, Alibabie lub u swojego ulubionego dostawcy modułu VS1053, który wygląda tak samo. Są one dostępne w serwisie Aliexpress tutaj i tutaj.

Kupiłem go kilka lat temu i wygląda na to, że nie jest już dostępny na eBayu, tylko na Alibabie. Wersja z czerwoną płytką drukowaną jest teraz dostępna w serwisie eBay. Wygląda na to, że funkcjonalnie jest identyczna, ale rozkład pinów jest inny, więc trzeba będzie dostosować moje schematy i układy. Nie testowałem jej. W dyskusji (poniżej) można znaleźć instrukcje, jak dodać rezystor do czerwonej płytki drukowanej, aby włączyć "żywe" MIDI. Możesz też wysłać dodatkowe komendy podczas konfiguracji, aby je włączyć.

VS1053 to świetny układ scalony, ale dość skomplikowany. Ja używam tylko jego części MIDI. Układem VS1053 można sterować za pomocą interfejsu szeregowego, ale ja używam magistrali SPI, ponieważ jest to wygodniejsze w przypadku Arduino Nano. Każdy bajt wysłany przez magistralę SPI jest traktowany jako rozkaz MIDI.

Listę rozkazów MIDI można znaleźć w Internecie. VS1053 reaguje na niektóre z nich, ale nie na wszystkie. Program Miditheremin0.exe pokazuje te, o których wiem, że działają.

Zapoznaj się z notą katalogową VS1053 (na końcu artykułu). Jest to bardzo obszerny i trudny dokument. Sekcja "8.9 Supported MIDI Formats" to prawie wszystko, co mówi o MIDI. Sekcja "10.10 Real-Time MIDI" mówi o użyciu GPIO0 i GPIO1 do włączenia MIDI, ale płytka, którą posiadam, nie wymagała żadnego specjalnego włączenia. Możesz także pobrać listę komunikatów MIDI (nie wszystkie są obsługiwane przez VS1053).

Podłącz moduł VS1053 do Arduino Nano, jak pokazano na rysunku, i załaduj plik INO do Arduino. Ja użyłem płytki bezlutowej. Na tym etapie nie mam jej zdjęcia, ale możesz zobaczyć płytkę z innymi komponentami w kroku poniżej.

Szkic INO odbiera bajt z komputera przez linię szeregową i wysyła go do układu VS1053. Jest to bardzo prosty program, który pozwala przetestować VS1053. Podłącz gniazdo wyjściowe jack do słuchawek lub głośnika komputerowego.

Program Miditheremin0.exe dla Windows (pobierz Step1.zip z githuba) wysyła polecenia do VS1053. Kliknij przycisk "90 note vel", aby zagrać nutę. Możesz też napisać własny program dla systemu Windows. Możesz też użyć jednego z wielu programów terminalowych dostępnych w Internecie.

Moduł VS1053 ma następujące piny:

  • magistrala SPI ma zwykłe MISO, MOSI i SCLK
  • jeśli XRST jest w stanie niskim, układ się resetuje
  • XDCS nie robi nic w trybie SPI, więc należy go połączyć z XCS
  • XCS to wybór trybu
  • DREQ informuje, że układ jest gotowy do przyjęcia nowej komendy. 

XCS powinien być ustawiony w stan niski podczas wysyłania bajtu, a następnie w stan wysoki. W ten sposób masz pewność, że zsynchronizowałeś pierwszy bit każdego bajtu. Odczyt DREQ informuje, że układ jest gotowy do przyjęcia nowego polecenia.

Po wysłaniu bajtu przez Arduino musi ono wysłać sztuczny bajt, aby przestawić zegar i umożliwić układowi VS1053 odesłanie bajtu w odpowiedzi. Funkcja SPItransfer() pokaże Ci, jak to zrobić.

Czerwony moduł dostępny na eBayu jest wyposażony w gniazdo na kartę SD, więc ma kilka dodatkowych pinów. Zignoruj je.

Teraz, gdy jesteś pewien, że potrafisz sprawić, by VS1053 działał, przekształcimy go w instrument muzyczny.

Krok 2: Używanie sonarów

Podłącz moduły HC-SR04 do Arduino Nano jak pokazano na rysunku i załaduj plik INO do Arduino.

Zauważ, że na schemacie DC3 to kondensator odsprzęgający dla modułów HC-SR04 - powinien być podłączony blisko modułów HC-SR04. Podczas nadawania pobierają one spory prąd, który DC3 pomaga dostarczyć.

Na tym etapie projektu komputer z systemem Windows nadal wysyła polecenia do VS1053, ale VS1053 jest również sterowany przez czujniki sonarowe HC-SR04 (pobierz Step2.zip z githuba).

Wszystkie nowe polecenia zaczynają się od 0xFF i są interpretowane przez szkic Arduino (zamiast być wysyłane bezpośrednio do VS1053). Bajty inne niż "0xFF" są wysyłane do VS1053.

Są to polecenia zmiany instrumentu, zmiany skali, dodania vibrato i tremolo, itp. Program może być uruchomiony w trybie "dyskretnym", w którym są oddzielne nuty (jak fortepian), lub w trybie "ciągłym", w którym pojedyncza nuta jest „zginana” w górę i w dół (jak theremin).

Robi on w zasadzie wszystko to, co instrument końcowy, ale jest kontrolowany przez komputer.

Prawy czujnik sonarowy HC-SR04 wybiera wysokość granej nuty. W trybie "dyskretnym" przestrzeń po prawej stronie jest podzielona na "pojemniki". Gdy ręka wchodzi do pojemnika, rozpoczyna się odtwarzanie nuty dla tego pojemnika. Po opuszczeniu pojemnika nuta może się zatrzymać (np. w organach) lub naturalnie zaniknąć (np. w fortepianie). Gdy dłoń wchodzi do pojemnika, rozszerza się on nieznacznie, dzięki czemu nie występuje jitter na jego krawędziach.

Funkcja GetSonar() zwraca czas, jaki upłynął do pierwszego echa. Ignoruje ona bardzo szybkie echa (czas trwania < 10), które czasami zgłasza HC-SR04. Jeśli w czasie maxDuration nie odebrano żadnego echa, funkcja zwraca maxDuration. Czas trwania nie jest mierzony w żadnych konkretnych jednostkach - jest to po prostu liczba.

W trybie dyskretnym czas trwania jest najpierw filtrowany w celu usunięcia sporadycznych przerw w nadawaniu (gdy nie odebrano żadnego echa). Przyjmuje się, że dłoń jest obecna dopiero po odebraniu 10 próbek o długości maxDuration. Następnie czas trwania jest filtrowany za pomocą filtru medianowego. Filtry medianowe dobrze radzą sobie z usuwaniem szumu "impulsowego" (np. sporadycznych skoków). Przefiltrowany czas trwania jest używany do wyboru bloku.

W trybie ciągłym czas trwania jest ponownie filtrowany w celu usunięcia sporadycznych zaników. Następnie jest wygładzany za pomocą filtra wykładniczego. Przefiltrowany czas trwania jest używany do ustawiania częstotliwości nuty za pomocą funkcji „pitch bend”.

Krok 3: Dodanie wyświetlacza

Wyświetlacz to kolorowy ekran TFT LCD 1,44" z kontrolerem ST7735, 128×128 pikseli. Na eBay'u dostępnych jest wiele innych ekranów, na przykład, jeśli wolisz rozwijać swój instrument z większym ekranem dotykowym. Nie używałem wcześniej kontrolera ST7735 i chciałem go wypróbować.

Moduł jest szeroko sprzedawany na eBayu - wystarczy kupić taki, który wygląda tak samo jak na zdjęciu.

Wyświetlacz LCD ma następujące piny:

  • GND masa
  • VCC 3,3 V
  • SCL magistrala SPI SCLK
  • SDA magistrala SPI MOSI z Arduino
  • RES reset
  • DC dane/polecenia
  • CS wybór układu scalonego
  • BL backlight

Moduł pracuje na napięciu 3,3 V, więc nie powinieneś podłączać go bezpośrednio do Arduino 5 V. Użyłem rezystorów 1 kΩ do obniżenia napięcia. Nie jest to dobra praktyka (generalnie powinno się używać dzielnika potencjału lub układu obniżającego napięcie), ale w tym układzie działa doskonale. Byłem leniwy.

Wyświetlacz jest zasilany napięciem 3,3 V dostarczanym przez Arduino. Stabilizator Arduino wydaje się być wystarczająco dobry.

Adafruit bardzo uprzejmie opublikował bibliotekę ST7735, a kilka innych bibliotek jest dostępnych w Githubie i innych miejscach. Wypróbowałem kilka z nich i żadna nie przypadła mi do gustu. Niektóre po prostu nie działały, a wszystkie były ogromne. Piszesz szkic Arduino, który rysuje linię i jakiś tekst, i okazuje się, że twoja pamięć jest zapełniona w 75%. Napisałem więc własną bibliotekę.

Biblioteka SimpleST7735 jest dostępna do pobrania (pobierz Step3.zip z githuba).

Zawiera ona standardowy zestaw poleceń rysowania, bardzo podobny do wszystkich tego typu bibliotek.

Niektóre z "szybkich" bibliotek, które można pobrać, używają specjalnych pętli czasowych i są niespokojne, gdy na tej samej magistrali są używane inne, być może wolniejsze, urządzenia. SimpleST7735 jest napisana w języku C, a nie w asemblerze, więc nie jest tak szybka, jak mogłaby być, ale jest znacznie bardziej przenośna i grzecznie współdzieli magistralę SPI z innymi urządzeniami. Można pobrać program dla systemu Windows, który pozwala na tworzenie własnych czcionek i ikon.

Kartę katalogową układu ST7735 publikujemy poniżej. Z układem można rozmawiać w następujący sposób:

  • set CS low 
  • set DC low 
  • wyślij bajt polecenia 
  • set DC high 
  • wyślij zero lub więcej bajtów danych 
  • set CS high

Możesz zobaczyć, jak to robię w funkcji spiSend_TFT_CW() w bibliotece. Bajty danych mogą być całym rzędem pikseli lub ustawieniem rejestru sterującego.

Funkcja ST7735Begin() w bibliotece pokazuje zestaw komend inicjalizacyjnych, które wybrałem. Być może będziesz chciał zmienić te polecenia, jeśli wybierzesz inny wyświetlacz ST7735 (np. z większą liczbą pikseli) lub inną orientację. Mam nadzieję, że mój kod jest łatwy do odczytania, abyś mógł go zmienić, jeśli zajdzie taka potrzeba.

Na schemacie pokazano przycisk sterujący "SW1" i pedał nożny SW2". Przycisk sterujący służy do wybierania różnych "Ustawień" (patrz następny krok) lub włączania trybu Menu. Pedał nożny jest opcjonalny i służy tylko do wybierania różnych ustawień - ja osobiście nie zamontowałem pedału nożnego. Ustawienia są przydatne podczas występu, gdy chcemy szybko zmienić tonację lub zmienić instrument.

Krok 4: Struktura menu

Szkic Arduino Miditheremin3.ino dodaje system menu do Theremina MIDI i steruje końcowym kompletnym instrumentem.

Theremin MIDI jest zazwyczaj uruchomiony w trybie "Play". Prawą ręką wybierasz nutę, a lewą kontrolujesz jej jakość. Na wyświetlaczu LCD wyświetlana jest klawiatura fortepianu z podświetloną bieżącą nutą.

Jeśli przytrzymasz przycisk sterujący przez jedną sekundę, program przejdzie do trybu "Menu". Jeśli w trybie Menu przytrzymasz przycisk sterujący przez jedną sekundę, program powróci do trybu "Play".

Menu ma strukturę drzewa z głównymi pozycjami i podpozycjami. Bieżąca pozycja menu jest podświetlona. Przesuwanie wyboru w górę/w dół odbywa się za pomocą lewego sonaru. Podmenu dla pozycji głównej są rozwijane tylko wtedy, gdy ta pozycja jest wybrana.

Po wybraniu podmenu, po kliknięciu przycisku wartość tej pozycji zostanie podświetlona. Lewa ręka będzie teraz zwiększać lub zmniejszać wartość. Aby powrócić do wybierania menu podrzędnych, należy ponownie kliknąć przycisk.

W trybie dyskretnym drzewo menu wygląda następująco:

  • Instrument
    • 0: Fortepian
    • Zamiana rąk: normalnie
  • Prawa ręka
    • Tryb: dyskretny 
  • Lewa ręka
    • Tryb: Vibrato
    • Maks. głębokość: 10 
  • Skala
    • Skala: Heptatoniczna durowa
    • Oktawy: 2
    • Najniższa nuta: 60 C 
  • Akord
    • Akord: Trójdźwięk durowy
    • Inwersja: 0
    • Polifonia: 1 
  • Tremolo
    • Wielkość: 20
    • Okres: 10 
  • Vibrato
    • Wielkość: 20
    • Okres: 10 

Instrumentem może być "Grand Piano", "Church Organ", "Violin" itp. W VS1053 dostępnych jest 127 instrumentów, z których wiele brzmi identycznie, a wiele jest głupich jak "wystrzał". Podmenu Swap Hands (Zamiana rąk) umożliwia zamianę funkcji lewej i prawej ręki - być może użytkownik preferuje takie rozwiązanie, a może chce, aby głośniki były skierowane w stronę publiczności.

Prawa ręka może być "Dyskretna" lub "Ciągła". Informacje na temat menu "Ciągły" znajdują się poniżej.

Lewa ręka może kontrolować "Volume" (głośność), "Tremolo", "Vibrato", "PitchBendUp", "PitchBendDown", "Reverb", "Polyphony" lub "ChordSize".

"Volume" (Głośność) jest oczywista. "Tremolo" to szybka zmiana głośności; lewa ręka kontroluje wielkość zmiany; okres jest ustawiany w innej pozycji menu. "Vibrato" to szybka zmiana wysokości dźwięku; lewa ręka kontroluje wielkość zmiany; okres jest ustawiany w innej pozycji menu. Punkty "PitchBendUp" i "PitchBendDown" zmieniają wysokość odtwarzanej nuty; lewa ręka kontroluje wielkość pochylenia. Opcja "Reverb" jest raczej mało imponująca w VS1053; lewa ręka kontroluje wielkość pogłosu. "Polyphony" kontroluje ilość nut granych jednocześnie, aż do maksimum ustawionego w menu Polyphony (patrz poniżej). "ChordSize" oznacza, że lewa ręka kontroluje, ile nut akordu (patrz niżej) jest odtwarzanych.

W muzyce "skala" lub "klucz" to podzbiór nut, których używasz. Na przykład, jeśli ograniczysz się do skali heptatonicznej C-dur, będziesz grał tylko białe nuty fortepianu. Jeśli wybierzesz skalę C# Major Pentatonic, będziesz grał tylko czarne nuty (np. w szkockich utworach ludowych).

Menu Skala pozwala wybrać nuty, którym odpowiada miejsce na prawą rękę, oraz liczbę oktaw, które obejmuje miejsce na prawą rękę. Jeśli więc wybierzesz 1 oktawę E-dur, to miejsce na prawą rękę zostanie podzielone na 8 pojemników, z E najniższym i E najwyższym oktawę wyżej.

Menu Skala pozwala na wybór wielu nietypowych skal "muzyki niezachodniej", ale zakłada, że wszystkie nuty pochodzą z klawiatury parzystotonowej - tak działa MIDI, nie można łatwo określić częstotliwości nut. Jeśli więc chciałbyś mieć np. arabską skalę ćwierćtonową, byłbyś w kłopocie.

W podmenu Octaves możesz wybrać, ile oktaw skali chcesz mieć. Z kolei opcja Najniższa nuta określa, gdzie zaczyna się skala.

Zazwyczaj, gdy grana jest nuta, tylko ta nuta jest odtwarzana. Menu Akord umożliwia granie kilku nut jednocześnie. Akord triadowy Major oznacza "granie wybranej nuty plus nuty o cztery półtony wyższej, plus nuty o siedem półtonów wyższej".

Podmenu Inwersja pozwala uzyskać inwersję akordu. Oznacza to, że niektóre nuty akordu są przenoszone o oktawę niżej. Pierwsza inwersja przesuwa wszystkie "dodatkowe" nuty o oktawę w dół, druga inwersja przesuwa o jedną nutę mniej w dół, itd.

Podmenu Polifonia określa, ile nut jest granych jednocześnie; jeśli polifonia wynosi 1, to gdy zaczyna się jedna nuta, poprzednia jest zatrzymywana; jeśli polifonia jest większa, to kilka nut może się na siebie nakładać - wypróbuj to w organach kościelnych.

Menu Tremolo określa głębokość tremolo i okres cyklu tremolo. Okres "100" oznacza jeden cykl na sekundę. Jeśli tremolo jest sterowane lewą ręką, podmenu Wielkość jest ukryte.

W menu Vibrato określa się wielkość vibrato oraz okres cyklu vibrato. Jeśli lewa ręka kontroluje vibrato, podmenu Rozmiar jest ukryte.

Program umożliwia zapisanie i wczytanie maksymalnie 5 różnych "Ustawień". W konfiguracji przechowywane są wszystkie wartości, które można ustawić w menu. Po wyjściu z trybu Menu bieżąca konfiguracja jest zapisywana. Ustawienia są zapisywane w pamięci EEPROM.

W trybie odtwarzania kliknięcie przycisku powoduje przejście do następnej konfiguracji. Przytrzymanie przycisku przez jedną sekundę powoduje wyświetlenie menu. Naciśnięcie pedału nożnego również powoduje przejście do następnej konfiguracji; pedał nożny nigdy nie powoduje wyboru menu.

W trybie ciągłym drzewo menu wygląda następująco:

  • Instrument
    • 0: Fortepian
    • Zamiana rąk: normalnie
  • Prawa ręka
    • Tryb: ciągły 
  • Zakres
    • Num półtonów: 12
    • Nuta środkowa: 60 C 
  • Lewa ręka
    • Tryb: Tremolo
    • Maks. głębokość: 10 
  • Tremolo
    • Wielkość: 20
    • Okres: 10 
  • Vibrato
    • Wielkość: 20
    • Okres 10 

Menu Zakres pozwala wybrać zakres częstotliwości, które określa prawa ręka: liczbę półtonów i nutę środkową.

Lewa ręka może sterować tylko parametrami "Głośność", "Tremolo" i "Vibrato".

Krok 5: Lutowanie wszystkiego

Układ zbudowałem na płytce uniwersalnej (stripboard). Nie widzę sensu robienia płytki drukowanej dla jednorazowego układu z tylko 4 rezystorami, ale zdaję sobie sprawę, że niektórzy ludzie nie lubią stripboardów.

Mój układ na płytce uniwersalnej jest pokazany powyżej. Cztery płytki - Arduino, VS1053, wyświetlacz i stripboard - tworzą „kanapkę”. W układzie kontur Arduino jest żółty, VS1053 jest niebieski, wyświetlacz jest zielony, a stripboard jest pomarańczowy.

Cyjanowe linie to miedziane paski płytki - upewnij się, że wstawiłeś przerwy tam, gdzie są potrzebne. Linie czerwone to połączenia po stronie komponentów na płytce lub przewody biegnące w inne miejsca.

Do płytki VS1053 użyłem bardzo długich pinów, ponieważ stoi ona nad Arduino. Piny w skrajnych rogach wyświetlacza i płytki VS1053 pomagają je ustabilizować. Otwory montażowe modułów są pokryte galwanicznie, więc można je przylutować. Upewnij się, że twoje moduły nie są podłączone do masy - otwory montażowe moich modułów nie są.

Jeśli masz inny moduł VS1053 lub inny wyświetlacz, możesz zmienić piny Arduino:

  • D2 do D10 i A0 do A5 mogą być używane w dowolnej kolejności; zaktualizuj numery pinów na początku szkicu INO
  • D11, D12, D13 są dedykowane dla SPI i nie mogą być ponownie przypisane
  • D0, D1 są przeznaczone do szeregowych We/Wy
  • A6, A7 nie mogą być używane jako piny cyfrowe.

Moduły HC-SR04 są ustawione względem siebie pod kątem 90° i połączone kawałkiem płyty. Przycisk znajduje się między nimi. Bez wątpienia będziesz miał swój własny, preferowany projekt.

Jeśli zdecydujesz się na pedał nożny, podłącz go przez gniazdo jack.

Krok 6: Dodanie zasilacza

Ustaliłem całkowity prąd Arduino, VS1053 i wyświetlacza jako 79 mA. Zgodnie z notami katalogowymi Arduino pobiera 20 mA, wyświetlacz 25 mA, VS1053 11 mA, a HC-SR04 15 mA. Każdy podczas "pracy" - więc 80 mA wydaje się być w porządku.

Wyświetlacz pobiera 25 mA i jest zasilany z wyjścia 3,3 V Arduino, które nominalnie ma dostarczać 50 mA. Tak więc układ nie powinien obciążać stabilizatora 3,3 V Arduino.

Czy możemy zasilać układ przez pin Vin Arduino? Nigdzie w sieci nie mogę znaleźć odpowiedzi na to pytanie. Nie ma jej w dokumentacji Arduino. Wbudowany stabilizator 5 V będzie rozpraszał (Vin-5)*80 mW. Jakie jest jego maksymalne rozproszenie? Wygląda na to, że nikt tak naprawdę tego nie wie. Według karty katalogowej, stabilizator NCP1117 w obudowie SOT-223 z minimalną podkładką miedzianą może rozpraszać 650 mW.

  • Vin Moc
  • 8 V 240 mW
  • 9 V 320 mW
  • 10 V 400 mW
  • 11 V 480 mW
  • 12 V 560 mW
  • 13 V 640 mW
  • 14 V 720 mW

Przypuszczam, że dla bezpieczeństwa nie powinniśmy przekraczać 9 V na Vin.

Zewnętrzny zasilacz 5 V byłby znacznie bezpieczniejszy, ale ja użyłem stabilizatora Arduino i jest w porządku.

Do zasilania układu wybrałem moduł, który łączy w sobie ładowarkę jonów LI i wzmacniacz. Są one powszechnie dostępne na eBayu lub wyszukaj hasło "Li Charger Boost".

Ładowarka wykorzystuje układ TC4056, który ma skomplikowany algorytm stałego prądu i stałego napięcia. Po odłączeniu wejścia zasilania USB przechodzi w tryb gotowości, w którym prąd pobierany z akumulatora jest mniejszy niż 2 µA. Układ TC4056 ma wejście do wykrywania temperatury, ale nie jest ono dostępne na płytce modułu (pin jest uziemiony).

Sprawność układu zwiększającego napięcie wynosi 87-91% w normalnym zakresie napięcia akumulatora przy prądzie wyjściowym 50-300 mA. (Nie mierzyłem tego osobiście.) To całkiem nieźle.

Jednak jego prąd "czuwania" po odłączeniu obciążenia wynosi 0,3 mA, co jest słabe. Ogniwo o pojemności 300 mAH rozładowałoby się w ciągu 6 tygodni. Być może napięcie spadłoby do poziomu szkodliwego.

Istnieje pojedyncza ścieżka łącząca akumulator z zasilaczem podwyższającym napięcie. Możesz łatwo przeciąć tę ścieżkę (patrz zdjęcie). Przylutuj przewód do dużego rezystora na górze, aby można było zmostkować przecięcie za pomocą przełącznika.

W przypadku testowanej przeze mnie płytki pobierany prąd wynosi 0,7 µA. Tak więc ogniwo wytrzyma 50 lat - oczywiście, że nie, samorozładowanie ogniwa Li-ion wynosi około 3% miesięcznie. 3% miesięcznie dla ogniwa 300 mAH to prąd o natężeniu 13 µA. Porównaj to z prądem 300 µA pobieranym przez układ wzmacniający. Uważam, że warto wyłączyć układ zwiększający napięcie.

Nie powinieneś włączać obciążenia, gdy ogniwo się ładuje. Prąd pobierany przez obciążenie zakłóci algorytm ładowania.

Potrzebny jest więc dwubiegunowy przełącznik (np. suwakowy), który znajduje się albo w pozycji "On", albo w pozycji "Charge".

Można zignorować wbudowane gniazdo USB i przylutować osobne przewody do przełącznika i własnego gniazda USB.

Możesz też zachować wbudowane gniazdo i przeciąć połączenie między gniazdem a układem scalonym. Na powyższym schemacie pokazano, gdzie należy je przeciąć.

Podłącz wyjście 5 V z zasilacza impulsowego do pinu 5 V w Arduino. Ludzie mówią: "nie rób tego, bo ominiesz diodę zabezpieczającą Arduino". Ale Nano nie ma pinu podłączonego do diody po stronie USB. Wystarczy podłączyć go do pinu 5V.
Układ zasilacza musi również zasilać wzmacniacz głośników.

Krok 7: Dodanie głośników

Chciałem, aby Theremin MIDI był przenośny. Powinien zawierać własne głośniki i wzmacniacz.

Mógłbyś zbudować własny wzmacniacz lub kupić moduł wzmacniacza, a następnie kupić głośniki i włożyć je do futerału. Ale jaki to ma sens? W moim magazynie mam pół tuzina głośników z zasilaniem, które kupiłem w sklepach charytatywnych i na wyprzedażach samochodowych - wszystkie za mniej niż 1 funta.

Jasnoniebieskie głośniki zużywają tylko 30 mA przy napięciu 5 V, ale mają słabe basy. Czarne radio ma ładny kształt - mogę sobie wyobrazić zamontowanie modułów HC-SR04 w rogach i wyświetlacza na górnej powierzchni. Te szare "płaskie" są zasilane z gniazda USB, co jest idealnym rozwiązaniem.

Przy odrobinie poszukiwań powinieneś znaleźć głośniki z zasilaniem, które mają już ładną obudowę. Upewnij się, że będą one działać przy napięciu zasilacza. Jeśli jest zasilany czterema ogniwami AA, prawdopodobnie będzie działał poprawnie przy napięciu 5 V.

Ale zagłębiłem się jeszcze bardziej w magazynie i znalazłem bardzo ładną stację dokującą, którą kupiłem na straganie za grosze. Zgubiła ładowarkę i pilota na podczerwień, ale działa dobrze.

Jeśli jesteś zdecydowany zbudować własne głośniki z zasilaniem, tutaj znajdziesz dobry instruktaż. Możesz też wyszukać w Instructables hasło PAM8403 lub Wzmacniacz.

Krok 8: Stacja dokująca

To jest bardzo ładna przenośna stacja dokująca firmy Logitech. Jest mało prawdopodobne, że dostaniesz taką samą, ale zasady konstrukcji będą podobne.

Stacja dokująca zawiera własne ogniwo Li-ion do ładowania i zasilacz wspomagający. (Jeśli Twój wzmacniacz nie ma takiego zasilacza, zbuduj zasilacz opisany powyżej i pomiń kilka następnych paragrafów).

Jeśli Twój wzmacniacz ma ogniwo Li-ion, to prawdopodobnie ma też wzmacniacz. (Napięcie pojedynczego ogniwa Li-ion jest niewygodnie niskie, więc wymaga wzmocnienia).

Po pierwsze, znajdź połączenia zasilania wzmacniacza. Zasilacz będzie miał duże kondensatory wygładzające - zobacz zdjęcie płytki drukowanej. Zmierz napięcie na ich przylutowanych padach od spodu. Ujemny pad powinien być "masą" układu. Jeśli płytka została zalana wodą, będzie to masa. Masą może być też gruba ścieżka biegnąca do wielu miejsc na płytce.

Na stopniu wyjściowym wzmacniacza mogą znajdować się duże kondensatory - to stary sposób. Zmierz napięcie na nich podczas pracy wzmacniacza. Prawdopodobnie będzie się ono zmieniać w zależności od muzyki i może wynosić średnio połowę napięcia kondensatorów zasilających. To są niewłaściwe kondensatory - chcesz użyć tych z zasilacza.

Jest bardzo mało prawdopodobne, że płytka będzie miała zarówno dodatnie, jak i ujemne zasilanie (duże stereofoniczne wzmacniacze mocy tak mają, ale nigdy nie widziałem takiego lekkiego wzmacniacza). Upewnij się, że naprawdę masz wybraną masę i dodatnie zasilanie.

Stacja dokująca Logitech, której używam, ma skomplikowane układy cyfrowe, jak również wzmacniacz analogowy. Jeśli Twoja jest podobna, będzie miała kondensatory wygładzające dla napięcia 5 V lub 3,3 V i ewentualnie 9 V dla wzmacniacza. Zmierz napięcia na wszystkich dużych kondensatorach i wybierz największy z nich.

Upewnij się, że napięcie wybranego przez Ciebie połączenia zasilania zależy od włącznika. (Gdy wyłączysz przełącznik, napięcie może trochę potrwać, zanim spadnie, ponieważ kondensator zostanie opróżniony).

Przylutuj przewody do wybranego źródła zasilania. Stacja dokująca Logitech wytwarza napięcie około 9 V, które będzie dobrze połączone z pinem Vin w Arduino.

Zasilane głośniki lub stacja dokująca powinny mieć gniazdo 3,5 mm do wejścia audio. Jedno ze złączy lutowniczych będzie masą - prawdopodobnie to, które znajduje się najbliżej krawędzi płytki. Użyj omomierza, aby sprawdzić, czy połączenie jest zgodne z tym, co uważasz za masę. W przypadku niektórych wejść audio "ekran" gniazda nie jest połączony bezpośrednio z masą. Znajduje się w stanie spoczynku. Jeśli więc żaden z pinów gniazda nie jest masą, nie należy się tym na razie przejmować. (Ekran" gniazda w module VS1053 jest również pływający).

Za pomocą miernika sprawdź, czy na pinie "masa" gniazda jest takie samo napięcie jak na uziemieniu zasilacza.

Stacja dokująca Logitech była dziwna. Jeśli podłączyłem "masę" gniazda Logitech do "masy" płytki VS1053 (za pomocą kabla audio, działało to dobrze, ale prąd płynący do mojego systemu Theremin wzrósł z 80 mA do ponad 200 mA. Upewniłem się więc, że nie łączę tych dwóch "mas". Działa dobrze, ale nie mam pojęcia, co się dzieje.

Krok 9: Obudowa

To, jaką obudowę wykonasz, będzie zależało od materiałów, jakie masz pod ręką, od tego, z czym lubisz pracować, oraz od wybranych przez Ciebie głośników z zasilaniem. Cokolwiek zrobisz, powinno zapewnić, że sonary będą skierowane od siebie i w górę pod kątem 45°. Do tego dochodzi ekran wyświetlacza i przycisk.

Jeśli oglądałeś inne moje Instuctables, wiesz, że jestem wielkim fanem blachy. Można ją wyginać, lutować na miękko i malować. Zdjęcia pokazują, jak to wszystko ułożyłem.

Górny trójkąt to wygięta blacha, zlutowana, wypełniona, wygładzona i pomalowana. Płytki są przyklejone na gorąco do trójkąta i mają małe kawałki drewna, które służą jako przekładki.

Panel przedni to płyta styropianowa o grubości 1 mm. Podstawki są wykonane z większej ilości arkuszy styropianu, a wkręty samogwintujące utrzymują płytę na miejscu. Drewniane wsporniki są przyklejone na gorąco do wnęki w przedniej części stacji dokującej, a płytki są do nich przykręcone długimi wkrętami samogwintującymi.

Pewnie mógłbym wydrukować coś w 3D, ale wolę stare metody, w których mogę dopasowywać rzeczy na bieżąco. Tworzenie rzeczy jest raczej odkrywczą podróżą niż "inżynierią".

Krok 10: Przyszłe udoskonalenia

Jak można jeszcze bardziej rozwinąć projekt? Można by zmienić interfejs użytkownika. Można by zastąpić przycisk czujnikiem odległości na podczerwień, dzięki czemu nie trzeba by było w ogóle dotykać instrumentu. Można też zamiast przycisku użyć ekranu dotykowego, a do sterowania menu użyć lewej ręki.

Menu Skala pozwala wybrać skale "muzyki niezachodniej", ale zakłada, że wszystkie nuty pochodzą z klawiatury parzystotonowej - tak działa MIDI. Arabska skala ćwierćtonowa ma nuty, których nie ma w skali parzystotonowej. Inne skale nie są w żaden sposób związane z klawiaturą temperowaną parzystymi tonami. Możliwe jest użycie funkcji pitch-bend do tworzenia takich nut. Potrzebny byłby jakiś sposób na określenie w menu częstotliwości każdej nuty. Wydaje mi się, że pitch bend może dotyczyć wszystkich nut w kanale. Obecnie używam tylko jednego kanału - kanału 0. Jeśli więc instrument jest polifoniczny lub ma akordy, będziesz musiał grać każdą nutę w innym kanale.

Instrument mógłby stać się syntezatorem perkusyjnym. Lewa ręka mogłaby określać wysokość dźwięku bębna Melodic Tom, podczas gdy prawy sonar zostałby zastąpiony czujnikiem piezoelektrycznym, w który uderza się, aby zabrzmieć na bębnie.

Obie ręce mogłyby sterować dwoma różnymi instrumentami.

Lewa ręka może wybierać instrument.

Mniej więcej w połowie realizacji tego projektu odkryłem kontroler MIDI Altura MkII Theremin firmy Zeppelin Design Labs. Wygląda to na świetny instrument.

Mają kilka filmów wideo, które są warte obejrzenia:

słowo "pojemniki" ukradłem z Altura i pomysł, że pojemnik rozszerza się, gdy do niego wchodzisz, aby pomóc Ci w nim pozostać.

Mój Theremin MIDI różni się od Altura na kilka sposobów. Mój produkuje własny dźwięk dzięki wbudowanemu syntezatorowi MIDI, wzmacniaczowi itp. Altura wysyła komunikaty do zewnętrznego syntezatora. Możesz preferować ich sposób działania. Mój ma ekran TFT zamiast wyświetlacza 7-segmentowego - to zdecydowanie lepsze rozwiązanie, ale można by pomyśleć, że większy ekran byłby lepszym rozwiązaniem. W moim aparacie do ustawiania parametrów używa się menu, a w ich aparacie - pokręteł. Menu są potrzebne, ponieważ mój potrzebuje wielu elementów sterujących dla urządzenia wejściowego (sonary) i syntezatora; Altura potrzebuje mniej elementów sterujących. Może pokrętła są lepsze podczas występów na żywo. Może mój instrument powinien mieć pokrętła. Przydałaby się gałka do wybierania ustawień.

Altura ma pokrętło "Articulation", które określa, jak szybko mogą być grane nuty. Nie uwzględniłem tego w moim oprogramowaniu - może powinno tam być. Altura ma arpeggiator (sekwencer krokowy). To dobry pomysł; mój ma akordy, co nie jest do końca tym samym.

I to by było na tyle. Mam nadzieję, że budowa i używanie THEREMINA MIDI sprawi Ci przyjemność. Daj mi znać, jeśli znajdziesz jakieś błędy w moim opisie lub jeśli chcesz coś ulepszyć.

DATA SHEET
DATA SHEET
Do pobrania
Download icon Źródła Download icon Nota katalogowa VS1053 Download icon Nota katalogowa ST7735

Artykuł MIDI Sonar "Theremin" opublikowany na portalu www.instructables.com opracowano w wersji polskiej za zgodą autora.

Tematyka materiału: Midi, Arduino Nano, VS1053, ST7735st
AUTOR
Źródło
www.instructables.com
Udostępnij
UK Logo
Elektronika dla Wszystkich
Zapisując się na nasz newsletter możesz otrzymać GRATIS
najnowsze e-wydanie magazynu "Elektronika dla Wszystkich"