No qual um telefone com discador recebe componentes eletrônicos para trabalhar em redes móveis e pode funcionar como pretendido.
Esta é uma descrição de projeto em três partes, que eu tive que escrever como a conclusão solene do próprio projeto, mas, como adiei demais esse ponto, decidi descrever o projeto inteiro como uma única declaração coerente.Se alguém se lembra, eu sou uma pessoa muito zangada. Fico com raiva facilmente quando falo ao telefone, mas agora não há uma boa maneira de expressar meu aborrecimento. Sinto falta dos velhos tempos, quando era possível virar o telefone com força para aliviar a tensão - mas os telefones celulares não oferecem essa oportunidade. E decidi criar um telefone celular com um discador.Então iRotary nasceuProjeto IRotário
BelezaComecei comprando um telefone antigo com discador rotativo - exatamente o que eu usava quando criança. Eu escolhi uma cor laranja gloriosa para que a beleza do iRotary não seja inferior à ambição do projeto.A foto foi tirada no mesmo telefone no primeiro dia de compra, com cabos e tudo mais. Parece tão legal hoje, embora tenha 50% menos fios - o que é bom no caso de telefones celulares.Todo o projeto me custou US $ 150 para peças e US $ 2000 para o tempo de desenvolvimento - levou dois dias inteiros para montar e durou vários meses de todos os tipos de ações, aguardando peças de reposição, usando peças de reposição, aguardando as próximas peças, etc. O primeiro passo, é claro, foi extrair tudo o que era desnecessário e substituí-lo por tudo o que você precisava.Passo 1: primeiro, wah!
Imagine como é fazer um morango!O melhor candidato para interfaces com o discador antigo, é claro, é o Arduino. Ele também será responsável por trabalhar com o GSM. É ideal para ler pulsos de um discador e convertê-los em um número inteiro, que pode ser usado para discar um número.As comunicações são facilmente processadas pelo escudo GSM. Este é um dispositivo periférico que se conecta ao Arduino (nas ruas, chamamos de "escudo"). É muito simples de programar, vem com uma biblioteca com a maioria das funções necessárias - lendo SMS, enviando e recebendo chamadas, enviando DTMF e assim por diante.O próximo passo foi escrever o código para converter a discagem em números. O discador funciona assim: após uma rotação forçada, ele começa a girar para trás e toca no interruptor uma vez para cada número discado. Isso significa que, se você discar três, o switch enviará três sinais, já que três números passarão por ele. Para determinar o número discado, basta contar quantas vezes o comutador foi aberto e fechado.Isso foi fácil com o código a seguir, que simplesmente incrementa a variável cada vez que a tensão do comutador muda de baixa para alta:void readPulses() {
char pinPulse = digitalRead(PIN_PULSE);
if (pinPulse == HIGH && edge == 0) {
pulses++;
edge = 1;
} else if (pinPulse == LOW && edge == 1) {
edge = 0;
}
}
Tudo o que precisa ser feito a seguir é coletar os números e fazer a ligação quando o número de dígitos atingir 10. Na Grécia, todos os números são de dez dígitos, com exceção dos números de sexo por telefone, um código ao qual adicionarei mais tarde.Adicionar números a uma linha, por sua vez, é um processo simples, feito com o código a seguir.void readDialing() {
char digit;
bool finalDigit = false;
char pinDialing = digitalRead(PIN_DIALING);
if (pinDialing == 1 && dialing == 0) {
digit = getDigit();
if (digit != -1) {
number += (int)digit;
showNumber(number);
if (number.length() == NUMBER_LENGTH) {
dialNumber(number);
}
}
}
dialing = pinDialing;
}
Ele ainda não havia telefonado, pois o escudo ainda não estava conectado - esse era o próximo passo. Aqui está um protótipo em ação:Ele ganhou um bom dinheiro imediatamente, mesmo com a máquina velha e em ruínas que encontrei para a criação de protótipos. O discador é uma coisa incrivelmente precisa, e deveria ser assim, caso contrário, você poderia ter entrado no lugar errado e não descoberto até que algum cara atendeu você e você ligou para sua namorada e decidiu que ela estava traindo você , e jogue um escândalo, mas na verdade é apenas uma troca de lixo. É por isso que o número de divórcios despencou após a introdução dos discadores digitais. Além disso, reduziu a violência contra pessoas com um grande número de zeros nas salas.Etapa 2: quem não corre riscos, isso não é GSM-it
O próximo passo após o reconhecimento de número bem-sucedido é adicionar a capacidade de fazer chamadas móveis. Conectei o escudo ao Arduino e adicionei o código necessário para as chamadas:void dialNumber(String number) {
call.Call(numArray);
}
Emocionante.Embora fosse tão simples, era muito legal, porque a maioria das funcionalidades do telefone celular (discagem e chamada) estava pronta. Veja como funciona:Nesta etapa, encontrei várias dificuldades. O primeiro é onde colocar o Arduino com o escudo no telefone, já que praticamente não havia espaço devido aos componentes do telefone. Para resolver esse problema quase insolúvel, tive que me comprometer: apaguei a chamada, que ainda não podia ser alimentada pela bateria (ela precisa de 50 V), o que reduziu a autenticidade do dispositivo. Por que preciso de um telefone com discador se ele não pode produzir o som familiar de um dzzzzzzzzzzzzzzzzzzz?E a inspiração veio! A solução foi simples: deixe o telefone funcionar no modo silencioso, seja educado, para não incomodar outras pessoas, mas bonito.Tendo resolvido dois problemas de uma só vez, senti minha alegria crescer. Outro problema era que, de alguma forma, era necessário conectar a entrada e a saída do escudo ao aparelho. Aqui as desculpas não ajudarão, já que nenhum telefone que se preze será surdo e burro, então decidi comprar um pequeno microfone e alto-falante e colocá-los no aparelho. E quase pedi quando decidi de repente: tentarei primeiro o microfone e o alto-falante existentes.Eu rapidamente pulei para o Kuhlmann e desenhei um circuito muito complicado, composto por um grande número de componentes: três fios e dois conectores. Juntando tudo, inseri os conectores nas entradas e saídas da blindagem e fiz uma ligação.oi! - disse minha voz.oi! Eu respondi alegremente.Eu posso te ouvir! Eu disse a mim mesma.E eu sou você! - a resposta soou.O teste foi um sucesso retumbante. Os componentes existentes não apenas se encaixavam na blindagem, mas também produziam um som e feedback autênticos, que eu consegui esquecer.A diferença entre um celular e um telefone é que o primeiro não precisa reproduzir sua voz pelo alto-falante. Portanto, parece que sua voz é mais baixa do que é (já que você conecta o ouvido com o alto-falante) e grita mais - como se estivesse tentando ouvir música em fones de ouvido enquanto conversava com alguém.E no telefone antigo, você pode ouvir sua voz ao falar, o que é legal, e isso não exige que você grite com seu interlocutor. Este é um efeito agradável que perdemos.Aqui está o teaser do produto final:Os sons do toque são falsos, mas é Hollywood.Etapa 3: passo adiante
Quando o áudio, o reconhecimento de número e o GSM funcionarem, é hora de conectar o restante dos controles - uma alavanca, um botão e um LED estranho, um indicador de download.É melhor fazer isso através de eventos. O Arduino não funciona assim porque você constantemente pergunta: "O botão está pressionado?" milhares de vezes por segundo, mas a arquitetura do evento é fácil de falsificar usando um pouco de código.Eu queria pegar o telefone da alavanca para atender a chamada, se o telefone tocasse, e colocar o telefone de volta na alavanca interrompeu a chamada atual. Eu também queria que todos os sinais de controle fossem ignorados quando o telefone estivesse na alavanca.Isso é fácil de conseguir com uma máquina de estado. Isso significa que existe uma variável que contém o estado atual do telefone - sozinho, falando, tocando, discando etc. E se ocorrer algum evento (pressionando o botão), eles podem simplesmente verificar em que estado o telefone está e executar uma ação ou não.Eventos
Os eventos podem ser reconhecidos da mesma maneira que os números. Verificaremos se o estado do botão muda e iniciaremos o evento apenas se detectarmos a alteração (caso contrário, dispararíamos o evento milhares de vezes quando perguntássemos se o botão estava pressionado e o Arduino responderia "sim" milhares de vezes por segundo).#define PIN_BUTTON_HALF 6
char buttonHalfEdge = 0;
void checkButtonHalfPressed() {
if (digitalRead(PIN_BUTTON_HALF) == LOW) {
if (buttonHalfEdge == 0) {
buttonHalfPressed();
}
buttonHalfEdge = 1;
} else {
if (buttonHalfEdge == 1) {
buttonHalfReleased();
}
buttonHalfEdge = 0;
}
}
Este botão possui dois estados, pressionado pela metade e totalmente pressionado (ou pressionado e pressionado completamente, se você perguntar ao pessimista). O código define ambos os estados e outros eventos são tratados da mesma maneira.Você pode assistir o sistema funcionar no próximo vídeo, onde estão os componentes, mas ele ainda precisa estar conectado ao USB para alimentação.Beleza!Etapa 4: Energia da bateria
Conector USB para carregar a bateriaNaturalmente, que tipo de telefone celular seria se não fosse móvel? Não seria um celular! Portanto, as duas opções para transportar o telefone são uma pequena bateria de 5 volts e um circuito para carregamento por USB ou um cabo muito, muito longo. Como hoje o cobre é mais caro que o ouro e não sou feita de dinheiro, escolhi a primeira opção.Ele precisa de três componentes:- ( , ). , , , .
- , , – USB- «». USB-.
- ( ). , , . , , , Arduino 5, .
Regulador e conjunto de carregamentoMais uma vez, a bateria e o regulador estão conectados ao carregamento. O carregamento tem uma porta USB (e eu usei um cabo de extensão para direcioná-lo para onde estava o cabo telefônico), que será usado para carregar. O regulador estragará tudo e fornecerá a voltagem necessária aos componentes necessários, para que você possa ligar e desligar o telefone durante a operação, e a voltagem não cairá.Você também pode carregar o telefone incluído, o que é conveniente. Não sei quanto tempo a bateria dura, não a usei por mais de algumas horas, mas talvez por alguns dias você não consiga escrever para seus amigos pelo telefone (é necessário conectar uma máquina de escrever). Vou tentar testá-lo um dia, mas por enquanto vou dizer que a bateria dura alguns meses, e você pode conversar por semanas e depois será melhor vendida ou, pelo menos, receberá a quantia necessária em um kickstarter.Etapa 5: não há etapa 5.
O interior está montadoE o projeto foi concluído! Depois de puxar os fios e empurrar as coisas para lugares para os quais eles não foram projetados, você pode fechar o caso em que tudo se encaixa bem - a menos que você agite.Você pode entender aproximadamente a localização dos componentes. O Arduino está no canto superior direito, embaixo de uma blindagem (você pode ver uma antena protuberante), um cabo de alimentação USB azul vai para o regulador conectado à bateria e ao carregador, e ao conector do tipo mãe no canto superior esquerdo. Você pode ver os cabos do microfone e do alto-falante (da parte superior direita para a esquerda).Os circuitos na placa de circuito marrom abaixo são os circuitos originais do telefone. Eles não são usados, mas seria difícil removê-los, e talvez a alavanca (um pedaço de plástico transparente à esquerda) não funcionasse sem eles, o que seria inaceitável.E agora, como prometido, o comercial final, em toda a sua beleza final. Que charme! Envie para todos os seus amigos, mesmo aqueles com quem você não conversa há muito tempo. O que poderia ser mais importante do que conversar com velhos amigos novamente, graças ao projeto maluco da internet de um cara da Grécia? Claro, nada!Se você arranhar diretamente o seu telefone celular com discador e você estiver pensando em escrever do zero, passando noites sem dormir em engenharia reversa dos meus bits de código, tenho boas notícias para você. Publiquei todo o código on-line porque sou uma pessoa assim.github.com/skorokithakis/iRotaryDiga-me o quanto esse projeto incrível mudou sua vida nos comentários do artigo original ou no Twitter! Smack!