Cuprins:

Prototip Arduino-Raspberry Pi Soundboard: 9 pași (cu imagini)
Prototip Arduino-Raspberry Pi Soundboard: 9 pași (cu imagini)

Video: Prototip Arduino-Raspberry Pi Soundboard: 9 pași (cu imagini)

Video: Prototip Arduino-Raspberry Pi Soundboard: 9 pași (cu imagini)
Video: Raspberry Pi Soundboard 2024, Noiembrie
Anonim
Prototip Arduino-Raspberry Pi Soundboard
Prototip Arduino-Raspberry Pi Soundboard

Tabla de sunet prototip creată cu un Arduino și Raspberry Pi este menită să fie un mod simplu de redare a 4 sunete sau zgomote diferite, în timp ce are opțiunea de a comuta seturile de sunet cu un buton și de a afișa setul de sunet curent cu un ecran LCD.

* Vă rugăm să rețineți: Codul proiectului este complet de 99%, dar nu este funcțional.

Raspberry Pi controlează ecranul LCD de 16x2 și codificatorul rotativ în timp ce Arduino citește intrările analogice de la rezistențe sensibile la forță (FSR) și trimite un semnal către Arduino pentru a reda un sunet. Amândoi nu am folosit niciodată un Arduino sau Pi anterior acestei clase, dar profesorul nostru ne-a oferit toate instrumentele și îndrumările necesare pentru a codifica și construi cu ușurință acest proiect. TinkerCad, un instrument online gratuit de modelare 3D de la AutoDesk, a fost folosit pentru a ne modela proiectul.

Cea mai dificilă parte a proiectului a fost găsirea unei modalități de a determina Arduino și Raspberry Pi să comunice cu comunicarea în serie. Am dorit inițial să folosim Pi-ul doar pentru întregul proiect, dar aveam nevoie de Arduino pentru a citi semnalul analogic din FSR-uri. Am reușit cu ușurință să trimitem linii de cuvinte sau numere din Arduino și să le afișăm pe Pi, dar problema a venit atunci când am încercat să citim aceste valori în Python și să le implementăm în instrucțiuni de condiție pentru a le procesa.

Abilitati cerute

  • Înțelegere simplă a C / C ++ pentru codificarea Arduino
  • Înțelegere simplă a codificării Python pentru Raspberry Pi
  • Cunoașterea modului în care este conectată o placă de calcul
  • Abilități de bază de modelare 3D
  • Dorința de a învăța și extinde programarea, cablarea și construirea a ceva cam îngrijit

Lista de materiale

1 x Raspberry Pi 3

1 x Elegoo Uno SAU Arduino Uno

1 x 830 Cravată

1 x GPIO Breakout Board (RSP-GPIO)

1 x cablu panglică pentru placa de desfacere

4 x rezistențe sensibile la forță mici

1 x Ecran LCD de bază de 16x2 caractere

1 x modul de codificare rotativ

24 x fire de la mascul la feminin

10 x fire de la mascul la mascul

4 x rezistențe 10k

1 x 10k potențiometru

1 x genunchi din spumă de grădină (magazin de dolari)

Pasul 1: Testați FSR cu Arduino

Testați FSR cu Arduino
Testați FSR cu Arduino

Mai întâi am decis să încercăm FSR cu Arduino. FSR-urile trimit un semnal analogic și, prin urmare, a trebuit să folosim un Arduino deoarece Pi nu primește analog fără alte circuite. Am vrut să testăm pragurile pentru a ne asigura că presele erau la o presiune bună. Am constatat că este în jur de 150 dintr-un total de 1000. Plotterul serial de pe Arduino IDE a fost foarte util pentru acest pas.

Pasul 2: Trageți planurile pentru tablă

Trageți planurile pentru tablă
Trageți planurile pentru tablă
Trageți planurile pentru tablă
Trageți planurile pentru tablă

Apoi am întocmit și am măsurat planurile pentru tablă. Am vrut să avem 4 tampoane cu care să redăm sunete, un spot pentru un ecran LCD pentru a afișa grupul de sunet curent și un codificator rotativ pentru a schimba grupul de sunete.

Pasul 3: Modelează placa în TinkerCad

Modelează placa în TinkerCad
Modelează placa în TinkerCad
Modelează placa în TinkerCad
Modelează placa în TinkerCad
Modelează placa în TinkerCad
Modelează placa în TinkerCad

După ce au fost elaborate planurile, am modelat tabloul pe un site web online, gratuit, de modelare 3D numit TinkerCad de Autodesk. Îl recomandăm cu tărie pentru aceia dintre voi care nu doresc să cheltuiască o grămadă de bani pe software-ul mare de modelare 3D, deoarece este ușor de utilizat, bazat pe cloud și are suport complet pentru imprimarea 3D.

După ce a fost modelat, a trebuit să îl împărțim în 2 bucăți pentru a o potrivi pe imprimantă. S-a tipărit foarte bine, dar greșeala mea a fost că nu a dimensionat foarte bine slotul ecranului LCD (nu faceți această greșeală!) Am încărcat fișierele. STL din partea stângă și din dreapta dacă doriți să le verificați.

Pasul 4: Testați ecranul LCD

Testați ecranul LCD
Testați ecranul LCD

Am folosit deja ecranul de pe Arduino și a fost foarte ușor de configurat. Cu toate acestea, a fost mai dificil să-l rulezi cu Pi. Având câteva ore de depanare pe Google și agitându-ne cu firele, am reușit în cele din urmă să funcționeze. Vă rugăm să consultați codul final Python la final pentru a vedea cum a funcționat. Am folosit câteva site-uri web pentru a ne ajuta să le conectăm și să scriem codul. Verificați-le:

learn.adafruit.com/drive-a-16x2-lcd-direct…

www.raspberrypi-spy.co.uk/2012/07/16x2-lcd…

Pasul 5: Testați codificatorul rotativ cu ecranul LCD

Testați codificatorul rotativ cu ecranul LCD
Testați codificatorul rotativ cu ecranul LCD

Am vrut apoi să vedem dacă putem face ca ecranul LCD să schimbe textul atunci când codorul a fost rotit. Codificatorul nu are o cantitate setată de unghiuri sau rotații, așa că în cod am numărat de câte ori a fost rotit în sensul acelor de ceasornic sau în sens invers acelor de ceasornic și l-am făcut să numere la 3. Dacă s-ar depăși, s-ar întoarce la 0 și dacă ar fi sub 0, ar reveni la 3. Aceste numere pot fi setate pentru oricâte seturi de sunete doriți, dar am ajuns să testăm doar un singur set de sunete. Asigurați-vă că sunetele dvs. se află în același folder / locație ca și unde se execută codul principal Python.

Pasul 6: Asamblați placa

Asamblați consiliul
Asamblați consiliul
Asamblați consiliul
Asamblați consiliul
Asamblați consiliul
Asamblați consiliul

FSR-urile alunecă sub cele patru sloturi diferite. Le-am centrat și le-am înregistrat. Vă recomandăm bandă adezivă sau poate chiar lipire, pentru că simpla bandă scotch a fost groaznică la lipirea materialului tipărit 3D. După o călătorie rapidă la magazinul de dolari, am găsit o genunchiere de grădină moale, dar squishy, pe care am putea să o tăiem în patru bucăți pentru a o folosi ca butoane pentru tablă. Le-am tăiat astfel încât să poată să se potrivească perfect în locurile lor, astfel încât să poată rămâne la locul lor, dar, de asemenea, să fie ușor îndepărtate, dacă este necesar.

Pasul 7: conectați totul

Cablu totul
Cablu totul
Cablu totul
Cablu totul

După ce am asamblat placa și am pus FSR-urile, codificatorul și ecranul la locul lor, am conectat totul. Puteți folosi 2 panouri, dar am reușit să potrivim totul pe una. Imaginea arată ca o mizerie, dar am făcut o diagramă schematică într-un program gratuit numit Fritzing. Rețineți că puteți schimba la ce pini doriți să atașați totul, dar diagrama corespunde codului nostru.

Pasul 8: Finalizați codarea TOTUL

Aceasta a fost partea dificilă. După cum sa menționat în introducere, nu am putut finaliza această parte. Codul este 99% acolo, dar singura parte care nu a funcționat a fost comunicarea serială de la Arduino la Pi. Am putea trimite informațiile cu ușurință atunci când am conectat Arduino la Pi cu cablul USB, dar Pi nu a putut face altceva decât să afișeze aceste informații pe ecran. Am vrut să putem spune care buton a fost apăsat și să facem redarea unui sunet specific, dar datele care veneau prin comunicare nu au putut fi puse într-o declarație de condiție pentru a testa ce buton a fost apăsat.

Vă rugăm să consultați codul atașat, notele au fost comentate în codul Python pentru Pi. Codul Arduino ar trebui să fie 100%.

Pasul 9: încheie

Încheia
Încheia

În ansamblu, acest proiect a fost o experiență de învățare UMERĂ pentru noi doi și sperăm că această scriere poate oferi viitorilor studenți, profesori sau jucătorilor o inspirație pentru propriul proiect și să-i îndrume învățând din greșelile noastre. Strigați-l pe minunatul nostru profesor de robotică care ne-a ajutat enorm în timpul petrecut în clasă și ne-a oferit ocazia de a ne distra și de a învăța multe într-o clasă COMP senior! Multumesc pentru citire:)

Recomandat: