Spisu treści:
- Krok 1: Składniki
- Krok 2: Podłącz czujniki ultradźwiękowe do płyty Octasonic
- Krok 3: Podłącz konwerter poziomów logicznych do płyty Octasonic
- Krok 4: Podłącz konwerter poziomów logicznych do Raspberry Pi
- Krok 5: Podłącz Raspberry Pi 5V do Octasonic 5V
- Krok 6: Zainstaluj oprogramowanie
- Krok 7: Zrób trochę muzyki
- Krok 8: Kontrola gestów
- Krok 9: Tworzenie obudowy
- Krok 10: Rozwiązywanie problemów i kolejne kroki
Wideo: Ultradźwiękowe pianino Pi z kontrolą gestów!: 10 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
Ten projekt wykorzystuje niedrogie czujniki ultradźwiękowe HC-SR04 jako wejścia i generuje nuty MIDI, które można odtwarzać za pomocą syntezatora na Raspberry Pi w celu uzyskania wysokiej jakości dźwięku.
Projekt wykorzystuje również podstawową formę sterowania gestami, w której instrument muzyczny można zmienić, trzymając przez kilka sekund ręce nad dwoma zewnętrznymi czujnikami. Kolejny gest może być użyty do wyłączenia Raspberry Pi po zakończeniu.
Powyższy film przedstawia gotowy produkt w prostej wycinanej laserowo obudowie. W dalszej części tej instrukcji znajduje się bardziej szczegółowe wideo, które wyjaśnia, jak działa projekt.
Stworzyłem ten projekt w połączeniu z The Gizmo Dojo (moja lokalna przestrzeń dla twórców w Broomfield, Kolorado), aby stworzyć kilka interaktywnych eksponatów, które możemy zabrać na lokalne imprezy STEM/STEAM i Maker Faires.
Zapoznaj się również z najnowszą dokumentacją i samouczkami na https://theotherandygrove.com/octasonic/, która zawiera teraz informacje o wersji tego projektu w Pythonie (ta instrukcja została napisana dla wersji Rust).
Krok 1: Składniki
Do tej instrukcji potrzebne będą następujące składniki:
- Raspberry Pi (2 lub 3) z kartą SD
- 8 czujników ultradźwiękowych HC-SR04
- Oktasoniczna tablica zaciskowa
- Dwukierunkowy konwerter poziomów logicznych
- 32 x 12" żeńskie przewody połączeniowe do podłączenia czujników ultradźwiękowych
- 13 x 6" żeńskie przewody połączeniowe do podłączenia Raspberry Pi, Octasonic i konwertera poziomów logicznych
- Odpowiedni zasilacz dla Raspberry Pi
- Głośniki komputerowe lub podobne
Zalecam używanie Raspberry Pi 3, jeśli to możliwe, ponieważ ma większą moc obliczeniową, co zapewnia bardziej responsywny i przyjemny dźwięk. Może działać dobrze z Raspberry Pi 2 z niewielkimi poprawkami, ale nie próbowałbym używać oryginalnego Raspberry Pi do tego projektu.
Czujniki ultradźwiękowe HC-SR04 mają 4 połączenia - 5V, GND, Trigger i Echo. Zazwyczaj Trigger i Echo są podłączone do oddzielnych pinów mikrokontrolera lub Raspberry Pi, ale oznacza to, że do podłączenia 8 czujników trzeba by użyć 16 pinów, co nie jest praktyczne. W tym miejscu pojawia się tabliczka zaciskowa Octasonic. Ta tablica łączy się ze wszystkimi czujnikami i ma dedykowany mikrokontroler, który monitoruje czujniki, a następnie komunikuje się z Raspberry Pi przez SPI.
HC-SR04 wymaga 5 V, a Raspberry Pi tylko 3,3 V, dlatego potrzebujemy również konwertera poziomów logicznych, który połączy Raspberry Pi z płytką zaciskową Octasonic.
Krok 2: Podłącz czujniki ultradźwiękowe do płyty Octasonic
Użyj 4 żeńsko-żeńskich przewodów połączeniowych, aby podłączyć każdy czujnik ultradźwiękowy do płytki, uważając, aby podłączyć je we właściwy sposób. Płytka została zaprojektowana tak, aby piny były w tej samej kolejności co piny czujnika ultradźwiękowego. Od lewej do prawej na płytce piny to GND, Trigger, Echo, 5V.
Krok 3: Podłącz konwerter poziomów logicznych do płyty Octasonic
Raspberry Pi i płyta Octasonic komunikują się przez SPI. SPI wykorzystuje 4 przewody:
- Master In, Slave Out (MISO)
- Wyjście Master, Wejście Slave (MOSI)
- Zegar szeregowy (SCK)
- Wybór urządzenia podrzędnego (SS)
Dodatkowo musimy podłączyć zasilanie (5V i GND).
Konwerter poziomów logicznych ma dwie strony - niskie napięcie (LV) i wysokie napięcie (WN). Raspberry połączy się ze stroną LV, ponieważ jest to 3,3V. Octasonic połączy się ze stroną WN, ponieważ jest to 5V.
Ten krok dotyczy podłączenia Octasonic do strony WN konwertera poziomów logicznych
Zobacz zdjęcie dołączone do tego kroku pokazujące, które piny należy podłączyć do konwertera poziomów logicznych.
Połączenia od Octasonic do konwertera poziomów logicznych powinny wyglądać następująco:
- 5V do HV
- SCK do HV4
- MISO na HV3
- MOSI do HV2
- SS do HV1
- GND do GND
Krok 4: Podłącz konwerter poziomów logicznych do Raspberry Pi
Raspberry Pi i płyta Octasonic komunikują się przez SPI. SPI wykorzystuje 4 przewody:
- Master In, Slave Out (MISO)
- Wyjście Master, Wejście Slave (MOSI)
- Zegar szeregowy (SCK)
- Wybór urządzenia podrzędnego (SS)
Dodatkowo musimy podłączyć zasilanie (3,3V i GND). Konwerter poziomów logicznych ma dwie strony - niskie napięcie (LV) i wysokie napięcie (HV). Raspberry połączy się ze stroną LV, ponieważ jest 3,3V. Octasonic połączy się ze stroną WN, ponieważ jest to 5V.
Ten krok służy do podłączenia Raspberry Pi do strony LV konwertera poziomów logicznych
Połączenia z Raspbery Pi do konwertera poziomów logicznych powinny wyglądać następująco:
- 3,3 V do LV
- GPIO11 (SPI_SCLK) do LV4
- GPIO09 (SPI_MISO) do LV3
- GPIO10 (SPI_MOSI) do LV2
- GPIO08 (SPI_CE0_N) SS do LV1
- GND do GND
Użyj schematu dołączonego do tego kroku, aby zlokalizować właściwe piny na Raspberry Pi!
Krok 5: Podłącz Raspberry Pi 5V do Octasonic 5V
Pozostaje jeszcze jeden ostatni przewód do dodania. Musimy faktycznie zasilić płytkę Octasonic napięciem 5 V, więc robimy to, podłączając jeden z pinów Raspberry Pi 5 V do pinu 5 V na nagłówku Octasonic AVR. To jest dolny lewy pin w bloku nagłówka AVR (jest to blok 2 x 3 w prawym górnym rogu płyty). Zobacz załączone zdjęcie pokazujące gdzie znajduje się blok AVR.
Zobacz drugi załączony schemat, aby znaleźć pin 5 V na Raspberry Pi.
Krok 6: Zainstaluj oprogramowanie
Zainstaluj Raspian
Zacznij od czystej instalacji Raspbian Jessie, a następnie zaktualizuj ją do najnowszej wersji:
aktualizacja sudo apt-get
sudo apt-get upgrade
Włącz SPI
Aby ten projekt działał, musisz włączyć SPI na Raspberry Pi! W tym celu użyj narzędzia konfiguracyjnego Raspberry Pi.
Ważne jest również ponowne uruchomienie Pi po włączeniu SPI, aby zadziałało
Zainstaluj FluidSynth
Fluidsynth to niesamowity darmowy syntezator MIDI. Możesz zainstalować go z wiersza poleceń za pomocą tego polecenia:
sudo apt-get install fluidsynth
Zainstaluj język programowania Rust
Ultrasonic Pi Piano jest zaimplementowany w języku programowania Rust firmy Mozilla (jest jak C++, ale bez złych bitów). Tego właśnie używają wszystkie fajne dzieciaki w dzisiejszych czasach.
Postępuj zgodnie z instrukcjami na https://rustup.rs/, aby zainstalować Rusta. Aby zaoszczędzić czas, instrukcje są takie, aby uruchomić to jedno polecenie. Podczas instalacji możesz zaakceptować domyślne odpowiedzi na wszelkie pytania.
UWAGA: Od czasu opublikowania tej instrukcji występują pewne problemy z instalacją Rusta na Raspberry Pi. Zły czas:-/ ale zmodyfikowałem poniższe polecenie, aby obejść problem. Mam nadzieję, że wkrótce to naprawią. Pracuję nad stworzeniem obrazu, który ludzie mogą pobrać i wypalić na karcie SD. Jeśli chcesz, proszę o kontakt.
eksport RUSTUP_USE_HYPER=1curl https://sh.rustup.rs -sSf | CII
Pobierz kod źródłowy Ultrasonic Pi Piano
Kod źródłowy kodu źródłowego Ultrasonic Pi Piano jest hostowany na github. Istnieją dwie możliwości uzyskania kodu. Jeśli znasz git i github, możesz sklonować repozytorium:
git klon [email protected]:TheGizmoDojo/UltrasonicPiPiano.git
Alternatywnie możesz pobrać plik zip z najnowszym kodem.
Skompiluj kod źródłowy
cd UltrasonicPiPiano
budowanie ładunku -- zwolnienie
Przetestuj kod
Zanim przejdziemy do tworzenia muzyki w następnym kroku, upewnijmy się, że oprogramowanie działa i że możemy odczytać prawidłowe dane z czujników.
Użyj następującego polecenia, aby uruchomić aplikację. Spowoduje to odczytanie danych z czujników i przekształcenie ich w nuty MIDI, które następnie zostaną wydrukowane na konsoli. Gdy przesuwasz rękę nad czujnikami, powinieneś zobaczyć generowane dane. Jeśli nie, przejdź do sekcji rozwiązywania problemów na końcu tej instrukcji.
bieg ładunku - zwolnienie
Jeśli jesteś ciekawy, flaga "--release" mówi Rustowi, aby skompilował kod tak wydajnie, jak to możliwe, w przeciwieństwie do domyślnego ustawienia "--debug".
Krok 7: Zrób trochę muzyki
Upewnij się, że nadal jesteś w katalogu, do którego pobrałeś kod źródłowy i uruchom następujące polecenie.
Ten skrypt „run.sh” upewnia się, że kod został skompilowany, a następnie uruchamia kod, przesyłając dane wyjściowe do fluidsynth.
./run.sh
Upewnij się, że masz wzmocnione głośniki podłączone do gniazda audio 3,5 mm na Raspberry Pi i powinieneś słyszeć muzykę, gdy przesuwasz ręce nad czujnikami.
Jeśli nie słyszysz muzyki, a masz podłączony monitor HDMI, prawdopodobnie zamiast tego jest tam wyjście audio. Aby to naprawić, po prostu uruchom to polecenie, a następnie uruchom ponownie Pi Piano:
sudo mikser cset numid=3 1
Zmiana głośności
Głośność (lub „wzmocnienie”) określa się za pomocą parametru „-g” do fluidsynth. Możesz zmodyfikować skrypt run.sh i zmienić tę wartość. Pamiętaj, że małe zmiany tego parametru powodują dużą zmianę głośności, więc spróbuj zwiększyć go o małe wartości (np. 0,1 lub 0,2).
Krok 8: Kontrola gestów
Zobacz film dołączony do tego kroku, aby zobaczyć pełną demonstrację projektu, w tym sposób działania kontrolek gestów.
Koncepcja jest bardzo prosta. Oprogramowanie śledzi, które czujniki są zakryte (w promieniu 10 cm), a które nie. Przekłada się to na 8 liczb binarnych (1 lub 0). Jest to bardzo wygodne, ponieważ sekwencja 8 liczb binarnych tworzy „bajt”, który może reprezentować liczby od 0 do 255. Jeśli nie wiesz jeszcze o liczbach binarnych, gorąco polecam poszukać samouczka. Liczby binarne są podstawową umiejętnością, której należy się nauczyć, jeśli chcesz dowiedzieć się więcej o programowaniu.
Oprogramowanie odwzorowuje bieżący stan czujników na pojedynczy bajt reprezentujący bieżący gest. Jeśli ta liczba pozostaje taka sama przez kilka cykli, oprogramowanie działa na tym geście.
Ponieważ czujniki ultradźwiękowe nie są super niezawodne i mogą występować zakłócenia między czujnikami, będziesz musiał wykazać się cierpliwością podczas używania gestów. Spróbuj zmienić odległość, w jakiej trzymasz ręce od czujników, a także kąt, pod jakim trzymasz ręce. Zimno również spróbuj trzymać coś płaskiego i solidnego nad czujnikami, aby lepiej odzwierciedlić dźwięk.
Krok 9: Tworzenie obudowy
Jeśli chcesz, aby była to stała wystawa i móc ją pokazać ludziom, prawdopodobnie będziesz chciał zrobić coś w rodzaju ogrodzenia. Może to być wykonane z drewna, tektury lub wielu innych materiałów. Oto film pokazujący obudowę, nad którą pracujemy dla tego projektu. Wykonany jest z drewna, z wywierconymi otworami, aby utrzymać czujniki ultradźwiękowe na miejscu.
Krok 10: Rozwiązywanie problemów i kolejne kroki
Rozwiązywanie problemów
Jeśli projekt nie działa, zwykle jest to spowodowane błędem okablowania. Nie spiesz się, aby dokładnie sprawdzić wszystkie połączenia.
Innym częstym problemem jest brak włączenia SPI i ponowne uruchomienie pi.
Odwiedź stronę https://theotherandygrove.com/octasonic/, aby uzyskać pełną dokumentację, w tym wskazówki dotyczące rozwiązywania problemów, artykuły dotyczące Rust i Python, a także informacje o tym, jak uzyskać wsparcie.
Następne kroki
Kiedy już projekt zacznie działać, polecam poeksperymentować z kodem i wypróbować różne instrumenty muzyczne. Kody instrumentów MIDI mieszczą się w zakresie od 1 do 127 i są tutaj udokumentowane.
Czy chcesz, aby jeden instrument muzyczny z każdym czujnikiem odtwarzał inną oktawę? A może chciałbyś, aby każdy czujnik był osobnym instrumentem? Możliwości są prawie nieograniczone!
Mam nadzieję, że podobało ci się to pouczenie. Polub, jeśli tak, i koniecznie zasubskrybuj mnie tutaj i mój kanał YouTube, aby zobaczyć przyszłe projekty.
Zalecana:
Zrób ultradźwiękowe urządzenie do wykrywania i pomiaru odległości w domu: 7 kroków (ze zdjęciami)
Zrób ultradźwiękowe urządzenie do wykrywania i pomiaru odległości w domu: Cześć! Jestem Sourabh Kumar, chciałem zrobić alarmujący radar, ale się nie powiódł, spróbuję ponownie, ale dzisiaj poprowadzę cię do wykonania ultradźwiękowego urządzenia do wykrywania i określania odległości w domu za pomocą czujnika ultradźwiękowego (nadajnik-odbiornik) Wiem, że jest ich wiele zawodowiec
Urządzenie ultradźwiękowe poprawiające nawigację osób niedowidzących: 4 kroki (ze zdjęciami)
Ultradźwiękowe urządzenie usprawniające nawigację osób niedowidzących: Nasze serca kierujemy do osób nieuprzywilejowanych, ponieważ wykorzystujemy nasze talenty do ulepszania technologii i rozwiązań badawczych w celu poprawy życia cierpiących. Ten projekt został stworzony wyłącznie w tym celu. Ta elektroniczna rękawica wykorzystuje detekcję ultradźwiękową, aby wzmocnić
Kontroler gestów Minecraft: 10 kroków (ze zdjęciami)
Minecraft Gesture Controller: Poruszaj się, by grać w Minecrafta! Co!! Tak. Obejrzyj demo:) Ten samouczek pokaże Ci, jak stworzyć swój własny kontroler do gier gestami dla Minecrafta (lub innej ulubionej gry komputerowej). Poruszaj ręką (rękami), aby chodzić/biegać/skakać, rozejrzeć się
Nevma: Kontrola gestów dla mas: 3 kroki (ze zdjęciami)
Nevma: Kontrola gestów dla mas: Praca w Delphi (wkrótce Aptiv) pozwala mi na luksus zanurzenia się w zaawansowanym technologicznie i innowacyjnym środowisku, które zapewnia stałą inspirację do tworzenia nowych i ekscytujących gadżetów. Pewnego dnia niektórzy koledzy wspomnieli, że sterowanie gestami jest jednym z
Batgogle ultradźwiękowe: 14 kroków (ze zdjęciami)
Batgogle ultradźwiękowe: chciałbyś być nietoperzem? Chcesz doświadczyć echolokacji? Chcesz spróbować „zobaczyć” z twoimi uszami? W moim pierwszym Instructable pokażę ci, jak zbudować własne ultradźwiękowe batgogle za pomocą klonu mikrokontrolera Arduino, Devantech ultradźwiękowy se