- Introducción a ESP8285
- Diagrama de circuito de la placa de desarrollo ESP
- Fabricación de nuestra placa de desarrollo ESP8285
- Pedido de PCB de PCBWay
- Montaje y programación de la placa ESP8285
- Prueba con un simple boceto parpadeante de LED
- Probando Webserver Sketch en ESP8285
Los controladores ESP de Espressif se están convirtiendo en una opción muy popular para los diseños basados en IoT. Hay muchos tipos de módulos ESP y placas de desarrollo ya disponibles en el mercado, entre los cuales NodeMCU es el más popular. Aparte de eso, ESP-12E, ESP01 también son opciones populares. Pero si desea que su diseño sea más flexible y compacto, lo más probable es que tengamos que diseñar nuestro propio módulo ESP desde el nivel de chip, en lugar de utilizar directamente un módulo fácilmente disponible. En este artículo, aprenderemos a diseñar un circuito y PCB para usar los controladores ESP (ESP8285) directamente sin usar un módulo.
En este proyecto hemos utilizado ESP8285 porque es un chip pequeño muy interesante. Es un pequeño SoC (System on Chip), con IoT (Internet of Things) y capacidades de sueño profundo. Tiene la misma potencia que su hermano mayor ESP8266 y, como beneficio adicional, viene con una memoria flash incorporada de 1 MB con muchos GPIO. También puede usar ESP8266 como alternativa y la mayoría de las cosas discutidas en este artículo seguirán siendo las mismas.
En un artículo anterior, le mostré cómo puede diseñar su propia antena PCB para 2.4GHz, usando el mismo chip ESP8285 como ejemplo. Puede leer ese artículo para obtener información sobre el diseño de antena para ESP8266 / ESP8285.
Entonces, en este artículo, cubriré cómo funcionan todos los circuitos y finalmente habrá un video que lo explicará todo. También he cubierto en detalle el procedimiento completo para diseñar y ordenar las placas PCB de PCBWay para nuestro diseño de módulo ESP.
Introducción a ESP8285
Si no conoce este chip ESP8285 versátil, aquí hay una explicación rápida con una lista de funciones. El ESP8285 es un chip pequeño con memoria flash y ram de 1M incorporados, es bastante similar al módulo ESP8286, ESP-01, pero la memoria flash interna lo hace mucho más compacto y económico.
Este chip alberga el procesador central L106 Diamond de 32 bits de Tensilica y lo mismo ocurre con el ESP8266 también, es por eso que todo el código del ESP8266 se puede actualizar directamente a este chip sin ninguna modificación, y tiene la misma pila de red que la dosis ESp8266.
El ESP8285 integra interruptores de antena, balun de RF, amplificador de potencia, amplificador de recepción de bajo ruido, filtros y módulos de administración de energía. El diseño compacto minimiza el tamaño de la PCB y requiere circuitos externos mínimos. Si desea obtener más información sobre este IC, siempre puede consultar la hoja de datos de ESP8285 del dispositivo en Espressif Systems.
Diagrama de circuito de la placa de desarrollo ESP
El circuito es muy simple y lo he desglosado para entenderlo mejor. El siguiente esquema de ESP muestra el circuito completo, como puede ver, hay ocho bloques funcionales, revisaré cada uno y explicaré cada bloque.
ESP8285 SOC:
En el corazón del proyecto se encuentra el SoC ESP8285, aquí se definen todos los GPIO y otras conexiones necesarias.
Filtro de alimentación: hay 7 pines de alimentación en este IC, el primero es el pin de alimentación para el ADC y los IO. Los he conectado en cortocircuito y uso un condensador de filtro de potencia de 47 uF y un condensador de desacoplamiento de 0,1 uF para filtrar la entrada de 3,3 V CC.
Filtro PI: El filtro PI es uno de los bloques más importantes de este diseño porque es el responsable de alimentar el amplificador de RF y el LNA, cualquier ruido interno o externo puede ser descriptivo para esta sección, por lo que para eso, la sección de RF no funcionará. Es por eso que el filtro de paso bajo para la sección LNA es muy importante. Puede obtener más información sobre los filtros PI siguiendo el enlace.
Oscilador de cristal: el oscilador de cristal de 40MHz sirve como fuente de reloj para el SoC ESP8285, y los condensadores de desacoplamiento de 10pF se agregaron según lo recomendado por la hoja de datos.
Sección LNA: Otra sección más importante de este circuito es la sección LNA; aquí es donde la antena de PCB se conecta al pin físico del ESP. Según lo recomendado por la hoja de datos, se usa un capacitor de 5.6pF, y debería funcionar bien como el circuito correspondiente. Pero he agregado dos marcadores de posición para dos inductores como si en caso de que la disidencia del circuito coincidente funcione, siempre puedo colocar algunos inductores para ajustar los valores para que coincidan con la impedancia de la antena.
La sección LNA también tiene dos puentes de PCB con un conector UFL. La antena de PCB está configurada de forma predeterminada, pero si su aplicación requiere un poco más de alcance, puede desoldar el puente de PCB y cortocircuitar el puente para el conector UFL, y puede conectar una antena externa así.
Conector de entrada de batería:
Puedes ver arriba, he puesto tres tipos de conectores de batería en paralelo porque si no pudiste encontrar uno, siempre puedes poner otro.
Encabezados GPIO y encabezados de programación:
Los encabezados GPIO están ahí para acceder a los pines GPIO y el encabezado de programación está ahí para actualizar el Soc principal.
Circuito de reinicio automático:
En este bloque, dos transistores NPN, MMBT2222A forma el circuito de reinicio automático cuando presiona el botón de carga en el IDE de Arduino, la herramienta Python recibe una llamada, esta herramienta Python es la herramienta flash para los dispositivos ESP, esta herramienta pi da la señal al convertidor UART para restablecer la placa mientras mantiene el pin GPIO a tierra. Después de eso, comienza el proceso de carga y verificación.
LED de encendido, LED integrado y divisor de voltaje:
LED de encendido: El LED de encendido tiene un puente de PCB. Si está utilizando esta placa como una aplicación que funciona con batería, puede soldar este puente para ahorrar bastante energía.
LED integrado: muchas placas de desarrollo del mercado tienen un LED integrado, y esta placa no es una excepción; el GPIO16 del IC está conectado a un led integrado. Además de eso, hay un marcador de posición para una resistencia de 0 OHMs al llenar la resistencia de 0 Ohms, está conectando GPIO16 al reinicio y, como sabrá, este es un paso muy importante para poner un ESP en modo de suspensión profunda.
Divisor de voltaje: como sabrá, el voltaje de entrada máximo del ADC es 1V. Entonces, para cambiar el rango de la entrada a 3.3V, se usa el divisor de voltaje. La configuración está hecha de tal manera que siempre puede agregar una resistencia en serie con el pin para cambiar el rango a 5V.
HT7333 LDO:
Se utiliza un LDO o regulador de voltaje de baja caída para regular el voltaje a ESP8285 desde una batería con una pérdida mínima de energía.
El voltaje de entrada máximo del HT7333 LDO es de 12V y se usa para convertir el voltaje de la batería a 3.3V, elegí este HT7333 LDO porque es un dispositivo con una corriente de reposo muy baja. Los condensadores de desacoplamiento de 4.7uF se utilizan para estabilizar el LDO.
Pulsador para el modo de programación:
El botón está conectado a GPIO0, si su convertidor UART no tiene un pin RTS o DTR, puede usar este botón para tirar manualmente del GPIO0 a tierra.
Resistencias pullup y pulldown:
Las resistencias pullup y pulldown están allí según lo recomendado por la hoja de datos.
Aparte de eso, se siguieron muchas normas y pautas de diseño al diseñar la PCB. Si desea saber más sobre eso, puede encontrarlo en la guía de diseño de hardware para el ESP8266.
Fabricación de nuestra placa de desarrollo ESP8285
El esquema está hecho y podemos proceder con el diseño de la PCB. Hemos utilizado el software de diseño de PCB Eagle para hacer el PCB, pero puede diseñar el PCB con su software preferido. Nuestro diseño de PCB se ve así cuando está terminado.
Los archivos BOM y Gerber están disponibles para descargar desde los siguientes enlaces:
- Archivos Gerber de la placa de desarrollo ESP8282
- ESP8282 Dev-Board BOM
Ahora que nuestro diseño está listo, es hora de fabricar los PCB con. Para hacerlo, simplemente siga los pasos a continuación:
Pedido de PCB de PCBWay
Paso 1: Ingrese a https://www.pcbway.com/, regístrese si esta es su primera vez. Luego, en la pestaña Prototipo de PCB, ingrese las dimensiones de su PCB, el número de capas y el número de PCB que necesita.
Paso 2: Continúe haciendo clic en el botón 'Cotizar ahora'. Se lo llevará a una página donde establecer algunos parámetros adicionales como el tipo de placa, capas, material para PCB, grosor y más, la mayoría de ellos están seleccionados de forma predeterminada, si está optando por algún parámetro específico, puede seleccionar en el oído.
Como puede ver, ¡necesitábamos nuestras placas de circuito impreso negras! entonces, he seleccionado negro en la sección de color de la máscara de soldadura.
Paso 3: El paso final es cargar el archivo Gerber y proceder con el pago. Para asegurarse de que el proceso sea fluido, PCBWAY verifica si su archivo Gerber es válido antes de proceder con el pago. De esta manera, puede estar seguro de que su PCB es compatible con la fabricación y le llegará según lo comprometido.
Montaje y programación de la placa ESP8285
Después de unos días, recibimos nuestro PCB en una caja ordenada y la calidad del PCB fue tan buena como siempre. La capa superior y la capa inferior del tablero se muestran a continuación:
Después de recibir la placa, inmediatamente comencé a soldarla. He utilizado una estación de soldadura de aire caliente y mucho flujo de soldadura para soldar la CPU principal, y otros componentes de la PCB se sueldan con un soldador. El módulo ensamblado se muestra a continuación.
Una vez hecho esto, he conectado mi confiable módulo FTDI para probar la placa cargando un boceto, los pines conectados y una imagen de la placa que se muestra a continuación:
Módulo FTDI de la placa de desarrollo ESP8285
3,3 V -> 3,3 V
Tx -> Rx
Rx -> Tx
DTR -> DTR
RST -> RST
GND -> GND
Una vez que se completan todas las conexiones necesarias, configuré el IDE de Arduino seleccionando la placa ESP8285 genérica en Herramientas > Placa > Módulo ESP8285 genérico .
Prueba con un simple boceto parpadeante de LED
A continuación, es hora de probar la placa haciendo parpadear un LED, para eso, he usado el siguiente código:
/ * ESP8285 Parpadeo Parpadea el LED azul en el módulo ESP828285 * / #define LED_PIN 16 // Defina LED parpadeante pin void setup () {pinMode (LED_PIN, OUTPUT); // Inicializa el pin LED como salida} // la función de bucle se ejecuta una y otra vez para siempre void loop () {digitalWrite (LED_PIN, LOW); // Enciende el LED (ten en cuenta que LOW es el nivel de voltaje) delay (1000); // Espere una segunda escritura digital (LED_PIN, HIGH); // Apague el LED haciendo que el voltaje sea ALTO retardo (1000); // Espere dos segundos}
El código es muy simple, primero definí el pin LED para esta placa, y está en GPIO 16. Luego, configuré ese pin como una salida en la sección de configuración. Y finalmente, en la sección de bucle, encendí y apagué el pin con un retraso de un segundo en el medio.
Probando Webserver Sketch en ESP8285
Una vez que funcionó bien, es hora de probar el boceto de HelloServer del Ejemplo de ESP8266WebServer. Estoy usando un ejemplo de ESP8266 porque la mayor parte del código es compatible con el chip esp8285. El código de ejemplo también se puede encontrar al final de esta página.
Este código también es muy simple. Primero, necesitamos definir todas las bibliotecas necesarias, #incluir
a continuación, debemos ingresar el nombre y la contraseña del hotspot.
#ifndef STASSID #define STASSID "tu-ssid" #define STAPSK "tu-contraseña" #endif const char * ssid = STASSID; const char * contraseña = STAPSK;
A continuación, necesitamos definir el objeto ESP8266WebServer. El ejemplo aquí lo define como un servidor (80) el (80) es el número de puerto.
A continuación, necesitamos definir un pin para un LED en mi caso fue el pin no 16.
const int led = 16;
A continuación, se define la función handleRoot () . Esta función se llamará cuando la llamada en la dirección IP de nuestro navegador.
vacío handleRoot () {digitalWrite (led, 1); server.send (200, "texto / plano", "¡hola desde esp8266!"); digitalWrite (led, 0); }
Lo siguiente es la función de configuración, escuche que tenemos que definir todos los parámetros necesarios como-
pinMode (led, SALIDA); // hemos definido el pin led como salida Serial.begin (115200); // hemos iniciado una conexión serie con 115200 baudios WiFi.mode (WIFI_STA); // hemos configurado el modo wifi como estación WiFi.begin (ssid, contraseña); luego comenzamos la conexión wifi Serial.println (""); // esta línea da un espacio adicional while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } / * en el bucle while estamos probando el estado de la conexión cuando el ESP puede conectarse al hotspot, el bucle se detendrá * / Serial.println (""); Serial.print ("Conectado a"); Serial.println (ssid); Serial.print ("dirección IP:"); Serial.println (WiFi.localIP ());
A continuación, imprimimos el nombre y la dirección IP del SSID conectado en la ventana del monitor en serie.
server.on ("/", handleRoot); // el método on del objeto del servidor se llama para manejar la función raíz server.on ("/ inline", () {server.send (200, "text / plain", "esto también funciona");}); // nuevamente hemos llamado al método on para el / inline example server.begin (); // a continuación iniciamos el servidor con el método begin Serial.println ("servidor HTTP iniciado"); // y finalmente imprimimos una declaración en el monitor serial. } // que marca el final de la función de configuración void loop (void) {server.handleClient (); }
En la función de bucle, hemos llamado a los métodos handleClient () para operar el esp correctamente.
Una vez hecho esto, la placa ESP8285 tardó un poco en conectarse al servidor web y funcionó correctamente como se esperaba, lo que marcó el final de este proyecto.
El funcionamiento completo del tablero también se puede encontrar en el video vinculado a continuación. Espero que hayas disfrutado de este artículo y hayas aprendido algo nuevo de él. Si tiene alguna duda, puede preguntar en los comentarios a continuación o puede utilizar nuestros foros para una discusión detallada.