Leer Primero

Como se utiliza este blog?

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

martes, 20 de septiembre de 2022

SparkFun Pro Micro

Bienvenido a mi blog, hoy hablaremos un poco de la placa Pro Micro, a diferencia de otras placas que hemos descrito en estos post's, Pro Micro NO es una placa Arduino como tal, ya que fue diseñada y construida por SparkFun Electronics, la cuál es una empresa dedicada a la comercialización de productos electrónicos en Niwot, Colorado, Estados Unidos. SparkFun Electronics fabrica y vende placas de desarrollo de microcontroladores y diversos dispositivos, a destacar que todos los productos diseñados y producidos por SparkFun, se lanzan como hardware de código abierto.

La SparkFun Pro Micro la encontramos en versiones de 3,3V a 8 MHz y 5V a 16 MHz y es una placa de desarrollo pequeña y genial. Posee un microcontrolador compatible con Arduino, la Pro Micro es una placa basada en la MCU Atmel, el ATmega32U4 y logra con un solo chip lo que los viejos Arduino UNO Rev3, MEGA2560, NANO y Pro Mini nunca pudieron poseer: la verdadera funcionalidad USB. La razón más grande por la que algunos técnicos la llaman erróneamente "Arduino Pro Micro", es porque en su corazón los chips Atmel son ampliamente conocidos y utilizados en la plataforma Arduino, por ejemplo, en el Arduino Leonardo ya habíamos visto dicho chip.

Como todas las placas compatibles, tiene semejanzas con otras de sus hermanastras mayores: es muy similar a Arduino Micro pero en un factor de forma más pequeño. En este post, podrás comprender todo lo que necesitas saber sobre esta placa y comenzar a desarrollar tus propios proyectos DIY con SparkFun Pro Micro, la cuál en su mayoría es usada para HID Human Interface Device, es decir, emular teclados, mouse's o joystick.

Sparkfun Pro Micro tiene 18 pines de entrada/salida digital (de los cuales 5 se pueden usar como salidas PWM), 9 entradas analógicas, un resonador incorporado y orificios para montar cabezales de pines.


Características Físicas:

Las dimensiones de la Sparkfun Pro Micro PCB son: 700 milésimas de pulgada x 1300 milésimas de pulgada, que expresadas en milímetros serian: 17.78mm x 33.02mm




Especificaciones técnicas:


Power

La Sparkfun Pro Micro se puede alimentar con un suministro regulado de 3,3V o 5V (según el modelo) en el pin Vcc. Hay un regulador de voltaje LDO a bordo MIC5219 para que pueda aceptar voltajes de hasta 12VCC. Si está suministrando energía no regulada a la placa, asegúrese de conectarse al pin "RAW" no en VCC.

Los pines de alimentación son los siguientes:
  • RAW: Se utiliza para suministrar voltaje no regulado a la placa. Si la placa se alimenta a través de USB, el voltaje en este pin será de aproximadamente 4,8 V (los 5 V de USB menos una caída del diodo Schottky).
  • VCC: El suministro regulado de 3,3 o 5 voltios según el modelo.
  • GND: Clavijas de tierra.

Memoria

El ATmega32U4 tiene 32 kB de memoria flash para almacenar código (de los cuales 0,5 kB se utilizan para el gestor de arranque o bootloader). Tiene 2.5 kB de SRAM y 1 kBs de EEPROM (que se pueden leer y escribir utilizando la biblioteca EEPROM).

Entradas y salidas

Cada uno de los 18 pines digitales de la Sparkfun Pro Micro se puede usar como entrada o salida, utilizando las funciones pinMode, digitalWrite y digitalRead. Funcionan a 3,3 o 5 voltios (según el modelo). Cada pin puede proporcionar o recibir un máximo de 40 mA y tiene una resistencia pull-up interna (desconectada por defecto) de 20-50 kΩ. Además, algunos pines tienen funciones especializadas:

Serial: Pin 0 (RX) y Pin 1 (TX). En estos pines tenemos el puerto serial full dúplex UART, que se utiliza para recibir y transmitir datos en serie TTL. El software Arduino incluye un monitor en serie que permite enviar datos de texto simples hacia y desde la placa a través de una conexión USB. La biblioteca <SoftwareSerial> permite la comunicación en serie de los pines digitales de la Sparkfun Pro Micro.

Interrupciones Externas: Pines 0, 1, 2, 3 y 7, estos pines se pueden configurar para activar una interrupción en un valor bajo, un flanco ascendente o descendente, o un cambio de valor. Consulte la función <attachInterrupt> para obtener más información.


PWM: Pines 3, 5, 6, 9, y 10 Proporcionan una salida PWM de 8 bits con la función analogWrite. Los pines PWM simulan la salida de hardware analógico mientras que otros pines simulan la salida analógica de software. Estos 5 pines PWM encuentran aplicaciones en las que necesitamos regular algo, por ejemplo la velocidad de un motor DC, el control de giro de un servomotor, el brillo de un led, etc.

SPI: 16 (MOSI Master-Out Slave-In), 14 (MISO Master-In Slave-Out), 15 (SCK Serial Clock). Estos pines admiten la comunicación SPI (interfaz periférica en serie) desarrollada por Motorola. Recordemos que a diferencia de I2C, en SPI solo puede existir un dispositivo maestro y no existe límite para el número de esclavos.

La Sparkfun Pro Micro tiene 9 entradas analógicas, cada una de las cuales proporciona 10 bits de resolución (es decir, 1024 valores diferentes). Las entradas analógicas miden de tierra a VCC y toman la señal de los sensores analógicos y la convierten en un valor digital. Los pines miden el voltaje, no la corriente, porque tienen un valor muy alto de resistencia interna. Entonces, el valor de la corriente es mucho menor en comparación con el voltaje, además los 9 pines indicados como entradas analógicas (A0, A1, A2, A3, A6, A7, A8, A9 y A10) también pueden ser configurados como entradas o salidas digitales.

I2C: Pin 2 (SDA) y Pin 3 (SCL). Admite comunicación I2C (TWI) utilizando la biblioteca <Wire> para simplificar el uso del bus I2C.

Reset: Una resistencia de 10 kΩ en la placa eleva este pin manteniéndolo en alto y está activo en nivel bajo, por lo que debe conectarse a tierra para iniciar un reinicio. La Sparkfun Pro Micro permanecerá apagada hasta que la línea de reinicio vuelva a estar alta.

Al realizar reset, se envía el pulso lógico al pin de reset del microcontrolador ATmega32U4. Es una línea muy importante, ya que algunas veces los ordenadores se bloquean al no saber si deben tratar la pro micro como un mouse o un teclado o un joystick o un microcontrolador que deben comandar?, así que es muy normal y será necesario en algún momento hacer un reset o reinicio.


Programación:

1. Tu Sparkfun Pro Micro se puede programar con la descarga del software Arduino IDE, realizándole algunos sencillos y cortos ajustes.

2. Otra forma de programar tu Sparkfun Pro Micro es compilar el código por separado usando el compilador AVR-GCC para generar el archivo ejecutable y luego usar Avr-ObjCopy para convertirlo en un archivo .HEX finalmente, Avrdude se usa para cargar el archivo hexadecimal en el tablero.

AVRDUDE es un acrónimo de AVR Downloader/UploaDEr. Es un software de código abierto que se utiliza para programar microcontroladores AVR de atmel (ahora microchip). También puede usarlo para programar EEPROM's, memorias Flash e incluso fusibles y bits de bloqueo. ademas al instalar AVRDUDESS éste no toca la variable %PATH%, por lo que no causará ningún problema con el IDE de Arduino.

Cómo conectar Sparkfun Pro Micro a la computadora?


El procedimiento lo resumo en solo 3 pasos:

1. Descargar e instalar el driver para Windows.

2. Configuramos la dirección en el gestor URL adicional de tarjetas.

https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json

3. Seleccionamos Sparkfun AVR Boards - Sparkfun Pro Micro.


Ahora vamos a desglosar los pasos uno a uno más detallados, antes de enchufar su placa, comience descargando los controladores. Los drivers para la Sparkfun Pro Micro están firmados para usuarios de Windows y pueden descargarlos directamente usando el siguiente enlace:

DRIVERS PRO MICRO

Descomprime ese archivo .zip y no olvides dónde dejaste su contenido. En ese archivo zip, debe encontrar los archivos .inf y .cat , que contienen toda la información que Windows necesita para instalar el controlador de Pro Micro. El controlador sparkfun.inf y el archivo de catálogo firmado digitalmente sparkfun.cat se encontrarán en ..."Arduino_Boards-master/sparkfun/avr/signed_driver".

Ahora conectaremos la placa Sparkfun Pro Micro a la PC con un cable microusb y obtendremos un resultado como el siguiente (recomendable trabajar con un puerto USB 2.0):


Abriremos ahora el administrador de dispositivos de Windows y actualizaremos el driver manualmente, indicándole la ruta donde esta el driver firmado que bajamos en los pasos anteriores: "Arduino_Boards-master/sparkfun/avr/signed_driver"

Antes de poder usar la Sparkfun Pro Micro en el IDE de Arduino, deberemos instalar los archivos de la placa (.brd) para que Arduino sepa cómo comunicarse con esta board. Abrimos el IDE de Arduino, luego vamos a Preferencias (Archivo>Preferencias). Luego, hacia la parte inferior de la ventana, pegue esta URL en el cuadro de texto "Gestor de URLs adicionales de Tarjetas" y damos click en OK:


A continuación, hacemos click en Herramientas - Placa, y vamos a gestor de tarjetas:


En el gestor de tarjetas buscamos el paquete sparkfun y ubicándonos sobre Sparkfun AVR Boards damos click en Instalar:


Una vez instalado el paquete podremos ver todas las placas soportadas:


Tenga en cuenta, como ya hemos expuesto anteriormente, que hay dos opciones para la Sparkfun Pro Micro: 3V3 8 MHz y 5V 16 MHz. Es muy importante que seleccione la opción Pro Micro que coincida con el voltaje y la velocidad de su placa. Esto aparece en Herramientas > Procesador.


Cabe destacar que hay una nueva versión de la Sparkfun Pro Micro, llamada "Qwiic Pro Micro" donde básicamente se actualizo a conector USB tipo C, se le añadió el botón de reset incluido en la board y las almohadillas para agujeros pasantes Through-Hole, tienen bordes almenados un diseño similar a la Raspberry Pi Pico para soldarla directamente en el proyecto como un componente SMD.



SparkFun Qwiic Pro Micro


Algunos Clones de la Sparkfun Pro Micro

Tanto el Arduino Leonardo como la Sparkfun Pro Micro, son placas de desarrollo basadas en el microcontrolador ATmega32U4 de Atmel. La principal diferencia entre los bootloaders de estas dos placas es que el bootloader del Leonardo utiliza el protocolo de arranque en serie (Serial Bootloader) de Atmel, mientras que el bootloader de la Sparkfun Pro Micro utiliza el protocolo de arranque en HID (Human Interface Device). En pocas palabras, aunque ambos bootloaders permiten programar el microcontrolador a través del puerto USB, el protocolo utilizado para hacerlo es diferente.

El bootloader del Leonardo utiliza el protocolo de arranque en serie, mientras que el bootloader del Sparkfun Pro Micro utiliza el protocolo de arranque en HID.


Descarga aqui el bootloader de Arduino Leonardo

Descarga aqui el bootloader de Sparkfun Pro Micro


Finalmente también tenemos la parte Sparkfun Pro Micro en Fritzing y también encontramos variaciones de la misma para las clones:


Post Data: Toda la información técnica para realizar este post fue sacada y corregida directamente de la página del fabricante de la Pro Micro Original, Sparkfun Electronics. Es posible que los clones chinos cambien algunos parámetros al utilizar otros componentes.


"La palabra 'Arduino' y los logotipos oficiales son marcas comerciales con copyright © de Arduino AG. El software Arduino IDE es propiedad de sus respectivos autores. La licencia principal que rige los productos de Arduino es la Licencia Pública General de GNU (GPL) y la Licencia Pública General Menor de GNU (LGPL). Todos los derechos están reservados por sus respectivos propietarios y licencias correspondientes."


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:


Cómo Detectar un Arduino Falsificado

Arduino NANO v3

Arduino UNO WiFi Rev2

Nueva Placa Arduino Nano RP2040 Connect

Arduino Pro Mini

Arduino UNO Rev3

Simulador Wokwi - Generalidades

Nuevos Microcontroladores Raspberry Pi Pico W, H y WH

sábado, 25 de julio de 2020

USB a Serial en Arduino - Generalidades

Bienvenido a mi blog, hoy hablaremos un poco de la comunicación USB en las placas Arduino. Arduino es una plataforma de creación de electrónica de código abierto, la cual está basada en hardware y software libre, flexible y fácil de utilizar para los creadores o desarrolladores, para hacerlo, utiliza el lenguaje de programación Arduino (basado en Wiring) y el Software Arduino IDE (basado en Processing). Recordemos que Arduino es un proyecto, un ecosistema y no solo un modelo concreto de placa.

Arduino se conecta a nuestro ordenador a través del puerto USB, pero el puerto USB se debe conectar al microcontrolador a través de un puerto serial, esta interfaz USB en el ordenador, nos permite tener un puerto serie virtual, en un Arduino usamos el puerto USB para tres funciones: la primera cargar nuestro programa ya compilado en la memoria flash del micro, la segunda conectarnos al puerto Serie (UART) predefinido en cada Arduino para comunicarnos durante la ejecución del programa y la tercera, alimentar de corriente a Arduino. Dada la facilidad de uso y que hoy en día todos los ordenadores disponen de un puerto USB, esto nos facilita mucho hacer estas 3 operaciones.


El microcontrolador ATmega16U2, encontrado en las principales placas arduino originales, pertenece a la compañía Microchip, (recordemos que ya hace varios años microchip compro atmel) y utiliza una arquitectura AVR de 32 registros de 8 bits cada uno, este microcontrolador es de bajo consumo y cuenta con 16 KB de memoria flash, 512 bytes de memoria EEPROM y 512 bytes de memoria SRAM, también dispone de un oscilador interno para la sincronización de instrucciones, 22 pines de entradas y salidas, una interface UART, 2 de SPI y 5 pines PWM. En la placa electrónica Arduino UNO Rev3 y Arduino Mega2560, tenemos un chip ATmega16U2 programado con el firmware necesario para la transmisión de información con el protocolo USB, de esta manera cuando nos conectamos a través del puerto USB de nuestro ordenador a la placa Arduino, el encargado de comunicarse, situándose como intermediario entre el ordenador y el ATmega328P o ATmega2560, es el microcontrolador ATmega16U2.

ATmega16U2 no es el único microcontrolador programado con un firmware para actuar como conversor USB serial, en el Arduino Leonardo y Arduino UNO WiFi Rev2 tenemos al ATmega32U4 y en el Arduino NANO tenemos un chip de ftdi, por citar algunos ejemplos.

La UART o USART es el puerto serie que casi todos los microcontroladores tienen, en el caso de Arduino UNO Rev3 están conectados a los pines 0 y 1, y la comunicación serie es la base de casi cualquiera de las comunicaciones de los microcontroladores. Una USART puede trabajar igual que una UART, pero tiene la capacidad adicional de actuar como síncrona, esto significa, que los datos van sincronizados con una señal de reloj. En la placa Arduino UNO Rev3, se utiliza la UART para que el Atmega328P  se comunique con el otro microcontrolador ATmega16U2 que hace la interface al puerto USB. Los leds (Tx y Rx) parpadean para indicar actividad en el puerto serie a través de la UART.

Físicamente un USB tiene 4 pines:



  • Pin 1=> Alimentación con un voltaje de 5V DC y máximo 500 mA
  • Pin 2 y 3 => Sirven para la transmisión de datos del BUS
  • Pin 4 = GND, Masa o tierra

Como ya hemos visto, para que un Arduino tenga una interfaz USB, se necesita de un chip que ofrezca dicha interfaz, en algunos casos el propio microcontrolador ya dispone de ese interfaz embebida (como los PIC de microchip 18F25K50 y 18F45K50) y en otros casos, utiliza un segundo microcontrolador con interfaz USB, como es el caso de Arduino y sus Micros ATmega16U2 y ATmega32U4. Cuando conectamos un USB al ordenador, necesitamos un driver que nos implemente la comunicación con el USB y nos monte un puerto serie virtual, en el caso de Arduino los drivers ya están embebidos en el IDE, por ese motivo cuando conectamos un Arduino UNO Rev3 original o un Arduino Mega2560, automáticamente nos reconoce el dispositivo. También en el caso de Arduino UNO Rev 3 cuando se resetea la placa, se está reseteando el procesador principal ATmega328P sin cerrar la conexión USB, que es mantenida por el microcontrolador secundario ATmega16u2.

¿Cuál es la diferencia entre la placa ATmega328P ATmega16U2 Arduino Uno R3 original y la placa USB CH340G de Arduino Uno R3 ATmega328P china?

ATMEGA16U2 es un Microcontrolador en el que se puede escribir firmware y CH340G es un convertidor chino de USB a TTL que solo sirve para comunicar la placa con la computadora. En el caso del Atmega16U2 este ha sido programado o preconfigurado con un firmware, para actuar como convertidor USB a TTL en nuestra placa Arduino UNO Rev3 o Arduino Mega2560.

Comparaciones:

  • CH340 es más barato, 16U2 es más costoso.
  • CH340 es un IC (circuito integrado), 16U2 es un microcontrolador.
  • CH340 no puede reprogramarse, 16U2 puede reprogramarse y usarse como microcontrolador independiente (con el bootloader Hoodloader2) ejemplo Arduino USB Rubber Ducky.
  • Los driver para CH340 deben instalarse por separado, los drivers ATmega16U2 ya están embebidos en el IDE de arduino.
  • 16U2 es el método utilizado por Arduino UNO Rev3 original y Arduino Mega2560, CH340 es el clon chino, aunque en algunos casos también se encuentran placas clones con ATmega16U2.

Ejemplos de Conversores USB a Serial Comerciales para Arduino.


Arduino USB 2 Serial micro, el conversor oficial de arduino basado en el ATmega16U2, desafortunadamente lo descontinuaron y ya no lo venden, hasta lo borraron de la pagina oficial de Arduino.

Si es necesario restaurar el firmware del ATmega16U2 nos guiaremos por el siguiente pinout:



Debemos recordar que el firmware del ATmega16U2 "Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex" se encuentra en la propia ruta de instalación del IDE:

C:\Program Files (x86)\Arduino\hardware\arduino\avr\firmwares\atmegaxxu2

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

El siguiente esquema nos muestra el circuito de una interfaz USB a serial, perfectamente funcional, que podríamos implementar en nuestros diseños pcb:




Se implementa un diodo shockley para proteger el puerto USB de nuestro ordenador de corrientes inversas y un regulador de +3,3v para obtener los +5v para arduino y adicional +3.3v para alimentar por ejemplo módulos wifi esp8266. Como ejemplo tenemos el siguiente video, donde veremos la construcción, la forma de mandar hacer nuestras propias placas SMD y aprender a utilizar plantillas Stencil para soldar componentes de montaje superficial:



Cortesía: elprofegarcia


Diseño Final del Conversor USB a Serial SMD

Puedes descargar el esquemático y diseño del pcb en Fritzing aquí
Puedes descargar los archivos gerber aquí



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

Finalmente 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: