Índice:

Gerador de função portátil em WiFi e Android: 10 etapas
Gerador de função portátil em WiFi e Android: 10 etapas

Vídeo: Gerador de função portátil em WiFi e Android: 10 etapas

Vídeo: Gerador de função portátil em WiFi e Android: 10 etapas
Vídeo: O BÁSICO SOBRE GERADORES DE FUNÇÃO | Eletrônica para Iniciantes #127 2024, Julho
Anonim
Gerador de função portátil em WiFi e Android
Gerador de função portátil em WiFi e Android
Gerador de função portátil em WiFi e Android
Gerador de função portátil em WiFi e Android
Gerador de função portátil em WiFi e Android
Gerador de função portátil em WiFi e Android
Gerador de função portátil em WiFi e Android
Gerador de função portátil em WiFi e Android

Perto do final do século 20, várias inovações tecnológicas surgiram, especialmente no campo das comunicações; mas não só. Para nós, usuários, consumidores e engenheiros vieram à tona o rápido desenvolvimento de dispositivos eletrônicos, que podem tornar nossas vidas muito mais fáceis: relógios inteligentes, casas inteligentes, smartphones etc.

Como tudo pode ser "inteligente" hoje em dia, decidi projetar um dispositivo superútil para fazer parte dos equipamentos eletrônicos essenciais de laboratório - Gerador de Função Portátil, controlável por smartphone baseado em sistema operacional Android via WiFi direto ou Rede de Área Local WiFi (WLAN)

Por que devemos construir este dispositivo?

A grande maioria dos equipamentos de teste é muito cara hoje em dia. E às vezes, esses dispositivos não são portáteis. Como solução para preços altos, falta de portabilidade e falta de acesso à rede do dispositivo, o dispositivo fornece gerador de forma de onda de canal duplo, que é realmente portátil e tem acesso irrestrito à rede - seja internet ou local.

E, claro, o dispositivo deve ser construído por causa do entusiasmo, obedecendo aos princípios do faça-você-mesmo - às vezes, apenas temos que fazer as coisas nós mesmos para nos sentirmos bem:)

Características principais

Fonte de energia

  • Conector USB Tipo A, para sistemas de fonte de alimentação e programação
  • Sistema completo de gerenciamento de bateria de íons de lítio - modos de carregamento e estáveis
  • Implementação de switch inteligente - sem necessidade de interruptor de alimentação
  • Fonte de alimentação dupla: + 3,3 V e -3,3 V para geração de forma de onda de tensão simétrica

Geração de forma de onda

  • Implementação do nível DC na cascata de saída - forma de onda polarizada entre os limites de tensão
  • Geração de forma de onda do tipo 4 baseada em DDS - Seno, triângulo, quadrado e DC
  • Suporte de frequência de até 10 MHz
  • Corrente de saída de até 80mA com disponibilidade de energia máxima de 500mW
  • Canais separados para geração de forma de onda - circuitos divididos baseados em AD9834

Comunicação

  • Implementação de ESP32 - Capacidades WiFi aplicáveis
  • Suporte TCP / IP completo por dispositivo gerador e smartphone Android
  • Capacidade de armazenar parâmetros do usuário para cada ciclo do dispositivo
  • Monitoramento de estado - ambos os sistemas estão cientes um do outro estado: FuncGen (vamos chamá-lo assim de agora em diante) e smartphone.

Interface de usuário

  • LCD de 20 x 4 caracteres com interface de dados simples de 4 bits
  • Aplicativo Android - controle completo do usuário sobre o dispositivo FuncGen
  • Circuito de campainha - feedback de som para o usuário

Etapa 1: Diagrama de blocos - Hardware

Diagrama de Bloco - Hardware
Diagrama de Bloco - Hardware
Diagrama de Bloco - Hardware
Diagrama de Bloco - Hardware

Unidade de microcontrolador - ATMEGA32L

Microcontrolador é um chip programável que consiste em todas as funcionalidades do computador que residem em um único chip eletrônico. No nosso caso, é o "cérebro" e um componente central do sistema. O objetivo do MCU é gerenciar todos os sistemas periféricos, lidar com a comunicação entre esses sistemas, controlar a operação do hardware e fornecer suporte completo para a interface do usuário e sua interação com um usuário real. Este projeto é baseado em ATMEGA32L MCU, que pode operar em 3,3V e uma frequência de 8MHz.

Comunicação SoC - ESP32

Este SoC (System on Chip) fornece suporte de comunicação completo para FuncGen - Acesso a recursos WiFi, incluindo comunicação direta, local ou pela Internet. Os objetivos do dispositivo são:

  • Lidando com a transmissão de dados entre o aplicativo Android e o dispositivo FuncGen
  • Gestão de mensagens de controle / dados
  • Suporte de configuração contínua cliente-servidor TCP / IP

Em nosso projeto, o SoC é espressif ESP32, que é muito popular para expandi-lo ainda mais:)

Sistema de gerenciamento de bateria de íon-lítio

A fim de transformar nosso dispositivo em um portátil, o dispositivo contém um circuito de carregamento de bateria de íon de lítio projetado. O circuito é baseado em MC73831 IC, com corrente de carga controlável por meio do ajuste do valor de um único resistor de programação (abordaremos este tópico na etapa Esquemas). A entrada da fonte de alimentação do dispositivo é um conector USB Tipo A.

Circuito Smart Switch

O circuito de controle de energia do dispositivo de chave inteligente fornece controle de software completo sobre a sequência de desligamento do dispositivo e a falta de uma chave seletora externa para o corte da tensão da bateria do dispositivo. Todas as operações de energia são feitas pressionando o botão e o software do MCU. Em alguns casos, seria necessário desligar o sistema: voltagem de bateria baixa, voltagem de entrada alta, erro de comunicação e assim por diante. O switch inteligente é baseado no IC do switch inteligente STM6601, que é barato e muito fácil de usar.

Unidade de fonte de alimentação principal

Esta unidade consiste em dois circuitos de fonte de alimentação acionados por bateria - + 3,3 V para todos os circuitos de alimentação digital / analógica e -3,3 V para saída simétrica FunGen em relação ao potencial de 0 V (ou seja, a forma de onda gerada pode ser definida em [-3,3 V: 3,3 V] região.

  • O circuito de alimentação principal é baseado no regulador de tensão linear LP3875-3.3 LDO (baixa queda) 1A.
  • O circuito de alimentação secundária é baseado no LM2262MX IC, que realiza a conversão de tensão negativa DC-DC via bomba de carga do capacitor - sistema no qual o IC é baseado.

Sistema de Geradores de Forma de Onda

O sistema foi projetado com ênfase em circuitos integrados separados DDS (síntese digital direta), que permitem o controle completo da geração da forma de onda pelo SPI (interface periférica serial) do MCU. Os circuitos que foram usados no projeto são Analog Devices AD9834 que podem fornecer diferentes tipos de formas de onda. Os desafios que precisamos enfrentar ao trabalhar com AD9834 são:

  • Amplitude da forma de onda fixa: a amplitude da forma de onda é controlada por módulo DAC externo
  • Sem consideração para o nível de deslocamento DC: Implementação de circuitos de soma com os valores de deslocamento DC desejados
  • Saídas separadas para onda quadrada e onda triangular / senoidal: Implementação de circuito de comutação de alta frequência, portanto, cada saída de canal único pode fornecer todas as formas de onda desejadas: seno, triângulo, quadrado e CC.

Visor de cristal líquido

O LCD é uma parte da IU (interface do usuário) e seu objetivo é permitir que o usuário entenda o que o dispositivo faz no modo de tempo real. Ele interage com o usuário em cada estado do dispositivo.

Campainha

Circuito gerador de tom simples para feedback adicional do dispositivo ao usuário.

Programador ISP integrado

Existe um problema persistente para todo engenheiro quando se trata de processo de programação: sempre há aquela pior necessidade de desmontar o produto para reprogramá-lo com um novo firmware. Para superar esse inconveniente, o programador AVR ISP foi conectado ao dispositivo por dentro, enquanto os dados USB e as linhas de energia são amarrados ao conector USB Tipo A do dispositivo. Nesta configuração, só precisamos conectar nosso FuncGen via cabo USB para programação ou carregamento!

Etapa 2: Diagrama de blocos - Rede

Diagrama de Bloco - Rede
Diagrama de Bloco - Rede

Gerador de função de canal duplo

Dispositivo principal. Aquele que revisamos na etapa anterior

ESP-WROOM-32

Sistema integrado no chip com recursos WiFi e BLE. O SoC é anexado à placa principal (vamos cobrir isso na etapa do esquema) por meio do módulo UART e atua como um transceptor de mensagem entre o dispositivo principal e o smartphone Android.

Rede local WiFi

O smartphone e o dispositivo se comunicam via WiFi direta ou rede local, com base na configuração do servidor / cliente TCP. Quando os dispositivos se reconhecem no WiFi, o dispositivo principal cria um servidor TCP com parâmetros apropriados e é capaz de enviar / receber mensagens. O dispositivo atua como um secundário para o smartphone. O dispositivo Android, por outro lado, se conecta ao servidor TCP como um dispositivo de rede do cliente, mas é considerado o principal transmissor de mensagens - smartphone é aquele que inicia o ciclo completo de comunicação: Enviando mensagem - recebendo resposta.

Smartphone Android

Dispositivo de smartphone baseado em sistema operacional Android que é executado no aplicativo FuncGen

Etapa 3: peças, ferramentas, IDE e lista de materiais

Peças, ferramentas, IDE e lista de materiais
Peças, ferramentas, IDE e lista de materiais
Peças, ferramentas, IDE e lista de materiais
Peças, ferramentas, IDE e lista de materiais
Peças, ferramentas, IDE e lista de materiais
Peças, ferramentas, IDE e lista de materiais

Lista de materiais (consulte a tabela XLS em anexo)

IU e conexões do sistema

  • 1 x 2004A Char-LCD 20x4 azul
  • 1 x conector USB tipo B
  • Conjunto de 1 x 10 Mini Micro JST XH 2,54 mm 4 pinos
  • 1 x 6pcs SW momentâneo

Pedido de PCB (de acordo com Seeed Studio)

Material Base FR-4

Nº de camadas 2 camadas

Quantidade de PCB 10

Nº de designs diferentes 1

Espessura PCB 1,6 mm

PCB Cor Azul

Acabamento de superfície HASL

Máscara de solda mínima Dam 0,4 mm ↑

Peso de cobre 1 onça

Tamanho mínimo do furo de perfuração 0,3 mm

Largura do traço / espaçamento 6/6 mil

Meios furos chapeados / Furos castanhos No

Controle de impedância não

Ferramentas

  • Pistola de cola quente
  • Pinças
  • Cortador
  • Fio ~ 22AWG para fins de manuseio de avarias
  • Ferro de soldar / estação
  • Lata de solda
  • Estação de retrabalho SMD (opcional)
  • Impressora 3D (opcional)
  • Extrusão de arquivo
  • Programador ISP AVR
  • Conversor USB para serial (opcional, para fins de depuração)

Ambiente de desenvolvimento integrado (IDE) e software

  • Autodesk EAGLE ou Cadence Schematic Editor / Allegro PCB Editor
  • OpenSCAD (opcional)
  • Ultimaker Cura (opcional)
  • Saleae Logic (para solução de problemas)
  • Atmel Studio 6.3 ou superior
  • Android Studio ou Eclipse IDE
  • Docklight Serial Monitor / outro software de monitoramento de porta COM
  • ProgISP para programação flash AVR ATMEGA32L

Etapa 4: Projeto de Hardware - Placa Principal

Projeto de Hardware - Placa Principal
Projeto de Hardware - Placa Principal
Projeto de Hardware - Placa Principal
Projeto de Hardware - Placa Principal
Projeto de Hardware - Placa Principal
Projeto de Hardware - Placa Principal

Circuito de gerenciamento de bateria

O circuito de carga da bateria é baseado no IC MCP7383, que nos permite selecionar uma corrente de carga desejada para a bateria de íons de lítio - 3,7 V com capacidade de 850mAh. A corrente de carga é definida programando o valor do resistor (R1) em nosso caso

R1 = 3KOhm, I (carga) = 400mA

A voltagem USB VBUS é filtrada por filtro π (C1, L3, C3) e atua como uma fonte de alimentação para o circuito de carga.

O circuito divisor de tensão (R2, R3) permite que o MCU indique se a fonte de alimentação USB externa está conectada ou não, fornecendo a seguinte tensão ao canal A / D do MCU:

V (indicação) ~ (2/3) V (BUS)

Como nosso A / D de ATMEGA32L é de 12 bits, podemos calcular a faixa digital:

A / D (faixa) = 4095 V (indicação) / V (REF).

A / D ∈ [14AH: FFFH]

Unidade de energia de switch inteligente

O circuito permite que o sistema controle o fornecimento de energia para cada bloco projetado tanto do botão de pressão quanto do software no MCU e é baseado no STM6601 Smart-Switch com opção POWER em vez de RESET. Os terminais que queremos considerar são estes:

  • PSHOLD - Linha de entrada, que define o estado do dispositivo: se for puxado para BAIXO, o dispositivo desativa todas as fontes de alimentação secundárias (+ 3,3 V e -3,3 V). Se mantido em HIGH - o dispositivo mantém o estado LIGADO.
  • nSR e nPB - linhas de entrada. Terminais de botão de pressão. Quando a borda descendente é detectada nesses pinos, o dispositivo tenta entrar no modo de ligar / desligar
  • nINT - Linha de saída. Puxado para BAIXO sempre que o botão é pressionado
  • EN - Linha de saída, é usada como habilitação de energia para as unidades de fonte de alimentação secundárias. Enquanto é mantido BAIXO, ambas as fontes de alimentação secundárias são desativadas

Existem algumas notas importantes antes de prosseguirmos com o design final:

  • O PSHOLD deve ser aumentado para 3,3 V, porque há casos em que os MCUs estão forçando todos os I / Os a estarem no estado HIGH-Z. Nesse caso, o estado de PSHOLD da MCU é desconhecido e pode afetar drasticamente o processo de programação do dispositivo.
  • O STM6601 deve ser pedido com uma opção de ajuste EN no toque longo, em vez da opção RESET (eu caí nessa).

Unidade de fonte de alimentação: + 3,3 V

Fonte de alimentação principal para todos os sistemas em nosso projeto. Quando a linha + 3,3 V é mantida no nível GND (ou seja, nenhuma tensão presente), todos os IC, exceto o interruptor inteligente, são desativados. O circuito é baseado em LDO LP-3875-3.3 IC, com capacidade de ser controlado pelo terminal EN e fornecer corrente de até 1A.

A fonte de alimentação para este circuito é a tensão da bateria, com indicador A / D conectado para detectar VBAT na configuração, semelhante ao circuito de detecção VBUS. Nesse caso, os cálculos diferem ligeiramente;

V (bateria para A / D) = 0,59 V (bateria); A / D (intervalo) ∈ [000H: C03H]

Unidade de fonte de alimentação: -3,3 V

O circuito de alimentação de tensão negativa nos permite gerar formas de onda simétricas com um fator DC de 0 V (ou seja, o valor médio da forma de onda pode ser 0 V). Este circuito é baseado no conversor LM2662MX IC - DC / DC que opera em um método de "bomba de carga". A corrente de saída máxima do circuito é 200mA, o que é suficiente para nossos requisitos de projeto - estamos limitados com a corrente de saída de 80mA de cada canal do dispositivo.

O IC executa todo o trabalho necessário, portanto, apenas as peças que precisamos conectar são dois capacitores eletrolíticos: C33 para chaveamento e C34 para desvio de linha de -3,3 V (considerações de redução de ruído). A frequência de chaveamento é insignificante no projeto se estivermos colocando o circuito longe o suficiente das partes de geração de forma de onda (discutiremos isso na etapa de Layout do PCB).

Unidade de microcontrolador - MCU

Este é o gerente e o CEO do nosso sistema - controle, gerenciamento de rede, transmissão de mensagens e suporte de IU - tudo é feito por MCU.

O MCU escolhido é Atmel ATMEGA32L, onde L significa operação com tensão suportada ∈ [2,7 V: 5,5 V]. Em nosso caso, a tensão de operação é + 3,3V.

Vamos considerar os principais blocos de operação, que é necessário entender, trabalhando com MCU em nosso projeto:

  • Oscilador externo - é um componente opcional, uma vez que estamos interessados na frequência de operação de 8MHz
  • Controle periférico, rede SPI - Todos os dispositivos periféricos (exceto ESP32) estão se comunicando com MCU via SPI. Existem três linhas compartilhadas para todos os dispositivos (SCK, MOSI, MISO) e cada circuito periférico tem sua linha CS (Chip Select) dedicada. Os dispositivos SPI que fazem parte do dispositivo:

    1. D / A para controle de amplitude - Canal A
    2. D / A para controle de amplitude - Canal B
    3. Dispositivo AD9834 - Canal A
    4. Dispositivo AD9834 - Canal B
    5. D / A para controle de tensão de polarização - Canal A
    6. D / A para controle de tensão de polarização - Canal B
    7. Potenciômetro digital para configurações de brilho / contraste do LCD
  • Suporte para LCD - Como o LCD é um display genérico de 20 x 4 caracteres, estamos usando interface de 4 bits (Linhas D7: D4), pinos de controle (Linhas RS, E) e controle de brilho / contraste (Linhas V0 e Ânodo)
  • Suporte a LED RGB - Este módulo é opcional, mas há um conector de cátodo RGB LED comum com resistores apropriados, conectado ao MCU.
  • Controle de energia - o MCU realiza o monitoramento do sistema de energia no modo de tempo real e lida com todos os eventos de energia necessários:

    1. VBAT_ADC - Monitoramento da tensão da bateria e determinação de seu estado (Canal ADC0)
    2. PWR_IND - Indicação de conexão de fonte de alimentação externa (Canal ADC1)
    3. PS_HOLD - Linha de habilitação de energia primária para todos os sistemas definidos. Quando é puxado para baixo pelo MCU, o dispositivo é desligado
    4. Interromper o terminal do interruptor inteligente - monitoramento do estado do botão de pressão
  • Gerenciamento de rede WiFi - ESP32: MCU se comunica com ESP32 via interface UART. Uma vez que 8 MHz nos permite implementar a taxa de bauds de 115200 com um erro relativamente pequeno, podemos usar ESP32 no circuito sem pré-definições de mudanças na taxa de bauds.

Programador ISP AVR

Nosso MCU é programado via SPI com linha de reinicialização (/ RST) e deve ser puxado para ALTO para uma operação adequada (caso contrário - o MCU se encontrará em um estado de reinicialização para sempre).

Para permitir que o dispositivo seja programado e carregado via USB, anexei o programador AVR ISP (produto de pequeno porte, comprado no eBay). Para manter o suporte USB completo do dispositivo, é necessário ligar os terminais USB Tipo-A (D +, D-, VBUS e GND) ao dispositivo AVR ISP.

Circuito de geração de forma de onda

O núcleo do dispositivo são esses circuitos. AD9834 é um dispositivo DDS de baixa potência que nos fornece todas as formas de onda que gostaríamos de recuperar do sistema. Os circuitos contêm dois ICs AD9834 independentes com osciladores externos separados de 50 MHz (como pode ser visto nos esquemas). A razão para o oscilador separado é uma consideração de redução de ruído dos circuitos digitais, então a decisão foi lidar com linhas adequadas de 50 MHz com osciladores colocados adjacentes ao AD9834.

Agora vamos dar uma olhada em alguma matemática:

Como o dispositivo DDS opera na tecnologia Phase Wheel com valor de saída mantido em um registro de 28 bits, podemos descrever a geração da forma de onda matematicamente:

dP (fase) = ωdt; ω = P '= 2πf; f (AD9834) = ΔP * f (clk) / 2 ^ 28; ΔP ∈ [0: 2 ^ 28 - 1]

E de acordo com a folha de dados AD9834, levando em consideração a frequência máxima, a resolução da frequência de saída pode ser obtida:

Δf = k * f (oscilador) / f (máximo) = 0,28 * 50M / 28M = 0,187 [Hz]

Os ICs AD9834 fornecem uma saída de corrente analógica para onda triangular / senoidal (terminal IOUT) e saída digital para onda quadrada (terminal SIGN_OUT). O uso do bit de sinal é um pouco complicado, mas somos capazes de lidar com isso - Cada vez que o DDS ultrapassa o limite do valor de comparação, SIGN_OUT se comporta de acordo. Um resistor de 200 ohm é conectado à saída de cada canal, de modo que a tensão de saída teria valores significativos:

I (canal único) = V (saída) / R (seleção de tensão); V (saída) = R (VS) * I (SS) = 200I (SS) [A]

Circuitos de controle de amplitude (D / A)

De acordo com a folha de dados do AD9834, sua amplitude pode ser ajustada fornecendo corrente ao sistema de escala completa DDS, portanto, com a ajuda do IC D / A duplo, podemos controlar a amplitude do sinal de saída ajustando essa corrente. Mais uma vez, alguma matemática:

I (escala completa) = 18 * (V_REF - V_DAC) / R_SET [A]

De acordo com os esquemas e colocando alguns números na equação:

I (escala completa) = 3,86 - 1,17 * V_DAC [A]

O módulo D / A usado no projeto é MCP4922 de 12 bits, quando a corrente está na faixa de [0mA: 3,86mA] e a função de amplitude linear é:

V (seleção de amplitude) = 1 - [V (D / A) / (2 ^ 12 - 1)]

Circuito de Multiplexação de Forma de Onda

As saídas de geração de onda quadrada e seno / triangular são separadas no AD9834, portanto, temos que usar um circuito de multiplexação de alta velocidade para ambas as saídas, a fim de permitir a recuperação de todas as formas de onda desejadas de um único canal separado. O multiplexador IC é um switch analógico ADG836L com uma resistência muito baixa (~ 0,5Ohm).

A tabela de seleção que MCU está usando para as saídas como ela é:

Seleção de modo [D2: D1] | Canal de saída A | Canal de Saída B

00 | Seno / Triângulo | Seno / Triângulo 01 | Seno / Triângulo | Square 10 | Square | Seno / Triângulo 11 | Square | Quadrado

Circuitos de controle de tensão de polarização (D / A)

Um dos principais recursos do gerador de forma de onda é controlar seu valor DC. Neste projeto, isso é feito configurando a tensão D / A desejada para cada canal, e essas tensões de polarização são somadas com saídas multiplexadas que discutimos um pouco antes.

A tensão recuperada de D / A está na faixa [0V: + 3,3V], portanto, há um circuito baseado em op-amp que mapeia a faixa D / A para [-3,3V: + 3,3V], permitindo que o dispositivo forneça a faixa completa do componente DC desejado. Vamos pular a matemática analítica chata e nos concentrar apenas nos resultados finais:

V_OUT (canal B) = V_BIAS_B (+) - V_BIAS_B (-); V_OUT (canal A) = V_BIAS_A (+) - V_BIAS_A (-)

Agora, a faixa do componente DC está localizada na faixa [-3,3 V: + 3,3 V].

Circuitos somadores - componentes DC e saídas de forma de onda

Neste ponto, temos tudo o que precisamos para a saída adequada do dispositivo - Bias Voltage (componente DC) na faixa de tensão total e saídas AD9834 multiplexadas. Faremos isso usando o amplificador somador - configuração op-amp

Vamos pular a matemática mais uma vez (já cobrimos muita abordagem matemática) e anotar o resultado final da saída do amplificador somador:

V (saída do dispositivo) = V (polarização positiva) - V (polarização negativa) - V (saída multiplexada) [V]

Portanto:

V_OUT = ΔV_BIAS - V_AD9834 [V]

Os conectores de saída do tipo BNC são conectados com resistores de seleção (R54, R55; R56, R57). A razão para isso é que, no caso de o design ser disfuncional, ainda podemos selecionar se gostaríamos de usar o amplificador somador.

Nota importante: As redes de resistores dos amplificadores somadores finais podem ser ajustadas por um projetista, a fim de alterar a amplitude máxima que pode ser recuperada do dispositivo. No meu caso, todos os amplificadores compartilham o mesmo ganho = 1, portanto, a amplitude máxima do buffer é 0,7 Vpp para o triângulo / onda senoidal e 3,3 Vpp para a onda quadrada. A abordagem matemática específica pode ser encontrada entre as imagens anexadas da etapa.

ESP32 como módulo externo

MCU se comunica com ESP32 via interface UART. Como eu queria meu próprio PCB para o ESP32, existem 4 terminais disponíveis para conectar: VCC, RX, TX, GND. J7 é um conector de interface entre PCBs e ESP32 será alocado como módulo externo dentro do dispositivo.

Interface do usuário - LCD e alto-falante

O LCD usado é um display genérico de 20 x 4 caracteres com uma interface de 4 bits. Como pode ser visto pelo design, há um potenciômetro digital SPI conectado aos terminais "A" e "V0" do LCD - sua finalidade é ajustar brilho e contraste do módulo LCD programaticamente.

O alto-falante fornece saída de som para o usuário por meio da geração de onda quadrada simples do MCU. O BJT T1 controla a corrente através do alto-falante que pode estar apenas em dois estados - ON / OFF.

Etapa 5: Projeto de Hardware - Módulo ESP32

Projeto de Hardware - Módulo ESP32
Projeto de Hardware - Módulo ESP32

ESP32 é usado como um módulo externo para o PCB principal. A comunicação do dispositivo é baseada em comandos AT, que estão disponíveis no firmware de um dispositivo genérico.

Não há muito a expandir neste design, mas existem algumas notas para o design:

  • Para o tratamento de falhas ao usar o módulo UART adequado do ESP32, anexei três resistores de seleção para as linhas TX e RX. (0 ohm para cada um). Para configuração padrão, o módulo UART2 é usado para comandos AT (R4, R7 deve ser soldado)
  • O dispositivo tem saída de 4 linhas - VCC, GND, TX, RX.
  • Os pinos IO0 e EN avaliam a operação do dispositivo e devem ser projetados conforme fornecido nos esquemas

Todos os recursos de PCB que abordaremos na etapa a seguir.

Etapa 6: Layout de PCB

Layout PCB
Layout PCB
Layout PCB
Layout PCB
Layout PCB
Layout PCB

Os objetivos de projetar um PCB

  1. Crie um sistema embarcado para todos os circuitos integrados na mesma placa
  2. Melhore o desempenho do dispositivo através do design de um único PCB principal
  3. Redução de custos - se você gostaria de consultar os preços, projetos de baixo custo são REALMENTE baixos
  4. Minimize o tamanho da placa eletrônica
  5. Fácil de solucionar problemas - Podemos usar TPs (pontos de teste) para cada possível linha com defeito.

Parâmetros técnicos

Ambos os PCBs: placa principal e ESP32 compartilham as mesmas características para o processo de fabricação - baixo custo e operacional para nossos propósitos. Vamos ver eles:

A - Placa Principal

  • Tamanho: 10cm x 5,8cm
  • Número de camadas: 2
  • Espessura do PCB: 1,6 mm
  • Espaço mínimo de rastreamento / largura: 6 / 6mil
  • Diâmetro mínimo do orifício via: 0,3 mm
  • Cobre até a borda da distância mínima do PCB: 20mil
  • Acabamento de superfície: HASL (tipo barato de cor prata muito bonita)

B - Placa Principal

  • Tamanho: 3cm x 4cm
  • Número de camadas: 2
  • Espessura do PCB: 1,6 mm
  • Espaço mínimo de rastreamento / largura: 6 / 6mil
  • Diâmetro mínimo do orifício via: 0,3 mm
  • Cobre até a borda da distância mínima do PCB: 20mil
  • Acabamento de superfície: HASL

Etapa 7: Gabinete 3D

Caixa 3D
Caixa 3D

Eu não fiz o design sozinho, porque na época eu estava persuadindo esse dispositivo a funcionar, então eu não estava ciente de todos os fundamentos da impressão 3D. Portanto, usei um projeto SCAD da Thingiverse e anexei diferentes aberturas aos limites, de acordo com as especificações do meu dispositivo.

  1. Dispositivo de impressão: Creality Ender-3
  2. Tipo de cama: vidro, 5 mm de espessura
  3. Diâmetro do filamento: 1,75 mm
  4. Tipo de filamento: PLA +
  5. Diâmetro do bico: 0,4 mm
  6. Velocidade inicial: 20 mm / s
  7. Velocidade média: 65mm / seg
  8. Suporte: N / A
  9. Infill: 25%
  10. Temperatura:

    • Cama: 60 (oC)
    • Bocal: 215 (oC)
  11. Cor do Filamento: Preto
  12. Número total de aberturas: 5
  13. Número de painéis de gabinete: 4

    • TOP Shell
    • Shell Inferior
    • Painel frontal
    • Painel Traseiro

Etapa 8: Implementação de software - MCU

Implementação de software - MCU
Implementação de software - MCU
Implementação de software - MCU
Implementação de software - MCU
Implementação de software - MCU
Implementação de software - MCU

GitHub Link para Android e código Atmega32

Algoritmo de Software

Todas as operações executadas pelo MCU são descritas nos fluxogramas anexados. Além disso, existe um código anexo para o projeto. Vamos cobrir as especificações do software:

Energizar

Nesta fase, o MCU realiza todas as sequências de inicialização junto com a determinação do tipo de comunicação armazenado com o dispositivo Android: Comunicação direta de rede WiFi ou WLAN - esses dados são armazenados na EEPROM. O usuário pode redefinir o tipo de pareamento do dispositivo Android neste estágio.

Emparelhamento direto de dispositivos Android

Este tipo de emparelhamento é baseado na criação da rede WiFi pelo dispositivo FuncGen. Ele criará um AP (Ponto de Acesso) e um servidor TCP em um IP de dispositivo local com um SSID (nome de rede WiFi) específico e um número de porta específico. O dispositivo deve manter o estado - aberto para conexões.

Quando o dispositivo Android está conectado ao FuncGen, o MCU entra no modo ATIVO e responde de acordo com as instruções do usuário do dispositivo Android.

Emparelhamento WLAN

Para se comunicar em uma rede WiFi local, o MCU deve fornecer comandos para o ESP32 criar AP, comunicar-se com o dispositivo Android e trocar os dados de rede cruciais:

  • O dispositivo Android recebe da FuncGen seu endereço MAC, armazena-o na memória.
  • O dispositivo FuncGen recebe os parâmetros WLAN selecionados do dispositivo Android: SSID, tipo de segurança e senha e os armazena na EEPROM.

Quando os dispositivos estão realmente conectados à mesma WLAN, o dispositivo Android irá procurar o FuncGen verificando todos os endereços MAC dos dispositivos conectados à WLAN. Quando o dispositivo Android determina a correspondência de MAC, ele tenta se comunicar.

Conexão e manipulação de estado - MCU

Quando os dispositivos se comunicam entre si, o protocolo (consulte a etapa pré-final) permanece o mesmo e o fluxograma é o mesmo.

Monitoramento do estado do dispositivo

A interrupção temporizada fornece ao MCU os detalhes necessários para o tratamento do estado. A cada ciclo de interrupção do temporizador, a seguinte lista de parâmetros é atualizada:

  • Fonte de alimentação externa - Ligado / Desligado
  • Estado de tensão da bateria
  • Atualização da IU para cada personalização
  • Botão de pressão: pressionado / não pressionado

Etapa 9: Implementação de software - Aplicativo Android

Implementação de software - aplicativo Android
Implementação de software - aplicativo Android
Implementação de software - aplicativo Android
Implementação de software - aplicativo Android
Implementação de software - aplicativo Android
Implementação de software - aplicativo Android
Implementação de software - aplicativo Android
Implementação de software - aplicativo Android

O aplicativo Android é escrito no estilo Java-Android. Tentarei explicá-lo da mesma maneira que as etapas anteriores - dividindo o algoritmo em blocos de código separados.

Sequência de inicialização

Primeira sequência do dispositivo. Aqui, o logotipo do aplicativo é apresentado junto com a ativação dos módulos GPS e WiFi do dispositivo Android (não se preocupe, o GPS é necessário apenas para a varredura de redes WiFi adequadas).

Menu principal

Depois que o aplicativo for inicializado, quatro botões aparecerão na tela. Ação dos botões:

  1. CONEXÃO DIRETA: Inicializando a conexão ao AP da FuncGen pelo SSID de IOT_FUNCGEN. Se a conexão for bem-sucedida, o dispositivo entra no modo UI principal.
  2. CONEXÃO WIFI: O dispositivo verifica se há parâmetros de dados armazenados na memória: wifi.txt, mac.txt. Se não houver dados armazenados, o dispositivo rejeitará a solicitação do usuário e fornecerá uma mensagem pop-up informando que o emparelhamento WLAN deve ser feito primeiro.
  3. EMPARELHAMENTO: Comunicação com FuncGen da mesma forma que CONEXÃO DIRETA, mas em vez de troca contínua de mensagens, há um único handshake. O dispositivo Android verifica se já está conectado à rede WiFi e solicita que o usuário insira a senha. Se a reconexão for bem-sucedida, o dispositivo Android armazenará o SSID e a senha no arquivo wifi.txt. Após uma comunicação bem-sucedida com FuncGen, ele armazena o endereço MAC recebido no arquivo mac.txt.
  4. Saída: Já disse o suficiente:)

Gerenciador de varredura WiFi

Eu queria que o aplicativo estivesse totalmente operacional e sem ajustes fora do aplicativo. Portanto, projetei o WiFi Scanner, que realiza todas as operações necessárias para se conectar à rede WiFi com uma chave de acesso e SSID conhecidos.

Transmissão de dados e comunicação TCP

Este é o bloco de código principal do aplicativo. Para todas as unidades UI existe uma mensagem definida em um formato específico (etapa pré-final), que força o FuncGen a fornecer a saída desejada para os canais. Existem três tipos de campos de IU em atividade:

  1. Barras de busca: aqui definimos a faixa real dos parâmetros de saída FuncGen

    1. Amplitude
    2. DC Offset
    3. Brilho do LCD
    4. Contraste LCD
  2. Edição de texto: para manter os valores inteiros bem definidos e precisos, a entrada de frequência é feita por meio de caixas de texto apenas com números
  3. Botões: Seleção de parâmetros das listas disponíveis:

    1. Tipo de forma de onda
      1. Seno
      2. Triângulo
      3. DC
      4. Quadrado
      5. DESLIGADO
    2. Obter informação

      1. Status da bateria (porcentagem)
      2. Status AC (fonte de alimentação externa)
    3. Opção de inicialização (para FuncGen MCU)

      1. Configuração de fábrica
      2. Reiniciar
      3. Desligar
      4. Direto - reinicie com o modo de emparelhamento direto
      5. WLAN - Reinicie com o modo de pareamento WLAN
    4. Sair para o menu principal: disse o suficiente:)

Etapa 10: Teste

Recomendado: