Índice:

Controle de volume do PC com discagem giratória vintage: 7 etapas (com imagens)
Controle de volume do PC com discagem giratória vintage: 7 etapas (com imagens)
Anonim
Image
Image
Remova o Dial
Remova o Dial

Se você for como eu, você mudará o volume do computador com frequência. Alguns vídeos são mais altos do que outros; às vezes, você deseja que o volume do computador seja silenciado enquanto ouve podcasts ou música e pode ser necessário diminuir o volume rapidamente se receber uma ligação. Se você não tem controles de mídia integrados ao computador, pode transformar um dial de telefone rotativo antigo em um controle de volume para o seu PC com Windows.

Este dispositivo de controle de volume se conecta ao seu computador através de USB e irá definir automaticamente o volume de cada programa aberto para qualquer número que você discar. Se você discar "2", o volume será ajustado para 20%. Disque um "8" e ele será definido para 80%. Discar "0" define para 0% e atua como mudo. É rápido, satisfatório e mais divertido do que clicar no controle de volume da barra de tarefas.

Suprimentos

  • Telefone rotativo vintage Bell Systems Trimline
  • Arduino Nano
  • Inserções termorretificadas com rosca M3
  • Parafusos de máquina M3
  • Resistores (470 ohm e 10k ohm)
  • Arame
  • Acesso a uma impressora 3D

Etapa 1: Teoria de Operação

Os telefones rotativos, incluindo o Bell Systems Trimline usado neste projeto, são dispositivos eletromecânicos puramente analógicos. Quando você gira o dial, uma mola gira o dial de volta para a posição original. À medida que passa cada número, um interruptor é desconectado (ou conectado) por um breve momento, criando um pulso. Tudo o que precisamos fazer é contar esses pulsos para determinar qual número foi discado.

guidomax tem um fantástico tutorial de Instructables que vai em detalhes sobre como exatamente isso funciona, e você pode encontrar mais detalhes lá.

Para este projeto, usamos o Arduino Nano para contar os pulsos. O Arduino então envia o número ao PC por meio da conexão serial. Escrevi um script Python básico que é executado em segundo plano e monitora a conexão serial. Ao receber bits, ele pega o número e usa a biblioteca Python Core Audio do Windows para definir o volume apropriado.

Devido às limitações do Windows e dessa biblioteca, o script não define o volume geral do sistema (o controle deslizante principal na barra de tarefas). Em vez disso, ele define o volume individual para cada programa em execução no momento. O efeito é o mesmo, exceto que você não pode manter níveis de volume relativos diferentes entre os programas.

Etapa 2: remover o seletor

Remova o Dial
Remova o Dial

Esta etapa é simples: basta desmontar o monofone do telefone Trimline para remover o mecanismo de discagem. É essencialmente um módulo autônomo, então você só precisa desparafusá-lo do fone.

Escolhi o modelo Trimline para este projeto, porque esse módulo de discagem é mais compacto do que os que você encontrará na maioria dos outros telefones rotativos.

Se você der alguns giros de teste, deverá ouvir o botão clicando à medida que ele retorna à posição inicial.

Etapa 3: imprimir o gabinete

Imprima o gabinete
Imprima o gabinete

Use os dois arquivos STL fornecidos para imprimir as peças do gabinete. Você pode usar qualquer material de filamento de sua preferência (usei PLA). As configurações específicas que você usa não são tão importantes, mas eu recomendei usar suportes para a parte "Rotary_Top". Você pode imprimir essas duas partes enquanto trabalha no restante do projeto.

Etapa 4: programe seu Arduino

Programe Seu Arduino
Programe Seu Arduino

O código que você enviará para o seu Arduino Nano é retirado diretamente do tutorial do guidomax, pois funciona perfeitamente para este projeto:

int needToPrint = 0; contagem interna; int em = 2;

int lastState = LOW;

int trueState = LOW;

long lastStateChangeTime = 0;

int apagado = 0;

// constantes

int dialHasFinishedRotatingAfterMs = 100;

int debounceDelay = 10;

void setup () {

Serial.begin (9600);

pinMode (em, INPUT); }

void loop () {

leitura interna = digitalRead (em);

if ((millis () - lastStateChangeTime)> dialHasFinishedRotatingAfterMs) {// o dial não está sendo discado, ou acabou de ser discado.

if (needToPrint) {// se ele acabou de ser discado, precisamos enviar o número pela linha // serial e zerar a contagem. Modificamos a contagem em 10 porque '0' enviará 10 pulsos.

Serial.print (contagem% 10, DEC);

needToPrint = 0;

contagem = 0;

apagado = 0; }}

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

}

if ((millis () - lastStateChangeTime)> debounceDelay) {// debounce - isso acontece quando é estabilizado

if (reading! = trueState) {// isso significa que o switch acabou de ser fechado-> aberto ou vice-versa. trueState = leitura; if (trueState == HIGH) {// incrementa a contagem de pulsos se estiver alto.

contagem ++;

needToPrint = 1; // precisaremos imprimir este número (assim que o dial terminar de girar)

}

}

}

lastState = leitura; }

Etapa 5: conecte tudo

Conecte tudo
Conecte tudo
Conecte tudo
Conecte tudo
Conecte tudo
Conecte tudo

A fiação para este projeto é muito simples. O módulo do mostrador deve ter dois postes hexagonais na parte traseira com parafusos neles. Essas são as conexões do switch. A polaridade não importa.

Nota: Ignore as cores dos meus fios nas fotos. Eu misturei aterramento e 5V, então eles estão na verdade invertidos.

Conecte um fio do Post A (GND) e conecte-o a um pino de aterramento em seu Arduino Nano. Pegue um segundo fio e solde-o e um terceiro fio em um lado do resistor de 470 ohms. O segundo fio irá para o Post B (+) no dial. O terceiro fio será soldado a um lado do resistor de 10k ohm. Pegue um quarto fio e solde-o do outro lado do resistor de 470 ohms ao Pino 2 no Arduino Nano. Finalmente, um quinto fio deve conectar o outro lado do resistor de 10k ohm ao pino de 5 V no Arduino Nano.

Estamos usando os resistores e o pino de 5 V para puxar o pino para alto quando a chave está aberta (como é durante cada "pulso").

Etapa 6: Montagem

conjunto
conjunto
conjunto
conjunto

Você deve notar que a parte Rotary_Top do gabinete tem seis pequenos orifícios. Estes são para suas inserções de conjunto de calor roscadas. Os três primeiros (na parte inferior da superfície superior) são para montar o botão giratório. Os três últimos devem aparafusar o Rotary_Base ao Rotary_Top.

As pastilhas termofixadas podem ser aquecidas com um ferro de solda (ou uma ferramenta dedicada) e, em seguida, empurradas para os orifícios. O calor derreterá o plástico, que endurecerá depois que o calor for removido para segurar as inserções com segurança no lugar. Usar pastilhas termofixadas é muito mais agradável do que rosquear parafusos diretamente no plástico.

Insira as seis inserções termicamente definidas. Em seguida, use alguns parafusos de máquina M3 curtos (10 mm ou mais) para montar o mostrador. Observe o entalhe no recorte, que é onde o batente de metal do dedo ficará. Em seguida, coloque cuidadosamente o Arduino Nano com o cabo USB conectado dentro do gabinete (está solto, não montado) e aparafuse a base no lugar.

Você provavelmente vai querer usar fita dupla-face ou 3M Command Strips para fixar o gabinete em sua mesa, de modo que ele não se mova quando você girar o botão.

Etapa 7: configurar o script Python

Configure o script Python
Configure o script Python

Primeiro, certifique-se de ter o Python instalado (use o Python 3, pois o Python 2 está sendo descontinuado).

Em seguida, você precisará instalar as duas bibliotecas necessárias: PyCAW e PySerial.

Usar:

"pip install pycaw" e "pip install pyserial" (da janela Python ou Windows Powershell)

Em seguida, verifique em qual porta seu Arduino Nano está conectado. Você pode verificar isso no IDE do Arduino. Certifique-se de ter essa porta selecionada e, em seguida, abra o monitor serial. Certifique-se de que sua taxa de transmissão esteja definida como 9600 e disque alguns números para garantir que eles apareçam no monitor serial.

Em caso afirmativo, edite o código "rotary.py" com seu número de porta. Se você executar o script, deverá conseguir alterar o volume discando um número.

A etapa final é configurar o script para ser executado em segundo plano automaticamente quando você inicializar o PC.

Para fazer isso, altere "rotary.py" para "rotary.pyw", o que permitirá que ele seja executado em segundo plano. Em seguida, coloque esse script na seguinte pasta: C: / Usuários / usuário_atual / AppData / Roaming / Microsoft / Windows / Menu Iniciar / Programas / Inicializar

Obviamente, você precisará alterar "current_user" para o nome da pasta de usuário real.

É isso! Sempre que o seu computador for inicializado, o script Python começará a ser executado. Ele monitorará a conexão serial do Arduino e definirá todos os volumes do programa para o que você discar!

Arduino Contest 2020
Arduino Contest 2020
Arduino Contest 2020
Arduino Contest 2020

Vice-campeão do Arduino Contest 2020

Recomendado: