Tabla de contenido:
- Paso 1: Diagrama de bloques - Hardware
- Paso 2: Diagrama de bloques - Redes
- Paso 3: Piezas, herramientas, IDE y lista de materiales
- Paso 4: Diseño de hardware: placa principal
- Paso 5: Diseño de hardware - Módulo ESP32
- Paso 6: Diseño de PCB
- Paso 7: recinto 3D
- Paso 8: Implementación de software - MCU
- Paso 9: Implementación del software - Aplicación de Android
- Paso 10: Prueba
Video: Generador de funciones portátil en WiFi y Android: 10 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
Hacia finales del siglo XX, surgieron diversas innovaciones tecnológicas, especialmente en el campo de las comunicaciones; pero no solo. Para nosotros, usuarios, consumidores e ingenieros salieron a la luz el rápido desarrollo de dispositivos electrónicos, que pueden hacernos la vida mucho más fácil: relojes inteligentes, hogares inteligentes, teléfonos inteligentes, etc.
Dado que todo puede ser "inteligente" hoy en día, he decidido diseñar un dispositivo súper útil para que forme parte del equipo de laboratorio electrónico esencial: generador de funciones portátil, controlable por un teléfono inteligente con sistema operativo Android a través de WiFi directo o red de área local WiFi (WLAN).
¿Por qué deberíamos construir este dispositivo?
La gran mayoría de los equipos de prueba son bastante caros hoy en día. Y, a veces, estos dispositivos no son portátiles. Como solución para los altos precios, la falta de portabilidad y la falta de acceso a la red del dispositivo, el dispositivo proporciona un generador de forma de onda de doble canal, que es de hecho portátil y tiene un acceso sin restricciones a la red, ya sea de Internet o local.
Y, por supuesto, el dispositivo debe construirse con entusiasmo, obedeciendo los principios del bricolaje: a veces solo tenemos que hacer las cosas nosotros mismos para sentirnos bien:)
Características clave
Fuente de alimentación
- Conector USB tipo A, tanto para sistemas de alimentación como para programación
- Sistema completo de gestión de baterías de iones de litio: modos de carga y estables
- Implementación de Smart Switch: no es necesario un interruptor de conmutación de energía
- Fuente de alimentación dual: + 3.3V y -3.3V para generación de forma de onda de voltaje simétrico
Generación de forma de onda
- Implementación del nivel de CC en la cascada de salida: forma de onda polarizada entre los límites de voltaje
- Generación de formas de onda de 4 tipos basadas en DDS: sinusoidal, triangular, cuadrada y CC
- Soporte de frecuencia de hasta 10 MHz
- Corriente de salida de hasta 80 mA con disponibilidad de potencia máxima de 500 mW
- Canales separados para la generación de formas de onda: circuitos divididos basados en AD9834
Comunicación
- Implementación de ESP32 - Capacidades WiFi aplicables
- Soporte completo de TCP / IP por dispositivo generador y teléfono inteligente Android
- Capacidad para almacenar parámetros de usuario para cada ciclo del dispositivo
- Monitoreo de estado: ambos sistemas conocen el estado del otro: FuncGen (llamémoslo así de ahora en adelante) y teléfono inteligente.
Interfaz de usuario
- LCD de 20 x 4 caracteres con interfaz de datos simple de 4 bits
- Aplicación de Android: control completo del usuario sobre el dispositivo FuncGen
- Circuito de zumbador: respuesta sonora al usuario
Paso 1: Diagrama de bloques - Hardware
Unidad de microcontrolador - ATMEGA32L
El microcontrolador es un chip programable que consta de toda la funcionalidad de la computadora que reside en un solo chip electrónico. En nuestro caso, es el "cerebro" y un componente central del sistema. El propósito de la MCU es administrar todos los sistemas periféricos, manejar la comunicación entre estos sistemas, controlar el funcionamiento del hardware y brindar soporte completo para la interfaz de usuario y su interacción con un usuario real. Este proyecto está basado en ATMEGA32L MCU, que puede operar en 3.3V y una frecuencia de 8MHz.
SoC de comunicación - ESP32
Este SoC (System on Chip) proporciona un soporte de comunicación completo para FuncGen: acceso a las capacidades de WiFi, incluida la comunicación directa, local o por Internet. Los propósitos del dispositivo son:
- Manejo de la transmisión de datos entre la aplicación de Android y el dispositivo FuncGen
- Gestión de mensajes de control / datos
- Soporte de configuración cliente-servidor TCP / IP continua
En nuestro proyecto, el SoC es espressif ESP32, que es demasiado popular para expandirlo aún más:)
Sistema de gestión de baterías de iones de litio
Para transformar nuestro dispositivo en uno portátil, el dispositivo contiene un circuito de carga de batería Li-Ion diseñado. El circuito se basa en MC73831 IC, con corriente de carga controlable mediante el ajuste del valor de una sola resistencia de programación (cubriremos este tema en el paso Esquemas). La entrada de la fuente de alimentación del dispositivo es un conector USB tipo A.
Circuito de interruptor inteligente
El circuito de control de energía del dispositivo de interruptor inteligente proporciona un control de software completo sobre la secuencia de apagado del dispositivo y la falta de necesidad de un interruptor de palanca externo para el corte de voltaje de la batería del dispositivo. Todas las operaciones de energía se realizan presionando el botón pulsador y el software de MCU. En algunos casos, sería necesario apagar el sistema: voltaje de batería bajo, voltaje de entrada alto, error de comunicación, etc. El interruptor inteligente se basa en el IC del interruptor inteligente STM6601, que es barato y muy fácil de usar.
Unidad de fuente de alimentación principal
Esta unidad consta de dos circuitos de alimentación alimentados por batería: + 3,3 V para todos los circuitos de alimentación digitales / analógicos y -3,3 V para la salida simétrica FunGen en relación con el potencial de 0 V (es decir, la forma de onda generada se puede configurar en [-3,3 V: 3,3 V] región.
- El circuito de suministro principal se basa en el regulador de voltaje lineal LP3875-3.3 LDO (baja caída) 1A.
- El circuito de suministro secundario se basa en LM2262MX IC, que realiza la conversión de voltaje negativo CC-CC a través de condensador-bomba de carga, sistema en el que se basa IC.
Sistema de generadores de forma de onda
El sistema fue diseñado con énfasis en circuitos integrados DDS (síntesis digital directa) separados, que permiten un control completo de la generación de formas de onda mediante SPI (interfaz periférica en serie) de MCU. Los circuitos que se utilizaron en el diseño son dispositivos analógicos AD9834 que pueden proporcionar diferentes tipos de formas de onda. Los desafíos que debemos enfrentar al trabajar con AD9834 son:
- Amplitud de forma de onda fija: la amplitud de la forma de onda se controla mediante un módulo DAC externo
- No se tiene en cuenta el nivel de compensación de CC: implementación de circuitos sumadores con los valores de compensación de CC deseados
- Salidas separadas para onda cuadrada y onda triangular / sinusoidal: implementación de circuito de conmutación de alta frecuencia, por lo que cada salida de canal puede proporcionar toda la forma de onda deseada: sinusoidal, triangular, cuadrada y CC.
Pantalla de cristal líquido
La pantalla LCD es parte de la IU (interfaz de usuario) y su propósito es permitir que el usuario comprenda lo que hace el dispositivo en modo de tiempo real. Interactúa con el usuario en cada estado del dispositivo.
Zumbador
Circuito generador de tonos simple para retroalimentación adicional del dispositivo al usuario.
Programador ISP integrado
Existe un problema persistente para todos los ingenieros cuando se trata del proceso de programación: siempre existe la peor necesidad de desmontar el producto para reprogramarlo con un nuevo firmware. Para superar este inconveniente, el programador AVR ISP se conectó al dispositivo desde el interior, mientras que los datos USB y las líneas eléctricas están vinculados al conector USB Tipo-A del dispositivo. En esta configuración, ¡solo necesitamos conectar nuestro FuncGen a través de un cable USB para programar o cargar!
Paso 2: Diagrama de bloques - Redes
Generador de funciones de doble canal
Dispositivo principal. El que revisamos en el paso anterior
ESP-WROOM-32
Sistema integrado en chip con capacidades WiFi y BLE. El SoC está conectado a la placa principal (cubriremos esto en el paso de los esquemas) a través del módulo UART y actúa como un transceptor de mensajes entre el dispositivo principal y el teléfono inteligente Android.
Red local WiFi
El teléfono inteligente y el dispositivo se comunicarán a través de WiFi directo o red de área local, según la configuración del servidor / cliente TCP. Cuando los dispositivos se reconocen entre sí en el WiFi, el dispositivo principal crea un servidor TCP con los parámetros adecuados y puede enviar / recibir mensajes. El dispositivo actúa como secundario del teléfono inteligente. El dispositivo Android, por otro lado, se conecta al servidor TCP como un dispositivo de red del cliente, pero se considera como transmisor de mensajes principal: el teléfono inteligente es el que inicia el ciclo completo de comunicación: envío de mensaje - recepción de respuesta.
Smartphone Android
Dispositivo de teléfono inteligente basado en el sistema operativo Android que se ejecuta en la aplicación FuncGen
Paso 3: Piezas, herramientas, IDE y lista de materiales
Lista de materiales (ver tabla XLS adjunta)
Interfaz de usuario y conexiones del sistema
- 1 x 2004A Char-LCD 20x4 azul
- 1 x conector USB tipo B
- 1 x 10 Juego Mini Micro JST XH 2.54mm 4 Pin
- 1 x 6 piezas momentáneo SW
Pedido de PCB (según Seeed Studio)
Material base FR-4
No de capas 2 capas
Cantidad de PCB 10
No. de diseños diferentes 1
Espesor de PCB 1.6 mm
PCB Color Azul
Acabado superficial HASL
Presa de máscara de soldadura mínima 0,4 mm ↑
Peso de cobre 1 oz
Tamaño mínimo del orificio de perforación 0,3 mm
Ancho de trazo / espaciado 6/6 mil
Agujeros medios plateados / Agujeros alisados No
Control de impedancia No
Instrumentos
- Pistola de silicona
- Pinzas
- Cortador
- ~ Cable 22AWG para fines de manejo de fallas
- Soldador / estación
- Estaño para soldar
- Estación de retrabajo SMD (opcional)
- Impresora 3D (opcional)
- Archivo de extrusión
- Programador AVR ISP
- Convertidor de USB a serie (opcional, con fines de depuración)
Entorno de desarrollo integrado (IDE) y software
- Autodesk EAGLE o editor de esquemas de cadencia / editor de PCB Allegro
- OpenSCAD (opcional)
- Ultimaker Cura (opcional)
- Saleae Logic (para solucionar problemas)
- Atmel Studio 6.3 o superior
- Android Studio o Eclipse IDE
- Monitor serial Docklight / otro software de monitoreo de puertos COM
- ProgISP para programación flash AVR ATMEGA32L
Paso 4: Diseño de hardware: placa principal
Circuito de gestión de la batería
El circuito de carga de la batería se basa en MCP7383 IC, que nos permite seleccionar la corriente de carga deseada para la batería de Li-Ion - 3.7V con capacidad de 850mAh. La corriente de carga se establece programando el valor de la resistencia (R1) en nuestro caso
R1 = 3KOhm, I (carga) = 400mA
El voltaje USB VBUS se filtra mediante un filtro π (C1, L3, C3) y actúa como una fuente de alimentación para el circuito de carga.
El circuito divisor de voltaje (R2, R3) permite que MCU indique si la fuente de alimentación USB externa está conectada o no, proporcionando el siguiente voltaje al canal MCU A / D:
V (indicación) ~ (2/3) V (BUS)
Dado que nuestro A / D de ATMEGA32L es de 12 bits, podemos calcular el rango digital:
A / D (rango) = 4095V (indicación) / V (REF).
A / D ∈ [14AH: FFFH]
Unidad de potencia de interruptor inteligente
El circuito permite que el sistema controle la fuente de alimentación de cada bloque diseñado, tanto desde el botón pulsador como desde el software en la MCU, y se basa en el interruptor inteligente STM6601 con opción de ENCENDIDO en lugar de RESET. Los terminales que queremos considerar son estos:
- PSHOLD - Línea de entrada, que define el estado del dispositivo: si se tira a BAJO, el dispositivo deshabilita todas las unidades de fuente de alimentación secundaria (+ 3.3V y -3.3V). Si se mantiene en ALTO, el dispositivo mantiene el estado ENCENDIDO.
- nSR y nPB: líneas de entrada. Terminales de pulsador. Cuando se detecta un borde descendente en estos pines, el dispositivo intenta ingresar al modo de encendido / apagado
- nINT - Línea de salida. Se tira a BAJO cada vez que se presiona el botón pulsador
- EN - Línea de salida, se utiliza como habilitación de energía para las unidades de alimentación secundaria. Mientras se mantiene en BAJO, ambas fuentes de alimentación secundarias se desactivan
Hay algunas notas importantes antes de proceder con el diseño final:
- PSHOLD debe elevarse a 3.3V, porque hay casos en los que las MCU están obligando a todas las E / S a estar en estado HIGH-Z. En este caso, se desconoce el estado de PSHOLD de la MCU y puede afectar drásticamente el proceso de programación del dispositivo.
- STM6601 debe pedirse con una opción de ajuste EN en pulsación larga, en lugar de la opción RESET (me he caído en esa).
Unidad de fuente de alimentación: + 3,3 V
Fuente de alimentación principal para todos los sistemas de nuestro proyecto. Cuando la línea de + 3,3 V se mantiene en el nivel GND (es decir, no hay voltaje presente), todos los circuitos integrados, excepto el interruptor inteligente, se desactivan. El circuito se basa en LDO LP-3875-3.3 IC, con la capacidad de ser controlado a través del terminal EN y proporcionar corriente hasta 1A.
La fuente de energía para este circuito es el voltaje de la batería, con un indicador A / D adjunto para detectar VBAT en la configuración, similar al circuito de detección VBUS. En este caso, los cálculos difieren ligeramente;
V (batería a A / D) = 0,59 V (batería); A / D (rango) ∈ [000H: C03H]
Unidad de fuente de alimentación: -3,3 V
El circuito de suministro de voltaje negativo nos permite generar formas de onda simétricas con un factor de CC de 0 V (es decir, el valor promedio de la forma de onda puede ser 0 V). Este circuito se basa en el convertidor LM2662MX IC - CC / CC que funciona con un método de "bomba de carga". La corriente de salida máxima del circuito es de 200 mA, que es suficiente para nuestros requisitos de diseño; estamos limitados con una corriente de salida de 80 mA desde el canal de cada dispositivo.
IC realiza todo el trabajo necesario, por lo que solo las partes que necesitamos conectar son dos condensadores electrolíticos: C33 para conmutación y C34 para derivación de línea de -3,3 V (consideraciones de reducción de ruido). La frecuencia de la conmutación es insignificante en el diseño si colocamos el circuito lo suficientemente lejos de las partes de generación de formas de onda (lo discutiremos en el paso Diseño de PCB).
Unidad de microcontrolador - MCU
Este es el administrador y el CEO de nuestro sistema: control, manejo de red, transmisión de mensajes y soporte de interfaz de usuario, todo es por MCU.
La MCU que se eligió es Atmel ATMEGA32L, donde L significa operación de voltaje admitido ∈ [2.7V: 5.5V]. En nuestro caso, la tensión de funcionamiento es de + 3,3 V.
Consideremos los principales bloques de operación, que es necesario comprender, trabajando con MCU en nuestro diseño:
- Oscilador externo: es un componente opcional, ya que estamos interesados en la frecuencia de funcionamiento de 8 MHz.
-
Control periférico, red SPI: todos los dispositivos periféricos (excepto ESP32) se comunican con MCU a través de SPI. Hay tres líneas compartidas para todos los dispositivos (SCK, MOSI, MISO) y cada circuito periférico tiene su línea CS (Chip Select) dedicada. Los dispositivos SPI que forman parte del dispositivo:
- D / A para control de amplitud - Canal A
- D / A para control de amplitud - Canal B
- Dispositivo AD9834 - Canal A
- Dispositivo AD9834 - Canal B
- D / A para control de voltaje de polarización - Canal A
- D / A para control de voltaje de polarización - Canal B
- Potenciómetro digital para ajustes de brillo / contraste de LCD
- Compatibilidad con LCD: dado que LCD es una pantalla genérica de 20 x 4 caracteres, utilizamos una interfaz de 4 bits (líneas D7: D4), pines de control (líneas RS, E) y control de brillo / contraste (líneas V0 y ánodo)
- Compatibilidad con LED RGB: este módulo es opcional, pero hay un conector LED RGB de cátodo común con resistencias adecuadas, conectado a la MCU.
-
Control de energía: MCU realiza el monitoreo del sistema de energía en el modo de tiempo real y maneja todos los eventos de energía necesarios:
- VBAT_ADC - Monitoreo del voltaje de la batería y determinación de su estado (Canal ADC0)
- PWR_IND - Indicación de conexión de fuente de alimentación externa (canal ADC1)
- PS_HOLD: línea de habilitación de energía primaria para todos los sistemas definidos. Cuando la MCU lo baja, el dispositivo se apaga
- Terminal de interrupción del interruptor inteligente - Monitoreo del estado del botón pulsador
- Gestión de red WiFi - ESP32: MCU se comunica con ESP32 a través de la interfaz UART. Dado que 8MHz nos permite implementar una velocidad en baudios de 115200 con un error relativamente pequeño, podemos usar ESP32 en el circuito sin predefiniciones de cambios en la velocidad en baudios.
Programador AVR ISP
Nuestra MCU está programada a través de SPI con la línea de reinicio (/ RST) que debe colocarse en ALTO para una operación adecuada (de lo contrario, la MCU se encontrará en un estado de reinicio para siempre).
Para permitir que el dispositivo se programe y cargue a través de USB, adjunté el programador AVR ISP (producto de tamaño pequeño, comprado en eBay). Para mantener el soporte USB completo del dispositivo, es necesario unir terminales USB Tipo-A (D +, D-, VBUS y GND) con el dispositivo AVR ISP.
Circuito de generación de forma de onda
El núcleo del dispositivo son estos circuitos. AD9834 es un dispositivo DDS de bajo consumo que nos proporciona todas las formas de onda que nos gustaría recuperar del sistema. Los circuitos contienen dos circuitos integrados AD9834 independientes con osciladores externos de 50 MHz separados (como se puede ver en los esquemas). El motivo del oscilador separado es una consideración de reducción de ruido de los circuitos digitales, por lo que la decisión fue manejar líneas adecuadas de 50MHz con osciladores colocados junto al AD9834.
Ahora veamos algunas matemáticas:
Dado que el dispositivo DDS funciona con tecnología Phase Wheel con un valor de salida en un registro de 28 bits, podemos describir la generación de formas de onda matemáticamente:
dP (fase) = ωdt; ω = P '= 2πf; f (AD9834) = ΔP * f (clk) / 2 ^ 28; ΔP ∈ [0: 2 ^ 28 - 1]
Y de acuerdo con la hoja de datos AD9834, teniendo en cuenta la frecuencia máxima, se puede obtener la resolución de la frecuencia de salida:
Δf = k * f (oscilador) / f (máximo) = 0.28 * 50M / 28M = 0.187 [Hz]
Los CI AD9834 proporcionan una salida de corriente analógica para onda triangular / sinusoidal (terminal IOUT) y una salida digital para onda cuadrada (terminal SIGN_OUT). El uso del bit de signo es un poco complicado, pero podemos manejarlo: cada vez que DDS pasa el umbral del valor de comparación, SIGN_OUT se comporta en consecuencia. Se adjunta una resistencia de 200 ohmios a la salida de cada canal, por lo que el voltaje de salida tendría valores significativos:
I (canal único) = V (salida) / R (selección de voltaje); V (salida) = R (VS) * I (SS) = 200I (SS) [A]
Circuitos de control de amplitud (D / A)
De acuerdo con la hoja de datos de AD9834, su amplitud puede ajustarse proporcionando corriente al sistema de escala completa DDS, por lo que con la ayuda de IC D / A dual, podemos controlar la amplitud de la señal de salida ajustando esa corriente. Una vez más, algunas matemáticas:
I (escala completa) = 18 * (V_REF - V_DAC) / R_SET [A]
Según esquemas y poniendo algunos números a la ecuación:
I (escala completa) = 3,86 - 1,17 * V_DAC [A]
El módulo D / A utilizado en el diseño es MCP4922 de 12 bits, cuando la corriente está en el rango de [0mA: 3.86mA] y la función de amplitud lineal es:
V (selección de amplitud) = 1 - [V (D / A) / (2 ^ 12 - 1)]
Circuito de multiplexación de forma de onda
Las salidas de generación de ondas cuadradas y sinusoidales / triangulares están separadas en AD9834, por lo tanto, tenemos que usar un circuito de multiplexación de alta velocidad para ambas salidas para permitir la recuperación de todas las formas de onda deseadas de un solo canal separado. El IC multiplexor es un conmutador analógico ADG836L con una resistencia de encendido muy baja (~ 0.5Ohm).
La tabla de selección que MCU está usando para las salidas tal como está:
Selección de modo [D2: D1] | Canal de salida A | Canal de salida B
00 | Seno / Triángulo | Seno / Triángulo 01 | Seno / Triángulo | Cuadrado 10 | Cuadrado | Seno / Triángulo 11 | Cuadrado | Cuadrado
Circuitos de control de voltaje de polarización (D / A)
Una de las principales características del generador de formas de onda es controlar su valor de CC. En este diseño, se hace configurando el voltaje D / A deseado para cada canal, y estos voltajes de polarización se suman con las salidas multiplexadas que hemos discutido un poco antes.
El voltaje recuperado de D / A se encuentra en el rango [0V: + 3.3V], por lo que hay un circuito basado en amplificador operacional que asigna el rango D / A a [-3.3V: + 3.3V], lo que permite que el dispositivo proporcione un rango completo del componente de CC deseado. Saltaremos las molestas matemáticas analíticas y nos centraremos en los resultados finales:
V_OUT (canal B) = V_BIAS_B (+) - V_BIAS_B (-); V_OUT (canal A) = V_BIAS_A (+) - V_BIAS_A (-)
Ahora, el rango de componentes de CC se encuentra en el rango [-3.3V: + 3.3V].
Circuitos sumadores: componentes de CC y salidas de forma de onda
En este punto, tenemos todo lo que necesitamos para la salida adecuada del dispositivo: voltaje de polarización (componente de CC) en el rango de voltaje completo y salidas AD9834 multiplexadas. Haremos que eso suceda utilizando el amplificador sumador: configuración de amplificador operacional
Saltemos las matemáticas una vez más (ya hemos cubierto muchos enfoques matemáticos) y anotemos el resultado final de la salida del amplificador sumador:
V (salida del dispositivo) = V (polarización positiva) - V (polarización negativa) - V (salida multiplexada) [V]
Por eso:
V_OUT = ΔV_BIAS - V_AD9834 [V]
Los conectores de salida de tipo BNC están conectados con resistencias de selección (R54, R55; R56, R57). La razón de esto es que en el caso de que el diseño sea disfuncional, aún podemos seleccionar si queremos usar un amplificador sumador.
Nota importante: Las redes de resistencias de los amplificadores sumadores finales pueden ser ajustadas por un diseñador para cambiar la amplitud máxima que se puede recuperar del dispositivo. En mi caso, todos los amplificadores comparten la misma ganancia = 1, por lo que la amplitud máxima amortiguada es 0.7Vpp para onda triangular / sinusoidal y 3.3Vpp para onda cuadrada. El enfoque matemático específico se puede encontrar entre las imágenes adjuntas al paso.
ESP32 como módulo externo
MCU se comunica con ESP32 a través de la interfaz UART. Como quería mi propia PCB para el ESP32, hay 4 terminales disponibles para conectar: VCC, RX, TX, GND. J7 es un conector de interfaz entre PCB y ESP32 se asignará como módulo externo dentro del dispositivo.
Interfaz de usuario: LCD y altavoz
La pantalla LCD que se utilizó es una pantalla genérica de 20 x 4 caracteres con una interfaz de 4 bits. Como se puede ver en el diseño, hay un potenciómetro digital SPI conectado a los terminales LCD "A" y "V0"; su propósito es ajustar brillo y contraste del módulo LCD mediante programación.
El altavoz proporciona una salida de sonido para el usuario mediante una simple generación de ondas cuadradas desde la MCU. El BJT T1 controla la corriente a través del altavoz que puede estar en dos estados: ENCENDIDO / APAGADO.
Paso 5: Diseño de hardware - Módulo ESP32
ESP32 se utiliza como módulo externo para PCB principal. La comunicación del dispositivo se basa en comandos AT, que están disponibles en el firmware de un dispositivo genérico.
No hay mucho que ampliar en este diseño, pero hay algunas notas para el diseño:
- Para el manejo de fallas al usar el módulo UART adecuado de ESP32, adjunté tres resistencias de selección para las líneas TX y RX. (0 ohmios para cada uno). Para la configuración estándar, el módulo UART2 se utiliza para los comandos AT (R4, R7 deben estar soldados)
- El dispositivo tiene una salida de 4 líneas: VCC, GND, TX, RX.
- Los pines IO0 y EN evalúan el funcionamiento del dispositivo y deben diseñarse como se indica en los esquemas
Todas las características de PCB que cubriremos en el siguiente paso.
Paso 6: Diseño de PCB
Los objetivos de diseñar una placa de circuito impreso
- Cree un sistema integrado para todos los circuitos integrados en la misma placa
- Mejore el rendimiento del dispositivo mediante el diseño de una única PCB principal
- Reducción de costos: si desea consultar los precios, los diseños de bajo costo son REALMENTE bajos
- Minimizar el tamaño de la placa electrónica
- Fácil de solucionar: podemos utilizar TP (puntos de prueba) para cada posible línea defectuosa.
Parámetros técnicos
Ambos PCB: la placa principal y la placa ESP32 comparten las mismas características para el proceso de fabricación: bajo costo y operable para nuestros propósitos. Veámoslos:
A - Tablero principal
- Tamaño: 10 cm x 5,8 cm
- Número de capas: 2
- Espesor de PCB: 1,6 mm
- Espacio / ancho mínimo de traza: 6 / 6mil
- Mínimo a través del diámetro del orificio: 0,3 mm
- Cobre al borde de la distancia mínima de PCB: 20 mil
- Acabado de la superficie: HASL (tipo económico de color plateado bastante atractivo)
B - Tablero principal
- Tamaño: 3 cm x 4 cm
- Número de capas: 2
- Espesor de PCB: 1,6 mm
- Espacio / ancho mínimo de traza: 6 / 6mil
- Mínimo a través del diámetro del orificio: 0,3 mm
- Cobre al borde de la distancia mínima de PCB: 20 mil
- Acabado de superficies: HASL
Paso 7: recinto 3D
No lo diseñé yo mismo, porque en ese momento estaba persuadiendo a este dispositivo para que funcionara, por lo que no estaba al tanto de todos los conceptos básicos de la impresión 3D. Por lo tanto, utilicé un proyecto SCAD de Thingiverse y adjunté diferentes aperturas a los límites, de acuerdo con las especificaciones de mi dispositivo.
- Dispositivo de impresión: Creality Ender-3
- Tipo de cama: vidrio, 5 mm de espesor
- Diámetro del filamento: 1,75 mm
- Tipo de filamento: PLA +
- Diámetro de la boquilla: 0,4 mm
- Velocidad inicial: 20 mm / seg.
- Velocidad media: 65 mm / seg.
- Soporte: N / A
- Relleno: 25%
-
Temperatura:
- Cama: 60 (oC)
- Boquilla: 215 (oC)
- Color del filamento: negro
- Número total de aperturas: 5
-
Número de paneles de caja: 4
- Carcasa superior
- Concha inferior
- Panel frontal
- Panel posterior
Paso 8: Implementación de software - MCU
Enlace de GitHub a Android y código Atmega32
Algoritmo de software
Todas las operaciones que realiza la MCU se describen en los diagramas de flujo adjuntos. Además de eso, hay un código adjunto para el proyecto. Cubramos las especificaciones del software:
Encender
En esta etapa, MCU realiza todas las secuencias de inicialización junto con la determinación del tipo de comunicación almacenada con el dispositivo Android: Comunicación de red WiFi directa o WLAN: estos datos se almacenan en EEPROM. El usuario puede redefinir el tipo de emparejamiento del dispositivo Android en esta etapa.
Emparejamiento directo de dispositivos Android
Este tipo de emparejamiento se basa en la creación de una red WiFi por parte del dispositivo FuncGen. Creará un AP (punto de acceso) y un servidor TCP en una IP de dispositivo local con un SSID (nombre de red WiFi) específico y un número de puerto específico. El dispositivo debe mantener el estado: abierto para conexiones.
Cuando el dispositivo Android está conectado a FuncGen, MCU ingresa al modo ACTIVO y responde de acuerdo con las instrucciones del usuario del dispositivo Android.
Emparejamiento WLAN
Para comunicarse en una red WiFi local, MCU debe proporcionar comandos para que el ESP32 cree AP, se comunique con el dispositivo Android e intercambie los datos cruciales de la red:
- El dispositivo Android recibe de FuncGen su dirección MAC, la almacena en la memoria.
- El dispositivo FuncGen recibe los parámetros WLAN seleccionados del dispositivo Android: SSID, tipo de seguridad y contraseña y los almacena en EEPROM.
Cuando los dispositivos están realmente conectados a la misma WLAN, el dispositivo Android buscará el FuncGen escaneando todas las direcciones MAC de los dispositivos conectados a la WLAN. Cuando el dispositivo Android determina la coincidencia de MAC, intenta comunicarse.
Conexión y manejo del estado - MCU
Cuando los dispositivos se comunican entre sí, el protocolo (ver paso previo al final) permanece igual y el diagrama de flujo es el mismo.
Monitoreo del estado del dispositivo
La interrupción temporizada proporciona a la MCU los detalles necesarios para el manejo del estado. Cada ciclo de interrupción del temporizador, se actualiza la siguiente lista de parámetros:
- Fuente de alimentación externa: encendido / apagado
- Estado de voltaje de la batería
- Actualización de la interfaz de usuario para cada personalización
- Botón pulsador: presionado / no presionado
Paso 9: Implementación del software - Aplicación de Android
La aplicación de Android está escrita en estilo Java-Android. Intentaré explicarlo de la misma manera que en los pasos anteriores, dividiendo el algoritmo en bloques de código separados.
Secuencia de encendido
Primera secuencia del dispositivo. Aquí se presenta el logotipo de la aplicación junto con la habilitación de los módulos GPS y WiFi del dispositivo Android (no se preocupe, el GPS es necesario solo para escanear redes WiFi adecuadas).
Menú principal
Una vez iniciada la aplicación, aparecerán cuatro botones en la pantalla. Acción de los botones:
- CONEXIÓN DIRECTA: Inicializando la conexión al AP de FuncGen mediante el SSID de IOT_FUNCGEN. Si la conexión se realiza correctamente, el dispositivo entra en el modo de interfaz de usuario principal.
- CONEXIÓN WIFI: El dispositivo comprueba si hay parámetros de datos almacenados en la memoria: wifi.txt, mac.txt. Si no hay datos almacenados, el dispositivo rechazará la solicitud del usuario y proporcionará un mensaje emergente de que el emparejamiento WLAN debe realizarse primero.
- EMPAREJAMIENTO: Comunicarse con FuncGen de la misma manera que CONEXIÓN DIRECTA, pero en lugar de un intercambio continuo de mensajes, hay un único apretón de manos. El dispositivo Android verifica si ya está conectado a la red WiFi y solicita al usuario que ingrese la contraseña. Si la reconexión se realiza correctamente, el dispositivo Android almacena el SSID y la clave de acceso en el archivo wifi.txt. Después de una comunicación exitosa con FuncGen, almacena la dirección MAC recibida en el archivo mac.txt.
- Salida: suficiente dicho:)
Administrador de escaneo WiFi
Quería que la aplicación estuviera completamente operativa y sin que se hicieran ajustes fuera de la aplicación. Entonces, diseñé WiFi Scanner, que realiza todas las operaciones necesarias para conectarse a la red WiFi con una clave de acceso y SSID conocidos.
Transmisión de datos y comunicación TCP
Este es el bloque de código principal de la aplicación. Para todas las unidades de UI hay un mensaje definido en un formato específico (paso Pre-final), que obliga a FuncGen a proporcionar la salida deseada para los canales. Hay tres tipos de campos de IU en actividad:
-
Barras de búsqueda: aquí definimos el rango real de parámetros de salida de FuncGen
- Amplitud
- Compensación de CC
- Brillo LCD
- Contraste LCD
- Edición de texto: para mantener los valores enteros bien definidos y precisos, la entrada de frecuencia se realiza a través de cuadros de texto de solo números
-
Botones: Selección de parámetros de las listas disponibles:
- Tipo de forma de onda
- Seno
- Triángulo
- corriente continua
- Cuadrado
- APAGADO
-
Obtener información
- Estado de la batería (porcentaje)
- Estado de CA (fuente de alimentación externa)
-
Opción de arranque (para FuncGen MCU)
- Ajuste de fábrica
- Reiniciar
- Apagar
- Directo: reiniciar con el modo de emparejamiento directo
- WLAN: reiniciar con el modo de emparejamiento WLAN
- Salir al menú principal: Suficiente dicho:)
- Tipo de forma de onda
Paso 10: Prueba
Recomendado:
Introducción al "Kit de bricolaje del generador de funciones profesional ILC8038": 5 pasos
Introducción al "Kit de bricolaje del generador de funciones profesional ILC8038": Estaba buscando nuevos proyectos de electrónica cuando me encontré con un pequeño kit de generador de funciones. Se factura como el "Kit profesional de bricolaje de onda cuadrada triangular sinusoidal con generador de funciones ILC8038" y está disponible en varios proveedores
Generador de funciones: 12 pasos (con imágenes)
Generador de funciones: este instructable describe el diseño del generador de funciones basado en el circuito integrado analógico MAX038 de Maxims. El generador de funciones es una herramienta muy útil para los fanáticos de la electrónica. Es necesario para sintonizar circuitos de resonancia, probar aud
Generador de funciones de bricolaje con STC MCU fácilmente: 7 pasos (con imágenes)
Generador de funciones de bricolaje con STC MCU fácilmente: este es un generador de funciones hecho con STC MCU. Solo necesita varios componentes y el circuito es simple. Salida de especificación: Frecuencia de forma de onda cuadrada de un solo canal: 1Hz ~ 2MHz Frecuencia de forma de onda sinusoidal: 1Hz ~ 10kHz Amplitud: VCC, aproximadamente 5V Capacidad de carga
Generador de funciones simple: 5 pasos
Generador de funciones simple: en mi último instructivo, le mostré cómo construir un generador de señal pwm, y lo usé para filtrar algunas otras formas de onda. En este instructivo, le mostraré cómo hacer un generador simple de función / frecuencia, cómo conducir el relé con él y cómo b
Generador de funciones portátil en Arduino: 7 pasos (con imágenes)
Generador de funciones portátil en Arduino: El generador de funciones es una herramienta muy útil, especialmente cuando estamos considerando probar la respuesta de nuestro circuito a una determinada señal. En este instructivo, describiré la secuencia de construcción de un generador de funciones portátil, pequeño y fácil de usar. Características de