Gato piada KiQ ou como fizemos um brinquedo falante para adultos

Brinquedo kiq

No mundo, há uma quantidade incrível de brinquedos falantes para crianças, e isso só dá a impressão de que os adultos ficam entediados. Nossa equipe decidiu corrigir esta situação.

O começo da história


Tudo começou com o fato de que a mente inquiridora do meu amigo e colega netsnail veio a brilhante idéia: piadas porque não só as crianças, mas os adultos não amuse temáticos? O benefício do ferro acessível e comprovado agora nunca é uma raridade, e pode não apenas piscar com as luzes, mas também cantar músicas .

A esse respeito, ele me ligou e se ofereceu para repetir a façanha épica para garantir que o ESP8266 reproduz música MP3 na rede para que seja bom e se o hamster está rasgando em pedaços, há desempenho realmente suficiente, o que eu fiz em um rápido feriado de Ano Novo em 2016:


O ESP8266 reproduz um rádio da Internet no vídeo, emitindo som usando o PWM de 5 bits via I2S hack.

No entanto, tocar rádio MP3 da Internet consumiu quase todo o recurso ESP8266 e soou "mais ou menos", enquanto a imaginação já nos atraía algo mais do que apenas uma coluna de rádio MP3. Com esses impulsos criativos, fomos à nossa equipe e ao amado chef Vladimir .

Depois de um pouco de reflexão, uma imagem mais detalhada e até uma cadeia lógica do que não apenas queremos, mas podemos fazer:

  • Para substituir o MP3 por algo menos exigente em recursos e mais livre, paramos no Speex , que flexxnn portou com sucesso e rapidez para o ESP8266.

  • SD , .. , ESP8266 — .

  • « » - , random . , . Apple Notification Center Service (ANCS), iPod, iPhone iPad.

  • Bluetooth Low Energy (BLE), .

  • . Pawn language.

  • , — «» «» (), - .


Inicialmente, eu queria criar um protótipo muito simples, mas totalmente funcional, em uma placa tudo em um, então decidimos experimentar o MediaTek no LinkIt ONE . E a netsnail conseguiu quase imediatamente. Havia uma conexão com o telefone e, a partir do cartão SD, o MP3 tocava perfeitamente.
Parece - aqui está a felicidade e uma plataforma pronta! Mas então nos deparamos com a dura realidade das limitações de seu SDK fechado e a euforia passou.

Percebemos que a plataforma pronta em uma placa, satisfazendo todos os nossos desejos, não estava na natureza, o que significa que tivemos que criá-la do zero.

Portanto, tivemos que escolher (fevereiro de 2016) o chip BLE mais adequado, que precisava ser conectado ao ESP8266. Como uma conexão entre o ESP8266 e o ​​chip BLE (ainda não sabíamos que tipo de chip seria), decidimos usar o TWI padrão (I2C).

Mas com o BLE, a escolha não foi muito boa:

  • TI CC2541 - De alguma forma, não gostei imediatamente devido à arquitetura do 8051 , e 8 Kb de RAM pareciam uma vida fácil e sem promessas, considerando o número de serviços e características de BLE que precisávamos no brinquedo.

  • BCM20732 - parecia muito promissor, mas na verdade o SDK acabou sendo muito grosseiro, e o "chaveiro" Broadcom WICED Smart BLE é tão buggy que eu não escrevo nada aqui para não jurar. Deixe-me saber se a situação melhorou agora.

  • nRF52832 — , . BLE — rekod , SDK , . BLE ANCS iPhone UART. SEGGER J-Link, .

  • nRF51822, SEGGER nRF52832. — nRF52832 nRF51822 !

Como resultado, o primeiro ferro parecia uma aranha tarântula, algo assim:

aranha de ferro

foi muito triste detectar falhas devido à queda de cabos duplos, especialmente no módulo nRF51822, onde os pinos eram um pouco menores.

Serviços BLE no aplicativo nRF51822 e iOS


No entanto, eu e o caso com este iron spider começamos a implementar serviços e recursos BLE no nRF51822, dividindo tudo em cerca de metade:

  • Serviço do Centro de Notificação da Apple ( ANCS ) - para receber notificações de eventos de um smartphone.
  • Serviço de horário atual da Apple (CTS) - quando conectado, o brinquedo leva tempo do telefone.
  • HandShake Service (HSS) — , , «» . , lientID pair Bluetooth, , . , .
  • Battery As Service (BAS) — .
  • Content Service (CONTS) — , ( ).
  • Settings Service (SETTS) — , (, ) ..

O MaximKit ao mesmo tempo estava fazendo um aplicativo para iOS .

imagem
A imagem à direita mostra a tela principal do aplicativo.

Aqui a flexxnn não aguentou nosso sofrimento por causa da queda de fios e fez o primeiro protótipo normal em casa com um ferro a laser :

primeiro protótipo mais ou menos

não é visível na foto, mas já existe um slot para cartão microSD. No pequeno xale quadrado abaixo - ALC5627 , o som já era muito melhor do que o PWM de 5 bits via I2S. O AXP209 foi

escolhido para gerenciamento de energia. Permite carregar e usar a bateria ao mesmo tempo, além de monitorar sua condição. O chip é muito comum, mas tem muitas especificidades tanto na programação quanto nos componentes externos necessários, os chamados "Arnês".

Mágica no ESP8266


Em paralelo, a flexxnn portou o Speex , FatFs para o ESP8266, criou um gerenciador de inicialização para o ESP8266 e o ​​nRF51822, para que não fosse possível atualizar o firmware por cabo, mas para isso, colocando os arquivos de firmware em um cartão microSD.

Pessoalmente, parece-me que os alienígenas o ajudaram, já que ele fez tudo isso em cerca de um mês. Mas ele não admite estar em contato com uma mente alienígena.

E então o segundo protótipo mais normal:

primeiro protótipo mais ou menos

mas o protótipo mais normal não subiu mais em um brinquedo macio. E mesmo que ele entrasse, com um movimento agudo de um brinquedo em um usuário em potencial, um "estranho" subiria, o que, obviamente, era inaceitável para o MVP.

Por isso, decidiu-se solicitar uma taxa aos profissionais e foi o que aconteceu como resultado:

imagem

Esse design já se encaixa perfeitamente no gato, embora pareça algo desumano:

imagem

ao mesmo tempo, confirmou-se o receio de que os eventos do telefone pudessem ocorrer com bastante frequência e, como resultado, o usuário ficaria irritado em vez de divertido. Foi necessária uma lógica de filtragem flexível, que pode ser facilmente alterada a qualquer momento sem piscar. Nesse sentido, tendo estudado o material e percebido que não há scripts rápidos e compactos para o ESP8266 (Lua e microPython são intérpretes), decidi portar a linguagem Pawn , que rapidamente (apenas 18 vezes mais lenta que a nativa) executa um bytecode compacto.

A propósito, as fontes de peão são muito semelhantes ao C, por isso é um prazer modificar os scripts - basta compilá-los no bytecode AMX e copiá-los para um cartão SD.

Aparelhos de trapaça. Finja ser iOS no Android


E então "de repente", todos nos lembramos que os telefones Android no mundo não são tão pequenos, mas ainda mais do que os telefones com iOS.

Como resultado, tive que acelerar para verificar se podemos enganar os gadgets e fingir ser iOS no Android para que eles vejam o serviço ANCS indistinguível da Apple.

No final, tudo deu certo e depois de uma semana os gadgets (e nosso gato não é exceção) acreditavam sinceramente que eu tinha um iPhone com serviço ANCS, conectando-me ao meu Nexus 5 e até ao antigo Samsung Galaxy com Android 4.4.

Go cloud


Como ninguém gosta de ouvir uma piada várias vezes (fato), e também existem preferências e restrições culturais, foi decidido para cada usuário criar uma lista de reprodução exclusiva. Para fazer isso, o caso ocorreu com o servidor na nuvem.

Mas como decidir quem vai gostar? É isso mesmo - deixe o usuário decidir! Para fazer isso, fiz uma detecção básica de gestos no acelerômetro LIS3DH da STMicroelectronics. Gostei da piada - inclinei o gato como se fosse "sim", não gostei da piada - me inclinei para o lado, como se "não". E ele acrescentou um "miosótis" para o telefone - se a conexão BLE for perdida e o acelerômetro detectar movimento, o gato estará sendo transportado para algum lugar e o telefone será esquecido.

Após o usuário "polikal" e, assim, designar suas preferências - as informações vão para um servidor no qual os "genomas" das listas de reprodução são comparados e novos conjuntos de piadas são gerados para o usuário. Mas este é um tópico para um artigo separado.

Sumário


Como resultado, o entretenimento acabou sendo uma excelente plataforma que pode:

  • comunique-se com o telefone via BLE e receba notificações de eventos;
  • comunique-se via Wi-Fi e faça o download de atualizações de conteúdo e firmware;
  • salvar e ler arquivos no FAT32 no microSD;
  • faça piadas repletas de codec speex;
  • Determinar as preferências do usuário usando um acelerômetro (detecção de gestos)
  • criar listas de reprodução para cada usuário com base em suas preferências de humor;

O que é digno de nota: “alças muito inteligentes” podem muito bem ser conectadas aos pinos correspondentes (até os orifícios dos conectores na placa são deixados) e “sensatez o gato” como bem entenderem. Isso torna a plataforma multifuncional atraente para os geeks.

Com esta plataforma, iniciamos o kickstarter, chamando o brinquedo acabado de KiQ. No primeiro dia, 40% foram coletados e agora 57%. Mas esta é uma história completamente diferente.

Obrigado a todos que leram até esta linha. À espera de perguntas interessantes de você.

Source: https://habr.com/ru/post/pt398389/


All Articles