Inhoudsopgave:

Vintage Rotary Phone Dial PC Volumeregeling - Ajarnpa
Vintage Rotary Phone Dial PC Volumeregeling - Ajarnpa

Video: Vintage Rotary Phone Dial PC Volumeregeling - Ajarnpa

Video: Vintage Rotary Phone Dial PC Volumeregeling - Ajarnpa
Video: How To Fix A Sketchy Volume Control On A Amplifer 2024, November
Anonim
Image
Image
Verwijder de wijzerplaat
Verwijder de wijzerplaat

Als je op mij lijkt, merk je dat je vaak het volume op je computer verandert. Sommige video's zijn luider dan andere, soms wilt u dat het volume op uw computer gedempt wordt terwijl u naar podcasts of muziek luistert, en moet u mogelijk snel het volume zachter zetten als u wordt gebeld. Als je geen mediabediening in je computer hebt ingebouwd, dan kun je een vintage draaiknop voor je telefoon veranderen in een volumeregelaar voor je Windows-pc.

Dit apparaat voor volumeregeling wordt via USB op uw computer aangesloten en stelt automatisch het volume van elk geopend programma in op het nummer dat u kiest. Als u een "2" kiest, wordt het volume ingesteld op 20%. Kies een "8" en deze wordt ingesteld op 80%. Als u "0" kiest, wordt het op 0% gezet en werkt het als dempen. Het is snel, bevredigend en leuker dan rond te klikken op de volumeregeling in uw taakbalk.

Benodigdheden

  • Vintage Bell Systems Trimline draaitelefoon
  • Arduino Nano
  • Heat-set inzetstukken met M3 schroefdraad
  • M3 machineschroeven
  • Weerstanden (470 ohm en 10k ohm)
  • Draad
  • Toegang tot een 3D-printer

Stap 1: Theorie van de werking

Roterende telefoons, waaronder de Bell Systems Trimline die in dit project wordt gebruikt, zijn puur analoge elektromechanische apparaten. Wanneer u aan de wijzerplaat draait, draait een veer de wijzerplaat terug naar de oorspronkelijke positie. Terwijl het elk nummer passeert, wordt een schakelaar voor een kort moment losgekoppeld (of aangesloten), waardoor een puls ontstaat. We hoeven alleen maar die pulsen te tellen om te bepalen welk nummer is gekozen.

guidomax heeft een fantastische Instructables-tutorial die diepgaand ingaat op hoe dit precies werkt, en je kunt daar meer details vinden.

Voor dit project gebruiken we de Arduino Nano om de pulsen te tellen. De Arduino stuurt het nummer vervolgens via de seriële verbinding naar de pc. Ik heb een basis Python-script geschreven dat op de achtergrond draait en die seriële verbinding bewaakt. Wanneer het bits ontvangt, neemt het het nummer en gebruikt het de Python Core Audio Windows-bibliotheek om het juiste volume in te stellen.

Vanwege beperkingen met Windows en die bibliotheek, stelt het script niet het algehele systeemvolume in (de hoofdschuifregelaar in uw taakbalk). In plaats daarvan stelt het het individuele volume in voor elk programma dat momenteel wordt uitgevoerd. Het effect is hetzelfde, behalve dat u geen verschillende relatieve volumeniveaus tussen programma's kunt handhaven.

Stap 2: Verwijder de wijzerplaat

Verwijder de wijzerplaat
Verwijder de wijzerplaat

Deze stap is eenvoudig: demonteer gewoon uw Trimline-telefoonhoorn om het kiesmechanisme te verwijderen. Het is in wezen een op zichzelf staande module, dus u hoeft hem alleen maar van de handset los te schroeven.

Ik koos het Trimline-model voor dit project, omdat die kiesmodule compacter is dan degene die je op de meeste andere roterende telefoons zult vinden.

Als u het een paar testspins geeft, zou u de schakelaar moeten horen wegklikken als deze terugkeert naar de thuispositie.

Stap 3: Druk de bijlage af

De bijlage afdrukken
De bijlage afdrukken

Gebruik de twee meegeleverde STL-bestanden om de onderdelen van de behuizing af te drukken. Je kunt elk filamentmateriaal gebruiken dat je verkiest (ik gebruikte PLA). De specifieke instellingen die je gebruikt zijn niet zo belangrijk, maar ik raadde aan om steunen te gebruiken voor het "Rotary_Top" gedeelte. U kunt deze twee delen afdrukken terwijl u aan de rest van het project werkt.

Stap 4: Programmeer uw Arduino

Programmeer uw Arduino
Programmeer uw Arduino

De code die u naar uw Arduino Nano uploadt, komt rechtstreeks uit de tutorial van guidomax, omdat deze perfect werkt voor dit project:

int needToPrint = 0;int count; int in = 2;

int lastState = LAAG;

int trueState = LAAG;

lange lastStateChangeTime = 0;

int gewist = 0;

// constanten

int dialHasFinishedRotatingAfterMs = 100;

int debounceDelay = 10;

ongeldige setup() {

Serieel.begin(9600);

pinMode (in, INPUT); }

lege lus() {

int lezen = digitalRead (in);

if ((millis() - lastStateChangeTime) > dialHasFinishedRotatingAfterMs) { // de dial wordt niet gekozen of is net gebeld.

if (needToPrint) { // als het nog maar net is gebeld, moeten we het nummer naar de seriële // regel sturen en de telling opnieuw instellen. We passen de telling met 10 aan omdat '0' 10 pulsen zal verzenden.

Serial.print (telling % 10, DEC);

needToPrint = 0;

aantal = 0;

gewist = 0; } }

if (lezing! = lastState) { lastStateChangeTime = millis();

}

if ((millis() - lastStateChangeTime) > debounceDelay) {// debounce - dit gebeurt zodra het is gestabiliseerd

if (lezing != trueState) { // dit betekent dat de schakelaar net van gesloten->open is gegaan of omgekeerd. trueState = lezen; if (trueState == HIGH) {// verhoog het aantal pulsen als het hoog is geworden.

tellen++;

needToPrint = 1; // we moeten dit nummer afdrukken (zodra de wijzerplaat klaar is met draaien)

}

}

}

lastStat = lezen; }

Stap 5: Sluit alles aan

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

De bedrading voor dit project is heel eenvoudig. De wijzerplaatmodule moet aan de achterkant twee zeshoekige posten hebben met schroeven erin. Dat zijn de schakelaansluitingen. Polariteit maakt niet uit.

Opmerking: negeer de kleuren van mijn draden op de foto's. Ik heb aarde en 5V door elkaar gehaald, dus deze zijn eigenlijk omgekeerd.

Sluit een draad van Post A (GND) aan en sluit deze aan op een aardingspin op uw Arduino Nano. Neem een tweede draad en soldeer deze en een derde draad aan één kant van de 470 ohm weerstand. De tweede draad gaat naar Post B (+) op de wijzerplaat. De derde draad wordt aan één kant van de 10k ohm-weerstand gesoldeerd. Neem een vierde draad en soldeer deze vanaf de andere kant van de weerstand van 470 ohm aan pin 2 op de Arduino Nano. Ten slotte moet een vijfde draad de andere kant van de 10k ohm-weerstand verbinden met de 5V-pin op de Arduino Nano.

We gebruiken de weerstanden en de 5V-pin om de pin te hoog te trekken wanneer de schakelaar open is (zoals tijdens elke "puls").

Stap 6: Montage

samenkomst
samenkomst
samenkomst
samenkomst

U zou moeten opmerken dat het Rotary_Top-gedeelte van de behuizing zes kleine gaatjes heeft. Deze zijn voor uw heatset-inserts met schroefdraad. De bovenste drie (aan de onderkant van het bovenoppervlak) zijn om de draaiknop te monteren. De onderste drie zijn om de Rotary_Base op de Rotary_Top te schroeven.

De heat-set inserts kunnen worden verwarmd met een soldeerbout (of een speciaal gereedschap) en vervolgens in de gaten worden geduwd. Door de hitte smelt het plastic, dat hard wordt nadat de warmte is verwijderd om de inzetstukken stevig op hun plaats te houden. Het gebruik van heatset-inzetstukken is veel prettiger dan schroeven rechtstreeks in het plastic draaien.

Plaats de zes heatset-inzetstukken. Gebruik vervolgens een paar korte (10 mm of zo) M3-machineschroeven om de wijzerplaat te monteren. Let op de inkeping in de uitsparing, waar de metalen vingerstop zal komen. Plaats vervolgens voorzichtig de Arduino Nano - met USB-kabel aangesloten - in de behuizing (deze zit los, niet gemonteerd) en schroef de basis op zijn plaats.

U wilt waarschijnlijk dubbelzijdig plakband of 3M Command Strips gebruiken om de behuizing op uw bureau te bevestigen, zodat deze niet verschuift als u aan de knop draait.

Stap 7: Stel het Python-script in

Stel het Python-script in
Stel het Python-script in

Zorg er eerst voor dat Python is geïnstalleerd (gebruik Python 3, aangezien Python 2 wordt uitgefaseerd).

U moet dan de twee vereiste bibliotheken installeren: PyCAW en PySerial.

Gebruik maken van:

"pip install pycaw" en "pip install pyserial" (vanuit het Python-venster of Windows Powershell)

Controleer vervolgens op welke poort uw Arduino Nano is aangesloten. Je kunt dat controleren vanuit de Arduino IDE. Zorg ervoor dat die poort is geselecteerd en open vervolgens de seriële monitor. Zorg ervoor dat uw baudrate is ingesteld op 9600 en kies vervolgens een aantal nummers om ervoor te zorgen dat ze op de seriële monitor verschijnen.

Als dit het geval is, bewerkt u de "rotary.py"-code met uw poortnummer. Als u het script uitvoert, zou u nu het volume moeten kunnen wijzigen door een nummer te kiezen.

De laatste stap is om het script zo in te stellen dat het automatisch op de achtergrond wordt uitgevoerd wanneer u uw pc opstart.

Om dat te doen, wijzigt u "rotary.py" in "rotary.pyw", waardoor het op de achtergrond kan worden uitgevoerd. Plaats dat script vervolgens in de volgende map: C:\Users\current_user\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

Het is duidelijk dat u "current_user" moet wijzigen in uw werkelijke gebruikersmapnaam.

Dat is het! Telkens wanneer uw computer opstart, wordt dat Python-script gestart. Het bewaakt de seriële verbinding van de Arduino en stelt alle programmavolumes in op wat u ook kiest!

Arduino-wedstrijd 2020
Arduino-wedstrijd 2020
Arduino-wedstrijd 2020
Arduino-wedstrijd 2020

Tweede plaats in de Arduino-wedstrijd 2020

Aanbevolen: