Spisu treści:

Arduino staje się mówiącym Tomem: 6 kroków
Arduino staje się mówiącym Tomem: 6 kroków

Wideo: Arduino staje się mówiącym Tomem: 6 kroków

Wideo: Arduino staje się mówiącym Tomem: 6 kroków
Wideo: W tajnej służbie Część 1/2, Cykl: Jack Reacher (tom 6) - Lee Child Audiobook PL 2024, Lipiec
Anonim
Arduino staje się mówiącym Tomem
Arduino staje się mówiącym Tomem
Arduino staje się mówiącym Tomem
Arduino staje się mówiącym Tomem

Jednym z moich najstarszych wspomnień związanych z korzystaniem ze smartfona było granie w grę „Talking Tom”. Gra była dość prosta. Jest kot o imieniu Tom, który w pewnym sensie potrafi mówić. W grze Tom nasłuchiwał każdego sygnału wejściowego przez mikrofon telefonu, a następnie powtarzał to, co usłyszał. Więc cokolwiek powie Tomowi, po prostu powtórzy to samo swoim przenikliwym głosem.

Choć brzmi to prosto, cała ta procedura wymaga wielu złożonych kroków, takich jak próbkowanie analogowego wejścia mikrofonu w postaci cyfrowej, manipulowanie dźwiękiem w celu nadania Tomowi unikalnego głosu, a następnie rekonstrukcja sygnału ze wszystkich tych wartości cyfrowych, aby odtworzyć go przez głośnik.. Wszystkie te skomplikowane kroki, ale smartfon radził sobie z tym jak czarem nawet 9 do 10 lat temu!

Ciekawą rzeczą byłoby sprawdzenie, czy to samo można zrobić z tanią płytką Arduino z mikrokontrolerem. Tak więc w tej instrukcji pokażę, jak można zrobić prosty projekt w stylu Talking Tom z Arduino i innej niedrogiej elektroniki.

Ta instrukcja została napisana we współpracy z Hatchnhack Makerspace w Delhi

UWAGA: Ta instrukcja jest pierwszą wersją projektu, która uzupełnia funkcję „Mówienie” w Talking Tom, w której arduino będzie mógł powtórzyć wszystko, co mu powiesz. Część zmiany głosu zostanie omówiona w przyszłej wersji, chociaż ze względu na mniejszą rozdzielczość wbudowanego ADC w Arduino, nagrany dźwięk już brzmi nieco inaczej:P (Widać to wyraźnie na filmie projektu).

A więc zacznijmy!

Krok 1: Użyte materiały

Użyte materiały
Użyte materiały
Użyte materiały
Użyte materiały
Użyte materiały
Użyte materiały

Sprzęt komputerowy:

  • Arduino UNO
  • Moduł mikrofonowy MAX4466 z regulowanym wzmocnieniem
  • Moduł czytnika kart SD oparty na SPI
  • karta SD
  • Wzmacniacz audio, taki jak głośnik PC, moduł wzmacniacza PAM8403 itp.
  • Głośniki do podłączenia do wzmacniacza
  • Żeńskie gniazdo audio
  • Rezystor 1 x 1 kΩ;
  • Rezystor 2 x 10 kΩ
  • Kondensator 1x10 uF
  • 2 x przycisk
  • Przewody połączeniowe

Oprogramowanie:

  • IDE Arduino
  • Śmiałość (opcjonalnie)
  • Biblioteka TMRpcm i SD dla Arduino

Krok 2: Podstawowy przegląd projektu

Projekt ma głównie 2 funkcje:

  • Może odtwarzać losowo wybrany dźwięk z zestawu wstępnie zainstalowanych plików audio na karcie SD w celu uzyskania efektów dźwiękowych itp.
  • Może nagrywać dźwięk wejściowy z mikrofonu, a następnie odtwarzać go, gdy tylko nagrywanie się zatrzyma. Dzięki temu arduino może powtórzyć to, co usłyszał przez mikrofon.

Interfejs użytkownika projektu składa się głównie z 2 przycisków, z których każdy odpowiada jednej z powyższych funkcji.

Główną ciężką pracę związaną z nagrywaniem i odtwarzaniem plików audio z karty SD zajmuje się biblioteka TMRpcm

Nagrywanie dźwięku wykorzystuje moduł mikrofonowy MAX4466, wewnętrzny ADC arduino i bibliotekę TMRpcm do samplowania dźwięku, a następnie tymczasowo przechowuje go na karcie SD jako plik „.wav” do odtwarzania. Pliki dźwiękowe „.wav” wykorzystują PCM (Pulse Code Modulation) do przechowywania danych dźwiękowych w formacie cyfrowym, aby można je było łatwo odtworzyć ponownie. Ogólnie rzecz biorąc, lepiej jest używać zewnętrznego ADC do projektów opartych na dźwięku, ponieważ rozdzielczość ADC Arduino nie jest tak wysoka, ale działa w tym projekcie.

Odtwarzanie plików audio (wstępnie zainstalowanych i nagranych) odbywa się również za pomocą biblioteki TMRpcm, która wyprowadza dźwięk jako sygnał PWM z pinu obsługującego PWM w arduino. Sygnał ten jest następnie podawany do filtra RC, aby uzyskać sygnał analogowy, który jest następnie podawany do wzmacniacza w celu odtwarzania dźwięku przez głośnik. W tej części można również użyć zewnętrznego przetwornika cyfrowo-analogowego, ponieważ arduino nie ma go wewnętrznie. Korzystanie z przetwornika cyfrowo-analogowego może być lepszą opcją, ponieważ znacznie poprawiłoby jakość dźwięku.

Komunikacja pomiędzy modułem karty SD a arduino odbywa się poprzez SPI (Serial Peryferyjny Interfejs). Kod wykorzystuje bibliotekę SD i SPI, aby łatwo uzyskać dostęp do zawartości karty SD.

Krok 3: Przygotuj kartę SD i podłącz moduł karty SD

Przygotuj kartę SD i podłącz moduł karty SD
Przygotuj kartę SD i podłącz moduł karty SD
Przygotuj kartę SD i podłącz moduł karty SD
Przygotuj kartę SD i podłącz moduł karty SD
Przygotuj kartę SD i podłącz moduł karty SD
Przygotuj kartę SD i podłącz moduł karty SD
Przygotuj kartę SD i podłącz moduł karty SD
Przygotuj kartę SD i podłącz moduł karty SD
  • Najpierw musisz sformatować jako kartę SD z systemem plików FAT16 lub FAT32 (możesz użyć smartfona do sformatowania karty SD).
  • Teraz na karcie SD zainstaluj wstępnie niektóre pliki dźwiękowe.wav. Możesz generować pliki.wav za pomocą Audacity (zobacz instrukcje poniżej). Pamiętaj, aby nazwać pliki audio_1.wav, audio_2.wav, audio_3.wav i tak dalej.

Moduł karty SD wykorzystuje SPI do komunikacji danych z arduino. Dlatego łączy się tylko z tymi pinami, które mają włączony SPI. Te połączenia są następujące:

  • Vcc - 5v
  • GND - GND
  • MOSI (Master Out Slave In) - pin 11
  • MISO (Master In Slave Out) - pin 12
  • CLK (zegar) - pin 13
  • SS/CS (Slave Select/Chip Select) - pin 10

Generowanie pliku '.wav' za pomocą Audacity Software:

  • Otwórz plik audio, który chcesz przekonwertować na.wav w Audacity.
  • Kliknij nazwę pliku, a następnie wybierz „Split Stereo to Mono”. Ta opcja dzieli dźwięk stereo na dwa kanały mono. Możesz teraz zamknąć jeden z kanałów.
  • Zmień wartość „Project Rate” na dole na 16000 Hz. Ta wartość odpowiada maksymalnej częstotliwości próbkowania wewnętrznego ADC arduino.
  • Teraz przejdź do Plik->Eksportuj/Eksportuj jako WAV.
  • Wybierz odpowiednią lokalizację i nazwę pliku. Z menu kodowania wybierz „Unsigned 8-bit PCM”, ponieważ używamy formatu PCM do przechowywania dźwięku w formacie cyfrowym.

Krok 4: Podłącz wyjście audio i mikrofon

Podłącz wyjście audio i mikrofon
Podłącz wyjście audio i mikrofon
Podłącz wyjście audio i mikrofon
Podłącz wyjście audio i mikrofon
Podłącz wyjście audio i mikrofon
Podłącz wyjście audio i mikrofon
Podłącz wyjście audio i mikrofon
Podłącz wyjście audio i mikrofon

Podłączanie mikrofonu:

  • Vcc - 3.3v
  • GND - GND
  • OUT - pin A0

NOTATKA:

  • Spróbuj podłączyć mikrofon bezpośrednio do arduino zamiast używać płytki stykowej, ponieważ może to powodować niepotrzebne szumy w sygnale wejściowym.
  • Upewnij się, że przylutowałeś czysto nagłówki na module mikrofonu, ponieważ złe połączenia lutowane również powodują hałas.
  • Ten moduł mikrofonowy posiada regulowane wzmocnienie, które można regulować za pomocą potencjometru z tyłu deski. Sugerowałbym utrzymywanie nieco niskiego wzmocnienia, ponieważ wtedy nie będzie ono zbytnio wzmacniać hałasu, podczas gdy możesz mówić, trzymając go blisko ust, co daje czystszy dźwięk.

Podłączanie wyjścia audio:

  • Umieść kondensator 10 uF i rezystor 1 kΩ szeregowo na płytce stykowej z dodatnim kondensatorem podłączonym do rezystora. Tworzą one razem filtr RC, który konwertuje wyjście PWM na sygnał analogowy, który można wprowadzić do wzmacniacza.
  • Podłącz pin 9 Arduino do drugiego końca rezystora.
  • Ujemny zacisk kondensatora jest podłączony do lewego i prawego kanału żeńskiego gniazda audio.
  • GND gniazda Audio zostanie połączone z GND.
  • Gniazdo audio jest połączone ze wzmacniaczem za pomocą kabla Aux. W moim przypadku użyłem systemu głośników mojego komputera.

NOTATKA:

Używanie PWM jako wyjścia audio może nie być najlepszą opcją, ponieważ zewnętrzny przetwornik cyfrowo-analogowy zapewniłby znacznie lepszą rozdzielczość i jakość. Dodatkowo kondensator i rezystor w filtrze RC mogą wywoływać niepożądane szumy. Ale i tak wynik był całkiem przyzwoity dla tego projektu

Krok 5: Podłącz przyciski

Podłącz przyciski
Podłącz przyciski
Podłącz przyciski
Podłącz przyciski
Podłącz przyciski
Podłącz przyciski

Projekt wykorzystuje przyciski jako interfejs użytkownika. Oba pełnią różne funkcje i są używane w różny sposób, ale mają to samo okablowanie. Ich połączenie wygląda następująco:

  • Umieść przyciski na płytce stykowej.
  • Podłącz jeden zacisk jednego z przycisków do pinu 2 arduino za pomocą rezystora ściągającego 10 kΩ. Drugi zacisk przycisku zostaje podłączony do 5V. Tak więc, gdy przycisk jest wciśnięty, pin 2 staje się WYSOKI i możemy to wykryć w kodzie.
  • Drugi przycisk łączy się tak samo z pinem 3 arduino zamiast 2.

Przycisk podłączony do pinu 2 odtwarza losowy plik audio z zestawu wstępnie zainstalowanych plików audio na karcie SD po jednokrotnym naciśnięciu.

Przycisk podłączony do pinu 3 służy do nagrywania. Musisz nacisnąć i przytrzymać ten przycisk, aby nagrać. Arduino rozpoczyna nagrywanie zaraz po naciśnięciu tego przycisku i zatrzymuje nagrywanie po zwolnieniu tego przycisku. Po zatrzymaniu nagrywania natychmiast odtwarza to nagranie.

Krok 6: Prześlij kod

Prześlij kod
Prześlij kod
Prześlij kod
Prześlij kod
Prześlij kod
Prześlij kod

Przed przesłaniem kodu upewnij się, że zainstalowałeś wszystkie wymagane biblioteki, takie jak TMRpcm, SD itp.

Możesz także otworzyć Serial Monitor po przesłaniu kodu, aby uzyskać informację zwrotną o tym, co robi arduino.

Obecnie kod nie manipuluje nagranym dźwiękiem, aby brzmiał inaczej, ale planuję włączyć tę funkcję w następnej wersji, w której możesz ustawić częstotliwość wyjściową sygnału audio za pomocą potencjometru i uzyskać różne rodzaje dźwięków.

I gotowe!!

Zalecana: