Índice:

Retro Speech Synthesis. Parte: 12 IoT, Automação residencial: 12 etapas (com imagens)
Retro Speech Synthesis. Parte: 12 IoT, Automação residencial: 12 etapas (com imagens)

Vídeo: Retro Speech Synthesis. Parte: 12 IoT, Automação residencial: 12 etapas (com imagens)

Vídeo: Retro Speech Synthesis. Parte: 12 IoT, Automação residencial: 12 etapas (com imagens)
Vídeo: Vintage Oberheim Matrix 12 Analog Synthesizer Sounds 2024, Novembro
Anonim
Image
Image
Retro Speech Synthesis. Parte: 12 IoT, automação residencial
Retro Speech Synthesis. Parte: 12 IoT, automação residencial

Este artigo é o 12º de uma série sobre Instructables de automação residencial que documenta como criar e integrar um Dispositivo de Síntese de Voz Retro IoT em um sistema de automação residencial existente, incluindo todas as funcionalidades de software necessárias para permitir a implantação bem-sucedida em um ambiente doméstico.

A Figura 1 mostra o dispositivo de sintetizador de voz IoT completo e a Figura 2 mostra todas as partes do componente usadas no protótipo que tiveram seu fator de forma reduzido para entrar no produto final.

O vídeo mostra o dispositivo em ação (durante o teste).

Introdução

Conforme mencionado acima, este Instrutível detalha como fazer um Dispositivo IoT Retro Speech Synthesis e é baseado no General Instruments SP0256-AL2.

Seu objetivo principal é adicionar a síntese de voz da 'velha escola' a uma rede IoT. Por que 'velha escola' você pode perguntar? Bem, porque eu estava por volta dos anos 80 quando essas coisas foram fabricadas pela primeira vez e fiz uma interface com o meu BBC Micro, então para mim há um certo grau de nostalgia em torno do SP0256-AL2.

Eu prefiro muito mais o desafio de tentar descobrir o que diabos está sendo dito por essa voz sonora de Dalek do que ouvir os tons suaves de um eco moderno da Amazon ou Siri. Onde está o desafio em que te pergunto?

Ah, e sem mencionar que também tenho uma 'bagunça' de ICs 'SP0256-AL2' espalhados.

O dispositivo também é capaz de ler a temperatura e a umidade locais, de modo que estende ainda mais a instrumentação ambiente da minha infraestrutura IoT existente conectando-se à rede IoT baseada em MQTT / OpenHAB detalhada nesta série sobre automação residencial (HA), com base no código reutilizado obtido a partir daqui.

Em seu coração está um ESP8266-07 que é responsável pelas comunicações MQTT e pelo controle de todas as funcionalidades do sistema (acesso por cartão SD, controle de led, sensor de temperatura / umidade, controle de volume, síntese de voz). O dispositivo é totalmente configurável por meio de arquivos de texto armazenados em um cartão SD local, embora os parâmetros de calibração e segurança de rede também possam ser programados por meio de publicações MQTT remotas.

Quais peças eu preciso?

Veja a lista de materiais aqui

Qual software eu preciso?

  • Arduino IDE 1.6.9,
  • Arduino IDE configurado para programar o ESP8266-07 (igual a este). Em seguida, configure o IDE conforme indicado na descrição detalhada fornecida no esboço do software aqui,
  • Python v3.5.2 se você deseja usar o recurso de teste automatizado, detalhes aqui

Quais ferramentas eu preciso?

  • Microscópio pelo menos x3 (para solda SMT),
  • Ferramenta de crimpagem de conector Molex (para conectores JST),
  • Ferro de solda SMD (com caneta de fluxo líquido e solda fluxada),
  • Chaves de fenda (várias),
  • Pistola de calor,
  • Exercícios (vários),
  • Ferramenta de mão escareada,
  • Arquivos (vários),
  • Dremel (vários bits),
  • Torno resistente (pequeno e grande, como um companheiro de trabalho preto e decker),
  • Bisturi,
  • Calibres vernier (usados para medir a fabricação e úteis para dimensionar componentes de PCB),
  • Chaves de porca e chaves inglesas (vários),
  • Pinças fortes (para solda SMT),
  • Júnior Hacksaw,
  • Broca (com várias brocas),
  • Alicate fino (ponta e ponta saliente),
  • Cortadores nivelados,
  • DMM com verificação de continuidade audível,
  • Âmbito digital de canal duplo (útil para sinais de depuração)

Quais habilidades eu preciso?

  • Muita paciencia,
  • Muita destreza manual e excelente coordenação mão / olho,
  • Excelentes habilidades de soldagem,
  • Excelentes habilidades de fabricação,
  • A capacidade de visualizar em 3 dimensões,
  • Algum conhecimento de desenvolvimento de software com 'C' (se você quiser entender o código-fonte),
  • Algum conhecimento de Python (como instalar e executar scripts, se você quiser usar o teste automatizado),
  • Conhecimento do Arduino e seu IDE,
  • Bons conhecimentos de eletrônica,
  • Alguma compreensão da sua rede doméstica.

Assuntos abordados

  • Manual do usuário
  • Visão geral do circuito
  • Fabricação e montagem de PCB
  • Fabricação
  • Visão geral do sistema de software
  • Visão geral do software
  • Calibração do Sensor
  • Convenção de Nomenclatura de Tópico MQTT
  • Depurar e encontrar falhas
  • Testando o Design
  • Conclusão
  • Referências usadas

Series LinksTo Parte 11: IoT Desktop Console. Parte: 11 IoT, automação residencial

Etapa 1: Manual do Usuário

Manual do usuário
Manual do usuário
Manual do usuário
Manual do usuário
Manual do usuário
Manual do usuário

A imagem 1 acima mostra a frente do Retro Speech Synthesizer e a imagem 2 a parte traseira.

Frente do gabinete

  1. Grade do alto-falante
  2. Conector de fone de ouvido de 3,5 mm: O alto-falante principal é desativado quando o conector de 3,5 mm é inserido.
  3. LED vermelho: este LED acende enquanto uma palavra está sendo falada, quando a fala foi iniciada por meio de uma solicitação
  4. LED azul: este LED acende enquanto uma palavra está sendo falada, quando a fala foi iniciada por meio de uma solicitação MQTT IoT.

Traseira do gabinete

  1. Botão de reinicialização: usado para reinicializar o dispositivo ESP8266-07 IoT.
  2. Botão Flash: Quando usado em conjunto com o Botão Reset, permite piscar novamente no ESP8266-07.
  3. Plugue de antena WiFi (SMA Plug): Para antena WiFi externa que oferece a menor atenuação do caminho de RF, pois o fechamento é de alumínio.
  4. Porta de programação externa: para remover a necessidade de desparafusar o gabinete para obter acesso ao ESP8266-07 para fins de reprogramação. Os pinos de programação do ESP8266-07 foram trazidos para a porta de programação externa. A Figura 3 é o adaptador de programação.
  5. LED verde: Este é o LED do sistema IoT e é usado para indicar o status de diagnóstico do dispositivo e inicializar e durante a operação.
  6. Sensor externo de temperatura / umidade (AM2320)
  7. Slot para cartão SD: contém todos os dados de configuração / segurança junto com as páginas do servidor da web.
  8. Conector de alimentação de 2,1 mm 6vdc

Etapa 2: Visão geral do circuito

Visão geral do circuito
Visão geral do circuito
Visão geral do circuito
Visão geral do circuito

O dispositivo Retro Speech Synth compreende dois PCBs;

  • RetroSpeechSynthIoTBoard: Este é um ESP8266-07 / 12 / 12E / 13 PCB genérico e reutilizável
  • RetroSpeechSynthBoard: Este é um PCB SP0256-AL2 genérico

Retro Speech Synth IoT Board

Esta placa permite a soldagem direta de um ESP8266-07 / 12 / 12E / 13 ou soquetes de 0,1 que acomodam uma placa de circuito impresso ESP8266.

A placa foi projetada para expandir sua E / S em uma conexão I2C e pode suportar níveis de alimentação 3v3 ou 5v via Q1, Q2, R8-13.

A conexão à placa é feita por meio de um dos dois conectores J2 e J4, uma fita DIL IDC de 8 vias ou JST / Molex de 5 vias.

U2 e U3 provisionam 3,3 V e 5 V na regulação de alimentação da placa. Alternativamente, se maior capacidade de corrente for necessária, reguladores shunt seriais off-board podem ser conectados por meio dos conectores J10 e J11, respectivamente.

Os conectores J1 e J3 oferecem suporte a cartão SD externo sobre SPI. J1 foi projetado para um Molex de 8 vias e J3 tem pino direto para suporte de compatibilidade de pinos para um PCB de cartão SD pronto para uso com suporte 3v3 ou 5v.

Retro Speech Synth Board

O controle desta placa é feito por meio de uma conexão compatível com I2C 5v via J1, J5 ou J6, um conector de fita JST / Molex de 4 vias, DIL IDC de 8 vias ou IDC de 8 vias.

U2 MPC23017 fornece o I2C para interface paralela para U3 o SP0256-AL2 e LEDS D1 (verde), D2 (vermelho) e D3 (azul). A saída do Speech Synth é fornecida ao amplificador de áudio CR1 TBA820M por meio do potenciômetro analógico RV1 ou do potenciômetro digital U1 MCP4561.

O potenciômetro digital U1 também é controlado por meio de I2C compatível com 5v.

Nota: O dispositivo ESP8266-07 foi escolhido porque tem um conector IPX RF integrado que permite a adição de uma antena WiFi externa ao invólucro de alumínio.

Etapa 3: Fabricação e montagem de PCB

Fabricação e montagem de PCB
Fabricação e montagem de PCB
Fabricação e montagem de PCB
Fabricação e montagem de PCB
Fabricação e montagem de PCB
Fabricação e montagem de PCB
Fabricação e montagem de PCB
Fabricação e montagem de PCB

As imagens 1 e 2 mostram os subconjuntos de PCB completos e com fio localizados no substrato do invólucro de alumínio.

Os dois PCBs foram projetados usando o Kicad v4.0.7, fabricado pela JLCPCB e montado por mim e mostrado acima nas fotos 3 a 13.

Etapa 4: Fabricação

Fabricação
Fabricação
Fabricação
Fabricação
Fabricação
Fabricação

A Figura 1 mostra um layout de estilo do Manual Haynes de todas as peças pré-fabricadas antes da montagem final.

As fotos 2 a 5 mostram várias fotos durante a fabricação do gabinete com folgas mínimas.

Etapa 5: Visão geral do sistema de software

Visão geral do sistema de software
Visão geral do sistema de software
Visão geral do sistema de software
Visão geral do sistema de software

Este Dispositivo IoT Retro Speech Synthesis contém seis componentes de software principais, conforme mostrado na figura 1 acima.

Cartão SD

Este é o SD SPI Flash Filing System externo e é usado para armazenar as seguintes informações (veja a figura 2 acima);

  • Ícones e 'Página inicial de configuração de sintetizador de voz' index.htm: servido pelo dispositivo IoT quando ele não consegue se conectar à sua rede IoT WiFi (geralmente devido a informações de segurança incorretas ou uso pela primeira vez) e fornece ao usuário um meio de configurar remotamente os sensores sem a necessidade de atualizar o novo conteúdo SD. Ele também contém index1.htm, mqtt.htm e sp0256.htm, essas são as páginas da web servidas localmente acessíveis em um navegador da web, permitindo controle limitado do sintetizador de voz sobre
  • Informações de segurança: contém as informações usadas na inicialização do dispositivo IoT para se conectar à sua rede IoT WiFi e MQTT Broker. As informações enviadas por meio da 'Página inicial de configuração do Speech Synth' são gravadas neste arquivo ('secvals.txt').
  • Informações de calibração: As informações contidas nos arquivos ('calvals1.txt' e 'calvals2.txt') são usadas para calibrar os sensores de temperatura / umidade integrados, caso seja necessário. As constantes de calibração podem ser gravadas no dispositivo IoT por meio de comandos MQTT de um broker MQTT ou atualizando o cartão SD novamente. 'calvals1.txt' refere-se ao sensor AM2320 e 'calvals2.txt' ao DHT22.
  • Valores de sistema configuráveis pelo usuário: as informações contidas neste arquivo ('confvals.txt'), escolhidas pelo usuário, controlam certas respostas do sistema, como nível de volume digital inicial, anúncio automático de 'sistema pronto' na assinatura do corretor MQTT etc.

Servidor mDNS

Esta funcionalidade é invocada quando o dispositivo IoT não consegue se conectar à sua rede WiFi como uma estação WiFi e, em vez disso, torna-se um ponto de acesso WiFi semelhante a um roteador WiFi doméstico. No caso de tal roteador, você normalmente se conectaria a ele digitando o endereço IP de algo como 192.168.1.1 (geralmente impresso em uma etiqueta afixada na caixa) diretamente na barra de URL do seu navegador, quando você receberia uma página de login para entrar o nome de usuário e a senha para permitir a configuração do dispositivo. Para o ESP8266-07 no modo AP (modo de ponto de acesso), o padrão do dispositivo é o endereço IP 192.168.4.1, no entanto, com o servidor mDNS em execução, você só precisa inserir o nome amigável 'SPEECHSVR.local' na barra de URL do navegador para consulte a 'Página inicial de configuração do Speech Synth'.

Cliente MQTT

O cliente MQTT fornece todas as funcionalidades necessárias para; conecte-se ao seu broker MQTT da rede IoT, inscreva-se nos tópicos de sua escolha e publique cargas úteis para um determinado tópico. Resumindo, ele fornece a funcionalidade principal da IoT.

Servidor Web

Este servidor web tem duas finalidades;

  1. Se o dispositivo IoT não conseguir se conectar à rede WiFi cujo SSID, P / W etc. está definido no arquivo de informações de segurança mantido no cartão SD, o dispositivo se tornará um ponto de acesso. Uma vez conectado à rede WiFi fornecida pelo Ponto de Acesso, a presença de um Servidor Web HTTP permite que você se conecte diretamente ao dispositivo e altere sua configuração através do uso de um Navegador Web HTTP, cujo objetivo é servir a 'Configuração de Sintetizador de Fala Página da web da página inicial, que também está armazenada no cartão SD.
  2. Uma vez que o dispositivo de síntese de voz retro IoT tenha se conectado à rede WiFi e ao broker MQTT, se acessado, o servidor da web HTTP servirá automaticamente uma página da web HTTP, permitindo controle limitado do dispositivo IoT para falar uma seleção de frases fixas e a capacidade de alterne os dois LEDs vermelhos e azuis frontais.

Estação WiFi

Esta funcionalidade dá ao dispositivo IoT a capacidade de se conectar a uma rede WiFi doméstica usando os parâmetros no arquivo de Informações de Segurança, sem isso seu dispositivo IoT não será capaz de assinar / publicar no MQTT Broker.

Ponto de Acesso WiFi

A capacidade de se tornar um ponto de acesso WiFi é um meio pelo qual o dispositivo IoT permite que você se conecte a ele e faça alterações na configuração por meio de uma estação WiFi e um navegador (como o Safari no iPad da Apple). Este ponto de acesso transmite um SSID = "SPEECHSYN" + os últimos 6 dígitos do endereço MAC do dispositivo IoT. A senha para esta rede fechada é imaginativamente chamada de 'SENHA'

Etapa 6: Visão geral do software

Visão geral do software
Visão geral do software
Visão geral do software
Visão geral do software
Visão geral do software
Visão geral do software

Preâmbulo

Para compilar com êxito este código-fonte, você precisará de uma cópia local do código e das bibliotecas descritas abaixo na Etapa 12, Referências usadas. Se você não tiver certeza de como instalar uma biblioteca Arduino, clique aqui.

Visão geral

O software faz uso da máquina de estado conforme mostrado na foto 1 acima (cópia completa do código-fonte no meu repositório GitHub aqui). Existem 5 estados principais, conforme descrito abaixo;

  • INICIAR

    Este estado de inicialização é o primeiro estado inserido após a inicialização

  • NOCONFIG

    Este estado é inserido se, após a inicialização, um arquivo secvals.txt inválido ou ausente for detectado. Durante este estado, a página de configuração fica visível

  • PENDENTE NO

    Este estado é transitório, inserido enquanto não existe nenhuma conexão de rede WiFi

  • MQTT PENDENTE

    Este estado é transitório, inserido após uma conexão de rede WiFi ter sido feita e embora não exista nenhuma conexão com um broker MQTT nessa rede

  • ATIVO

    Este é o estado operacional normal inserido depois que uma conexão de rede WiFi e uma conexão do MQTT Broker foram estabelecidas. É durante esse estado que a temperatura, o índice de calor e a umidade no IoT Retro Speech Synthesis Device são publicados regularmente para o MQTT Broker. Neste estado, a página inicial do Speech Synth está visível

Os eventos que controlam as transições entre os estados são descritos na figura 1 acima. As transições entre estados também são regidas pelos seguintes parâmetros SecVals;

  • Endereço IP do 1º MQTT Broker. Na forma decimal com pontos AAA. BBB. CCC. DDD
  • 2ª Porta do Broker MQTT. Em forma de número inteiro.
  • A terceira conexão do MQTT Broker tenta fazer antes de alternar do modo STA para o modo AP. Em forma de número inteiro.
  • 4º SSID da rede WiFi. Em texto de forma livre.
  • 5ª senha da rede WiFi. Em texto de forma livre.

Conforme mencionado acima, se o dispositivo IoT não for capaz de se conectar como uma estação WiFi à rede WiFi cujo SSID e P / W estão definidos em secvals.txt mantido no cartão SD, o dispositivo IoT se tornará um ponto de acesso. Uma vez conectado a este ponto de acesso, ele servirá a 'Página inicial de configuração do Speech Synth' conforme mostrado acima na Figura 2 (inserindo 'SPEECHSVR.local' ou 192.168.4.1 na barra de endereço URL do seu navegador). Esta página inicial permite a reconfiguração do IoT Retro Speech Synthesis Device por meio de um navegador

Acesso remoto enquanto no estado ATIVO

Uma vez conectado ao MQTT Broker, também é possível recalibrar e reconfigurar o dispositivo por meio de publicações de tópico MQTT. O arquivo calvals.txt tem acesso R / W e secvals.txt tem acesso somente gravação exposto.

Também como mencionado acima, uma vez no modo ativo, é possível acessar o Speech Synth através de uma interface HTTP inserindo 'SPEECHSVR.local' ou 192.168.4.1 na barra de endereço URL do seu navegador. Esta interface baseada em HTTP permite o controle básico do Speech Synth. As fotos 3, 4 e 5 mostram as páginas da web disponíveis.

Depuração de usuário

Durante a sequência de inicialização, o LED verde do sistema do dispositivo IoT na parte traseira do gabinete fornece o seguinte feedback de depuração;

  • 1 Flash curto: Nenhum arquivo de configuração localizado no cartão SD (secvals.txt)
  • 2 flashes curtos: o dispositivo IoT está tentando se conectar à rede WiFi
  • Iluminação contínua: o dispositivo IoT está tentando se conectar ao MQTT Broker
  • Desligado: o dispositivo está ativo.

Funcionalidade do dispositivo de síntese de fala retro IoT no estado ATIVO

Uma vez no estado ATIVO, o ESP8266 entra em um loop contínuo chamando as seguintes funções; timer_update (), checkTemperatureAndHumidity () e handleSpeech (). O resultado líquido disso foi projetado para apresentar ao usuário uma interface HTTP ou MQTT, atender perfeitamente seu processador de voz on-board com fonemas sob demanda e publicar valores paramétricos de ambiente local sobre MQTT.

Uma lista abrangente de todas as assinaturas e publicações de tópicos, incluindo valores de carga útil, está incluída no código-fonte.

Etapa 7: calibração do sensor

Calibração do Sensor
Calibração do Sensor

Quando o dispositivo IoT é inicializado, como parte da sequência de inicialização, dois arquivos denominados 'cavals1.txt' e 'cavals2.txt' são lidos do cartão SD.

O conteúdo desses arquivos são constantes de calibração conforme indicado acima na figura 1.

  1. 'cavals1.txt': Usado pelo AM2320 externo
  2. 'cavals2.txt': Usado pelo DHT22 interno

Essas constantes de calibração são usadas para ajustar as leituras adquiridas dos dois sensores para alinhá-los com um dispositivo de referência. Há um outro valor que define uma estratégia de relatório para cada dispositivo e é descrito abaixo junto com o procedimento seguido para calibrar os sensores.

Estratégia de Relatório

Este parâmetro determina como o sensor remoto relata quaisquer alterações paramétricas do ambiente locais para ele. Se um valor de 0 for selecionado, o sensor remoto publicará qualquer alteração que vir na temperatura ou umidade cada vez que o respectivo sensor for lido (aproximadamente a cada 10 segundos). Qualquer outro valor atrasará a publicação de uma alteração em 1 a 60 minutos. A modificação deste parâmetro permite a otimização do tráfego de rede MQTT. Deve-se observar que os dados de temperatura e umidade do DHT22 são lidos alternadamente devido às limitações do sensor.

Calibração de temperatura

Para calibrar o sensor de temperatura, segui o mesmo processo descrito aqui na etapa 4, novamente usando uma relação y = mx + c simples. Usei a temperatura IoT e o sensor de umidade nº 1 como dispositivo de referência. Os valores do sensor estão em graus Celsius.

Calibração de Umidade

Como não possuo meios para registrar com precisão ou mesmo controlar a umidade do ambiente local, para calibrar o sensor, usei uma abordagem semelhante àquela acima da etapa 4, novamente usando o Sensor # 1 como referência. No entanto, o que foi dito acima, recentemente encontrei um excelente artigo na web que descreve como calibrar sensores de umidade. Posso muito bem tentar essa abordagem em algum momento no futuro. Os valores do sensor estão em% da umidade relativa do ar.

Etapa 8: Convenção de Nomenclatura de Tópico MQTT

Convenção de Nomenclatura de Tópico MQTT
Convenção de Nomenclatura de Tópico MQTT
Convenção de Nomenclatura de Tópico MQTT
Convenção de Nomenclatura de Tópico MQTT

Conforme mencionado em um Instructable anterior (aqui), eu me conformei com a convenção de nomenclatura de tópicos descrita na foto 1 acima.

A saber, 'AccessMethod / DeviceType / WhichDevice / Action / SubDevice' não é perfeito, mas permite que filtros úteis sejam aplicados para ver todas as saídas do sensor para um determinado tópico paramétrico, permitindo assim uma comparação fácil como na figura 2 acima com MQTTSpy.

Este projeto é a primeira instância em que um único dispositivo contém mais de uma fonte originária do mesmo tipo de publicação. ou seja, Dois sensores de temperatura / umidade, de sub-dispositivos internos e externos.

Ele também oferece suporte a agrupamentos lógicos razoavelmente extensíveis de funcionalidade em um determinado dispositivo IoT.

Ao implementar esses tópicos em software, usei sequências de tópicos codificados permanentemente com identificadores numéricos fixos e incorporados para cada dispositivo, em vez de gerar dinamicamente os tópicos em tempo de execução para economizar na RAM e manter o alto desempenho.

Observação: se você não tiver certeza de como usar MQTTSpy, consulte aqui 'Setting Up an MQTT Broker. Parte 2: IoT, automação residencial '

Etapa 9: Depuração e localização de falhas

Depurar e encontrar falhas
Depurar e encontrar falhas

Em geral, para meus projetos de hobby, sempre que possível, tendo a construir um protótipo de hardware representativo contra o qual o software é desenvolvido, raramente tenho problemas ao integrar o software ao hardware da plataforma final.

No entanto, nesta ocasião, deparei com uma falha intermitente estranha, por meio da qual alguns fonemas soavam, mas outros não.

Depois de alguma depuração inicial do Speech Synth PCB usando um Arduino Uno para fornecer fonemas e provar que a placa estava funcionando, analisei as linhas I2C entre o IoT PCB e o Speech Synth PCB. Veja a foto 1 acima.

Você pode ver claramente o 'dente de serra' / borda exponencial para o sinal I2C nos traços.

Isso geralmente é uma indicação de que os valores I2C pull up são muito altos, evitando que a tensão da linha se recupere rápido o suficiente em um circuito de drenagem aberto.

Como uma 'solução alternativa', eu coloquei em paralelo os dois resistores smt pull up R12 e R13 com 10Ks para dar 4K7 e com certeza o Speech Synth 'ganhou vida'

Esse tipo de falha é o oposto do que pode acontecer ao depurar esses tipos de projetos. Em geral, a maioria dos módulos baseados em I2C comprados no Ebay tendem a vir com pull ups de 10K ou 4K7 já instalados. Se você pretende usar> 5 módulos I2C, cada um com pull ups de 4K7, a carga geral é de 940R, o que será muito grande para o estágio de saída do mestre. A solução seria dessoldar todos, exceto um conjunto de resistores pull up em cada módulo. De preferência, o que estiver fisicamente mais afastado do mestre.

Uma dica útil que vale a pena manter em mente ao projetar eletrônicos com dispositivos I2C.

Etapa 10: Testar o Design

Image
Image
Testando o Design
Testando o Design
Testando o Design
Testando o Design

Os testes foram realizados usando duas metodologias; Manual e automatizado.

O primeiro, manual e geralmente usado durante o desenvolvimento inicial do código, era usar o MQTT Spy para exercitar todos os tópicos assinados disponíveis e verificar as respostas publicadas (representadas na figura 2 acima). Como esse é um processo manual, pode ser demorado e sujeito a erros à medida que o desenvolvimento do código avança, embora a execução manual permita 100% de cobertura.

MQTTSpy foi escolhido para teste manual porque é uma excelente ferramenta para formatar manualmente uma determinada carga útil e publicá-la em qualquer tópico com facilidade. Ele também exibe um log claro, com carimbo de hora, que é muito útil para depuração (foto 3 acima).

A segunda abordagem automatizada foi adotada conforme o código-fonte se tornou mais complexo (> 3700 linhas). O aumento da complexidade significa ciclos de testes manuais mais longos e testes mais complexos. Para melhorar a confiabilidade, o determinismo e a qualidade dos testes, o teste automatizado foi usado por meio de um executivo de teste python (foto 1). Consulte a Etapa 10 neste Instructable sobre como o teste automatizado foi introduzido. Uma cópia completa dos testes automatizados usados neste Instructable está disponível aqui.

Um vídeo da sequência de teste automatizado em operação é mostrado acima. A sequência executa as seguintes etapas;

  • Automatizado via MQTT

    • Conecte-se ao backbone MQTT e anuncie 'Sistema pronto'
    • LED verde de exercício
    • LED vermelho de exercício
    • LED azul de exercício
    • Verificar o funcionamento do Potenciômetro Digital
    • Fale usando fonemas
    • Fale usando códigos hexadecimais para fonemas
    • Fale usando códigos para frases fixas
    • Um pouco da diversão do Dr Who e dos Daleks.
  • Manualmente via HTTP / Chrome

    • LED azul de exercício
    • LED vermelho de exercício
    • Fale frases fixas 'Steven Quinn', 'System Ready' e 'Hello World'
    • Ter o servidor HTTP, servir

      • Detalhes no chip de sintetizador de voz
      • Detalhes MQTT

Etapa 11: Conclusão

Conclusão
Conclusão

Embora tenha exigido muito esforço com arquivos e brocas etc. especialmente para a grade do alto-falante, eu acho que o resultado é esteticamente agradável e se encaixa em um gabinete pequeno e bonito. Eu poderia ter feito isso menor, mas teria que ir para um PCB e eu deliberadamente o quebrei em dois para que eu pudesse reutilizar os PCBs em uma data posterior para outros projetos. Portanto, é um compromisso feliz.

O software funciona bem, o dispositivo IoT está em operação estável há algum tempo, sem problemas.

Tenho monitorado a temperatura e a umidade através do Grafana e comparando com um dispositivo co-localizado. Os dois valores ambientais têm se correlacionado bem, o que implica que a calibração é razoável (ou pelo menos eles são semelhantes).

Parei de implementar o comando de palavra ('WFD / SpeechTH / 1 / Word / Command') porque fiquei sem tempo e precisava seguir em frente. Posso visitar novamente se e quando configurar um banco de dados MySQL. No momento, estou usando o InfluxDB.

Etapa 12: Referências usadas

As seguintes fontes foram usadas para colocar este Instructable junto; Código-fonte para o Dispositivo de Síntese de Fala Retro IoT (contém uma cópia de tudo)

https://github.com/SteveQuinn1/IoT_Retro_Speech_Synthesis_SP0256_AL2

PubSubClient.h

  • Por: Nick O'Leary
  • Objetivo: Permite que o dispositivo publique ou assine tópicos MQTT com um determinado Broker
  • De:

DHT.h

  • Por: Adafruit
  • Objetivo: biblioteca Arduino para DHT11DHT22, etc Sensores de temperatura e umidade
  • De:

Adafruit_AM2320.h / Adafruit_Sensor.h

  • Por: Adafruit
  • Objetivo: biblioteca Arduino para AM2320, etc. Sensor de temperatura e umidade
  • De:

MCP4561_DIGI_POT.h

  • Por: Steve Quinn
  • Objetivo: Biblioteca Arduino para potenciômetro digital MCP4561
  • De:

Adafruit_MCP23017.h

  • Por: Steve Quinn
  • Objetivo: Biblioteca Arduino para o expansor de porta MCP23017 I2C. Este é um fork do GITHub da Adafruit-MCP23017-Arduino-Library, da Adafruit.
  • De:

Para se divertir

https://haynes.com/en-gb/

Fabricação de PCB

https://jlcpcb.com/

Instalando Bibliotecas Arduino Adicionais

https://www.arduino.cc/en/Guide/Libraries

Como verificar e calibrar um sensor de umidade

https://www.allaboutcircuits.com/projects/how-to-check-and-calibrate-a-humidity-sensor/?utm_source=All+About+Circuits+Members&utm_campaign=ffeee38e54-EMAIL_CAMPAIGN_2017_12_06&utm_utm_medium_2017_12_06&utm_medium529-54&cfm5297email_eff7-4794effl_effl529&mail_ /

Folha de dados SP0256-AL2

https://www.futurebots.com/spo256.pdf

Loja de chips de fala

https://www.speechchips.com/shop/

Arduino Contest 2019
Arduino Contest 2019
Arduino Contest 2019
Arduino Contest 2019

Vice-campeão do Arduino Contest 2019

Recomendado: