Construindo Alexa em um telefone rotativo

Como eu construí um telefone rotativo com Alexa com um PI de framboesa e alguns LEDs

Mike Dodge Segue em 21 de jun · 8 min ler

TL; DR – Eu criei o Alexa em um telefone rotativo e configurei o discador rotativo para acionar ações em meus outros dispositivos Alexa.

1956 Western Electric Model 500, alimentado por Alexa

Peças necessárias

  • um velho telefone rotativo
  • um PI de framboesa 3
  • uma placa de pão (usada no desenvolvimento)
  • um microfone USB (desmontado e religado)
  • um cabo de remendo mono de 1/8 "(rewired)
  • um par de LEDs
  • três resistências de 10k

Como chegou a ser

Nossa família de quatro pessoas usa o Alexa diariamente para coisas como tocar música, obter o clima e configurar temporizadores para que as crianças não briguem por brinquedos. Para um punhado de tarefas, preferimos nossos celulares.

Mas ainda há alguns pontos de atrito com a maneira como ela se encaixa em nossa casa:

  1. Eu odeio gritar com ela

Com dois meninos em casa, nunca há falta de caos e clamor na nossa sala / cozinha aberta onde o Alexa mora. Eu odeio gritar por todo aquele barulho do outro lado da sala, especialmente quando ela já está falando ou tocando música.

2. Eu odeio quando ela grita comigo

Tem havido muitas ocasiões em que eu fui para a cama e pedi a Alexa: "Desligue as luzes da sala", apenas para que ela gritasse inesperadamente "Ok!" E acorde as crianças porque, sem que eu soubesse, elas teve uma festa de dança no Up Town Funk e deixou o Alexa no volume 10.

3. Nem todo mundo precisa saber (ou se importa)

Eu comecei a perceber que sempre que alguém pergunta algo para Alexa, a sala inteira inevitavelmente parece que eles precisam pausar e esperar que ela termine. Ela meio que exige sua atenção dessa maneira. O que é pior, nem todos na sala se importam com o que o Alexa tem a dizer.

A ideia

Crie o Alexa em um telefone para facilitar as interações por voz 1: 1.

Trabalho em progresso. Por fim, a placa protetora GPIO e a fita isolante foram removidas e toda a conexão foi soldada.

O que eu fiz

Modelo Ocidental Elétrico 500 advertisement

Eu amo eletrônicos retro, então a primeira coisa que fiz foi rastrear um velho telefone rotativo. Eu queria algo que fosse divertido de desmontar – algo que fosse cheio de fios, não de circuitos. Acabei com um Western Electric Model 500 de 1956 que encontrei no Ebay por US $ 40.

Para executar o Alexa dentro do telefone, eu peguei um Raspberry Pi 3 e instalei o Alexa Voice Services SDK, que permite que você execute seu próprio cliente Alexa. O Pi também tem um número de portas GPIO que eu usei para conectar diretamente os telefones giratórios e comutadores de gancho. O AVS SDK também incluiu um aplicativo de amostra baseado em linha de comando que eu compilei e aproveitei para toda a integração do Alexa, executando-o dentro de um wrapper do Python e passando mensagens de um lado para outro. … Mais sobre isso depois.

Conectando-se

Encontrar os fios corretos para cada circuito foi um jogo de adivinhação, mas não demorou muito para descobrir. A maioria das conexões internas passava por uma grande caixa retangular chamada 'rede' que tinha 15 terminais e 18 fios conectados a ela. Eu encontrei alguns diagramas de fiação originais on-line , mas foi mais fácil simplesmente montar um circuito simples através da placa GPIO do Pi e depois registrar quando a conexão foi aberta / fechada enquanto eu testava diferentes combinações de terminais.

Há essencialmente 3 circuitos que eu precisava para conectar aos pinos GPIO dos PIs

Cada circuito correu em 3.3 v com um resistor de 10k inline

O interruptor "fora do gancho"

Havia três circuitos separados que se fecharam quando o telefone foi retirado da base por algum motivo – eu usei apenas um. Parecia que os outros eram redundantes, possivelmente caso as partes móveis falhassem ao longo do tempo, mas não tenho certeza.

O discador rotativo

O discador tem 4 fios: um par é um circuito que se fecha quando o discador está em sua posição de descanso, e o outro se abre e fecha com cada pulso do rotativo – eu só usei este par posterior. A detecção do número discado foi realizada com uma instrução WHILE, que contava o número de vezes que o interruptor do discador abria e fechava, girando no sentido anti-horário para a posição de repouso.

Rigging up um par de LEDs de status

Piscar significa que ela está ouvindo …

Eu queria transmitir algum tipo de feedback visual quando Alexa estava ouvindo e surgiu a ideia de montar LEDs sob os pinos de plástico transparente que se levantam quando o aparelho é levantado do gancho. Eu liguei um de cada lado e os configurei para piscar quando o aparelho for atendido e o Alexa começar a escutar. Então eles ficam sólidos quando ela está falando e desligam quando o aparelho é colocado de volta. Ele também serviu convenientemente como um indicador fácil de se o aplicativo havia caído ou não. Em termos de códigos, a maneira mais simples de fazê-los piscar era escrever código de bloqueio em um loop que pausava a execução entre cada flash, mas também significava que o processo precisava ser executado em um thread diferente para não bloquear o restante do aplicativo para responder. Veja as linhas de código 176 na parte inferior da página para mais informações.

O microfone do monofone

Comprei um microfone USB dinâmico, desmontei o microfone no final do circuito e conectei o microfone no aparelho em seu lugar.

O alto-falante do aparelho

Eu liguei o alto-falante do aparelho através do jack de saída de áudio de 3,5 mm do Pi.

O discador rotativo

Eu tive a ideia de usar o discador rotativo como uma maneira de acionar os comandos de voz mais comuns usados por nossa família. Pense no rotativo como um conjunto de botões de traço para comandos de voz. Para configurar cada comando de voz, disque 0, disque o número para o qual deseja atribuir um comando de voz e, em seguida, o telefone entrará no modo de gravação enquanto você diz o comando que deseja associar a esse número. Da próxima vez que você discar o número, eu envio o arquivo de áudio pré-gravado para o Alexa como se você tivesse acabado de falar.

Nossa lista atual de comandos rápidos é:

  1. “Jogue Jazz no Spotify no eco da sala de estar”
  2. “Jogue NPR no eco da sala de estar”
  3. "Play 'The Daily Podcast' na sala de estar ecoar"
  4. "Play 'Up Town Funk' no Spotify na sala de estar eco"
  5. "Jogue 'Eu gosto de movê-lo' no Spotify no eco da sala de estar"
  6. "Definir um temporizador de dois minutos"
  7. "Ligue as luzes do convés"
  8. "Desligue as luzes do convés"
  9. "Diga sala de estar ecoar para parar"

O produto final / Takeaways

Na verdade funciona! É uma novidade, com certeza, mas nas duas semanas em que estamos usando, os comandos rápidos do discador e a interação com o telefone celular foram muito úteis. As crianças adoram discar um número e pegar suas músicas favoritas – eu adoro discar 9 para desligar tudo depois da quinta repetição. Eu uso o aparelho para controlar a maioria dos nossos dispositivos IOT e obter a previsão do tempo antes de andar de bicicleta para o trabalho. Amigos que brincaram com ele acham que é um pouco ridículo, mas também meio que um romance. No final, foi um projeto divertido que serve uma necessidade de nicho em nossa sala de estar. Estou feliz por ter feito isso? Sim. Eu compraria um? Não sei, eu poderia se o telefone fosse atraente o suficiente.

Coisas que aprendi

Não há necessidade de ela estar sempre “escutando” ou para acordar

Assim que você pega o aparelho, eu manualmente simulo a palavra wake e Alexa começa a ouvir como se você tivesse acabado de dizer isso. Isso acabou sendo um recurso surpreendentemente bom porque tornou as interações muito mais naturais.

Acionar a palavra despertar em um loop infinito ajuda a simular uma verdadeira “conversa”

Reagir a palavra wake no final de cada interação permite que você converse com Alexa da mesma forma que você fala com uma pessoa real, ou seja, sem dizer seu nome no início de cada sentença. Você pode pegar o telefone e dizer "qual é o tempo hoje?" e quando ela terminar, você pode dizer imediatamente: "que tal o clima amanhã?"

A biblioteca Python PExpect me salvou de ter que codificar meu próprio cliente Alexa

Aproveitando o PExpect, deixe-me reutilizar o aplicativo de amostra fornecido com o AVS SDK. O aplicativo suportava todos os comandos básicos que eu precisava e PExpect, deixe-me acionar esses comandos do python via eventos de teclado falso passados no shell do aplicativo de amostra. PExpect também me permitiu definir o ponto de interrupção que ajudou com o gerenciamento de estado, forçando o python a esperar até que o stdout imprimisse uma certa string antes de continuar.

Você pode fazer o PI falar seu atual IP wifi na inicialização

Desde que eu me conectei através de VNC e SSH para depurar o dispositivo, eu precisava de uma maneira de manter o controle dos dispositivos sem ter que abri-lo e conectar um mouse, teclado ou tela. Para contornar isso, usei este comando:

 hostname -I | festival - tts 

Vários LEDs no mesmo circuito precisam ser ligados em paralelo

Isso eu aprendi do jeito difícil.

Os toques nesses telefones antigos são executados em 48V

Eu estava esperando conectar os dois toques originais no telefone e usá-los para timers e alarmes, mas o Pi não tinha energia onboard suficiente para fazê-los tocar, mais eu tive que removê-los para dar espaço para o PI de qualquer maneira. Pensei em colocar um alto-falante USB no gabinete, mas não há planos para isso agora.

O código

Sobre o autor

Mike Dodge é o principal tecnólogo de design do Alexa Shopping na Amazon, onde constrói protótipos que definem o futuro da compra de voz e multi-modelos.

https://www.linkedin.com/in/mikedodg/