Cuprins:
- Pasul 1: Ingrediente
- Pasul 2: Conectați senzorii cu ultrasunete la placa Octasonic
- Pasul 3: Conectați convertorul de nivel logic la placa Octasonic
- Pasul 4: Conectați convertorul de nivel logic la Raspberry Pi
- Pasul 5: Conectați Raspberry Pi 5V la Octasonic 5V
- Pasul 6: Instalați software-ul
- Pasul 7: Faceți muzică
- Pasul 8: Controlul gesturilor
- Pasul 9: Realizarea unei incinte
- Pasul 10: Depanarea și următorii pași
Video: Pian cu ultrasunete Pi cu comenzi gestuale !: 10 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
Acest proiect folosește senzori cu ultrasunete HC-SR04 ieftine ca intrări și generează note MIDI care pot fi redate printr-un sintetizator pe Raspberry Pi pentru un sunet de înaltă calitate.
Proiectul folosește, de asemenea, o formă de bază de control al gesturilor, în care instrumentul muzical poate fi schimbat ținându-vă mâinile peste cei doi senzori externi pentru câteva secunde. Un alt gest poate fi folosit pentru a opri Raspberry Pi după ce ați terminat.
Videoclipul de mai sus arată produsul finit într-o carcasă simplă tăiată cu laser. Există un videoclip mai aprofundat mai târziu în acest instructable care explică modul în care funcționează proiectul.
Am creat acest proiect împreună cu The Gizmo Dojo (spațiul meu local din Broomfield, CO) pentru a face câteva exponate interactive pe care le putem duce la evenimente locale STEM / STEAM și Maker Fires.
Vă rugăm să consultați și cele mai recente documentații și tutoriale la https://theotherandygrove.com/octasonic/ care include acum informații despre o versiune Python a acestui proiect (acest instructable a fost scris pentru versiunea Rust).
Pasul 1: Ingrediente
Pentru acest instructiv, veți avea nevoie de următoarele ingrediente:
- Raspberry Pi (2 sau 3) cu card SD
- 8 senzori cu ultrasunete HC-SR04
- Placa Octasonic Breakout
- Convertor de nivel logic bidirecțional
- Sârme jumper de 32 x 12 "Femelă-Femină pentru conectarea senzorilor cu ultrasunete
- Sârme jumper de 13 x 6 "Femelă-Femină pentru conectarea convertorului de nivel Raspberry Pi, Octasonic și Logic
- Alimentare adecvată pentru Raspberry Pi
- Boxe pentru PC sau similare
Aș recomanda utilizarea unui Raspberry Pi 3 dacă este posibil, deoarece are mai multă putere de calcul, rezultând un sunet mai receptiv și mai plăcut. Poate funcționa bine cu un Raspberry Pi 2, cu puține modificări, dar nu aș încerca să folosesc Raspberry Pi original pentru acest proiect.
Senzorii cu ultrasunete HC-SR04 au 4 conexiuni - 5V, GND, Trigger și Echo. De obicei, Trigger și Echo sunt conectate la pini separați pe un microcontroler sau Raspberry Pi, dar asta înseamnă că ar trebui să utilizați 16 pini pentru a conecta 8 senzori, iar acest lucru nu este practic. Aici intervine placa de separare Octasonic. Această placă se conectează la toți senzorii și are un microcontroler dedicat care monitorizează senzorii și apoi comunică cu Raspberry Pi prin SPI.
HC-SR04 necesită 5V, iar Raspberry Pi are doar 3,3V, deci de aceea avem nevoie și de convertorul de nivel logic care va conecta Raspberry Pi la placa de decupare Octasonic.
Pasul 2: Conectați senzorii cu ultrasunete la placa Octasonic
Utilizați 4 fire jumper-mamă pentru a conecta fiecare senzor cu ultrasunete la placă, având grijă să le conectăm corect. Placa este proiectată astfel încât pinii să fie în aceeași ordine ca pinii senzorului cu ultrasunete. De la stânga la dreapta pe tablă, pinii sunt GND, Trigger, Echo, 5V.
Pasul 3: Conectați convertorul de nivel logic la placa Octasonic
Placa Raspberry Pi și Octasonic comunică prin SPI. SPI folosește 4 fire:
- Master In, Slave Out (MISO)
- Master Out, Slave In (MOSI)
- Ceas serial (SCK)
- Slave Select (SS)
În plus, trebuie să conectăm alimentarea (5V și GND).
Convertorul de nivel logic are două fețe - o tensiune joasă (LV) și o tensiune înaltă (HV). Raspberry se va conecta la partea LV, deoarece este de 3,3V. Octasonic se va conecta la partea HV, deoarece este de 5V.
Acest pas este pentru conectarea Octasonic la partea HV a convertorului de nivel logic
Vedeți fotografia atașată la acest pas care arată ce pini trebuie conectați la convertorul de nivel logic.
Conexiunile de la Octasonic la convertorul de nivel logic trebuie să fie după cum urmează:
- 5V la HV
- SCK la HV4
- MISO la HV3
- MOSI la HV2
- SS la HV1
- GND la GND
Pasul 4: Conectați convertorul de nivel logic la Raspberry Pi
Raspberry Pi și Octasonic Board comunică prin SPI. SPI folosește 4 fire:
- Master In, Slave Out (MISO)
- Master Out, Slave In (MOSI)
- Ceas serial (SCK)
- Slave Select (SS)
În plus, trebuie să conectăm alimentarea (3.3V și GND). Convertorul de nivel logic are două fețe - o tensiune joasă (LV) și o tensiune înaltă (HV). Raspberry se va conecta la partea LV, deoarece este de 3,3V. Octasonic se va conecta la partea HV, deoarece este de 5V.
Acest pas este pentru conectarea Raspberry Pi la partea LV a convertorului de nivel logic
Conexiunile de la Raspbery Pi la convertorul de nivel logic trebuie să fie după cum urmează:
- 3.3V la LV
- GPIO11 (SPI_SCLK) la LV4
- GPIO09 (SPI_MISO) la LV3
- GPIO10 (SPI_MOSI) la LV2
- GPIO08 (SPI_CE0_N) SS la LV1
- GND la GND
Utilizați diagrama atașată la acest pas pentru a localiza pinii corecți pe Raspberry Pi!
Pasul 5: Conectați Raspberry Pi 5V la Octasonic 5V
Există un fir final de adăugat. Trebuie să alimentăm placa Octasonic cu 5V, așa că facem acest lucru conectând unul dintre pinii Raspberry Pi 5V la pinul de 5V de pe antetul Octasonic AVR. Acesta este pinul din stânga jos în blocul antet AVR (acesta este blocul 2 x 3 din partea dreaptă sus a plăcii). Vedeți fotografia atașată care arată unde este blocul AVR.
Vedeți cealaltă diagramă atașată pentru a găsi pinul de 5V pe Raspberry Pi.
Pasul 6: Instalați software-ul
Instalați Raspian
Începeți cu o instalare curată a Raspbian Jessie, apoi actualizați-o la cea mai recentă versiune:
sudo apt-get update
sudo apt-get upgrade
Activați SPI
Trebuie să activați SPI pe Raspberry Pi pentru ca acest proiect să funcționeze! Utilizați utilitarul de configurare Raspberry Pi pentru a face acest lucru.
De asemenea, este important să reporniți Pi după ce ați activat SPI pentru ca acesta să aibă efect
Instalați FluidSynth
Fluidsynth este un uimitor software gratuit MIDI synth. Puteți să-l instalați din linia de comandă cu această comandă:
sudo apt-get install fluidsynth
Instalați limbajul de programare Rust
Ultrasonic Pi Piano este implementat în limbajul de programare Rust de la Mozilla (este ca C ++, dar fără biți răi). Este ceea ce folosesc toți copiii drăguți în aceste zile.
Urmați instrucțiunile de la https://rustup.rs/ pentru a instala Rust. Pentru a vă economisi timp, instrucțiunile sunt de a rula această comandă. Puteți accepta răspunsurile implicite la orice întrebare în timpul instalării.
NOTĂ: De la postarea acestei instrucțiuni, există câteva probleme cu instalarea Rust pe Raspberry Pi. Moment greșit: - / dar am modificat comanda de mai jos pentru a soluționa problema. Sperăm că vor rezolva acest lucru în curând. Lucrez la crearea unei imagini pe care oamenii să o poată descărca și înregistra pe un card SD. Dacă doriți acest lucru, vă rugăm să mă contactați.
export RUSTUP_USE_HYPER = 1curl https://sh.rustup.rs -sSf | SH
Descărcați codul sursă Ultrasonic Pi Piano
Codul sursă pentru codul sursă Ultrasonic Pi Piano este găzduit pe github. Există două opțiuni pentru obținerea codului. Dacă sunteți familiarizat cu git și github, puteți clona repo:
git clone [email protected]: TheGizmoDojo / UltrasonicPiPiano.git
Alternativ, puteți descărca un fișier zip al celui mai recent cod.
Compilați codul sursă
cd UltrasonicPiPiano
construcție de marfă - eliberare
Testați codul
Înainte de a începe să facem muzică în pasul următor, să ne asigurăm că software-ul rulează și că putem citi date valide de la senzori.
Utilizați următoarea comandă pentru a rula aplicația. Aceasta va citi datele de la senzori și le va traduce în note MIDI care sunt apoi tipărite pe consolă. Pe măsură ce mutați mâna peste senzori, ar trebui să vedeți datele generate. Dacă nu, treceți la secțiunea de depanare de la sfârșitul acestui instructable.
marfă - eliberare
Dacă sunteți curios, semnalul „--release” îi spune lui Rust să compileze codul cât mai eficient posibil, spre deosebire de setarea implicită „--debug”.
Pasul 7: Faceți muzică
Asigurați-vă că sunteți încă în directorul de unde ați descărcat codul sursă și rulați următoarea comandă.
Acest script "run.sh" se asigură că codul a fost compilat și apoi rulează codul, canalizând ieșirea în fluidsynth.
./run.sh
Asigurați-vă că aveți difuzoare amplificate conectate la mufa audio de 3,5 mm de pe Raspberry Pi și ar trebui să auziți muzică în timp ce vă deplasați mâinile peste senzori.
Dacă nu auziți muzică și aveți un monitor HDMI atașat, atunci ieșirea audio va merge probabil acolo. Pentru a remedia acest lucru, pur și simplu executați această comandă și apoi reporniți Pi Piano:
sudo amixer cset numid = 3 1
Schimbarea volumului
Volumul (sau „câștigul”) este specificat cu parametrul „-g” la fluidsynth. Puteți modifica scriptul run.sh și puteți modifica această valoare. Rețineți că modificările mici ale acestui parametru duc la o schimbare mare a volumului, așa că încercați să îl măriți cu cantități mici (cum ar fi 0,1 sau 0,2).
Pasul 8: Controlul gesturilor
Vedeți videoclipul atașat acestui pas pentru o demonstrație completă a proiectului, inclusiv modul în care funcționează comenzile gestuale.
Conceptul este foarte simplu. Software-ul ține evidența carei senzori sunt acoperiți (în termen de 10 cm) și care nu. Aceasta se traduce prin 8 numere binare (1 sau 0). Acest lucru este foarte convenabil, deoarece o secvență de 8 numere binare face un „octet” care poate reprezenta numere cuprinse între 0 și 255. Dacă nu știți deja despre numerele binare, atunci vă recomand să căutați un tutorial. Numerele binare sunt o abilitate fundamentală de învățat dacă doriți să aflați mai multe despre programare.
Software-ul mapează starea actuală a senzorilor la un singur octet reprezentând gestul curent. Dacă acel număr rămâne același pentru mai multe cicluri, atunci software-ul acționează pe acel gest.
Deoarece senzorii cu ultrasunete nu sunt foarte fiabili și pot exista interferențe între senzori, va trebui să vă exersați oarecare răbdare atunci când utilizați gesturile. Încercați să modificați distanța pe care o țineți de mâini față de senzori, precum și unghiul pe care îl țineți pe mâini. De asemenea, rece, încercați să țineți ceva plat și solid peste senzori pentru a reflecta mai bine sunetul.
Pasul 9: Realizarea unei incinte
Dacă doriți să faceți din aceasta o expoziție permanentă și să o puteți arăta oamenilor, probabil că veți dori să faceți un fel de incintă. Acest lucru ar putea fi realizat din lemn, carton sau multe alte materiale. Iată un videoclip care prezintă incinta la care lucrăm pentru acest proiect. Acesta este realizat din lemn, cu găuri găurite pentru a menține senzorii cu ultrasunete în poziție.
Pasul 10: Depanarea și următorii pași
Depanare
Dacă proiectul nu funcționează, de obicei se reduce la o eroare de cablare. Faceți-vă timp pentru a verifica dublu toate conexiunile.
O altă problemă obișnuită este eșecul activării SPI și repornirea pi.
Vă rugăm să vizitați https://theotherandygrove.com/octasonic/ pentru documentație completă, inclusiv sfaturi de depanare, cu articole specifice Rust și Python, precum și informații despre cum să obțineți asistență.
Pasii urmatori
Odată ce proiectul funcționează, vă recomand să experimentați codul și să încercați diferite instrumente muzicale. Codurile instrumentelor MIDI sunt cuprinse între 1 și 127 și sunt documentate aici.
Doriți un singur instrument muzical cu fiecare senzor care joacă o octavă diferită? Poate ați dori ca fiecare senzor să fie un instrument separat? Posibilitățile sunt aproape nelimitate!
Sper că ți-a plăcut acest lucru instructabil. Vă rugăm să vă place dacă ați făcut-o și asigurați-vă că vă abonați la mine aici și la canalul meu YouTube pentru a vedea proiecte viitoare.
Recomandat:
Robo-Dog simplu (format din taste de pian, o pistol de jucărie și un șoarece): 20 de pași (cu imagini)
Robo-Dog simplu (format din taste de pian, o pistol de jucărie și un șoarece): Oh, Azerbaidjan! Pământ de foc, ospitalitate mare, oameni prietenoși și femei frumoase (… îmi pare rău, femeie! Bineînțeles că am doar ochi pentru tine, soția mea gözəl balaca ana ördəkburun!). Dar sincer, acesta este un loc foarte greu pentru un producător, mai ales atunci când
Sinestezie pian pian: 4 pași
Sinestezie Player Piano: Acest pian player redă muzică folosind o roată color și un aparat de fotografiat! Imaginile sunt capturate de cameră, procesate și interpretate ca note muzicale. Chiar acum este programat să redea rime de pepinieră care pot fi schimbate încărcând o nouă schiță arduino
Cutie de comenzi rapide pentru laptop: 3 pași (cu imagini)
Laptop Shortcut Box: Materiale: Nod MCU esp8266 Breadboard 5x 6mm butoane comutatoare ⅛ ” foaie de placaj 3mm Foaie de plastic acrilic 11x fire Fier de lipit + lipit Cutter cu laser Adeziv fierbinte Adeziv pentru lemn Burghiu pentru lemn
Comenzi personalizate Adafruit Feather NRF52, nu este necesară codificarea: 8 pași (cu imagini)
Adafruit Feather NRF52 Controale personalizate, nu necesită codare: actualizare 23 aprilie 2019 - Pentru graficele de dată / oră folosind numai Arduino millis () consultați Arduino Data / Ora Plotare / Înregistrare folosind Millis () și PfodApp Cel mai recent pfodDesigner V3.0.3610 + generat completează schițele Arduino pentru a trasa date în raport cu data / ora u
Prindere automată folosind un senzor laser și comenzi vocale: 5 pași (cu imagini)
Prindere automată folosind un senzor laser și comenzi vocale: apucarea obiectelor care ni se par simple și naturale este de fapt o sarcină complexă. Omul folosește simțul vederii pentru a determina distanța față de obiectul pe care vrea să îl apuce. Mâna se deschide automat când se află în imediata apropiere a