Leer Primero

Como se utiliza este blog?

jueves, 16 de julio de 2020

Como Grabar el Bootloader de Arduino

Bienvenido a mi blog, hoy hablaremos un poco de la configuración mínima de los Microcontroladores ATmega, los cuales son una línea de microcontroladores fabricados por Atmel que utilizan la arquitectura AVR, para poder utilizarlos en el entorno Arduino, la idea es poder programar estos modelos de micros "con el IDE de Arduino" e integrarlos en nuestras placas de una forma profesional o en el caso de estudiantes universitarios, poder presentar un proyecto sin un Arduino del que salen muchos cables. Para llevar acabo este procedimiento vamos a utilizar como ejemplo un Arduino UNO Rev3 y vamos a diseñar y construir nuestra propia pcb para actuar como una Shield AVR ISP. Primero que todo recordar la definición de bootloader que vimos en el post de "bootloader usb para microcontroladores", teniendo esto claro iniciemos.

Los Microcontroladores se programan a través de un programador o quemador, a menos que tengan una pieza de firmware embebido que les permita reescribir su memoria flash sin la necesidad de un programador externo. A esto se le llama bootloader o gestor de arranque y es básicamente un archivo ".hex" que se ejecuta cuando se enciende la placa. Es similar al BIOS/UEFI que se ejecuta en una PC al inicializarse. El bootloader de Arduino está programado en la memoria flash, en este caso, de un ATMega328P-PU y ocupa 0,5 KB de los 32KB disponibles. El bootloader se comunica usando el protocolo STK500. El bootloader de Arduino es esencialmente el bootloader STK500 versión 2 de AtmelAdemás del bootloader que viene precargado en los microcontroladores de las placas Arduino, existen otros bootloaders con mejoras en algunos aspectos o para ofrecer nuevas características.
  • Por ejemplo el Optiboot es un bootloader muy conocido que está más optimizado que el bootloader oficial de Arduino, permitiendo sketch's mayores y carga más rápida.
Bien, iniciemos, primero que todo necesitaremos la versión más reciente del IDE de Arduino para Windows, la cual la puedes obtener del vinculo en este blog en la columna de la parte izquierda, en la sección <Download Arduino IDE latest versión>.

Para poder utilizar un ATmega328P-PU como un Arduino UNO es necesario cargar la configuración de este o «quemar el bootloader» (grabar la secuencia de inicio). Comenzaremos por abrir nuestro Arduino IDE y nos dirigimos al menú Herramientas - Placa - Arduino AVR Boards - Arduino Uno, con esto le indicamos al IDE que trabajaremos con una placa Arduino UNO:


Ahora vamos al menú Archivo - abrir y seleccionaremos el sketch "ArduinoISP.ino" (El ArduinoISP que se envía como ejemplo con el software Arduino es antiguo. Puedes descargar gratis "ArduinoISP.ino" versión 04m3 de Randall Bohn aquí y reemplazar el que se encuentra en "C:\Program Files (x86)\Arduino\examples\11.ArduinoISP\ArduinoISP" esta versión también funciona con el avrdudess) hecho esto, se mostrará el siguiente código que programara nuestro Arduino como ISP:


Una vez abierto nuestro Sketch, conectaremos el Arduino a un puerto USB, es importante verificar que en el menú de herramientas se encuentre seleccionado el puerto COM correcto de nuestro Arduino, y presionaremos <subir>, que es el segundo símbolo de izquierda a derecha en la parte superior izquierda de nuestro IDE y esperamos hasta que nos indique que se ha subido. Una vez hayamos cargado el sketch correctamente procederemos a desconectar nuestro Arduino del cable USB y conectaremos el circuito (o shield AVR ISP)  que se muestra en la siguiente imagen (es altamente aconsejable que el Arduino tenga el sketch "ArduinoISP" versión 04m3 de Randall Bohn ya cargado y este desconectado al momento de armar el circuito o conectar la shield):



Las resistencias limitadoras de los leds pueden tener un valor mínimo de 200Ω en adelante, el led amarillo de <Testing Blink>, también sirve para verificar si esta cargado el bootloader, ya que al presionar el pulsador RESET de la shield AVR ISP, parpadeará 2 veces si el micro instalado en la base dip, tiene el bootloader cargado ok. El diodo de switcheo 1N4148 es para el antirrebote del pulsador de reset, en otros esquemas también le añaden un capacitor electrolítico de 10uF entre Reset y GND.

Regresamos al IDE y vamos al menú Herramientas - programador y seleccionaremos "Arduino as ISP" una vez hayamos conectado nuestro circuito o shield, conectaremos el Arduino al puerto USB de nuestra PC y debe encender fijamente el led azul "RUN" que indica que nuestro Arduino esta en modo programador y la shield esta lista:


Ahora seleccionaremos que bootloader le vamos a cargar, como para este ejemplo trabajaremos con un Microcontrolador ATmega328P-PU y queremos que actué como un Arduino UNO, verificamos nuevamente que este seleccionado en Herramientas - Placa - Arduino Uno, así el IDE sabrá que bootloader elegir para cargarle al micro:


Hecho esto volveremos a la pestaña de Herramientas y haremos click en la opción de «Quemar Bootloader» o grabar la secuencia de inicio:


Si hemos seguido los pasos correctamente pasados unos segundos en la parte inferior izquierda nos mostrara la leyenda «Quemado de bootloader completado». Ahora para probar, vamos al menú Archivo - Ejemplos - 01.Basics - Blink y verificamos también que en Herramientas - Programador siga seleccionado Arduino as ISP:


Ya después de abierto el sketch del blink y verificado que siga como Arduino as ISP, vamos al menú Programa y seleccionamos "Subir usando Programador":


Después de cargado este sketch en el micro, el led amarillo de "Testing Blink" comienza a parpadear en la Shield AVR ISP, indicándonos, que el sketch fue cargado correctamente y ya esta corriendo, cabe destacar que dicho led amarillo esta conectado al pin 13 o SCK (PB5) de nuestro ATmega328P-PU, por eso actúa igual al led embebido en la propia placa Arduino UNO R3.

El mismo procedimiento, con la variación de la elección de la placa destino, seguiríamos para grabar, por ejemplo, el bootloader del Arduino NANO, solo que en ese caso nos guiaríamos por las siguientes conexiones:

Quemando bootloader en Arduino NANO

En mi experiencia con las placas Arduino NANO, el bootloader seleccionado en el IDE de Arduino, a través de Herramientas> Procesador> ATmega328P (Old Bootloader) es el cargador de arranque "ATmegaBOOT". Aquí hay un gran detalle a tener en cuenta: si tu Arduino NANO tiene cargado el bootloader "OPTIBOOT" o "ATmegaBOOT".

Existen dos diferencias significativas entre los bootloader a utilizar:

Optiboot no entrará en un ciclo de reinicio sin fin después de un reinicio del perro guardián. ATmegaBOOT SI lo hará.

Optiboot espera la comunicación de carga a 115200 baudios, ATmegaBOOT a 57600 baudios. Esta es la razón por la que algunas placas de NANO solo funcionan con la selección Herramientas> Procesador> ATmega328P Old Bootloader. Hay otra diferencia muy significativa entre los dos bootloader: Optiboot cabrá en una sección de arranque de 0,5kB mientras que ATmegaBOOT requiere una sección de arranque de 2kB y además el optiboot permite sketch's mayores y carga más rápida. En pocas palabras, si tienes un Arduino NANO, actualiza su bootloader a la ultima versión de Optiboot utilizando lo aprendido y expuesto en este post.

Al momento de escribir este post la ultima versión de optiboot es la 8.0 que podemos cargar en el IDE de Arduino en el menú Archivo - Preferencias y en gestor de URL's adicionales de tarjetas pegamos la siguiente dirección:

https://github.com/Optiboot/optiboot/releases/download/v8.0/package_optiboot_optiboot-additional_index.json

y hacemos click en OK ahora vamos a herramientas - Placa - Gestor de Tarjetas y nos deberá aparecer en el ultimo item optiboot, lo seleccionamos y hacemos click en el botón Instalar. Con esto cargaremos la ultima versión de optiboot para quemarla en nuestros micros usando el IDE de Arduino y el método visto aquí de ArduinoISP.

Quemando bootloader en Arduino MEGA

Mismo procedimiento seguiremos para grabar el bootloader en un Arduino MEGA basado en el Microcontrolador ATmega2560, pero teniendo en cuenta que si es para un proyecto en placa, al ser este micro encapsulado en smd (montaje superficial) será necesario utilizar el conector ICSP de 6 pines que le añadí a la shield y la placa destino deberá contar también con dicho conector, esto lo lograremos utilizando una correa ribbon de 6 hilos o con jumpers dupont hembra-hembra.



Para restaurar el firmware del ATmega 16U2 que vimos en el post de USB a Serial en Arduino - Generalidades nos guiaremos por el siguiente pinout (aunque no publicare aun el proceso, ya que todavía lo tengo pendiente por verificar, pero es un hecho que funciona y se puede realizar):


Para determinar si un ATmega16U2 realmente necesita restaurar su firmware, primero se debe hacer la prueba de loop-back.

Acotar que esta es la URL que permite al gestor de tarjetas del IDE de Arduino, añadir las placas MiniCore (ATmega8/48/88/168/328):

https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json


/////////////////////////////////////////////////////////////////////////////////////////////


Video cortesía Domando Ingeniería

Ahora vamos a aprender a manejar algunos micros de la familia Attiny, los ATtiny son pequeños µControladores Atmel de 8 bits con poca memoria flash y EEPROM, que presentan encapsulados que van desde los 6 pines el más pequeño, hasta los 32 pines el más grande, lo que los convierte en los cerebros ideales para pequeños proyectos de pocas características y cuyo objetivo sea ser de bajo coste y pequeño tamaño.



Ahora vamos a realizar el procedimiento para el Microcontrolador ATtiny85, primero que todo vamos a desconectar el Arduino UNO del puerto USB del ordenador y quitaremos el microcontrolador ATmega que acabamos de quemar el bootloader y probar, y vamos al menú Archivo - Preferencias y en gestor de URL's adicionales de tarjetas, pegamos la siguiente dirección:

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

y hacemos click en OK:


Ahora vamos a herramientas - Placa - Gestor de Tarjetas y nos deberá aparecer en el ultimo item attiny, la seleccionamos y hacemos click en el botón Instalar:


Ahora para probar vamos a cargar el sketch del blink en nuestro ATtiny85 y para ello vamos a descargar gratis el archivo Blink_ATtiny25_45_85_13.ino Una vez lo hayas descargado y lo tengas abierto, vamos a Herramientas - Placa y seleccionamos ATtiny25/45/85:


Procedemos ahora a seleccionar en Herramientas - Procesador - ATtiny85 y en Clock - Internal 1 MHz (por defecto el ATtiny85 funciona a 1MHz, por eso, cuando se selecciona la placa ATtiny25/45/85 el "Clock" se selecciona "1MHz internal", para que funcione a 8MHz se debería quemar un nuevo bootloader, para ello en el menú "Herramientas" seleccionaríamos "8MHz internal" en la opción "Clock" y luego, en el mismo menú, haríamos click en "Quemar Bootloader"):


No olvidemos verificar que en Herramientas - Programador siga seleccionado Arduino as ISP, recuerda lo que hablamos en el proceso con el ATmega328P-PU (es altamente aconsejable que el Arduino ya este como "ArduinoISP" y este desconectado al momento de armar el circuito o conectar la shield) en este momento del proceso, instalamos el micro ATtiny85 en la base DIP de 8 pines con la disposición indicada en la serigrafia, conectamos la shield y conectamos el Arduino UNO al puerto USB de la PC y procedemos a darle Herramientas - Quemar Bootloader, en realidad esto solo cargara la configuración porque el ATtiny no tiene bootloader, es decir, lo que ha cargado son los fuses. Hecho  esto, ahora si procederemos a programarle el sketch Blink_ATtiny24_45_85_13.ino dándole en el Menú Programa - Subir usando Programador:


Después de cargado este sketch en el micro, el led amarillo de "Testing Blink" comienza a parpadear en la Shield, indicándonos, que el sketch fue cargado correctamente y ya esta corriendo, cabe destacar que dicho led amarillo esta conectado al pin SCK (PB2) de nuestro ATtiny. A continuación una pequeña simulación en wokwi gratuito y online:


Recuerda que esta shield permite grabar tanto el bootloader como sketch's en los Microcontroladores de Atmel ATmega8/48/88/168/328P/PU, ATtiny 25/45/85/13A, ATmega2560 y ATmega16U2, también permite la configuración de fuses mediante el software AVRdude, aunque gracias al conector ICSP de la shield, se puede programar cualquier micro AVR que soporte ISP, actualmente se trabaja en modificar el circuito para poder añadir Programación de Alto Voltaje.


Acotar que esta es la URL que permite al gestor de tarjetas del IDE de Arduino, añadir la placa ATtiny13:



- Que diferencia hay entre un microcontrolador ATtiny13 y ATtiny13A?

El ATtiny13 es la versión original y utiliza una tecnología de proceso diferente a la ATtiny13A. Las partes con sufijo "A" se fabrican con un proceso de baja potencia comercializado como "picoPower", y la principal diferencia es que generalmente consumen menos energía con el mismo voltaje y frecuencia.


Pero que sucedería sino contamos con una placa Arduino en donde podamos acoplar la shield? Pues podríamos entonces, utilizar un conversor FTDI y conectárselo a la misma shield para no necesitar mas hardware adicional, para ello anexaremos esto a nuestro pequeño diseño:


Para utilizar solo el conversor FTDI y la shield, deberemos utilizar el software AVRDUDE (AVR Downloader/UploaDEr) el cual es una herramienta para programar microcontroladores Atmel, y pasar, ya sea el sketch o el bootloader, en formato ".hex" Así como vemos, nuestra Shield AVR ISP ha tomado más versatilidad.


PCB Shield AVR ISP




PROGRAMMER BOOTLOADER SHIELD AVR ISP FOR ARDUINO - Visor 3D - Cortesía Proteus

La idea de hacer la tarjeta de la shield mas corta que la de Arduino, es que las soldaduras inferiores no toquen el conector USB hembra tipo B del Arduino uno, de esta forma la shield se acoplara perfectamente y no presentara ninguna falla de diseño. Pronto estará a la venta, publicándola en mercado libre para que puedas adquirirla si te interesa o vía NEQUI.

Ejemplo de Shield mal diseñada, no se acopla bien y las soldaduras inferiores harán corto cuando toquen el conector metálico USB hembra tipo B de la placa Arduino, por eso lo forraron con cinta de enmascarar.


La programación de alto voltaje implica la aplicación de un voltaje de alto nivel a ciertos pines del microcontrolador AVR, lo que activa un mecanismo de seguridad en el chip que permite la programación o el borrado de la memoria Flash interna. Actualmente modifico el circuito para poder realizar programación de alto voltaje, la cual también permitirá el reseteo de fuses en microcontroladores AVR bloqueados. Si te interesa este pequeño proyecto, puedes apoyar con una colaboración voluntaria vía NEQUI al 3177295861.


Ejemplo de Shield AVR-HV High voltage programmer, que demuestra que si se puede hacer y funciona en Arduino. Cortesía del proyecto HV Rescue Shield v2.1


Finalmente para saber el estado inicial de los bits de configuración y bloqueo, de cualquier Microcontrolador AVR, es decir, los fuses, recomiendo consultar y usar la siguiente pagina:






Quieres aportar algo que complemente este articulo? crees que hay algo que se deba corregir? Escríbenos este blog es para todos.

Recuerda que en https://jorgechac.blogspot.com nos dedicamos a construir una electrónica mejor! y apoyamos el proyecto CTC GO! (Creative Technologies in the Classroom) que es un programa de educación steam personalizable.


Si te sirvió deja un comentario de agradecimiento, comparte el post en tus redes sociales o recomiéndale el blog a un amigo, eso me motiva a seguir realizando estos pequeños posts y espero que vuelvas a mi blog, publico nuevo material con base en los softwares y apps que utilizo y la experiencia que he adquirido. Por último si deseas colaborar voluntariamente y crees que mi trabajo y mi tiempo lo ameritan, considere hacer una pequeña donación a mi NEQUI +573177295861.

También te puede interesar:









viernes, 10 de julio de 2020

Bootloader USB para Microcontroladores PIC 18F2550 y PIC18F4550


Bienvenido a mi blog, hoy hablaremos un poco del bootloader USB para Microcontroladores PIC18F2550 y PIC18F4550, el cual es un programa que reside dentro de la memoria del microcontrolador, y nos permitira reprogramar el microcontrolador sin necesidad de utilizar un grabador externo. Para esto, es necesario programar el microcontrolador por los medios convencionales (utilizando un programador externo) solo la primera vez, cargandole el hexadecimal o el archivo compilado .hex del bootloader. Una vez hecho esto, nuestro microcontrolador esta listo para ser utilizado sin necesidad  de utilizar un programador externo. El bootloader funciona en el momento del cargado del programa (justo cuando el micro es reseteado) y es capaz de cargar una aplicacion completa en la memoria de programa del Microcontrolador. Las plataformas modernas, como Arduino utilizan este sistema de programación. Pero ojo, por ningún motivo se debe sobrescribir las posiciones de memoria FLASH en la que se encuentra el programa residente Bootloader, ya que si se borra por algún error, pierdes el bootloader y tendras que programarlo nuevamente con un grabador externo.

No todos los microcontroladores soportan Bootloader, esto se limita aquellos que tienen la capacidad de autograbar su memoria FLASH. Por ejemplo el PIC16F84A de Microchip no lo permite, por eso sacaron la versión PIC16F628A que si lo permite y además tiene mejores prestaciones.

(Para las personas con experiencia en Arduino hay un proyecto similar a ArduinoISP que permite programar microcontroladores pic desde placas como Arduino UNO [Nano o Pro mini no funcionarán ya que no pueden proporcionar suficiente corriente] e incluso se puede quemar el famoso Microcontrolador 8051 de Intel <AT89S51, AT89S52>).

Pero antes de todo esto se preguntaran, como cargo entonces mis programas al microcontrolador? Pues es necesario utilizar un medio de comunicacion con el pc, y  nuestro microcontrolador cuenta con ese medio, que es un puerto USB embebido. El bootloader ya esta programado  para trabajar con ese módulo USB de nuestro PIC,  lo unico que nos quedaria es realizar nuestro circuito para que el Microcontrolador pueda funcionar correctamente, un ejemplo seria utilizar la herramienta PICKIT, otro ejemplo especifico de esto es el USB Pic BootLoader Boot25 (Pic18F2550):



El USB PIC Bootloader Boot25 es una herramienta que permite montar un pequeño programa de arranque, residente en la memoria de programa, a un Microcontrolador PIC18F2550. El Boot25 es una versión personalizada del PICDEM-FS-USB Demostration Board que Microchip ofrece, de tamaño compacto, versátil y autónomo, en la imagen se puede apreciar que existen 2 pulsadores, uno que es para el reset y el otro para el entrar al modo bootloader. Para entrar al modo bootloader, es necesario reiniciar el microcontrolador y seguidamente presionar el boton "boot mode" hecho esto, el microcontrolador esta listo para ser programado. Como la arquitectura del PIC18F4550 es igual al del 18F2550, salvo que el 18f4550 tiene mas pines, el bootloader sera funcional para estos 2 tipos de microcontroladores, este hardware esta diseñado por el Ingeniero Wilmer Salas.

Otro ejemplo especifico es el USB Pic BootLoader Boot45 (Pic18F4550)]:



Consulta aqui la web del autor, para descargar el software y el .hex

Por ultimo recordar que tanto el Microcontrolador PIC18F2550 como el 18F4550, ya han sido descontinuados por microchip, en su reemplazo se han lanzado los modelos 18F25k50 y el 18F45k50. Tambien puedes diseñar y montar tu propio entrenador PIC o cargar el bootloader del proyecto Pinguino, que puedes conocer en https://www.pinguino.cc/

Descarga los bootloader's para El Proyecto Pinguino desde github aqui, recuerda que tambien hay otros bootloader's para ambientes especificos como el ccs compiler y xC8,

Proyecto PICKAT basado en el PIC18F2550

Pinguino Básico


Placa de Desarrollo Pinguino basada en el PIC18F4550 de Microchip por Editronikx


Placa de Desarrollo Pinguino Ciku desarrollada por la empresa de Malasia Cytron Technologies



Ejemplo de Serigrafia de la capa inferior o Bottom, agradable y con buen diseño por los compañeros de PCB Designer.



Diagrama Basico de un Pinguino Basado en el PIC18F4550


Si te sirvió deja un comentario de agradecimiento, comparte el post en tus redes sociales o recomiéndale el blog a un amigo, eso me motiva a seguir realizando estos pequeños posts y espero que vuelvas a mi blog, publico nuevo material con base en los softwares y apps que utilizo y la experiencia que he adquirido. Por último si deseas colaborar voluntariamente y crees que mi trabajo y mi tiempo lo ameritan, considere hacer una pequeña donación a mi NEQUI +573177295861.




Tambien te puede interesar:










domingo, 5 de julio de 2020

Diseño y fabricación de PCB profesionales con Fritzing

Bienvenido a mi blog, hoy hablaremos un poco del Diseño y fabricación de PCB profesionales con Fritzing, el cual es un software libre de automatización de diseño electrónico, que busca ayudar a creadores de hardware para que puedan pasar de prototipos (usando, por ejemplo, placas de pruebas en baquelitas universales tipo protoboard) a productos finales. Fritzing es open source y está disponible para Windows, Mac y Linux. Fritzing fue creado bajo los principios de Processing y Arduino, y permite a los electrónicos documentar sus prototipos basados en Arduino y crear esquemas de circuitos impresos para su posterior fabricación. Además, cuenta con su sitio web complementario que ayuda a compartir y discutir bosquejos y experiencias.

Fritzing puede convertir su circuito de manera económica y rápida en una verdadera PCB personalizada profesional. Esta herramienta puede actuar como una plataforma creativa y es por esto que muchos usuarios la están utilizando como un medio para aprender, compartir y crear diseños pcb fabulosos. Puedes aprender muchísimas cosas de los muchos tutoriales disponibles en internet y youtube.





También es interesante saber que Fritzing pasó de ser un proyecto de investigación financiado con fondos públicos a una organización sin fines de lucro. Esto significa que para que sea autosuficiente y para continuar el desarrollo, Fritzing ofrece algunos servicios que incluyen lo siguiente:



  • Fritzing Fab: con Fritzing Fab, el servicio de producción de PCB, puede convertir sus bocetos en PCB profesionales de manera rápida y económica.
  • Talleres: hay muchos talleres sobre Arduino, Fritzing y todo lo relacionado, que se ofrecen a principiantes y profesionales.
  • Creación de piezas: también puede hacer que su producto aparezca en Fritzing, y si no quiere hacerlo usted mismo, puede contratar a los desarrolladores para crear piezas de alta calidad.
  • Productos: Fritzing ha creado un kit educativo de inicio y actualización.



Una de las librerías de partes de frizting más completa es la de adafruit. Para instalarla, puedes seguir este tutorial.

Y aquí encontraras un tutorial para hacer tus propias “parts” de Fritzing (tutorial increíble!).

Y para complementar estudia este detallado: Cómo crear componentes personalizados con Fritzing

Fritzing desde su versión 0.9.10 lanzo un simulador! El propósito principal del simulador es enseñar electrónica a estudiantes que se inician en este maravillosos mundo, pero sus capacidades actuales son muy limitadas (solo análisis de circuitos de CC). Sin embargo, es completamente funcional, fácil de usar y funciona en la placa de prueba y en la vista esquemática. Además, realiza algunas comprobaciones para ver si alguna pieza funciona fuera de sus especificaciones. Si una pieza no se puede simular, aparecerá atenuada durante la simulación. En la siguiente publicación, te enseñaran cómo usar el simulador paso a paso:
Fritzing 1.0.0 x64 for Windows  Descárgalo gratis aquí                    Link de descarga caído?




Recuerda que si deseas crear partes nuevas o modificar las ya existentes, es muy útil la herramienta SVG Generator 0.2 que nos ayuda a crear pines ovalados definiendo el número de pines, el pitch y la distancia entre los centros de filas, siguiendo la reglas y estándares de diseño de Fritzing.


Quieres aportar algo que complemente este articulo? crees que hay algo que se deba corregir? Escríbenos este blog es para todos.

Recuerda que en https://jorgechac.blogspot.com nos dedicamos a construir una electrónica mejor! y apoyamos el proyecto CTC GO! (Creative Technologies in the Classroom) que es un programa de educación steam personalizable.




Si te sirvió deja un comentario de agradecimiento, comparte el post en tus redes sociales o recomiéndale el blog a un amigo, eso me motiva a seguir realizando estos pequeños posts y espero que vuelvas a mi blog, publico nuevo material con base en los softwares y apps que utilizo y la experiencia que he adquirido. Por último si deseas colaborar voluntariamente y crees que mi trabajo y mi tiempo lo ameritan, considere hacer una pequeña donación a mi NEQUI +573177295861.




Si te gusta el diseño de circuitos impresos, eres electrónico y deseas diseñar tus propios prototipos para la universidad o para tu empresa, debes ver este video si o si

/////////////////////////////////////////////////////////////////////////////////////////////



/////////////////////////////////////////////////////////////////////////////////////////////




También te puede interesar:









jueves, 2 de julio de 2020

Conociendo La Familia de los Módulos WiFi ESP8266

Bienvenido a mi blog, hoy hablaremos un poco del ESP8266, que se trata de un chip integrado con conexión WiFi, compatible con el protocolo TCP/IP y capacidad de MCU. El objetivo principal es dar acceso a cualquier microcontrolador a una red inhalambrica. La gran ventaja del ESP8266 es su bajo consumo. La empresa que lo creo y lo fabrica es Espressif, una empresa China situada en Shangai. Primero que todo debemos distinguir entre módulo y microcontrolador. El ESP8266 es un microcontrolador. Podemos trabajar con el suelto, o podemos comprarlo integrado dentro de un PCB (Printed Circuit Board o Circuito Impreso) donde lo encontraremos acompañado de un radio modem wifi con antena, una memoria flash y terminales para conectarlo. Ocurre lo mismo que con Arduino, tenemos la posibilidad de comprar un microcontrolador Atmel al que le podemos quemar el bootloader de Arduino o comprar una placa Arduino donde ya viene integrado.

Especificaciones de los chip's ESP8266

Lo primero que debemos hacer cuando adquirimos un nuevo componente es mirar la hoja de especificaciones técnicas o datasheet. La empresa Espressif nos facilita dicha hoja en Inglés. Hay 2 modelos de ESP8266 ESP-01 viejo y nuevo. El azul es viejo y el negro es nuevo. A continuación haré un resumen de lo más importante:

Hardware:
  • Utiliza una CPU Tensilica Xtensa LX106 32-bit
  • Voltaje de operación entre 3V y 3,6V de DC
  • Corriente de operación 80 mA
  • Temperatura de operación -40ºC y 125ºC
  • Frecuencia de reloj: 80 MHz
  • RAM de instrucción: 64 KiB
  • RAM de datos: 96 KiB
  • Memoria Flash: 512 KiB (se extiende hasta 16 MiB)
  • Protocolos Wi-Fi: 802.11 b/g/n
  • Voltaje de funcionamiento: 2,5 V ~ 3,6 V
  • Corriente de funcionamiento: 80 mA (valor promedio)
  • Temperatura de almacenamiento u operación: -40 ° C ~ 125 ° C

Conectividad:
  • Soporta IPv4 y los protocolos TCP/UDP/HTTP/FTP
  • No soporta HTTPS en un principio. Si que lo hace mediante software tanto en cliente como servidor TLS1.2. La primera implementación está todavía en desarrollo.

Puertos GPIO (de propósito general):


  • Pueden ser configurados con resistencia Pull-up o Pull-down.
  • Soportan los principales buses de comunicación (SPI, I2C, UART).

Características eléctricas
  • Voltaje de trabajo entre 2,5V y 3,6Vcc.

Consumos

Dependerá de diferentes factores como el modo en el que esté trabajando el ESP8266, de los protocolos que estemos utilizando, de la calidad de la señal WiFi y sobre todo de si enviamos o recibimos información a través de la red WiFi. Oscilan entre los 0,5 μA (microamperios) cuando el dispositivo está apagado y los 170 mA cuando transmitimos a tope de señal.

Modos de operación

Debido a los sectores a los que va enfocado, wereables, dispositivos del IoT y móviles, el ESP8266 requiere de una gestión de energía eficaz. Dispone de una arquitectura de bajo consumo que trabaja en 3 modos:
  • Active Mode o Modo Activo: A pleno rendimiento.
  • Sleep Mode o Modo Dormido: solo el RTC (Real Time Clock) está activo para mantener la sincronización. Se queda en modo alerta de los posibles eventos que le hagan despertar. Mantiene en memoria los datos de conexión y así no hace falta volver a establecer la conexión con la red WiFi. Consume entre 0,6 mA y 1 mA.
  • Deep Sleep o Modo en Sueño Profundo: el RTC está encendido pero no operativo. Debe pasar por el modo dormido antes de despertar. Hay que tener especial cuidado con los datos ya que en este estado es como si estuviera apagado y todos los datos que no estén almacenados se pierden. Consume alrededor de 20 μA.

Modelos de Módulos ESP;

Al igual que con Arduino, donde trabajamos con la placa o circuito integrado, con el ESP8266 ocurre exactamente lo mismo. El fabricante AI-Thinker proporciona la serie ESP con diferentes modelos para diferentes usos. A parte han ido surgiendo diferentes placas que incorporan algún módulo ESP como el NodeMCU.

ESP-01


Se trata del módulo más popular. El módulo ESP-01 tiene un precio muy reducido. Tiene disponible dos pines GPIO digitales para controlar sensores y actuadores. También se puede llegar a utilizar para este uso los pines Rx y Tx si no se utilizan para la comunicación a través del puerto serie. Se puede programar a través de un adaptador serie/USB o con el cableado adecuado, a través de Arduino. Lo podemos usar como un dispositivo autónomo o como complemento con Arduino.



Otra forma de instalar los pines macho si deseas conectar el modulo a un protoboard para realizar pruebas


IMPORTANTE:
  • El ESP8266 va alimentado a +3,3VDC ¡no alimentarlo con 5 voltios o lo quemaremos!
  • Dicha fuente de voltaje de 3V3 debe ser capaz de suministrar más de 200mA.
  • El ESP8266 necesita comunicarse vía serie a +3.3V y no tiene entradas tolerantes 5V, por lo que necesita la conversión de nivel para comunicarse con un microcontrolador 5V como la mayoría de los Arduinos. Sin embargo, esta segunda advertencia puede ser ignorada y conectar el puerto serie directamente a Arduino, pero existe el peligro de dañar el módulo. Con un programador FTDI que tenga salida a 3.3V podemos hacer lo mismo que con un Arduino pero sin correr ningún peligro:

En todos los módelos de ESP8266 si al arrancar el módulo, el GPIO cero está a GND, el módulo entra en modo de programación, por lo que el microcontrolador no inicia el programa, así que este pin no conviene usarlo como entrada sino como salida.



Que hay dentro de un módulo ESP8266?

ESP-05

Quizás sea el módulo más simple de toda la gama. Está destinado a ser un Shield WiFi para Arduino. La disposición de los pines nos permiten un fácil conexionado con el protoboard. Por el contrario no dispone de ningún puerto GPIO accesible. Solo tiene terminales para comunicación serie, es decir, convierte la señal wifi a comunicación serie.

ESP-12



Este módulo permite hacer bastantes más cosas que los módulos anteriores. Lo puedes conseguir por un precio muy reducido. Tenemos acceso a 11 puertos GPIO de los cuales uno es analógico con una resolución de 10-bit (1024 valores posibles). La configuración en modo sleep es muy sencilla. Esto nos permitirá ahorrar mucha energía. Por el contrario, la conexión con la protoboard no es muy amigable. Necesitamos soldar los pines o comprar un adaptador, aunque también hay que soldar. Quizás está sea la mejor opción si queremos hacerlo funcionar de forma autónoma.

ESP-201

Es el módulo preferido por los Makers para prototipar. En principio solo podemos acceder a 11 puertos GPIO pero tras unas modificaciones, podríamos acceder a un par más de ellos. Lo podemos encajar fácilmente en un protoboard y permite el acople de una antena externa para tener más alcance.

NodeMCU


NodeMCU es un nombre que recoge tanto un firmware Open Source, como una placa de desarrollo basados en el ESP8266. La página oficial de NodeMCU está disponible en https://www.nodemcu.com/index_en.html

En principio el nombre NodeMCU se refería principalmente al firmware. Actualmente esto se ha invertido y cuando hablamos de NodeMCU normalmente nos referimos a la placa de desarrollo. El firmware NodeMCU fue creado poco después de aparecer el ESP8266, el 30 de diciembre de 2013. Unos meses después, en octubre de 2014 se publicó la primera versión del firmware NodeMCU en Github. Dos meses más tarde se publicaba la primera placa de desarrollo NodeMCU, denominada devkit v0.9, siendo también Open Hardware. El firmware NodeMCU podía grabarse en un ESP8266, tras lo cual podíamos programarlo con el lenguaje script Lua. La programación en Lua permitía la conexión y programación del ESP8266 de una forma mucho más sencilla que las herramientas oficiales proporcionadas por Espressif.

Con el paso del tiempo y la aparición de otras alternativas para programar el ESP8266, como (especialmente) con C++ con el entorno Arduino IDE y otras como MicroPython, el interés en Lua disminuyo considerablemente.

El NodeMCU es el módulo más característico, a diferencia de los otros módulos, viene con todo lo necesario para empezar a trabajar de forma autónoma. Incluye un adaptador serie/USB, por lo general el famoso CP2102 o el CH340 y se alimenta a través de un puerto microusb y está basado en el ESP-12E, aunque tambien se encuentran otras versiones con el ESP12F. Lo más interesante del módulo nodeMCU es que puedes descargar un firmware que te permite programarlo en lenguajes como LUA, Python, Basic, JavaScript e incluso desde el mismo IDE de Arduino. Sin duda alguna este módulo es la mejor opción si queremos adentrarnos en el mundo del ESP8266.

Por resumir, tenemos tres principales fabricantes de NodeMCU: Amica, Lolin/Wemos y DOIT/SmartArduino. Las placas son muy similares (o incluso idénticas), aunque pueden tener alguna diferencia de designación de los pines.


Programación del ESP8266

En la actualidad es relativamente sencillo programar un ESP8266. Respecto al hardware ya hemos visto que dependerá del modelo que estemos utilizando, si incorpora o no el adaptador serie/USB o si deberemos usar un programador FTDI. Aún así, cabe la posibilidad de programarlo a través del IDE (Integrated Development Environment – Entorno de Desarrollo Integrado) de Arduino. Para eso hay que instalar lo que se llama un plugin, en el que está incluido todo lo necesario para compilar y subir programas que fueron escritos tal como si fuesen .INO de Arduino. Debemos incorporar bibliotecas y los programas de manejo de las placas con el chip ESP8266 a nuestro IDE. La versión del firmware que viene por defecto soporta comandos AT (conjunto de comandos estándar).

En GitHub encontramos una infinidad de librerías que nos facilitarán la vida con los módulos ESP8266.

Finalmente espero que este post te haya aclarado un poco qué es y para qué utilizar el ESP8266. Cabe destacar que la misma empresa Espressif Systems, ha desarrollado un nuevo chip SoC módulo ESP32, el cúal nos suministra conexión wifi y bluetooth en un solo módulo, de esta forma los módulos esp8266, aunque aún se utilizan y se venden, se iran descontinuando con el tiempo poco a poco.

ESP 32 Versión 38 pines


Quieres aportar algo que complemente este articulo? crees que hay algo que se deba corregir? Escríbenos este blog es para todos.

Recuerda que en https://jorgechac.blogspot.com nos dedicamos a construir una electrónica mejor! y apoyamos el proyecto CTC GO! (Creative Technologies in the Classroom) que es un programa de educación steam personalizable.



Si te sirvió deja un comentario de agradecimiento, comparte el post en tus redes sociales o recomiéndale el blog a un amigo, eso me motiva a seguir realizando estos pequeños posts y espero que vuelvas a mi blog, publico nuevo material con base en los softwares y apps que utilizo y la experiencia que he adquirido. Por último si deseas colaborar voluntariamente y crees que mi trabajo y mi tiempo lo ameritan, considere hacer una pequeña donación a mi NEQUI +573177295861.




También te puede interesar: