Inhoudsopgave:

Prototype Arduino-Raspberry Pi Soundboard - Ajarnpa
Prototype Arduino-Raspberry Pi Soundboard - Ajarnpa

Video: Prototype Arduino-Raspberry Pi Soundboard - Ajarnpa

Video: Prototype Arduino-Raspberry Pi Soundboard - Ajarnpa
Video: Raspberry Pi Sound Board w/ LCD - working prototype 2024, November
Anonim
Prototype Arduino-Raspberry Pi-soundboard
Prototype Arduino-Raspberry Pi-soundboard

Het prototype klankbord gemaakt met een Arduino en Raspberry Pi is bedoeld als een eenvoudige manier om 4 verschillende geluiden of geluiden te spelen, terwijl het de mogelijkheid heeft om van geluidsset te wisselen met een knop en de huidige geluidsset weer te geven met een LCD-scherm.

*Let op: De code voor het project is 99% compleet, maar niet functioneel.

De Raspberry Pi bestuurt het 16x2 LCD-scherm en de roterende encoder, terwijl de Arduino de analoge ingangen van krachtgevoelige weerstanden (FSR's) leest en een signaal naar de Arduino stuurt om een geluid af te spelen. We hadden allebei nog nooit een Arduino of Pi gebruikt voorafgaand aan deze les, maar onze professor gaf ons alle benodigde tools en begeleiding om dit project gemakkelijk te coderen en te bouwen. TinkerCad, een gratis online 3D-modelleringstool van AutoDesk, werd gebruikt om ons project te modelleren.

Het moeilijkste deel van het project was het vinden van een manier om de Arduino en Raspberry Pi te laten communiceren met seriële communicatie. Oorspronkelijk wilden we de Pi alleen voor het hele project gebruiken, maar we hadden de Arduino nodig om het analoge signaal van de FSR's te lezen. We waren gemakkelijk in staat om regels met woorden of getallen van de Arduino te verzenden en deze op de Pi weer te geven, maar waar het probleem kwam, was toen we probeerden die waarden in Python te lezen en ze in conditieverklaringen te implementeren om ze te verwerken.

Vereiste vaardigheden

  • Eenvoudig begrip van C/C++ voor Arduino-codering
  • Eenvoudig begrip van Python voor Raspberry Pi-codering
  • Kennis over hoe een breadboard is aangesloten
  • Basisvaardigheden voor 3D-modellering
  • Een verlangen om te leren programmeren, bekabelen en iets leuks te bouwen en uit te breiden

Onderdelen lijst

1 x Framboos Pi 3

1 x Elegoo Uno OF Arduino Uno

1 x 830 Tie Breadboard

1 x GPIO Breakout-kaart (RSP-GPIO)

1 x lintkabel voor breakout-bord

4 x kleine krachtgevoelige weerstanden

1 x basis LCD-scherm met 16x2 tekens

1 x roterende encodermodule

24 x mannelijke naar vrouwelijke draden

10 x mannelijke naar mannelijke draden

4 x 10k weerstanden

1 x 10k potentiometer

1 x kniebeschermer van tuinschuim (dollarwinkel)

Stap 1: Test de FSR met de Arduino

Test de FSR met de Arduino
Test de FSR met de Arduino

We besloten eerst de FSR uit te proberen met de Arduino. De FSR's sturen een analoog signaal en daarom moesten we een Arduino gebruiken omdat de Pi geen analoog ontvangt zonder andere circuits. We wilden drempels testen om er zeker van te zijn dat de persen op een goede druk stonden. We vonden dat het ongeveer 150 van de in totaal 1000 was. De seriële plotter op de Arduino IDE was erg handig voor deze stap.

Stap 2: Teken de plannen voor het bord uit

Teken de plannen voor het bord uit
Teken de plannen voor het bord uit
Teken de plannen voor het bord uit
Teken de plannen voor het bord uit

Vervolgens hebben we de plannen voor het bord gemaakt en ingemeten. We wilden 4 pads hebben om geluiden mee af te spelen, een plek voor een LCD-scherm om de huidige geluidsgroep weer te geven en een roterende encoder om de geluidsgroep te veranderen.

Stap 3: Modelleer het bord in TinkerCad

Modelleer het bord in TinkerCad
Modelleer het bord in TinkerCad
Modelleer het bord in TinkerCad
Modelleer het bord in TinkerCad
Modelleer het bord in TinkerCad
Modelleer het bord in TinkerCad

Nadat de plannen waren opgesteld, hebben we het bord gemodelleerd op een online, gratis, 3D-modelleringswebsite genaamd TinkerCad van Autodesk. We raden het ten zeerste aan voor degenen onder u die geen tonnen geld willen uitgeven aan grote 3D-modelleringssoftware, omdat het gebruiksvriendelijk is, cloudgebaseerd en volledige ondersteuning biedt voor 3D-printen.

Nadat het was gemodelleerd, moesten we het in 2 delen splitsen om het op de printer te passen. Het printte heel goed, maar mijn fout was de grootte van de LCD-schermsleuf niet erg goed (maak die fout niet!) We hebben de linker- en rechterkant. STL-bestanden geüpload als je ze wilt bekijken.

Stap 4: Test het LCD-scherm

Test het LCD-scherm
Test het LCD-scherm

We hadden het scherm op de Arduino al gebruikt en het was heel eenvoudig in te stellen. Het was echter moeilijker om het met de Pi uit te voeren. Met verschillende uren voor het oplossen van problemen op Google en het friemelen met draden, hebben we het eindelijk aan het werk gekregen. Zie de laatste Python-code aan het einde om te zien hoe het werkte. We hebben een paar websites gebruikt om ons te helpen het te bedraden en de code te schrijven. Bekijk ze eens:

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

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

Stap 5: Test de roterende encoder met het lcd-scherm

Test de roterende encoder met het lcd-scherm
Test de roterende encoder met het lcd-scherm

We wilden toen kijken of we de tekst van het LCD-scherm konden veranderen als de encoder werd gedraaid. De encoder heeft geen vast aantal hoeken of rotaties, dus in de code telden we hoe vaak het met de klok mee of tegen de klok in werd gedraaid en lieten het tot 3 tellen. Als het voorbij ging, zou het teruggaan naar 0, en als het onder de 0 zou gaan, zou het terug gaan naar 3. Die nummers kunnen worden ingesteld voor hoeveel geluidssets je wilt, maar we hebben uiteindelijk maar één geluidsset getest. Zorg ervoor dat je geluiden zich in dezelfde map/locatie bevinden als waar de hoofdpython-code wordt uitgevoerd.

Stap 6: Monteer het bord

Monteer het bord
Monteer het bord
Monteer het bord
Monteer het bord
Monteer het bord
Monteer het bord

De FSR's schuiven onder de vier verschillende sleuven. We centreerden ze en plakten ze vast. We raden ducttape aan of misschien zelfs lijmen omdat eenvoudige plakband verschrikkelijk was om aan het 3D-geprinte materiaal te hechten. Na een korte trip naar de dollarwinkel, vonden we een zacht maar zacht tuinkniekussen dat we in vier stukken konden snijden om als knoppen voor het bord te gebruiken. We hebben ze zo gesneden dat ze goed op hun plek passen, zodat ze op hun plaats kunnen blijven, maar ook gemakkelijk kunnen worden verwijderd als dat nodig is.

Stap 7: Sluit alles aan

Sluit alles aan
Sluit alles aan
Sluit alles aan
Sluit alles aan

Na het monteren van het bord en het plaatsen van de FSR's, encoder en scherm, hebben we alles aangesloten. Je kon 2 breadboards gebruiken, maar we konden alles op één plaatsen. De afbeelding ziet eruit als een puinhoop, maar we hebben een schematisch diagram gemaakt in een gratis programma genaamd Fritzing. Merk op dat je kunt wijzigen aan welke pinnen je alles wilt bevestigen, maar het diagram komt overeen met onze code.

Stap 8: Voltooi het coderen van ALLES

Dit was het lastige deel. Zoals vermeld in de intro hebben we dit onderdeel niet kunnen voltooien. De code is er voor 99%, maar het enige dat niet werkte, was de seriële communicatie van Arduino naar Pi. We konden de informatie gemakkelijk verzenden toen we de Arduino met de USB-kabel op de Pi hadden aangesloten, maar de Pi kon niets anders doen dan die informatie op het scherm weergeven. We wilden kunnen zien op welke knop werd gedrukt en dat een specifiek geluid laten spelen, maar de gegevens die via de communicatie binnenkwamen, konden niet in een conditieverklaring worden gezet om te testen op welke knop werd gedrukt.

Zie de bijgevoegde code, opmerkingen zijn becommentarieerd in de Python-code voor de Pi. De Arduino-code moet 100% zijn.

Stap 9: Afsluiten

Concluderen
Concluderen

Over het algemeen was dit project een ENORME leerervaring voor ons tweeën en we hopen dat dit artikel toekomstige studenten, docenten of knutselaars inspiratie kan geven voor hun eigen project en hen kan begeleiden door van onze fouten te leren. Shout out naar onze geweldige robotica-professor die enorm heeft geholpen tijdens onze tijd in de klas en ons de kans heeft gegeven om veel plezier te hebben en veel te leren in een senior COMP-klas! Bedankt voor het lezen:)

Aanbevolen: