Leer Primero

Como se utiliza este blog?

Mostrando las entradas con la etiqueta wokwi. Mostrar todas las entradas
Mostrando las entradas con la etiqueta wokwi. Mostrar todas las entradas

jueves, 11 de agosto de 2022

Simulador Wokwi - Generalidades

Bienvenido a mi blog, hoy hablaremos un poco del Simulador gratuito y online Wokwi, durante el primer semestre del año 2021 se generó bastante información sobre la Raspberry Pi Pico y su nuevo microcontrolador, el RP2040; uno de los recursos que se vio en ese momento fue un curso de HackadayU dictado por Uri Shaked, Maker y Google Developer Expert Israelí, en el curso, el señor Uri discute la arquitectura del microcontrolador, el set de instrucciones, así como algunas funciones del RP2040, su programación y depuración. Aunque el curso es muy interesante, lo que llamó especialmente la atención fue la herramienta que el señor Uri estaba usando para mostrar los ejemplos en sus clases, un simulador electrónico en línea, que le permitía escribir y correr el código en una tarjeta Raspberry Pi Pico emulada.



Debido a que el simulador wokwi funciona online, mediante la world wide web, puede correr en Windows, MAC, Linux y Android.

¿Qué significa Wokwi?

Wokwi no tiene ningún significado especial, tampoco es un acrónimo, simplemente es una palabra que sus creadores eligieron, por ser una palabra corta y fácil de pronunciar.

¿Cómo conocimos Wokwi?

Wokwi fue conocido inicialmente por la creación de placas compatibles con Arduino UNO Rev3, llamadas Arduino Wokwi, bueno, solamente Wokwi, ya que el nombre Arduino y su logo, como sabemos, son marcas registradas, estas placas Wokwi presentan la particularidad de usar un conector de entrada USB Tipo C (en lugar del USB Hembra Tipo B) y una bonita combinación de headers de colores (recordemos que estas placas actualmente aún están a la venta en Tindie):




Arduino Wokwi


Este fantástico simulador Wokwi, gratuito, online y de código abierto en JavaScript, fue desarrollado por el mismo señor Uri Shaked y otros colaboradores. El simulador permite trabajar con algunas de las versiones más populares de las tarjetas Arduino (como UNO, NANO y Mega2560), con la Raspberry Pi Pico, ESP32, en C++, Micropython y Rust, y algunos miembros de la familia ATtiny y hasta otros microcontroladores de la familia STMicroelectronics.. Además, cuenta con un buen grupo de periféricos comúnmente usados en los proyectos de electrónica, a esto se suma la ventaja de no tener que esperar a tener todo el hardware en las manos para comenzar las pruebas y que no vamos a poder dañar nada durante las pruebas, al trabajar con un hardware virtual.



Home Page Wokwi


El simulador es muy fácil de usar, tiene un área para agregar el código y otra con el diagrama del circuito electrónico simulado. En el área del código se puede escribir el programa, conectar las librerías del proyecto y editar el archivo diagram.json que describe la estructura y conexiones del circuito simulado. En el área del circuito se agregan los componentes y se hacen las conexiones necesarias entre los elementos y/o el hardware.

El sitio web del simulador tiene varios circuitos y programas de ejemplo, así como la opción de permitirnos publicar nuestros propios proyectos. Un dato importante es que, en este momento, el simulador es de uso gratuito, aunque hay algunas opciones de pago al estilo de una membresía premium y que permiten hacer sugerencias sobre el desarrollo del simulador y acceder a funciones avanzadas, las cuales comprenden:

  • Cargar cualquier biblioteca de Arduino seleccionando una carpeta de su computadora.
  • Cargar archivos binarios personalizados (por ejemplo, mapas de bits, sonidos, etc.) al sistema de archivos de la tarjeta microSD emulada.
  • Conectar el ESP32 WiFi a tu red local.
  • Conocer a miembros del Club Wokwi con ideas afines en el canal de Discord.

Ojo, recordemos que estas funciones avanzadas solo están habilitadas para usuarios de pago, los cuales pueden pagar solo un mes, si lo desean, o todo un año completo con el 20% de descuento. Actualmente al momento de escribir este post, el mes esta a 7 dólares, los cuales se pueden pagar, o vía paypal o con tarjeta de crédito.



Librerías Arduino Integradas Standard, embebidas en Wokwi.


De forma predeterminada, Wokwi compila su código con las bibliotecas Arduino integradas estándar, (como Wire.h y SPI.h) si desea trabajar con alguna librería que no sea estándar, como por ejemplo <OLED_I2C.h> deberá ser usuario premium para poder exportarla.



Wokwi Enviroment

¿Por qué Wokwi?


Comience ahora mismo. No hay que esperar por los componentes ni descargar pesados software de simulación. Con solo su navegador de internet o browser, tiene todo lo que necesita para comenzar a codificar su próximo proyecto electrónico microcontrolado o de IoT, en segundos.

Los errores están bien. No se puede destruir el hardware virtual. Así que no te preocupes por freír tus preciados componentes. Y a diferencia del hardware real, siempre puedes deshacer.

Fácil de obtener ayuda y comentarios. Compartir un enlace a su proyecto Wokwi es todo lo que necesita.

Gana confianza en tu código. Problemas de hardware y software separados.



Comunidad amigable con los creadores. Un lugar para que compartas tus proyectos, pidas ayuda y te inspires. 
Comunidad Wokwi Discord


Funciones únicas:


  • Simulación WiFi: conecte su proyecto simulado a Internet. Puede usar MQTT, HTTP, NTP y muchos otros protocolos de red.
  • Analizador lógico virtual: capture señales digitales en su simulación (por ejemplo, UART, I2C, SPI) y analícelas en su computadora.
  • Depuración avanzada con GDB: potente depurador Arduino y Raspberry Pi Pico para usuarios avanzados.
  • Simulación de tarjeta SD: almacene y recupere archivos y directorios de su código. Los miembros del club también pueden cargar archivos binarios (como imágenes).

Veamos ahora en el siguiente video de YouTube, un ejemplo básico de como usar el simulador wokwi:


Extensión Wokwi para Visual Studio Code


Wokwi para Visual Studio Code proporciona una solución de simulación para ingenieros, de sistemas integrados y de IoT. La extensión se integra con su entorno de desarrollo existente, lo que le permite simular sus proyectos directamente desde su editor de código. Puede usar Wokwi para VS Code con Zehpyr Project, PlatformIO, ESP-IDF, Pi Pico SDK, NuttX, Rust, Arduino CLI y otros marcos de desarrollo integrados y cadenas de herramientas.


Instalación



Primero, instale la extensión Wokwi for VS Code. Luego, presione y seleccione "Wokwi: Solicitar una nueva licencia". VS Code le pedirá que abra el sitio web de Wokwi en su navegador. Confirme haciendo clic en "Abrir" F1. Luego haga clic en el botón púrpura que dice "OBTENGA SU LICENCIA". Es posible que se le pida que inicie sesión en su cuenta de Wokwi. Si no tiene una cuenta, puede crear una de forma gratuita.

El navegador le pedirá una confirmación para enviar la licencia a VS Code. Confirmar (es posible que tenga que confirmar dos veces, una vez en el navegador y una vez en VS Code). Verá un mensaje en VS Code que dice "Licencia activada para [su nombre]". ¡Felicidades!.

Cabe destacar que para poder trabajar con la extension Wokwi para Visual Studio Code se necesita minimo la versión 1.72.0 ó superior.

Finalmente antes de simular cualquier proyecto, debes compilar el código y generar el archivo de firmware/ELF. La extensión Arduino de VS Code requiere Arduino IDE 1.8 o Arduino CLI instalado. No funciona (todavía) con Arduino IDE 2.0.


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.


Bibliografía:

https://docs.wokwi.com/


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:


Nuevos Microcontroladores Raspberry Pi Pico W, H y WH

Las 10 formas más fáciles de averiar tu Arduino

Arduino UNO Rev3

Arduino NANO v3

Arduino UNO WiFi Rev2

Nueva Placa Arduino Nano RP2040 Connect

Nuevo Microcontrolador Raspberry Pi Pico

Convierte fácilmente una Fuente ATX de PC en una Fuente para alimentar tus proyectos Arduino y/o Raspberry Pi

USB a Serial en Arduino - Generalidades

Como Grabar el Bootloader de Arduino

Cómo Detectar un Arduino Falsificado

viernes, 12 de febrero de 2021

Nuevo Microcontrolador Raspberry Pi Pico

Bienvenido a mi blog, hoy hablaremos un poco de la nueva Raspberry Pi Pico. Raspberry Foundation, la institución encargada del popular miniordenador que ha ayudado a expandir GNU/Linux por el mundo, ha anunciado la comercialización de una variante, la nueva Raspberry Pi Pico, la cual es una solución que nos permitirá trabajar en sistemas embebidos de todo tipo y aplicarlo a desarrollos tan ambiciosos como dispositivos médicos o coches autónomos, la RPi Foundation esta iniciando a fabricar sus propios procesadores, está gobernada por un pequeño SoC que ha sido diseñado por los propios responsables de este proyecto en Reino Unido (UK). Se trata del Microcontrolador RP2040, que cuenta con un procesador dual core ARM Cortex M0+ de 32 bits funcionando a máx 133 MHz, acompañado de 264KB de RAM y 2MB de almacenamiento integrado. Ese SoC representa el nuevo papel de The Raspberry Pi Foundation como fabricante de semiconductores, y, en concreto, de SoC.

Dimensiones Reales de la Raspberry Pi Pico en mm

El chip está fabricado con una litografía de 40 nm de TSMC, y además de esos dos núcleos destaca por tener una unidad PIO (Programmable I/O) que permite, por ejemplo, emular interfaces como las de las tarjetas SD o VGA, con esas especificaciones lógicamente las prestaciones son mucho más limitadas que las de las modernas Raspberry Pi 4, y de hecho su orientación es también muy distinta: la idea es aprovecharla para proyectos de robótica, estaciones meteorológicas y otros proyectos de electrónica que necesitan de un microcontrolador económico pero potente y más completo. Desde un punto de vista meramente practico es más tipo Arduino que Raspberry Pi. Recordemos que la Taiwan Semiconductor Manufacturing Company Limited o TSMC, es la empresa de fundición de semiconductores más grande del mundo, con la sede y sus principales operaciones localizadas en el Parque científico e industrial de Hsinchu en Hsinchu, Taiwán. Es la primera empresa del mundo dedicada exclusivamente a la fabricación de semiconductores.​ Además de semiconductores, la compañía también ha estado investigando sobre iluminación e industrias relacionadas con la energía solar y ahora ha sido contratada por la fundación raspberry para la creación del RP2040.


Características Técnicas Principales:

  • Microcontrolador RP2040 diseñado por Raspberry Pi y fabricado por TSMC, encapsulado QFN-56 de 7x7mm.
  • Basado en un Dual ARM Cortex M0+ de doble núcleo de 32 bits a máx. 133 MHz que permite el desarrollo de Machine Learning a través de TinyML, TensorFlow Lite o Edge Impulse.
  • ROM: 16 kB de memoria de solo lectura ROM en el chip.
  • SRAM en chip de 264kB en seis bancos independientes.
  • Soporta hasta 16 MB de memoria Flash fuera del chip a través del bus QSPI (Quad Serial Peripheral Interface) dedicado, inicialmente viene con un chip QSPI FLASH externo de 2MB.
  • Controlador DMA.
  • LDO programable On-chip para generar voltaje central.
  • Puerto micro-USB B para energía y datos (y para reprogramar la Flash).
  • 2 PLL on-chip para generar USB y relojes centrales.
  • Controlador USB 1.1 y PHY integrado, con soporte para dispositivos y host.
  • Modo de bajo consumo e hibernación.
  • Programación drag-and-drop usando almacenamiento masivo por USB.
  • 30 pines GPIO, 4 de los cuales se pueden utilizar como entradas analógicas.
  • 3 canales de SAR ADC de 12 bits con una velocidad de muestreo de 500 kilomuestras por segundo (0.5 MSa/s). También hay un cuarto canal ADC, que está conectado a un sensor de temperatura interno, integrado en el RP2040.
  • 2 SPI, 2 I2C, 2 UART, 3 ADC de 12-bit y 500kps, 16 canales PWM.
  • 6 I/O dedicadas para SPI Flash (soportando XIP).
  • 1 RTC reloj en tiempo real, que se puede utilizar para generar interrupciones en momentos específicos.
  • Librerías de coma flotante on-chip.
  • Puerto de 3-pines para depuración tipo ARM Serial Wire Debug (SWD).
  • Puede emular interfaces VGA y tarjetas SD.
  • 8 puertos programables I/O (PIO) para trabajar con máquinas de estado finito [Que es un modelo computacional que realiza cómputos en forma automática sobre una entrada para producir una salida. La finalidad de los autómatas finitos es la de reconocer lenguajes regulares, que corresponden a los lenguajes formales más simples según la Jerarquía de Chomsky].

Test Point - Puntos de prueba

La Raspberry Pi Pico y Pico W, tienen seis puntos de prueba (TP1-TP6) en la parte posterior a los que se puede acceder si es necesario, como cuando se usa la placa como módulo de montaje superficial.

Estos son:

TP1 – Tierra (tierra estrechamente acoplada para señales USB diferenciales)

TP2 – DM USB

TP3 – USB DP

TP4 – Pin WL_GPIO1/SMPS PS (no usar)

TP5 – WL_GPIO0/LED (no se recomienda su uso)

TP6 – BOTASEL

Los ingenieros de Raspberry Pi también utilizan estos puntos de prueba para comprobar rápidamente que el Pico W funciona después de haber sido ensamblado en fábrica.

El puerto SWD

A medida que los dispositivos se volvieron más complejos, aumentó la dificultad para hacerles debug o depuración, es decir, leer las señales internas de los microcontroladores. En consecuencia se tuvo que estandarizar las señales de prueba y se creó el Joint Tag Action Group (JTAG) Grupo de Acción de Etiqueta Conjunta.

Esto permitió establecer estándares que pueden detectar errores utilizando solo unos cuantos pines. No todos los microcontroladores implementan JTAG; por ejemplo el ATMEGA328P del Arduino no lo tiene, pero la Raspberry Pi Pico y el ESP32 sí. Los tres pines en el borde inferior de la Pico son para conectar un depurador. El Serial Wire Debug (SWD Depuración de cables serie) es una interfaz JTAG alternativa de 3 pines (SWDIO/GND/SWCLK). SWD utiliza un protocolo de cable bidireccional estándar de CPU ARM, definido en la interfaz de depuración de ARM v5. Esto permite que el depurador se convierta en otro maestro de bus AMBA para el acceso a la memoria del sistema y a los registros periféricos o de depuración.

Podemos alimentar la Raspberry Pi Pico a través del puerto micro USB, o podemos usar el pin VSYS GPIO para proporcionar energía entre un rango de +1.8V a +5.5Vcc

Esta pequeña placa no cuenta con un sistema operativo como tal que la gobierne: simplemente ejecuta los programas que pidamos que ejecute, y que pueden estar programados en lenguajes como MicroPython o C y que podemos lanzar desde un ordenador host como una PC o una Mac, por ejemplo. Junto con el nuevo dispositivo, la fundación ha hecho público un SDK basado en C, accesible desde cualquiera de los principales entornos de desarrollo, como puede ser Visual Studio Code; además de otro basado en Python 3, recordemos que MicroPython es una versión reducida de Python hecha especialmente para microcontroladores.

Esta pequeña placa hace uso de un GPIO de +3,3V que la habilita para trabajar con muchos otros componentes que trabajan a voltajes de 3 y 5V, y destaca por una eficiencia fantástica: para pequeños proyectos es mucho mejor candidata que una Raspberry Pi convencional, que consume bastante más energía, y que probablemente está sobredimensionada para esos escenarios.

Su pequeño tamaño y su reducido precio actual hacen que NO contemos con conectividad inalámbrica en este modelo en comparación con familias como la esp32 de Espressif System, la cual ya cuenta con wifi y bluetooth integrados. Así que esperamos que estas características sean adicionadas en futuras versiones como Raspberry Pi Pico W. Tampoco cuenta con un botón de reset físico como estamos acostumbrados en Arduino, ya que el botón que posee la pico es simplemente para cargar el bootloader, si deseas hacer un reset deberías utilizar un pulsador entre GND y el pin RUN.

Recordar que ya hay placas entrenadoras o tarjetas de desarrollo para Raspberry Pi Pico y se espera que los makers desarrollen mas, para experimentación y aprendizaje universitario:


https://01001000.xyz/2021-02-13-Raspberry-Pi-Pico-dev-board-Kiwikit/


La Raspberry Pi Pico puede emular por software un puerto I2S mediante el pin 31 (DIN) pin 32 (BCK_PWM1) y pin 34 (LRCLK_PWM0), I2S conocido también como Inter-IC Sound, Integrated Interchip Sound, o IIS, es un estándar de interfaz eléctrica de bus serial usado para interconectar circuitos de audio digital.​ El bus I2S separa las señales de datos seriales y de reloj independientes, lo que resulta en menores cantidades de fluctuación (jitter en inglés) de la señal, que en sistemas que recuperan el reloj de la señal de datos.

Destacar que la RPi Foundation ha iniciado en la fabricación de sus propios SoC, su propio silicio personalizado y esto augura un gran futuro tecnológico. También resaltar que Raspberry Pi ha iniciado las ventas de unidades individuales y por carrete de su SoC RP2040 y ahora están disponibles a través de los revendedores aprobados por Raspberry Pi (compra tu chip RP2040 Aquí).



Compra tu Raspberry Pi Pico AQUI


Una de las grandes ventajas que tendremos al trabajar esta placa Raspberry Pi Pico con MicroPython, será que el código que generemos, nos funcionará tanto en esp32, como en la pico, además desde este sitio web podremos descargar la última versión de firmware actualizada.


También algunas empresas y maker's han lanzado los primeros clones de la Raspberry Pi Pico, los cuales tienen conector USB Type C, 16 MB de memoria flash y botón de reset, más que clones, son nuevas mejoras (obviamente no veremos el nombre Raspberry, ni el logo, ya que son marcas registradas):

Original a la derecha Vs clones


Finalmente observemos un "Hola Mundo" o "Blynk" de encender y apagar un led con Raspberry Pi Pico con Micropython, cortesía del simulador online gratuito Wokwi:



Interesante opción para Raspberry Pi Pico W con soporte para BASIC y wifi https://geoffg.net/webmite.html


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:


Raspberry Pi Pico/W PinOut

Arduino NANO v3

Arduino UNO WiFi Rev2

Nueva Placa Arduino Nano RP2040 Connect

Nueva Raspberry Pi 400

Nueva Raspberry Pi 4 con 8 GB de RAM

Descarga Aquí Tus Wallpaper Raspberry Pi para PC

Compra Aquí tu Raspberry Pi 4 Modelo B 8GB

Carcasas Raspberry Pi que puedes imprimir en 3D

Convierte fácilmente una Fuente ATX de PC en una Fuente para alimentar tus proyectos Arduino y/o Raspberry Pi

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 Atmel. Ademá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: