Inhoudsopgave:
- Stap 1: De VS1053 bedienen
- Stap 2: De sonars gebruiken
- Stap 3: Een beeldscherm toevoegen
- Stap 4: Het menusysteem
- Stap 5: Samen solderen
- Stap 6: Een PSU toevoegen
- Stap 7: Luidsprekers toevoegen
- Stap 8: Dockingstation
- Stap 9: een zaak maken
- Stap 10: Toekomstige ontwikkeling
Video: MIDI-sonar "Theremin" - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:14
Dit is een muziekinstrument dat twee sonarafstandssensoren gebruikt om de toonhoogte en kwaliteit van de noten te regelen. Het is natuurlijk niet echt een Theremin, maar "Theremin" is de verzamelnaam geworden voor instrumenten die worden bespeeld door met je handen te zwaaien.
Het heeft een ingebouwde MIDI-synthesizer, versterker en luidsprekers. De muzieknoten worden geproduceerd door een MIDI-chip - de VS1053 - die 127 stemmen heeft (d.w.z. zogenaamd verschillende instrumenten). Het heeft een hoge mate van polyfonie (tot 64), zodat het losse noten of akkoorden kan spelen.
Uw rechterhand bestuurt de noot die wordt gespeeld. In de "discrete" modus is de ruimte aan de rechterkant verdeeld in "bakken". Als je hand een bak binnengaat, begint de notitie voor die bak. Wanneer u de prullenbak verlaat, kan de noot stoppen (bijvoorbeeld een orgel) of vanzelf wegsterven (bijvoorbeeld een piano).
In de "continue" modus bepaalt de ruimte aan de rechterkant een continu variabele toonhoogte - zoals de originele Theremin. De notitie begint wanneer uw hand de ruimte binnenkomt en stopt wanneer u de ruimte verlaat.
Uw linkerhand bepaalt de kwaliteit van de gespeelde noot. Het kan het volume, tremolo, vibrato, pitch-bend, reverb, enz. regelen.
Een klein LCD-scherm heeft een menu waarmee u het huidige instrument, de functie van de linkerhand, de schaal (of "toets") van de rechterhand, vibrato, tremolo, enz. kunt selecteren. U kunt verschillende "Setups" opslaan en laden " en schakel daar snel tussen tijdens een optreden.
Het hele MIDI "Theremin"-instrument werkt stand-alone met zijn eigen luidspreker en oplaadbare batterij.
Als je mijn build gaat kopiëren, heb je een Arduino Nano (£ 1,50), een VS1053-module (£ 4,50), een 1,44-inch ST7735 LCD-scherm (£ 3,50), twee HC-SR04-modules (£ 1 per stuk) nodig en een paar weerstanden. Je hebt ook enkele actieve luidsprekers nodig en misschien een lithiumcel en een voeding, maar de details zullen afhangen van hoe je besluit om het te bouwen. Ik heb al die extra's van kofferbakverkoop en liefdadigheidswinkels. Plus jij heb je de gebruikelijke elektronische werkplaatsbenodigdheden nodig.
Stap 1: De VS1053 bedienen
Ik koos voor de VS1053-module die op de afbeelding wordt getoond. (Let op de twee SOT223-regelaars, de twee jack-aansluitingen en de positie van de connector.) Zoek op eBay, Alibaba of je favoriete leverancier naar een VS1053-module die er zo uitziet. Ze zijn hier en hier verkrijgbaar bij Aliexpress.
Ik heb het een paar jaar geleden gekocht en het lijkt niet langer beschikbaar op eBay, alleen op Alibaba. Een rode PCB-versie is nu beschikbaar op eBay. Het lijkt functioneel identiek te zijn, maar de pinout is anders, dus je zult mijn schema's en lay-outs moeten aanpassen. Ik heb het niet getest. In de discussie (hieronder) vindt u instructies over hoe u een weerstand aan de rode PCB kunt toevoegen om "live" MIDI in te schakelen. Of u kunt tijdens de installatie extra opdrachten verzenden om deze in te schakelen.
De VS1053 is een prima chip, maar nogal ingewikkeld. Ik gebruik alleen het MIDI-gedeelte ervan. Het is mogelijk om de VS1053 via een seriële interface te besturen, maar ik gebruik de SPI-bus omdat dit handiger is met een Arduino Nano. Elke byte die u over de SPI-bus verzendt, wordt behandeld als een MIDI-opdracht.
U vindt lijsten met MIDI-commando's op internet. De VS1053 reageert op sommige, maar niet op allemaal. Het programma Midiheremin0.exe toont de programma's waarvan ik weet dat ze werken.
U kunt het VS1053-gegevensblad downloaden van internet. Het is een enorm document en het gaat hard. Sectie "8.9 Ondersteunde MIDI-formaten" is bijna alles wat er staat over MIDI. Sectie "10.10 Real-Time MIDI" gaat over het gebruik van GPIO0 en GPIO1 om MIDI in te schakelen, maar het bord dat ik heb had geen speciale activering nodig. U kunt ook een lijst met MIDI-berichten downloaden (die niet allemaal door de VS1053) worden ondersteund.
Sluit de VS1053-module aan op een Arduino Nano zoals weergegeven en upload het INO-bestand naar de Arduino. Ik heb een soldeerloze breadboard gebruikt. Ik heb er in dit stadium geen foto van, maar je kunt het breadboard met andere componenten in een stap hieronder zien.
De INO-schets ontvangt een byte van de pc via de seriële lijn en stuurt de byte naar de VS1053. Het is een heel eenvoudig programma waarmee je de VS1053 kunt testen. Sluit de uitgangsaansluiting aan op een koptelefoon of een computerluidspreker.
Het programma Windows Midiheremin0.exe (download Step1.zip van github) stuurt opdrachten naar de VS1053. Klik op de knop "90 noot vel" om een noot te spelen. Of u kunt uw eigen Windows-programma schrijven. Of gebruik een van de vele terminalprogramma's die op internet beschikbaar zijn.
De VS1053-module heeft de volgende pinnen:
- de SPI-bus heeft de gebruikelijke MISO, MOSI en SCLK
- als XRST laag is, wordt de chip gereset
- XDCS doet niets in de SPI-modus, dus koppel het aan XCS
- XCS is Chip Select
- DREQ geeft aan wanneer de chip klaar is voor een nieuw commando.
XCS moet laag staan terwijl u een byte verzendt; dan hoog. Op die manier weet je zeker dat je het eerste bit van elke byte hebt gesynchroniseerd. Als u DREQ leest, weet u dat de chip klaar is om een nieuw commando te ontvangen.
Nadat de Arduino een byte heeft verzonden, moet deze een dummy-byte verzenden om de klok te schakelen en de VS1053 in staat te stellen als reactie een byte terug te sturen. De functie SPItransfer() laat zien hoe.
De rode module die op eBay beschikbaar is, bevat een SD-kaartsleuf, dus deze heeft een paar extra pinnen. Negeer hun.
Nu u er zeker van bent dat u de VS1053 kunt laten werken, zullen we er meer een muziekinstrument van maken.
Stap 2: De sonars gebruiken
Sluit de HC-SR04-modules aan op de Arduino Nano zoals weergegeven en upload het INO-bestand naar de Arduino.
Merk in het schema op dat DC3 - de ontkoppelcondensator voor de HC-SR04-modules - dicht bij de HC-SR04-modules moet worden aangesloten. Ze nemen een behoorlijke stroom wanneer ze zenden, wat DC3 helpt te leveren.
In deze fase van het project stuurt de Windows-pc nog steeds opdrachten naar de VS1053, maar de VS1053 wordt ook bestuurd door de HC-SR04-sonarsensoren (download Step2.zip van github).
De nieuwe commando's beginnen allemaal met 0xFF en worden geïnterpreteerd door de Arduino-schets (in plaats van rechtstreeks naar de VS1053) te worden gestuurd. Niet "FF-commando" bytes worden naar de VS1053 gestuurd.
Er zijn commando's om het instrument te veranderen, de toonladder te veranderen, vibrato en tremolo toe te voegen, enz. Het programma kan worden uitgevoerd in "discrete" modus waar er afzonderlijke noten zijn (zoals een piano) of in "continue" modus waar een enkele noot is op en neer gebogen (zoals een theremin).
Het doet vrijwel alles wat het uiteindelijke instrument zal doen, maar het wordt bestuurd door een pc.
De rechter HC-SR04-sonarsensor selecteert de toonhoogte van de gespeelde noot. In de "discrete" modus is de ruimte aan de rechterkant verdeeld in "bakken". Als je hand een bak binnengaat, begint de notitie voor die bak. Wanneer u de prullenbak verlaat, kan de noot stoppen (bijvoorbeeld een orgel) of vanzelf wegsterven (bijvoorbeeld een piano). Als je hand een bak binnengaat, zet de bak iets uit, zodat je geen trillingen aan de rand krijgt.
De functie GetSonar() retourneert de tijd die nodig was tot de eerste echo. Het negeert zeer snelle echo's (duur < 10) die de HC-SR04 soms meldt. Als maxDuration geen echo heeft ontvangen, wordt maxDuration geretourneerd. De duur wordt niet gemeten in een bepaalde eenheid - het is slechts een getal.
In de discrete modus wordt de duur eerst gefilterd om incidentele uitval te verwijderen (wanneer er geen echo wordt ontvangen). Er wordt aangenomen dat de hand pas aanwezig is nadat 10 samples van maxDuration zijn ontvangen. Vervolgens wordt de duur gefilterd met behulp van een mediaanfilter. Mediaanfilters zijn goed in het verwijderen van "impulsieve" ruis (d.w.z. incidentele pieken). De gefilterde duur wordt gebruikt om een bak te selecteren.
In de continue modus wordt de duur opnieuw gefilterd om incidentele uitval te verwijderen. Vervolgens wordt het afgevlakt met behulp van een exponentieel filter. De gefilterde duur wordt gebruikt om de frequentie van de noot in te stellen met behulp van "pitch bend".
Stap 3: Een beeldscherm toevoegen
Het display is een 1,44 TFT LCD-kleurenscherm met een ST7735-controller, 128x128 pixels. Er zijn veel schermen beschikbaar op eBay, je zou bijvoorbeeld liever je instrument ontwikkelen met een groter aanraakscherm. Ik had de ST7735 niet gebruikt controller en wilde het uitproberen.
Ik heb de mijne van deze leverancier. Dezelfde module wordt veel verkocht op eBay - koop er gewoon een die er hetzelfde uitziet als de foto.
Het LCD-scherm heeft de volgende pinnen:
- GND grond
- VCC 3.3V
- SCL SPI-bus SCLK
- SDA SPI-bus MOSI van Arduino
- RES reset
- DC-gegevens/opdracht
- CS-chip selecteren
- BL-achtergrondverlichting
De module werkt op 3,3V, dus je moet hem niet rechtstreeks op je 5V Arduino aansluiten. Ik heb 1k weerstanden gebruikt om de spanning te laten vallen. Dat is geen goede gewoonte (in het algemeen zou men een potentiaalverdeler of een spanningsdruppelaar-chip moeten gebruiken), maar werkt perfect in dit circuit. Ik was lui.
Het display wordt aangedreven door de 3.3V die door de Arduino wordt geleverd. De Arduino-regelaar lijkt gelukkig genoeg.
Adafruit is zo vriendelijk om een ST7735-bibliotheek te publiceren en verschillende andere bibliotheken zijn beschikbaar in Github en elders. Ik heb er een paar geprobeerd en vond er geen een. Sommige werkten gewoon niet en ze waren allemaal enorm. Je schrijft een Arduino-schets die een lijn trekt en wat tekst en je vindt je geheugen als 75% vol. Dus schreef ik mijn eigen bibliotheek.
De SimpleST7735-bibliotheek kan worden gedownload (download Step3.zip van github).
Het heeft een standaard set tekenopdrachten die erg lijken op al dergelijke bibliotheken.
Sommige van de "snelle" bibliotheken die u kunt downloaden, gebruiken speciale timing-loops en zijn boos wanneer andere, misschien langzamere, apparaten op dezelfde bus worden gebruikt. SimpleST7735 is geschreven in C in plaats van in assembler, dus het is niet zo snel als het zou kunnen zijn, maar is veel draagbaarder en deelt de SPI-bus beleefd met andere apparaten. Er kan een Windows-programma worden gedownload waarmee u uw eigen lettertypen en pictogrammen kunt maken.
U kunt het ST7735-gegevensblad downloaden van internet. Je praat ermee door
- CS laag instellen
- DC laag instellen
- stuur een commandobyte
- gelijkstroom hoog instellen
- stuur nul of meer databytes
- zet CS hoog
Je kunt zien hoe ik het doe in de spiSend_TFT_CW() functie in de bibliotheek. De databytes kunnen een hele rij pixels zijn of een instelling voor een besturingsregister.
De ST7735Begin()-functie in de bibliotheek toont je de initialisatiecommandoset die ik heb gekozen. Misschien wilt u de opdrachten wijzigen als u een ander ST7735-scherm kiest (bijvoorbeeld met meer pixels) of een andere oriëntatie wilt. Ik hoop dat mijn code voor u gemakkelijk is om te zien hoe u deze kunt wijzigen als dat nodig is.
Het schema toont een bedieningsknop "SW1" en een voetpedaal SW2". De bedieningsknop selecteert verschillende "Setups" (zie volgende stap) of selecteert de Menu-modus. Het voetpedaal is optioneel en selecteert alleen verschillende Setups - dat heb ik niet gedaan heb zelf een voetpedaal gemonteerd. Setups zijn handig tijdens een uitvoering als je snel van toonsoort of instrument wilt wisselen.
Stap 4: Het menusysteem
Deze Arduino-schets van Miditheremin3.ino voegt een menusysteem toe aan de MIDI Theremin en bestuurt het uiteindelijke complete instrument.
De MIDI Theremin draait meestal in de "Play"-modus. Je rechterhand selecteert welke noot en je linkerhand bepaalt de kwaliteit van de noot. Op het LCD-scherm wordt een pianotoetsenbord weergegeven met de huidige noot gemarkeerd.
Als u de bedieningsknop één seconde ingedrukt houdt, gaat het programma in de modus "Menu". Als u in de menumodus de bedieningsknop één seconde ingedrukt houdt, keert het programma terug naar de "Play"-modus.
Het menu heeft een boomstructuur met hoofd-items en sub-items. Het huidige menu-item is gemarkeerd. Via de linker sonar verplaatst u de selectie naar boven/beneden. De submenu's voor een hoofd-item worden alleen uitgevouwen wanneer het hoofd-item is geselecteerd.
Nadat u een submenu hebt gekozen en u op de knop klikt, wordt de waarde van dat item gemarkeerd. De linkerhand verhoogt of verlaagt nu de waarde. Klik nogmaals op de knop om terug te gaan naar het selecteren van submenu's.
In de discrete modus is de menustructuur:
-
Instrument
- 0: Vleugel
- Wissel van hand: normaal
-
Rechter hand
Modus: discreet
-
Linkerhand
- Modus: Vibrato
- Maximale diepte: 10
-
Schaal
- Schaal: majeur heptatonisch
- Octaven: 2
- Laagste noot: 60 C
-
Akkoord
- Akkoord: majeur drieklank
- Inversie: 0
- Polyfonie: 1
-
Tremolo
- Maat: 20
- Periode: 10
-
vibrato
- Maat: 20
- Periode: 10
Het instrument kan "Grand Piano", "Kerkorgel", "Viool", enz. zijn. Er zijn 127 instrumenten in de VS1053, waarvan er vele identiek klinken en vele dwaas zijn als "geweerschot". Met het submenu Handen wisselen kunt u de functies van de linker- en rechterhand omwisselen - misschien geeft u er de voorkeur aan of wilt u dat de luidsprekers naar het publiek gericht zijn.
De rechterhand kan "discreet" of "continu" zijn. Zie hieronder voor het "doorlopende" menu.
De linkerhand kan "Volume", "Tremolo", "Vibrato", "PitchBendUp", "PitchBendDown", "Reverb", "Polyphony" of "ChordSize" regelen.
"Volume" is duidelijk. "Tremolo" is een snelle variatie in volume; de linkerhand bepaalt de grootte van de variatie; de periode wordt ingesteld door een ander menu-item. "Vibrato" is een snelle variatie in toonhoogte; de linkerhand bepaalt de grootte van de variatie; de periode wordt ingesteld door een ander menu-item. "PitchBendUp" en "PitchBendDown" veranderen de toonhoogte van de gespeelde noot; de linkerhand bepaalt de grootte van de bocht. "Reverb" is nogal oninteressant in de VS1053; de linkerhand regelt de grootte van de galm. "Polyphony" regelt hoeveel noten er tegelijk worden gespeeld tot het maximum ingesteld door het Polyphony-menu (zie hieronder). "ChordSize" betekent dat de linkerhand bepaalt hoeveel noten van een akkoord (zie hieronder) worden gespeeld.
In muziek is een "toonladder" of "sleutel" de subset van noten die u gebruikt. Als je je bijvoorbeeld zou beperken tot de heptatonische toonladder van C Major, zou je alleen de witte noten van de piano spelen. Als je C# Major Pentatonic koos, zou je alleen de zwarte noten gebruiken (bijvoorbeeld voor Schotse volksmelodieën).
Het menu Schaal kiest met welke noten de ruimte voor de rechterhand overeenkomt en hoeveel octaven de ruimte voor de rechterhand beslaat. Dus als je 1 octaaf van E Majeur kiest, dan wordt de rechterhandruimte verdeeld in 8 bakken met E op de laagste toonhoogte en E één octaaf erboven op de hoogste toonhoogte.
Met het menu Schaal kun je veel ongebruikelijke toonladders van "niet-westerse muziek" kiezen, maar het gaat ervan uit dat alle noten van het gelijkmatige toetsenbord komen - zo werkt MIDI, je kunt niet gemakkelijk de frequentie van een noot specificeren. Dus als je bijvoorbeeld de Arabische kwarttoonschaal zou willen, zou je in de problemen komen.
In het submenu Octaves kunt u kiezen hoeveel octaven van de schaal u wilt. En de laagste noot zegt waar de toonladder begint.
Normaal gesproken klinkt alleen die noot wanneer een noot wordt gespeeld. Met het Akkoordmenu kunt u meerdere noten tegelijk spelen. Een majeur drieklank akkoord betekent 'speel de gekozen noot plus de noot vier halve tonen hoger, plus de noot zeven halve tonen hoger'.
Het submenu Inversie geeft u akkoordinversies. Dat betekent dat sommige noten van het akkoord een octaaf lager worden verplaatst. De eerste inversie verplaatst alle "extra" noten een octaaf lager, de tweede inversie verplaatst een minder van de extra noten naar beneden, enzovoort.
In het submenu Polyphony staat hoeveel noten er tegelijk worden gespeeld; als polyfonie 1 is, wordt de vorige gestopt als een noot begint; als de polyfonie groter is dan kunnen meerdere noten elkaar overlappen - probeer het met het kerkorgel.
Het Tremolo-menu specificeert de diepte van elke tremolo en de periode van de tremolocyclus. Een periode van "100" betekent één cyclus per seconde. Als de linkerhand de tremolo bestuurt, is het submenu Grootte verborgen.
Het Vibrato-menu specificeert de grootte van elk vibrato en de periode van de vibratocyclus. Als de linkerhand vibrato bestuurt, is het submenu Grootte verborgen.
Met het programma kunt u maximaal 5 verschillende "Setups" opslaan en laden. Een Setup slaat alle waarden op die u in het menu kunt instellen. Wanneer u de menumodus verlaat, wordt de huidige instelling opgeslagen. Setups worden opgeslagen in de EEPROM.
Als u in de afspeelmodus op de knop klikt, gaat u naar de volgende instelling. Als je de knop één seconde ingedrukt houdt, verschijnt het menu. Door op het voetpedaal te drukken, gaat u ook naar de volgende instelling; het voetpedaal selecteert nooit het menu.
In de continue modus is de menustructuur:
-
Instrument
- 0: Vleugel
- Wissel van hand: normaal
-
Rechter hand
Modus: continu
-
Bereik
- Aantal halve tonen: 12
- Middennoot: 60 C
-
Linkerhand
- Modus: Tremolo
- Maximale diepte: 10
-
Tremolo
- Maat: 20
- Periode: 10
-
vibrato
- Maat: 20
- Periode 10
Het menu Bereik kiest welk frequentiebereik de rechterhand specificeert: het aantal halve tonen dat wordt bedekt en de middelste noot.
De linkerhand kan alleen "Volume", "Tremolo" en "Vibrato" bedienen.
Stap 5: Samen solderen
Ik heb het circuit op stripboard gebouwd. Ik zie het nut niet in van een eenmalige printplaat met slechts 4 weerstanden, maar ik realiseer me dat sommige mensen niet van stripboard houden.
Mijn stripboard lay-out is hierboven weergegeven. De vier borden - Arduino, VS1053, display en stripboard - vormen een sandwich. In de lay-out is de omtrek van de Arduino geel, de VS1053 is blauw, het display is groen en het stripboard is oranje.
De cyaan lijnen zijn de koperen strips van het stripboard - zorg ervoor dat je pauzes maakt waar nodig. De rode lijnen zijn schakels aan de componentzijde van het stripboard of draden die ergens anders heen gaan.
Ik heb extra lange pinnen gebruikt voor het VS1053-bord omdat het boven de Arduino staat. Pinnen in de uiterste hoeken van het scherm en VS1053-borden helpen ze te stabiliseren. De montagegaten van de modules zijn geplateerd zodat je ze kunt solderen. Zorg ervoor dat de jouwe niet is aangesloten op aarde - de montagegaten van mijn modules zijn dat niet.
Als je een andere VS1053-module of een ander display hebt, kun je de Arduino-pinnen wijzigen:
- D2 tot D10 en A0 tot A5 kunnen in elke gewenste volgorde worden gebruikt; update de pinnummers aan het begin van de INO-schets
- D11, D12, D13 zijn toegewijd aan SPI en kunnen niet opnieuw worden toegewezen
- D0, D1 zijn bestemd voor seriële I/O
- A6, A7 kunnen niet worden gebruikt als digitale pinnen
De HC-SR04-modules zijn in een hoek van 90° met elkaar verbonden door een stuk stripboard. Daartussen zit de drukknop. U zult ongetwijfeld uw eigen favoriete ontwerp hebben.
Als u besluit een voetpedaal te gebruiken, sluit u deze aan via een jack-aansluiting.
Stap 6: Een PSU toevoegen
Ik heb de totale stroom van de Arduino, VS1053 gemeten en weergegeven als 79mA. Volgens de datasheets is de Arduino 20 mA, het display 25 mA, de VS1053 is 11 mA en de HC-SR04 is elk 15 mA als ze "werken" - dus 80 mA lijkt ongeveer goed.
Het display neemt 25mA in beslag en wordt gevoed door de 3V3-uitgang van de Arduino die 50mA kan leveren. Dus het circuit zou de 3V3-regelaar van de Arduino niet moeten belasten.
Kunnen we het circuit van stroom voorzien via de Arduino's Vin-pin? Ik kan het antwoord daarop nergens op internet vinden. Het staat niet in de Arduino-documentatie. De ingebouwde 5V-regelaar zal dissiperen (Vin-5)*80 mW. Wat is de maximale dissipatie? Het lijkt erop dat niemand het echt weet. Volgens de datasheet kan de NCP1117-regelaar in een SOT-223-pakket met een minimale koperen pad 650 mW dissiperen. Dus voor een stroom van 80 mA,
- Vin Power
- 8V 240mW
- 9 320
- 10 400
- 11 480
- 12 560
- 13 640
- 14 720
Voor de zekerheid veronderstel ik dat we de 9V op Vin niet mogen overschrijden.
Een externe 5V PSU zou veel veiliger zijn, maar ik heb de Arduino-regelaar gebruikt en het is prima.
Om het circuit van stroom te voorzien, koos ik een module die een LI-ion-oplader en een boost-voeding combineert. Ze zijn overal verkrijgbaar op eBay of zoeken naar "Li Charger Boost".
De lader maakt gebruik van een TC4056-chip met een ingewikkeld algoritme voor constante stroom en constante spanning. Wanneer u de USB-voedingsingang verwijdert, gaat deze naar de stand-bymodus met een batterijverbruik van minder dan 2uA. De TC4056 heeft een ingang voor temperatuurmeting, maar deze is niet beschikbaar op het modulebord (de pin is geaard).
Het boostcircuit is naar verluidt 87-91% efficiënt over het normale batterijspanningsbereik met een uitgangsstroom van 50-300mA. (Ik heb het niet zelf gemeten.) Dat is best goed.
De "stand-by"-stroom wanneer u de belasting verwijdert, is echter 0,3 mA, wat slecht is. Een 300mAH-cel zou in 6 weken leeg zijn. Misschien zou het zo ver zijn afgetapt dat de spanning tot een schadelijk niveau zou dalen.
Er is een enkele track die de batterij verbindt met de boost-PSU. Je kunt de baan gemakkelijk knippen (zie foto). Soldeer een draad op de grote weerstand bovenaan zodat je de snede via een schakelaar kunt overbruggen.
De stroom die wordt getrokken is nu 0.7uA met het bord dat ik heb getest. De cel gaat dus 50 jaar mee - nou ja, natuurlijk niet, de zelfontlading van een Li-ion cel ligt rond de 3% per maand. 3% per maand voor een 300mAH cel is een stroomsterkte van 13uA. Vergelijk dat eens met de 300uA die het boostcircuit nodig heeft. Ik denk dat het de moeite waard is om het boostcircuit uit te schakelen.
U mag de belasting niet inschakelen wanneer de cel wordt opgeladen. De stroom die door de belasting wordt getrokken, zal het laadalgoritme in de war brengen.
U heeft dus een 2-polige omschakelaar nodig (bijv. een schuifschakelaar) die ofwel in de stand "Aan" of "Laden" staat.
U kunt de ingebouwde USB-aansluiting negeren en aparte draden aan de schakelaar en uw eigen USB-aansluiting solderen.
Of u kunt de ingebouwde socket behouden en de verbinding tussen de socket en de chip verbreken. Het bovenstaande diagram laat zien waar u moet knippen.
Sluit de 5V-uitgang van de boost-PSU aan op de 5V-pin van de Arduino. Mensen zeggen "doe dat niet - je omzeilt de Arduino's beschermingsdiode". Maar de Nano heeft geen pin aangesloten op de USB-zijde van de diode. Sluit gewoon aan op de 5V-pin. Wat is het ergste dat kan gebeuren? Je verliest een Nano die minder dan £ 3 kost.
Het PSU-circuit moet ook de versterker voor de luidsprekers van stroom voorzien.
Stap 7: Luidsprekers toevoegen
Ik wilde dat de MIDI Theremin draagbaar zou zijn. Het moet zijn eigen luidsprekers en versterker bevatten.
Je zou je eigen versterker kunnen bouwen of een versterkermodule kunnen kopen, dan luidsprekers kunnen kopen en in een koffer kunnen plaatsen. Maar wat is het punt? In mijn techno-midden heb ik een half dozijn actieve luidsprekers die ik heb gekocht bij liefdadigheidswinkels en kofferbakverkoop, allemaal voor minder dan £ 1 per stuk.
De lichtblauwe luidsprekers gebruikten slechts 30mA bij 5V, maar hebben een slechte basweergave. De zwarte radio heeft een mooie vorm - ik kan me voorstellen dat de HC-SR04-modules in de hoeken en het display op het bovenoppervlak passen. De grijze "flatpanel" worden gevoed via een USB-aansluiting, wat ideaal is.
Met een beetje zoeken zou je actieve luidsprekers moeten vinden die al een mooie behuizing hebben. Zorg ervoor dat ze op het voltage van uw voeding werken. Als het wordt gevoed door vier AA-cellen, werkt het waarschijnlijk goed op 5V.
Maar ik groef verder in de techno-midden en vond een heel mooi dockingstation dat ik kreeg bij een "alles voor £ 0,50" kraam. Het was zijn oplader en IR-afstandsbediening kwijt, maar werkt goed.
Als je vastbesloten bent om je eigen actieve luidsprekers te bouwen, is hier een goede Instructable. Of zoek Instructables voor PAM8403 of versterker.
Stap 8: Dockingstation
Dit is een heel mooi Logitech portable dockingstation. Het is onwaarschijnlijk dat u er een krijgt, maar de constructieprincipes zullen hetzelfde zijn.
Het dockingstation bevat een eigen oplaadbare Li-ion-cel en boost-voeding. (Als de jouwe niet de hierboven beschreven PSU bouwt en de volgende paragrafen overslaat.)
Als je versterker een Li-ion-cel heeft, heeft deze waarschijnlijk een boost-PSU. (De spanning van een enkele Li-ion-cel is onhandig laag, dus moet worden versterkt.)
Zoek eerst de aansluitingen voor de voeding naar de versterker. De PSU zal grote afvlakcondensatoren hebben - zie de foto van de junk-PCB. Meet de spanning op hun soldeerpads aan de onderkant. Het negatieve pad moet het "aarde" -pad van het circuit zijn. Als de pcb volgelopen is, wordt die vermalen. Of de grond kan een dikke baan zijn die naar veel plaatsen op het bord gaat.
Er kunnen grote condensatoren op de eindtrap van de versterker zitten - dat is de ouderwetse manier om het te doen. Meet de spanning erover terwijl het werkt. Het zal waarschijnlijk variëren afhankelijk van de muziek en kan gemiddeld de helft van de spanning van de voedingscondensatoren zijn. Dat zijn de verkeerde condensatoren - u wilt die in de PSU.
Het is zeer onwaarschijnlijk dat het bord zowel positief als negatief vermogen zal hebben (grote stereo eindversterkers wel, maar ik heb nog nooit zo'n lichtgewicht exemplaar gezien). Zorg ervoor dat je echt hebt gekozen voor grond en positieve kracht.
Het Logitech-dockingstation dat ik gebruik, heeft zowel gecompliceerde digitale circuits als de analoge versterker. Als de jouwe zo is, heeft hij afvlakcondensatoren voor 5V of 3,3V plus misschien 9V voor de versterker. Meet de spanningen over alle grote condensatoren en kies de grootste spanning.
Zorg ervoor dat de spanning van de stroomaansluiting die je hebt gekozen afhangt van de aan/uit-schakelaar. (Als u de schakelaar uitzet, kan het even duren voordat de spanning daalt als de condensator leeg raakt.)
Soldeer draden aan wat je ook hebt gekozen als je stroombron. Het Logitech-dockingstation produceert ongeveer 9V die mooi aansluit op de Vin-pin van de Arduino.
Uw actieve luidsprekers of dockingstation moeten een 3,5 mm-aansluiting hebben voor audio-invoer. Een van de soldeerverbindingen wordt geslepen - waarschijnlijk degene die zich het dichtst bij de rand van het bord bevindt. Gebruik een ohm-meter om te controleren of deze is aangesloten op wat u denkt dat de aarde is. Bij sommige audio-ingangen is de "afscherming" van de jack niet rechtstreeks met aarde verbonden. Het zweeft. Dus als geen van de jack-pinnen is geaard, hoeft u zich voorlopig geen zorgen te maken. (Het "schild" van de aansluiting op de VS1053-module zweeft ook.)
Gebruik een meter om te controleren of de "aarde" -pin van de jack hetzelfde voltage heeft als de massa van de voeding.
Het Logitech-dockingstation was raar. Als ik de "aarde" van de Logitech-aansluiting op de "aarde" van het VS1053-bord verbond (door een audiokabel te gebruiken, werkte het prima, maar de stroom naar mijn Theremin-systeem ging omhoog van 80 mA naar meer dan 200 mA. Dus ik zorgde ervoor dat Ik heb die twee "gronden" niet met elkaar verbonden, het werkt goed, maar ik heb geen idee wat er aan de hand was.
Stap 9: een zaak maken
Welke koffer je maakt, hangt af van de materialen die je bij de hand hebt, waar je graag mee werkt en de actieve luidsprekers die je kiest. Wat u ook maakt, zorg ervoor dat de sonars van elkaar af wijzen en op 45° omhoog wijzen. Dan is er het scherm en de drukknop.
Als je mijn andere Instuctables hebt bekeken, weet je dat ik een grote fan ben van blik. Het kan in vorm worden gebogen, zacht gesoldeerd en geverfd. De foto's laten zien hoe ik het geregeld heb.
De bovenste driehoek is vertind gebogen, gesoldeerd, gevuld, gladgestreken en geverfd. De pcb's zijn warmgelijmd in de driehoek en hebben kleine reepjes hout om als afstandhouders te dienen.
Het "voorpaneel" is een polystyreenplaat van 1 mm. Afstandhouders zijn gemaakt van meer polystyreenplaat en zelftappende schroeven houden het stripboard op zijn plaats. Houten steunen worden warmgelijmd in de holte aan de voorkant van het dockingstation en de printplaten worden erop geschroefd met lange zelftappende schroeven.
Ik denk dat ik iets 3D-geprint zou kunnen hebben, maar ik geef de voorkeur aan de ouderwetse methoden waarbij ik dingen kan aanpassen terwijl ik bezig ben. Dingen maken is eerder een ontdekkingsreis dan "engineering".
Stap 10: Toekomstige ontwikkeling
Hoe zou je het instrument verder kunnen ontwikkelen? Je zou de gebruikersinterface kunnen veranderen. Je zou de knop kunnen vervangen door een IR-afstandssensor, zodat je het instrument helemaal niet hoeft aan te raken. Of gebruik misschien een aanraakscherm in plaats van een knop en de linkerhand om het menu te bedienen.
In het menu Schaal kun je toonladders voor "niet-westerse muziek" kiezen, maar het gaat ervan uit dat alle noten van het gelijkgestemde toetsenbord komen - zo werkt MIDI. De Arabische kwarttoonschaal heeft noten die niet op de gelijkgestemde toonladder staan. Andere toonladders zijn op geen enkele manier gerelateerd aan een gelijkmoedig toetsenbord. Het kan mogelijk zijn om pitch-bend te gebruiken om dergelijke noten te produceren. Je hebt een manier nodig om in het menu de frequentie van elke noot te specificeren. Ik denk dat pitch bend van toepassing kan zijn op alle noten in het kanaal. Ik gebruik momenteel maar één kanaal - kanaal 0. Dus als het polyfoon is of akkoorden heeft, moet je elke noot op een ander kanaal spelen.
Het instrument zou een drumsynthesizer kunnen worden. De linkerhand kan de toonhoogte van een Melodic Tom bepalen, terwijl de rechter sonar wordt vervangen door een piëzo-sensor die je aanslaat om de trommel te laten klinken.
De twee handen konden twee verschillende instrumenten bedienen.
De linkerhand mocht een instrument kiezen.
Ongeveer halverwege dit project ontdekte ik de Altura MkII Theremin MIDI Controller van Zeppelin Design Labs. Het ziet eruit als een fijn instrument.
Ze hebben een aantal video's die zeer de moeite waard zijn om te bekijken:
(Ik heb het woord "bakken" van Altura gestolen en het idee dat een bak uitzet wanneer je erin gaat om je te helpen erin te blijven.)
Mijn MIDI Theremin verschilt op een aantal punten van de Altura. De mijne produceert zijn eigen geluid met zijn ingebouwde MIDI-synth, versterker, enz.; de Altura stuurt berichten naar een externe synth. Misschien geeft u de voorkeur aan hun manier van doen. De mijne heeft een TFT-scherm in plaats van een 7-segments display - dat is zeker beter, maar je zou denken dat een groter scherm een verbetering zou zijn. De mijne gebruikt menu's om de parameters in te stellen, terwijl die van hen knoppen gebruikt. Menu's zijn vereist omdat de mijne veel bedieningselementen nodig heeft voor het invoerapparaat (de sonars) en de synth; de Altura heeft minder bedieningselementen nodig. Misschien zijn knoppen beter tijdens een live optreden. Misschien moet de mijne knoppen hebben. Een knop voor het kiezen van Setups zou goed kunnen zijn.
De Altura heeft een "Articulation"-regeling die bepaalt hoe snel noten kunnen worden gespeeld. Ik heb dat niet in mijn software opgenomen - misschien zou het daar moeten zijn. De Altura heeft een Arpeggiator (step sequencer). Dat is een goed idee; de mijne heeft akkoorden die niet helemaal hetzelfde zijn.
Dus dat is het. Ik hoop dat je geniet van het bouwen en gebruiken van een MIDI-Theremin. Laat het me weten als je fouten in mijn beschrijving vindt of als je verbeteringen kunt bedenken.
Aanbevolen:
Maak je eigen eenvoudige Theremin: 4 stappen (met afbeeldingen)
Maak je eigen eenvoudige Theremin: In dit project laat ik je zien hoe het elektronische instrument Theremin werkt en hoe we er een eenvoudige versie van kunnen maken met behulp van 2 IC's en slechts een paar complementaire componenten. Onderweg zullen we praten over oscillatortypes, lichaamscapaciteit
Theremin: een elektronische Odyssey [op 555 Timer IC] *(Tinkercad): 3 stappen
Theremin: een elektronische Odyssey [op 555 Timer IC] *(Tinkercad): In dit experiment heb ik een optische Theremin ontworpen met behulp van een 555 Timer IC. Hier laat ik je zien hoe je muziek kunt genereren (in de buurt: P) zonder het muziekinstrument zelfs maar aan te raken. In principe wordt dit instrument Theremin genoemd, oorspronkelijk geconstrueerd
Ultrasone Theremin (leer geluid): 3 stappen (met afbeeldingen)
Ultrasone Theremin (Teach Sound): De Ultrasone Theremin is een Arduino-project dat een goedkope theremin gebruikt om geluidsgolven aan te leren. Door de afstand van mijn hand tot het apparaat te veranderen, verander ik de frequentie van de geluidsgolven. Ook verandert het verplaatsen van een potentiometer de amplitude van t
Maak een Electro-Theremin: 4 stappen (met afbeeldingen)
Maak een Electro-Theremin: DoelenLeer een analoge sensor te gebruiken met de micro:bit. Maak een electro-theremin
Licht Theremin: 6 stappen
Light Theremin: De Light Theremin is een eenvoudig te bouwen instrument dat licht en schaduwen gebruikt om geluid te creëren. Het theremin-circuit dat normaal voor deze instrumenten wordt gebruikt, is behoorlijk complex, dit is echter zo eenvoudig als een 555 Timer IC en enkele basiscomponenten van