Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Wstęp
Po eksperymentach z konstrukcją różnych syntezatorów postanowiłem zbudować sampler audio, który był łatwy do powielenia i niedrogi.
Aby uzyskać dobrą jakość dźwięku (44,1 kHz) i wystarczającą pojemność pamięci, zastosowano moduł DFPlayer, który wykorzystuje karty pamięci micro SD do przechowywania do 32 gigabajtów informacji. Ten moduł może odtwarzać tylko jeden dźwięk na raz, więc użyjemy dwóch.
Kolejnym wymaganiem projektu jest możliwość dostosowania obwodu do różnych interfejsów, dlatego wybraliśmy czujniki pojemnościowe zamiast przycisków.
Czujniki pojemnościowe można aktywować, dotykając dłonią dowolną metalową powierzchnię podłączoną do czujnika.
Do odczytu czujników użyjemy Arduino nano, ze względu na jego możliwości i niewielkie rozmiary.
cechy charakterystyczne
6 różnych dźwięków
Aktywowane przez czujniki pojemnościowe.
Polifonia 2 dźwięków na raz.
Krok 1: Materiały i narzędzia
Materiały
Arduino Nano
2x DFPlayer
2x micro SD
Gniazdo audio 3.5
2.1 Gniazdo DC
Płyta miedziana 10x10
Chlorek żelaza
Drut lutowniczy
Papier do transferu PCB
Narzędzia
Lutowane żelazo
Obcinacz ołowiu do komponentów
Komputer
Żelazo
Oprogramowanie
Arduino Ide
Kicad
Biblioteka ADTouch
Szybka biblioteka DFPlayer
Krok 2: Jak to działa?
Sampler działa w następujący sposób, korzystając z biblioteki ADTouch konwertujemy 6 portów analogowych Arduino Nano na czujniki pojemnościowe.
Jako czujnik możemy użyć dowolnego kawałka metalu podłączonego do jednego z tych pinów za pomocą kabla.
Więcej o bibliotece i czujnikach pojemnościowych można przeczytać pod poniższym linkiem
Gdy jeden z tych czujników zostanie dotknięty, arduino wykrywa zmianę pojemności, a następnie wysyła polecenie wykonania dźwięku odpowiadającego temu czujnikowi do modułów DFPlayer.
Każdy moduł DFPlayer może odtwarzać tylko jeden dźwięk na raz, więc aby mieć możliwość odtwarzania 2 dźwięków na raz, instrument używa 2 modułów.
Krok 3: Schemat
Na schemacie widzimy, jak połączone są arduino i dwa moduły DFPlayer
R1 i R2 (1 k) służą do podłączenia modułów do DFPlayer.
R 3 4 5 i 6 (10k) służą do miksowania wyjść kanałów l i r modułów.
R 7 (330) to rezystancja ochrony diody LED, która będzie używana jako wskaźnik, że arduino jest pod napięciem.
Krok 4: Zbuduj płytkę drukowaną
Następnie wyprodukujemy płytkę za pomocą metody wymiany ciepła, co wyjaśniono w tej instrukcji:
Na płytce zostało umieszczonych 6 padów, które umożliwiają korzystanie z próbnika bez konieczności stosowania zewnętrznych czujników.
Krok 5: Lutowanie komponentów
Następnie przylutujemy komponenty.
Najpierw rezystory.
Do montażu Arduino i modułów zaleca się stosowanie nagłówków bez ich bezpośredniego lutowania.
Aby przylutować listwy zacznij od szpilki, następnie sprawdź, czy jest dobrze umiejscowiony, a następnie przylutuj pozostałe szpilki.
Na koniec przylutujemy złącza
Krok 6: Zainstaluj biblioteki
W tym projekcie wykorzystamy trzy biblioteki, które musimy zainstalować:
SoftwareSerial.h
DFPlayerMini_Fast.h
ADCTouch.h
W poniższym linku możesz zobaczyć szczegółowo, jak zainstalować biblioteki w Arduino
www.arduino.cc/en/guide/libraries
Krok 7: Kod
Teraz możemy wgrać kod na płytkę Arduino.
Do tego musimy wybrać płytkę Arduino Nano.
#include #include #include
int ref0, ref1, ref2, ref3, ref4, ref5; int;
SoftwareSerial mySerial(8, 9); // RX, TX DFPlayerMini_Fast myMP3;
SoftwareSerial mySerial2(10, 11); // RX, TX DFPlayerMini_Fast myMP32;
void setup() { int th = 550; // Serial.początek(9600); mójSerial.początek(9600); mójSerial2.początek(9600); mójMP3.początek(mójSerial); mójMP32.początek(mójSerial2); myMP3.volume(18); ref0 = ADCTouch.odczyt(A0, 500); ref1 = ADCTouch.odczyt(A1, 500); ref2 = ADCTouch.odczyt(A2, 500); ref3 = ADCTouch.odczyt(A3, 500); ref4 = ADCTouch.odczyt(A4, 500); ref5 = ADCTouch.odczyt(A5, 500);
}
pusta pętla () {
int total1 = ADCTouch.read(A0, 20); int total2 = ADCTouch.read(A1, 20); int total3 = ADCTouch.read(A2, 20); int total4 = ADCTouch.read(A3, 20); int total5 = ADCTouch.read(A4, 20); int total6 = ADCTouch.read(A5, 20);
total1 -= ref0; total2 -= ref1; total3 -= ref2; total4 -= ref3; total5 -= ref4; total6 -= ref5; // // Serial.print(suma1 > th); // Serial.print(suma2 > th); // Serial.print(suma3 > th); // Serial.print(suma4 > th); // Serial.print(suma5 > th); // Serial.println(suma6 > th);
// Serial.print(całkowita1); // Serial.print("\t"); // Serial.print(ogółem2); // Serial.print("\t"); // Serial.print(ogółem3); // Serial.print("\t"); // Serial.print(ogółem4); // Serial.print("\t"); // Serial.print(ogółem5); // Serial.print("\t"); // Serial.println(ogółem6); if (suma1 > 100 && suma1 > th) { mójMP32.play(1); // Serial.println("o1"); }
if (suma2 > 100 && suma2 > th) { mójMP32.play(2); //Serial.println("o2"); }
if (suma3 > 100 && suma3 > th) {
mójMP32.play(3); //Serial.println("o3");
}
if (suma4 > 100 && suma4 > th) {
mojeMP3.play(1); //Serial.println("o4");
}
if (suma5 > 100 && suma5 > th) {
mojeMP3.play(2); //Serial.println("o5");
}
if (suma6 > 100 && suma6 > th) {
mojeMP3.play(3); //Serial.println("o6");
} // nic nie rób delay(1); }
Krok 8: Załaduj dźwięki na karty pamięci
Teraz możesz załadować swoje dźwięki na karty micro SD
Format musi wynosić 44,1 kHz i 16-bitowy wav
Musisz wgrać 3 dźwięki na każdą kartę SD.
Krok 9: Interfejs
W tej chwili możesz już uruchomić swój sampler z padami w płytce drukowanej, ale nadal masz możliwość dostosowania go, wybierając obudowę i różne przedmioty lub metalowe powierzchnie, które będą używane jako czujniki.
W tym przypadku zastosowałem 3 główki nadgarstków, do których przykręciłem metalowe śruby jako metalowy dźwięk kontaktowy.
W tym celu połącz śruby z pinami płytki za pomocą kabli.
Możesz użyć dowolnego metalowego przedmiotu, taśmy przewodzącej lub poeksperymentować z atramentem przewodzącym.