Índice:
- Suprimentos
- Etapa 1: Teoria de Operação
- Etapa 2: remover o seletor
- Etapa 3: imprimir o gabinete
- Etapa 4: programe seu Arduino
- Etapa 5: conecte tudo
- Etapa 6: Montagem
- Etapa 7: configurar o script Python
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
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
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
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
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
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
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
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!
Vice-campeão do Arduino Contest 2020
Recomendado:
Como usar um calibrador de discagem: 12 etapas
Como usar um compasso de calibre: Feito por Arif Gunduz
Controle de volume USB: 9 etapas (com imagens)
Controle de volume USB: Neste projeto, vamos construir um controle de volume USB usando um Trinket compatível com Arduino da Adafruit e um codificador rotativo. Por fim, imprimiremos um invólucro em 3D, preencheremos a base com chumbo para adicionar peso e estabilidade e cortaremos a laser um fundo de acrílico
Botão de controle de volume DIY simples !: 5 etapas (com imagens)
Botão de controle de volume DIY simples !: Você tem uma área de trabalho com sistema de som longe de onde você está? Depois de pesquisar um pouco, descobri que era muito fácil fazer meu próprio botão de controle de volume suave de forma barata. Neste tutorial, vou mostrar a você como criar um botão de controle de volume USB f
Botão de controle de volume do computador: 6 etapas (com imagens)
Botão de controle de volume do computador: se você gosta de ouvir música em seu computador, mas muitas vezes precisa silenciá-lo e reiniciá-lo ao assistir a mídia, pressionar Fn + k + F12 + g todas as vezes simplesmente não vai resolver. Além de ajustar o volume com botões? Ninguém tem tempo para isso! Posso apresentar o meu C
Roda de rolagem e controle de volume da área de trabalho !: 8 etapas (com imagens)
Roda de rolagem da área de trabalho e controle de volume !: Projeto de fim de semana da Make Magazine, 3/4 / 09Algum cenárioRecentemente, tenho lido muitos blogs diferentes. Todos os dias eu lerei as últimas postagens no engadget, lifehacker, hackaday, BBG e no blog MAKE :. O problema para mim veio quando percebi que o