Índice:

Interface de um dial de telefone rotativo para um Arduino: 6 etapas (com imagens)
Interface de um dial de telefone rotativo para um Arduino: 6 etapas (com imagens)

Vídeo: Interface de um dial de telefone rotativo para um Arduino: 6 etapas (com imagens)

Vídeo: Interface de um dial de telefone rotativo para um Arduino: 6 etapas (com imagens)
Vídeo: Acidente de trabalho em máquina 2024, Novembro
Anonim
Interface de um dial de telefone rotativo para um Arduino
Interface de um dial de telefone rotativo para um Arduino
Interface de um dial de telefone rotativo para um Arduino
Interface de um dial de telefone rotativo para um Arduino

Um telefone rotativo antigo pode ser usado para vários fins em seus projetos do Arduino - use-o como um novo dispositivo de entrada ou use o Arduino para fazer a interface de um telefone rotativo com o seu computador. Este é um guia muito básico que descreve como fazer a interface do dial para um Arduino e obter o número discado passado para um computador através do link serial do Arduino.

Etapa 1: remover a discagem do telefone

Remova a discagem do telefone
Remova a discagem do telefone
Remova a discagem do telefone
Remova a discagem do telefone
Remova a discagem do telefone
Remova a discagem do telefone

O primeiro passo é remover a unidade de discagem do telefone. Estou usando um telefone GPO de algum tipo da década de 1970. Neste telefone, o botão saiu imediatamente - eu só precisava dar um puxão. Do contrário, talvez seja necessário abrir o telefone e descobrir como retirá-lo. Havia cinco cabos conectados à parte traseira da unidade de discagem. No meu telefone, essas eram conexões de espada regulares, então eu afrouxei os parafusos e os retirei. Se você quiser remontar o seu telefone, lembre-se de registrar a cor do fio que vai para qual conexão.

Etapa 2: identificar o switch

Identifique o switch
Identifique o switch

Uma vez que o dial está fora, deve ser relativamente fácil ver como o dial converte o movimento giratório em pulsos. Experimente girar o dial com a mão e observar o movimento na parte de trás. Você deve ver uma chave abrindo e interrompendo um circuito rapidamente - então, se você discar '9', a chave deve engatar nove vezes. Para aqueles de vocês que nunca usaram um botão giratório antes - lembre-se de que a discagem só acontece quando você permite vá para o número e deixe-o voltar. Eu documentei como ele funciona para o meu telefone nas notas da foto abaixo. Há também um vídeo borrado do mecanismo funcionando.

Etapa 3: faça o circuito

Faça o circuito
Faça o circuito
Faça o circuito
Faça o circuito

Depois de encontrar a chave que está sendo feita e quebrada, você deve ser capaz de identificar as conexões seguindo os fios de volta aos terminais de conexão. No meu caso, os dois lados do switch estão conectados aos dois terminais mais à esquerda. Ligue esses terminais a alguns fios de ligação e faça um protótipo! A chave em meu dial está sempre ligada e é interrompida para cada pulso ao discar, então usei o circuito muito simples abaixo. O pino 2 ficará ALTO para cada pulso conforme o dial gira. Quando o telefone não está sendo discado, a chave na unidade de discagem é fechada (chamada de chave NORMALMENTE FECHADA, por motivos óbvios), de modo que o circuito conecta o pino 2 ao aterramento (que para o Arduino é BAIXO). Isso ocorre porque há muito menos resistência no resistor de 470 ohms do que no resistor de 10K. Quando o telefone está sendo discado, a chave abre e fecha rapidamente (para um 9, ele abrirá e fechará novamente nove vezes, lembre-se). Quando a chave está aberta, o pino 2 não está conectado ao aterramento - em vez disso, está conectado à fonte de 5 V por meio de uma resistência de 10470 ohms. Isso é interpretado pelo Arduino como um ALTO. Se o seu dial tiver uma chave NORMALLY OPEN, trocar as posições do resistor de 10K e do dial deve resolver.

Etapa 4: Desenvolva o Código

Desenvolva o Código
Desenvolva o Código

Agora precisamos de algum código para o Arduino contar os pulsos e enviar o número total por número discado de volta pela porta serial. Meu código está abaixo. Como estamos lidando com mecânica aqui, a sua pode ser diferente. Tente brincar com a constante de debounce e a constante de 'quanto tempo esperamos antes de assumir que o dial terminou de girar'. Tentei comentar da forma mais organizada que pude. Esperançosamente, é bem simples.int needToPrint = 0; int count; int in = 2; int lastState = LOW; int trueState = LOW; long lastStateChangeTime = 0; int clear = 0; // constantsint dialHasFinishedRotatingAfterMs = 100; int debounceDelay = 10; void setup () {Serial.begin (9600); pinMode (in, INPUT);} void loop () {int reading = digitalRead (in); 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 uma vez que é estabilizado if (reading! = trueState) {// isso significa que o switch acabou de sair de 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 = reading;}

Etapa 5: verifique se funciona

Verifique se funciona abrindo uma janela serial (eu uso a tela em uma máquina Unix, você pode querer usar Hyperterm ou similar no Windows) e tente discar alguns números. Certifique-se de que o programa serial está configurado para ler a partir do USB- > adaptador serial em seu Arduino (verifique o menu Ferramentas-> Porta serial no software Arduino se você esquecer o que é) e uma taxa de transmissão de 9600 bps. Você deve ver o número correto aparecer enquanto é discado.

Etapa 6: conecte-o a algo útil

Enganche-o em algo útil!
Enganche-o em algo útil!

Eu criei um arquivo Quartz Composer no meu Mac para pegar a entrada e renderizá-la bem na tela. Uma vez na máquina como dados seriais, você pode fazer qualquer coisa com eles. Esperando ouvir suas idéias! Farei um vídeo "em ação" e imprimirei os números na tela assim que conseguir alguém para segurar a câmera para mim - gostaria de ter três mãos.

Recomendado: