Conceito de projeto
O conceito deste produto é atender à necessidade de olhar para a chama real. Uma descarga de brilho em um gás não é, a rigor, uma chama, embora pareça uma chama real.
Gosto da cor e esse foi o único motivo para começar a criar esses relógios para mim em uma única cópia.
A tarefa de criar um dispositivo para produção em massa não foi colocada.
Portanto, o orçamento do projeto é muito mais razoável. As decisões foram tomadas com base em nossas próprias idéias sobre beleza; o custo dos componentes não foi levado em consideração. Obviamente, sempre há limitações, por exemplo, eu não comprei grandes GRI (indicadores de descarga de gás) como o IN18 - o preço deles é mais do que uma fronteira definida intuitivamente e eles não se encaixam no meu conceito de aparência do produto. Eu usei o tipo GRI IN-12.
O IN12 é preenchido com uma mistura de néon (ou uma mistura de gases inertes) e vapor de mercúrio. O vapor de mercúrio fornece um aumento significativo na durabilidade do dispositivo e dá um tom azulado ao brilho do plasma. Outros GRIs podem estar isentos de mercúrio e dar um brilho de néon claro.
A principal função do relógio é mostrar a hora exata (CEP, olá!). É muito desejável que o tempo na inicialização seja definido automaticamente e não exija nenhuma manipulação do usuário. Do meu ponto de vista pessoal, os botões desses dispositivos não são necessários. Dispositivos similares com uma dúzia de botões e centenas de funções causadas por várias combinações de prensas e tempos de prensagem me causam uma tristeza silenciosa. Em primeiro lugar - a GRI está bem adaptada para exibir apenas números. Nada mais está previsto, e as tentativas de exibir itens de menu etc., na minha opinião, usam uma ferramenta inadequada. O mesmo se aplica a funções adicionais, como um despertador, etc.
Em segundo lugar, é óbvio que não é realista lembrar qual combinação de pressionamento de botão ativa uma ou outra função incorporada. Escrever programas para esses dispositivos é divertido e agradável, mas impossível de usar.
Esta questão é perfeitamente considerada no livro Donald A. Norman Design de coisas familiares. Vou citar uma passagem:
“Durante minhas viagens, usei o projetor de slides Leitz várias vezes. A primeira vez foi o pior pesadelo. Comecei a dar palestras e mostrei o primeiro slide. Quando foi necessário passar para o próximo slide, o aluno encarregado do show apertou o botão suavemente e começou a assistir com horror enquanto o suporte seguia na direção oposta, deslizava para fora do projetor de slides e caia da mesa no chão, misturando todos os slides. Foram necessários 15 minutos para organizar os slides em ordem. Não foi o aluno quem culpou por isso, mas este elegante projetor de slides. Como um botão pode executar duas funções opostas? Ninguém conseguiu fazer certo da primeira vez.
O problema era que um botão executava duas funções opostas - um toque breve deslocou o slide para frente, um longo - para trás. ”Continuamos a discussão sobre como acertar o relógio. Esses dispositivos são configurados de maneira ideal a partir de sua própria página da web, usando um computador, tablet ou smartphone.
Não preciso de um despertador para relógios com a GRI. Em primeiro lugar, sempre há telefones celulares com essas funções e uma interface muito mais conveniente. Em segundo lugar, o relógio GRI não pode usar uma fonte de energia autônoma, pois o consumo típico de energia (200 volts * 7 mA = 1400 mW ou 1,4 watts) é muito grande e ultrapassa os limites razoáveis para fontes de corrente química. Portanto, o relógio com o GRI será alimentado pela rede e a função de alarme dependerá da confiabilidade da rede.
A partir do raciocínio acima, surge o seguinte sistema:
Relógio GRI com energia da rede, com a capacidade de levar o tempo exato da Internet, com a configuração em sua própria página da web. Nenhum recurso adicional é necessário.
No entanto, violei o rigor desta regra adicionando os seguintes recursos:
Um relógio pode mostrar a temperatura da rua, umidade e pressão atmosférica. Essa função atende à minha necessidade pessoal de saber a temperatura externa quando chego ao trabalho pela manhã. Prendo minha camisa todos os dias no mesmo lugar e quando o relógio me encontra lá - eles mostram consistentemente a temperatura externa, a umidade e a pressão do ar em milímetros de mercúrio. A função acabou sendo bem-sucedida e muito procurada por mim e por membros da minha família. Os dados de temperatura, pressão e umidade da rua são coletados e armazenados automaticamente para o tempo entre as parcelas de uma fonte externa. Se o tempo limite for excedido (os dados estão desatualizados), o relógio mostra a data atual. No meu sistema doméstico, os dados sobre os parâmetros do ambiente externo chegam a intervalos de 10 minutos, o tempo limite "dados desatualizados" é definido como 30 minutos. Ao projetar o relógio, foi assumido que a equipe externa poderia receber uma voz, por exemplo, dizer: “Relógio, tempo!”. No entanto, durante a criação de protótipos, esse método não é confiável e é inconveniente. Portanto, no futuro, o controle por voz foi substituído por um método para determinar a presença de uma pessoa na frente do relógio, de acordo com o localizador a laser em tempo de voo. O relógio deve mostrar dados meteorológicos se você ficar na frente deles por cerca de um segundo.
O relógio por um comando externo através da interface HTTP pode exibir os dados recebidos neste comando. A equipe transfere os dados em si e a hora em que são exibidos no visor. Foi concebido como uma oportunidade para exibir algo do computador por eventos, por exemplo, superaquecimento do processador do servidor doméstico ou alguns outros parâmetros. A interface incorporada permite exibir um código de sete dígitos do lado de fora, incluindo dois pontos. Na prática, isso não é aplicado.
Os requisitos obrigatórios também incluíram o efeito de uma mudança suave de números. É esse efeito, o único de todos, eu realmente gosto!
O brilho dos indicadores deve ser ajustado à luz ambiente, mantendo o contraste da imagem inalterado.
O relógio deve exibir seis dígitos e um valor auxiliar na frente dos dígitos para indicar o que está sendo exibido no momento.
Implementação da solução de hardware concebida
Seleção GRI
Para exibir o tempo e outros dados, foram utilizados quatro GRI IN-12A, dois IN-12B e um IN-15A.
O IN-12B contém os pontos que usei para separar horas-minutos-segundos.
A GRI IN-15A pode mostrar vários sinais especiais “+”, “-“, “%”, “P” etc., colocados no início da linha.
A distância ideal entre os indicadores.
Para que o relógio pareça harmonioso, deve ser assegurada uma certa distância entre os indicadores, como entre as letras de uma linha. O estudo da questão forneceu as seguintes informações: a distância ideal entre os números é de 4 mm, entre as palavras 8 mm. A distância ideal entre os números é garantida com indicadores de ajuste confortável nos painéis. Acredito que isso não é coincidência, pensaram os engenheiros soviéticos durante o desenvolvimento e fizeram a distância certa.
Sincronização com servidores de horário
Considere maneiras de obter automaticamente a hora exata:
- Uma solicitação pela Internet para um servidor de horário exato.
- Glonass \ receptor GPS. Infelizmente, em alguns casos, isso não funciona: por exemplo, no meu apartamento, na parte inferior da sala, o sinal dos satélites desaparece, a configuração malsucedida dos prédios vizinhos me afeta, em que o céu claro é visível apenas diretamente na janela.
- Rede celular. Em teoria, você pode solicitar tempo de uma estação de celular sem se registrar (ou seja, sem um cartão SIM). Eu não tentei. Teoricamente, a maneira mais universal que não requer nada do usuário.
- Sinais de tempo precisos em comprimentos de onda longos. É difícil de aplicar, não há soluções prontas para uso portátil.
Na minha opinião, a melhor maneira é solicitar a hora exata via Internet. Deve-se notar que as funções internas para armazenar a hora atual do ESP8266 foram bastante precisas: em um mês de desconexão acidental do ponto de acesso à rede pela qual as horas descritas estavam conectadas à Internet, a partida foi em menos de um minuto. Eu determinei isso pela coincidência do relógio e da hora do computador. Após a restauração da energia, o ponto de acesso é sincronizado automaticamente.
A escolha dos circuitos de processador e controle GRI
Para controlar o relógio, é necessário um processador com capacidade de acessar a Internet. Entre as disponíveis, essas são placas baseadas no ESP8266. O estudo da questão mostrou que o conselho é barato, generalizado, possui um rico software pronto criado por entusiastas, que pode ser programado no ambiente do Arduino.
A escolha do sistema (microcircuito) do controle
A GRI é alimentada por uma tensão relativamente alta de cerca de 200 volts. De acordo com o passaporte (veja a Fig. 1), o IN12 requer pelo menos 170 volts para a ocorrência normal de uma descarga de brilho a uma corrente de até 2 mA. O sistema de controle deve poder alternar correntes de vários miliamperes e suportar tensões na região de 200 volts. Na União Soviética, microcircuitos K155ID1 (133ID1, etc.) foram produzidos (decodificador decimal binário de alta tensão). Eles funcionaram perfeitamente no modo estático, sendo necessário um decodificador por lâmpada. Agora, esses microcircuitos estão disponíveis em estoques antigos e são produzidos até em pequenos lotes pela planta de Minsk Integral. Em princípio, uma boa opção para relógios em contra-microcircuitos. No entanto, eles são difíceis de usar em um sistema de microprocessador devido ao número limitado de saídas nos microprocessadores. Assim, o relógio ESP8266, tomado como base, tem apenas uma dúzia de conclusões e algumas delas têm certas limitações. Para 7 decodificadores, são necessárias 28 saídas, ou um registrador intermediário, no qual os dados devem ser enviados sequencialmente e depois enviados em paralelo ao K155ID1, o que complica bastante o circuito.
Fig 1. Passaporte do indicador de descarga luminosa IN-12
Fig 2. Passaporte do indicador de descarga luminosa IN-15Ao usar o 155ID1, o efeito de uma mudança suave de números requer uma indicação dinâmica. O fato é que o GRI é um dispositivo nitidamente não-linear e é muito difícil controlar seu brilho de maneira analógica alterando a tensão - é muito difícil devido à alta inclinação da característica de tensão aplicada à corrente. Na região de baixo brilho, a descarga de gás se torna instável. Além disso, a iluminação externa afeta o acendimento contínuo da lâmpada - com uma diminuição na iluminação externa, tanto a tensão de ruptura quanto o indicador no tempo aumentam. Os fótons externos servem como uma espécie de isqueiro, iniciadores da descarga. A propósito, a alta inclinação da dependência da corrente através do dispositivo de descarga de gás na tensão aplicada é usada para obter uma tensão estável; de fato, esse dispositivo de descarga de gás é um estabilizador de tensão. Portanto, para controlar o brilho do GDI, é necessário o uso de um modo de energia pulsada, no qual o brilho é proporcional à corrente média através do GDI, que por sua vez é proporcional à largura do pulso.
A indicação dinâmica ao usar 155ID1 + GRI é bastante possível, mas possui várias limitações. Portanto, devido à peculiaridade do circuito 155ID1 (elementos-chave de voltagem relativamente baixa - apenas 60 volts), flashes de números vizinhos e outros efeitos indesejáveis são possíveis. Esses efeitos são combatidos com uma variedade de truques - hardware e software. Há um tópico enorme no site RADIOKOT.RU (https://radiokot.ru/forum/viewtopic.php?f=3&t=3210) dedicado ao NIXIE CLOCK, eu li tudo e tirei conclusões sozinho - a indicação dinâmica é inadequada para meus propósitos .
Uma pesquisa na Internet deu um excelente substituto para o 155ID1 - este é o chip HV5622, que representa um registro de deslocamento de 32 bits com saídas de alta tensão. O diagrama de blocos é mostrado na Fig. 3.
Figura 3. Diagrama estrutural do HV5622, Supertex inc. ©O HV5622 é capaz de alternar tensões de até 230 volts, recebendo dados através de uma interface serial com uma freqüência de clock de até 8 MHz. Microcircuitos podem ser conectados em série em uma cadeia. Para controle, são necessárias apenas 4 saídas do MK: dados, um sinal de relógio, um sinal de gravação no registro de saída e um sinal de habilitação. A única coisa que causou algumas dúvidas foi a tensão nutritiva. De acordo com o manual, ele deve ter pelo menos 8 volts. E eu gostaria de alimentar os chips de 5 volts e até controlá-los com um sinal lógico com um nível de 3,3v. Na internet, encontrei alguns exemplos do uso desses microcircuitos e os alimento a partir de 5 volts. Portanto, durante o desenvolvimento, apenas no caso, eu ofereci a oportunidade de instalar um conversor de nível lógico e uma fonte de alimentação 5622 com uma tensão mais alta, mas não instalei imediatamente esses nós. A prática mostrou que tudo funciona bem de 5 volts de qualquer maneira.
Assista Nutrição
Para alimentar o relógio na GRI, é necessária uma fonte de alimentação com duas saídas: 5 volts com corrente na região de meio ampere e 180-200 volts com corrente de cerca de 10 mA. Por padrão, os autores dos esquemas de tais relógios resolvem o problema de energia da seguinte maneira: eles usam uma fonte de alimentação de comutação externa de 220 -> 12 volts, dos quais 5 volts são feitos dentro do relógio, e 180 volts para a fonte de alimentação são obtidos pelo segundo conversor de pulso da entrada de 12 volts. I.e. de fato, 2 conversores de pulso são usados no circuito geral da fonte de alimentação, o primeiro dos quais produz 220 - 12 e o segundo 12 - 180. Na minha opinião, é ineficiente. Por isso, escolhi uma maneira muito tradicional de usar o transformador toroidal pré-fabricado TorAN15. A aparência deste transformador é mostrada na Fig. 4.
Figura 4. Transformador TorAN15Comprei este transformador no site ISTOK2.COM. O transformador possui dois enrolamentos secundários - um em 170 volts, o segundo em 6,3 volts. Isso tornou possível conviver com o circuito mais simples de fonte de alimentação. Alta fonte de alimentação GRI é retificada por uma ponte de diodos e filtrada em capacitores. Essas peças são usadas com um protetor de lâmpada fluorescente desnecessário. A fonte de alimentação baixa para microcircuitos também é retificada por uma ponte de diodos, filtrada em um capacitor eletrolítico e estabilizada em um estabilizador integral 7805. A eficiência desse circuito é muito maior que um sistema com duas conversões, a confiabilidade do sistema é muito maior. Além da completa ausência de interferência de alta frequência. O menos não está na moda e o transformador é pesado. Mas a gravidade do transformador, neste caso, é uma vantagem - eu queria que o relógio fosse brutalmente maciço.
Assim, o esquema do relógio é definido: é um módulo pronto com base no ESP12E, três microcircuitos HV5622, um sensor de luz baseado no MAX44009 e uma fonte de alimentação tradicional (eu diria mesmo conservadora). Posteriormente, um nó para determinar uma pessoa na frente do relógio foi adicionado com base no módulo a laser VL53L0X para telêmetro no tempo de voo. O diagrama esquemático do relógio é mostrado na Fig. 5.
Figura 5. Relógio Dronsky Nixie. Diagrama esquemáticoDividi a troca de pinos da seguinte maneira: as três primeiras lâmpadas - a primeira HV5622, as segundas três lâmpadas - a segunda HV5622, a restante HV5622 controla a lâmpada com caracteres e pontos especiais em dois IN12B.
No estágio de design, não estava claro se o canal SPI teria velocidade suficiente para gerar dados para uma mudança suave de dígitos. O fato de que uma vez por segundo para gerar 96 bits não é difícil para o ESP12E estava fora de dúvida. Mas há velocidade suficiente para produzir efeitos? De acordo com os cálculos deve ser suficiente com uma margem. Mas como você sabe, era bom no papel ...
Portanto, inicialmente, foi planejado produzir dados em três estágios, separadamente para cada chip. Um teste prático mostrou que o canal SPI tem velocidade suficiente, com uma margem enorme de efeitos, mesmo com uma frequência de clock de 4 MHz. Até a capacidade de dobrar a velocidade não era reclamada. Como resultado, todos os microcircuitos são conectados em uma cadeia e a saída de 96 bits é feita com um comando. De acordo com os cálculos, o tempo de saída de 96 bits deve ser de 24 μs. A Figura 6 mostra o registro de um analisador lógico com sete caracteres na GRI. O tempo total de saída, levando em consideração a geração do sinal LE, é inferior a 30 μS.
Figura 6. O analisador lógico gera o canal de saída de 96 bits HSPI com uma frequência de clock de 4 MHzOs pinos do RELÓGIO de todos os chips são combinados. O terminal DI (Data Input) do segundo e terceiro microcircuito é conectado aos terminais DO (Data Out) do primeiro e do segundo microcircuito, respectivamente. Os pinos LE (habilitação de trava) são combinados, eles recebem um pulso que transfere dados do deslocamento para o registro de saída. Até a lâmpada ser transferida, o que é armazenado no registro de saída é emitido. Os pinos BLOCO são combinados, conectados ao terra através de um resistor de 1k, para manter os estágios de saída do HV5622 desligados até o início do programa no MK. O manual recomenda aplicar energia, fazer a primeira saída de dados e depois ligar os estágios de saída.
Controle de brilho
Para controlar o brilho do GRI, a fim de manter um contraste ótimo constante dos indicadores, é utilizada a saída BLOCK, na qual é fornecido um sinal PWM com uma frequência de 2500 Hz. Foi utilizada uma frequência suficientemente alta do sinal de controle PWM, o que garantiu a ausência de efeitos estroboscópicos, etc. /2.1.1.1278-03) acredita-se que uma pessoa não percebe a frequência de pulsações de iluminação acima de 300 Hz. Nesse caso, um excesso da frequência PWM em quase uma ordem fornece o nível adequado de conforto visual.
O efeito de uma mudança suave de números
Para obter o efeito visual de uma mudança suave de dígitos, é necessário alternar os dígitos antigos e novos alternadamente durante o tempo de alteração de um dígito para outro (geralmente 200-250 ms), e o tempo de gravação do dígito antigo deve diminuir e o novo deve aumentar. O algoritmo para alterar dígitos (alteração da sub-rotina ()) realiza 60 ciclos.
Ao iniciar o algoritmo de alteração de dígitos, o primeiro dígito é incluído 100% do tempo de ciclo e o segundo 0%. À medida que os ciclos passam, o tempo de ativação do primeiro dígito diminui de 100% para 0%, e o tempo de ativação do segundo dígito aumenta de 0% a 100%). Assim, o algoritmo para alterar suavemente os dígitos acima de 200 ms e 60 ciclos reduz o brilho do primeiro dígito para desligado e o segundo para o brilho total.No restante do segundo intervalo, os números são ativados contínua e estaticamente, e seu brilho geral é reduzido controlando a indicação geral liga / desliga do sinal PWM nos terminais BL.A Figura 7 mostra os sinais gravados pelo analisador lógico ao alterar números. Pode-se observar que, no início da sub-rotina de turno, o número antigo é ativado pelo tempo máximo e o novo é o mínimo, e durante o turno (aproximadamente 250 ms) o tempo de gravação do número antigo diminui para 0 e o novo cresce para o máximo. Visualmente, isso se manifesta como uma diminuição suave do brilho da figura antiga com o "descongelamento" simultâneo da nova.
Fig. 7. Gravando sinais de controle durante uma mudança suave de dígitos.Umagravação de vídeo do efeito é fornecida aqui.e aquie aqui:
Sincronização com servidores de horário
Tendo estudado a questão na Internet, concluí que basicamente os próprios autores dos programas escrevem (ou usam terceiros já prontos) rotinas para o protocolo NTP. Isso me surpreendeu um pouco, porque o Espressif SDK menciona funções internas para trabalhar em tempo real. A funcionalidade embutida fornece uma solicitação para servidores de horário (até três), correção de horário (de acordo com minhas observações - um pedido para um servidor de horário ocorre a cada 4-6 horas), conversão de um valor na forma de horário Unix para uma forma legível por humanos, correção de acordo com um determinado horário - zona.Dos recursos do uso da função de tempo real incorporada: para a primeira e várias solicitações de tempo subsequentes, zero é retornado e o diagnóstico "executar o rtc primeiro" é emitido.Algoritmo de inicialização do relógio
Quando o relógio é ativado, o sistema liga no modo cliente e é feita uma tentativa de conectar-se ao ponto de acesso com os detalhes armazenados.O ESP8266 lembra esses detalhes após uma conexão anterior bem-sucedida por conta própria na memória de serviço. Esse é um recurso implementado no SDK. Se esta conexão não der certo, é feita a próxima tentativa, mas o nome e a senha do ponto de acesso são lidos na EEPROM. A EEPROM também armazena o fuso horário (um número no intervalo -12 - +12), que é usado para converter corretamente a hora em um formato local.Se essa conexão também não for bem-sucedida, o modo operacional mudará para o "ponto de acesso" e a página da web do relógio ficará disponível no endereço padrão 192.168.4.1 para qualquer dispositivo conectado a esse ponto de acesso. No meu caso, o nome do ponto de acesso é ESP_D. Em um smartphone, tablet ou laptop, vá para a página do dispositivo, selecione um ponto de acesso e digite uma senha. Enquanto o modo de ponto de acesso estiver ativado, o modo de cliente estará desativado. Isso ocorre devido às peculiaridades do comportamento do sistema em uma situação em que a conexão com o ponto de acesso falhou. O sistema repetirá constantemente as tentativas de ingresso, será ocupado apenas com isso e praticamente não haverá recursos para mais nada. Externamente, isso se manifestará como uma inibição desagradável da interface. A aparência da página é mostrada na Fig. 8.
Fig. 8. Aparência da interface do relógio WEB e da linha de comando, demonstrando a resposta ao comando ping.Nesta página, todos os pontos de acesso encontrados são exibidos. Os pontos de acesso são classificados pela intensidade do sinal, a linha superior é o ponto de acesso com o sinal mais forte e provavelmente o mais próximo (ou seja, aquele ao qual você deve se conectar). Você deve inserir uma senha, selecionar um fuso horário e clicar em OK. O sistema ativará o modo "cliente" (simultaneamente com o "ponto de acesso") e tentará entrar. Se a conexão for bem-sucedida, os parâmetros serão armazenados na EEPROM. Se a conexão falhar, uma mensagem será exibida na página e você poderá tentar novamente a senha, etc.Após um login bem-sucedido na rede, o modo "ponto de acesso" será desativado e apenas o modo "cliente" permanecerá, ou seja, A página de exibição é acessível apenas a partir da rede interna.Para poder acessar o relógio pelo nome (no meu caso "esp"), é lançada a biblioteca NBNS, que fornece uma resposta através do protocolo NetBios. A biblioteca permite que o relógio responda a comandos como ping esp e acesse-os simplesmente pelo nome espPor razões que não estão claras para mim, esta é uma biblioteca maravilhosa que responde a uma solicitação de transmissão como "em que endereço é o" nome "?" e permitindo que você esqueça o procedimento sombrio de determinar o endereço IP do dispositivo de acordo com os dados internos do roteador (switch), ele é usado muito raramente. Quase todos os dispositivos no ESP8266 descritos na Internet não usam esse mecanismo simples e conveniente. A preguiça deve mover o progresso - mas, neste caso, não se move.Em seguida, inicia o ciclo principal do programa, no qual ocorre o seguinte:- A hora atual é interrogada e, quando os segundos passam, uma alteração na exibição da hora é iniciada.
- O sensor de luz é pesquisado e o ciclo de serviço do sinal PWM é ajustado, o que controla o brilho do relógio. O objetivo do ajuste é manter o contraste constante dos números ao alterar a iluminação da sala.
- VL53L0X. , 2 .
Experimentos mostraram que 2 metros estão em condições ideais quando uma folha de papel branco ou papel alumínio com um coeficiente de reflexão próximo à unidade é usada como refletor. Para objetos comuns com um coeficiente de reflexão imperfeito (tecido, pele humana, etc.), a distância da determinação segura é ligeiramente superior a 1 metro. Se o sensor indicar a presença de um objeto na frente do relógio, uma sub-rotina começará a exibir a temperatura externa atual, a umidade e a pressão do ar. Foram tomadas medidas para aumentar a imunidade a ruídos - o algoritmo mais simples “mais de 50% das operações” é usado. Isso significa que, por um intervalo de 800 ms, o alvo deve ser detectado a uma distância inferior a 1 metro em mais da metade das medições da faixa. Ao depurar, o sistema mostrou que geralmente são obtidas de 50 a 60 operações quando o alvo está no campo de visão do sensor.O sistema de detecção humana funciona apenas quando o alvo aparece no campo de visão. Para iniciar o show novamente, você precisa voltar e voltar. Isso é feito para remover a situação de que, enquanto estiver em pé na frente do relógio, o tempo todo, os parâmetros externos são exibidos.O sensor a laser VL53L0X usa um diodo laser IR emitindo no comprimento de onda de 940 nm, seguro para os olhos.O vídeo mostra a reação do sistema ao aparecimento de um obstáculo no campo de visão do localizador a laser:O plano inicial para acionar a exibição de dados externos era usar um chip de reconhecimento de voz. Para fazer isso, usei o chip WTK6900B02 (reconhecedor de comando de voz), gentilmente fornecido pela Sound Technologies. De acordo com a descrição, o microcircuito deve reconhecer uma dúzia de comandos de áudio e emitir um código binário correspondente ao comando recebido. Um pulso do microcircuito foi conectado a uma das saídas do ESP8266 e um manipulador de interrupção de hardware foi conectado a ele. Por interrupção de hardware, o fato do reconhecimento de um comando de voz é gravado. Vários comandos em inglês foram pré-gravados no chip que recebi. Eu treinei bastante na "pronúncia correta" dos comandos, para que sejam reconhecidos. Descobriu-se que não se deve falar com a pronúncia de Oxford, mas com sotaque chinês :)), bem alto.Apesar do tempo considerável gasto, não consegui obter um reconhecimento confiável dos comandos de voz. O melhor que obtive foi cerca de 50% de reconhecimento correto. Portanto, fui forçado a usar outro mecanismo para acionar a exibição de dados externos - o medidor de distância a laser VL53L0X.O programa principal do relógio deixou vestígios do uso do sistema de controle de voz.O programa também possui peças para leitura de dados do sensor ultravioleta VEML6070. O fato é que depurei o programa do relógio alternadamente em casa e no trabalho e tinha apenas um sensor MAX44009. Portanto, no trabalho, o sensor ultravioleta VEML6070 foi conectado ao ESP8266 e uma parte do programa foi escrita para determinar qual dos sensores está conectado no momento. Para descobrir o algoritmo de ajuste de contraste, isso acabou sendo suficiente, e eu não mudei nada na versão final do programa.Saída de dados para registros HV5622
Como mencionei acima, para controlar as lâmpadas de descarga de gás, são necessários microcircuitos capazes de trocar uma voltagem razoavelmente alta. Eu escolhi os chips HV5622, que são um registro de 32 bits com gravação sequencial e leitura paralela. Os cátodos das lâmpadas estão conectados ao terminal HV5622. Para inflamar um dígito específico, é necessário produzir 0. Para os dois primeiros HV5622 são conectados os cátodos de seis GRI, para o terceiro HV5622 são os separadores de pontos de horas-minutos e minutos-segundos e os cátodos da sétima lâmpada com caracteres especiais. Para incluir os dígitos necessários nas lâmpadas, um número de 32 bits deve ser exibido no registro, no qual o registro 1 (os dados dentro do HV5622 são invertidos) corresponde aos cátodos necessários das lâmpadas. O programa possui matrizes de dimensão 10 variáveis de 32 bits.Cada elemento dessa matriz contém um número binário com o log 1 em uma das posições, cuja saída para o registro levará à ignição do dígito desejado. Como cada microcircuito controla vários GDIs, para saída é necessário formar uma variável de 32 bits a partir de vários elementos, consistindo principalmente em 0 lógico, em que o log 1 corresponde aos dígitos necessários em cada lâmpada.Vale ressaltar que a decisão de usar matrizes para o controle de cátodos da GRI tem uma séria vantagem: se um erro foi cometido e as conclusões da GRI foram misturadas ao soldar fios das tomadas GRI às tomadas HV5622, para corrigi-lo, altere a constante no programa sem soldar nada. O número significativo e o layout rígido dos cabos HV5622 tornam a soldagem de dois fios adjacentes uma operação difícil.Para concluir todos os três registros, é necessário gerar 3 variáveis de 32 bits (96 bits no total). Não é razoável fazer isso com uma "alavancagem" - muito demorada e demorada.Felizmente, o ESP8266 incorpora um mecanismo de hardware (HSPI) para comunicação serial e o SDK tem funções de acesso a esse mecanismo. Com o lançamento desse mecanismo, eu tive que sofrer. A dificuldade era que não estava claro onde colocar variáveis de 32 bits para saída no modo HSPI. Para entender o mecanismo HSPI, usei um analisador lógico. Após uma série de experimentos, percebi que 96 bits são produzidos, no entanto, esse é o número de 32 bits desejado no início e dois números de 32 bits contendo lixo arbitrário. Pesquisando na Internet não deu nada, mas em que momento percebi que, se houver uma instrução como WRITE_PERI_REG (SPI_W0 (HSPI), d0); então você pode tentar escrever WRITE_PERI_REG (SPI_W1 (HSPI), d1); e ainda mais WRITE_PERI_REG (SPI_W2 (HSPI), d2); onde d0, d1, d2 são variáveis de 32 bits. I.e.
primeiro decomponha os dados nos registradores SPI_W0 - SPI_W2 e, em seguida, emita um comando para iniciar a troca. Também observo que o módulo HSPI pode gerar até 512 bits e existem apenas 16 registros: W0 - W15.O sinal LE, pelo qual os dados são transferidos para o registro de saída HV5622, é gerado programaticamente.Depuração do sistema
Não ousei depurar o sistema imediatamente com alta tensão total (230 volts) e fiz uma dúzia de LEDs com um indicador de depuração com uma tensão operacional de 5 volts. Após a depuração, quando eu tinha certeza de que os LEDs certos estavam acesos corretamente, o GRI foi montado nos painéis e um alto foi aplicado. Como resultado dessa sequência de depuração, nenhum chip ou lâmpada indicadora foi danificada :). Uma fotografia do nó usado para depuração é mostrada na Figura 9.
Figura 9. Foto do conjunto do LED de depuração.Um breve processo de depuração de vídeo aquiHabitação
A idéia original era criar uma caixa brutal feita de metal espesso, como cobre, latão ou bronze. No entanto, como a conexão Wi-Fi requer uma caixa dielétrica, na versão final apenas o painel frontal de metal grosso permanece. Uma pesquisa superficial na Internet de empresas que realizam gabinetes feitos sob medida rendeu um valor de cerca de 5000 r por gabinete. Na minha opinião, essa é uma quantia irracional nas circunstâncias atuais. Então eu peguei o prédio pronto (Gainta G2119C), comprei no caminho para a cabana na loja Shcherbinsky Chip-i-Deep e decidi, deixando a questão do painel frontal e possivelmente de outro prédio para mais tarde.
Apesar da falha na parte do caso, decidi declarar os resultados alcançados no artigo, acreditando que as soluções de circuito e software desenvolvidas e aplicadas seriam de interesse do público.
A aparência do caso hoje é apresentada na Fig. 10.

Figura 10. Aparência da caixa do relógioConclusão
O relógio está funcionando há mais de um ano, não houve falhas, as tarefas foram concluídas. Vou listar novamente os recursos distintivos da minha variante de relógio:
- Modo de exibição estática com o efeito simultâneo de uma mudança suave de números
- Usando chips HV5622 para controlar a GRI
- Os dados do HV5622 são gravados usando o mecanismo de hardware HSPI
- A hora exata é obtida dos servidores de hora exata da Internet.
- O acesso ao relógio é possível por nome da rede interna
- A instalação é necessária uma vez no primeiro início.
- A completa ausência de botões, alarmes, etc.
- Ajuste contínuo do brilho do brilho da GRI, a fim de manter um contraste constante da imagem nos limites determinados da mudança na luz ambiente
- O relógio reage à abordagem de uma pessoa e mostra a temperatura da rua, umidade, pressão do ar.
Estou satisfeito :)
→ O arquivo do programa está
aqui