Archivo de la categoría: Plaquetas

Arduino UNO R3 – Conectándolo al mundo exterior

Arduino es una buena elección para comenzar a trabajar con microcontroladores y aprender a programarlo y a diseñar sistemas en base a él. Mucho de esto, básicamente, resulta así porque fue creado para enseñar. Su software y documentación están disponibles en formato de código abierto. La manera de crear y cargar programas dentro del microcontrolador es el entorno Arduino IDE, también de uso libre. Esta plataforma se puede utilizar en forma doméstica, en el mundo del arte, y hasta en aplicaciones industriales, pero se utiliza sobre todo dentro del campo educativo. Hay una gran variedad de modelos de placas, pero la ideal para comenzar es la UNO, por razones de precio y por la amplitud de la información disponible.

ARDUINO UNO R3

ARDUINO UNO R3

ALIMENTACIÓN EN EL ARDUINO UNO R3

El Arduino Uno se puede alimentar por tres vías:

1 – Conector cilíndrico (llamado «Barrel Jack» en inglés)

Es un conector hembra del tipo utilizado para la fuente de alimentación de las laptop. Las fuentes comerciales de 9V 1A CC que se proveen para Arduino tienen un cable terminado en el conector macho que se inserta en esta entrada. También tienen este conector macho los adaptadores «clip» que se venden en el mercado para Arduino para conectar a una batería de 9V. Los límites extremos de voltaje de alimentación que se puede introducir en este conector son, por especificaciones oficiales en el sitio de Arduino, de entre 6 y 20 voltios, pero el fabricante recomienda mantener los valores entre 7 y 12 voltios. El valor de 12 voltios, o aún mayor, podría recalentar los reguladores en el interior de la placa. Por el otro extremo, un valor de 6V producirá una alta sensibilidad a cualquier disminución en este voltaje, lo que motivaría el reinicio de la placa.

2 – Pin VIN

Este pin, ubicado en una de las hileras laterales de conectores hembra en el área de alimentación, está unido al pin central del conector cilíndrico, por lo cual para él valen las mismas especificaciones y precauciones.

3 – Cable USB

Cuando se conecta el Arduino con el cable USB a la computadora, el puerto USB proporciona como valor estándar 5 voltios a 500 mA (aunque hay equipos más recientes que pueden entregar más, 1A o 2A; por eso es conveniente leer las especificaciones de la computadora).

Otros pines referidos a la alimentación:

– GND = Referencia cero, tierra o «ground»

Entre los conectores laterales hembra del Arduino Uno y los cabezales con pines macho ICSP existen 5 pines GND, todos ellos interconectados entre sí y que son la referencia cero para todo voltaje.

– IOREF

Este pin es una referencia que nos indica el valor de voltaje para el funcionamiento correcto de los pines de entrada/salida. Esta referencia de tensión está relacionada con el voltaje de alimentación al que funciona el microcontrolador. En el Arduino UNO R3 ese valor es de 5V.

ENTRADAS ANALÓGICAS EN EL ARDUINO UNO R3

PINOUT ANALOGICO

La placa Arduino Uno tiene 6 pines de entrada analógica, que utilizan un ADC (Analog-Digital Converter = Convertidor de Analógico a Digital) para ingresar valores analógicos al microcontrolador en una codificación que éste puede manejar, que es puramente digital. Estos pines que sirven como entradas analógicas también pueden funcionar como entradas o salidas digitales.

Debe tenerse en cuenta que sólo hay un módulo ADC dentro de este microcontrolador, de modo que sólo se puede «leer» una entrada analógica a la vez. También se debe saber que la conversión analógica lleva un tiempo, bastante superior a la velocidad a que se ejecutan las instrucciones en el microprocesador. El tiempo para completar una conversión en el Arduino UNO R3 es de entre 13 y 260µs.

Convertidor de Analógico a Digital

El ADC, convertidor de analógico a digital, es un circuito electrónico que se utiliza para convertir señales analógicas en señales digitales. La representación digital de las señales analógicas es necesaria porque el procesador -un dispositivo digital- necesita, durante su procesamiento, un valor digital para utilizar los valores que se presentan en estas entradas. Los pines del Arduino A0-A5 tienen la capacidad de leer tensiones analógicas llegadas desde el exterior. En Arduino UNO, el ADC tiene una resolución de 10 bits, lo que significa que puede representar el valor de una tensión analógica en 1.024 valores digitales. En el Arduino UNO R3 el voltaje mayor que puede ingresar a una entrada analógica es de 5V, por lo cual si es necesario medir valores con otros rangos de voltaje deben introducirse o amplificadores, si el rango de voltaje es pequeño, o reductores por divisor resistivo o con un amplificador de amplificación menor que 1 si el voltaje máximo a medir es mayor a 5V.

¿Qué es I2C?

I2C es un protocolo de comunicación comúnmente conocido como bus I2C, y también -en el ambiente de Arduino- se nombra como Interfaz de dos líneas (Two Wire Interface – TWI). El protocolo I2C fue diseñado para permitir la comunicación entre componentes dentro de una tarjeta de circuito. En el bus I2C hay 2 cables, denominados SCL y SDA. SCL es la línea de reloj, cuya función es sincronizar las transferencias de datos. SDA es la línea utilizada para transmitir datos. Cada dispositivo del bus I2C tiene una dirección única. Es posible conectar hasta 255 dispositivos en el mismo bus. La sigla I2C viene de las palabras en inglés Inter Integrated Circuit.

CABEZAL ICSP

ICSP son las siglas de In-Circuit Serial Programming, en español Programación Serie en Circuito. Estos pines permiten al usuario ingresar programas de inicio (bootloader, por ejemplo) en las placas Arduino.

ICSP

Hay seis pines ICSP disponibles en la placa Arduino UNO. Un punto en el circuito impreso indica el pin 1 del cabezal ICSP.

Las señales en este cabezal son:

– Pin 1 del microcontrolador ATMEGA328A – RESET
– Pin 17 del microcontrolador ATMEGA328A – MOSI
– Pin 18 del microcontrolador ATMEGA328A – MISO
– Pin 19 del microcontrolador ATMEGA328A – SCK
– Pin 7 del microcontrolador ATMEGA328A – VCC / 5V
– Pin 8 del microcontrolador ATMEGA328A – GND / TIERRA

Se pueden conectar a un dispositivo programador mediante un cable adaptado al cabezal.

CONEXIÓN ICSP


PINES DIGITALES

Los pines 0 a 13 del Arduino UNO cumplen la función de entrada/salida digital. El pin 13 del Arduino UNO está conectado a un LED incorporado en la placa. En el Arduino UNO los pines 3, 5, 6, 9, 10 y 11 tienen capacidad de salida de pulsos digitales con ancho modulado (PWM).

Es importante tener en cuenta que cada pin puede proporcionar corrientes de hasta 40 mA máximo, pero se recomienda que esta corriente se mantenga limitada a 20 mA. La corriente máxima absoluta que pueden entregar todos los pines de un chip juntos es de 200 mA, en total.

Cuando se habla de digital en circuitos se refiere a la forma de representar datos al trabajar con códigos binarios. Un dígito puede ser 0 (BAJO: LOW en inglés) o 1 (ALTO: HIGH en inglés). Llevado a valores eléctricos, 0 es cero voltios (tierra: ground en inglés), o 1 un valor igual o cercano (pero no superior) al voltaje de alimentación. En el Arduino UNO este valor es de 5V.

PINES DIGITALES

Los pines digitales del Arduino se pueden configurar como entradas o salidas según las necesidades del usuario. También existen funciones adicionales para muchos de estos pines, relativas a funcionalidades de los módulos lógicos internos. Estas funciones se conectan con el pin por medio de bits internos (modificados por programa) en registros de configuración. En la programación que realiza el usuario a través del IDE del Arduino no verá (por lo general) esta configuración: de esto se ocupan las funciones incluidas en las librerías o bibliotecas.

En el Arduino UNO, cuando los pines digitales están configurados como salida, estarán en valores de 0 o 5 voltios. Si los pines digitales se configuran como entrada, la tensión se suministra desde un dispositivo externo. Este voltaje puede variar entre 0 a 5 voltios como máximo. Un valor BAJO ingresará al programa como binario 0, o un valor ALTO como binario 1.

Dado que los componentes del mundo externo pueden proporcionar voltajes variados según sea su diseño, siempre se debe tener la precaución de que esas señales sean de un máximo de 5V, y nunca alcancen valores negativos. Las entradas poseen dos umbrales que definen si se lee un 0 o se lee un 1. Todo voltaje menor o igual a 0,8 voltios es considerado como un 0. Todo voltaje superior a 2V es considerado como un 1. Los valores intermedios (por ejemplo, 1,3V) quedan dentro de una banda llamada zona gris. En toda entrada a un dispositivo digital es imposible saber qué valor leerá esa entrada cuando el voltaje se encuentre en la zona gris. Incluso es posible que la lectura no se mantenga consistente en el tiempo, de manera que esa entrada leerá una señal pulsante, o «ruido». Lo mismo ocurre si una entrada digital se deja sin conexión: es muy posible que lea pulsos erráticos.

Todo componente que se conecte a un pin digital debe asegurar los niveles adecuados, ya que -como he dicho- si la tensión se encuentra entre los umbrales -o sea en la banda gris- el valor que ingrese será indefinido.

A continuación, describo con la mayor simpleza posible las funciones PWM, diversos tipos de comunicación serie, interrupciones, y pines especiales, aunque en próximas publicaciones explicaré mejor cada función por medio de artículos con ejemplos concretos de circuito y programas.

Modulación de Ancho de Pulso (del inglés Pulse Width Modulation, abreviado PWM)

La modulación de ancho de pulso es una técnica utilizada para regular potencia con una señal pulsante cuyo valor ALTO tiene un ancho variable. Hay que considerar dos componentes clave: la frecuencia o separación entre pulsos, y el ancho del pulso. La frecuencia define el tiempo que transcurre entre el inicio de un pulso y el inicio del otro (en ambos casos, el flanco de subida de BAJO a ALTO). El ancho de pulso es el tiempo que permanece en ALTO cada pulso de la señal dentro del período total. El ciclo de trabajo se representa como el porcentaje del tiempo en que la señal está en ALTO durante el ciclo. En Arduino, los pines habilitados para PWM entregan una frecuencia de aproximadamente 500 Hz. El ancho de pulso, y en consecuencia el porcentaje de tiempo en valor ALTO, cambia de acuerdo al parámetro establecido por el usuario (en general, con un valor de 0 a 255, siendo el valor 0 equivalente a 0% y el valor 255 a 100%).

Comunicación Serie a niveles TTL (de 0 a 5V en el Arduino UNO)

Los pines del área de conectores hembra de borde marcados como digitales en el Arduino UNO y numerados 0 y 1 son los pines RX y TX, y conectan con el módulo serie (módulo USART: Universal Serial Sinchronous and Asinchronous Receiver and Transmiter, Receptor y Transmisor Universal Síncrono -o sincrónico- y Asíncrono -o Asincrónico-) del Arduino UNO. Internamente son utilizados, también, por el chip que maneja la comunicación USB. Como esta comunicación es la que se utiliza mientras se graba un programa al Arduino, los pines de borde 0 y 1 deben estar desconectados durante esta programación, o se debe prever un circuito que aísle las señales (se encuentran ejemplos en las hojas de datos de diversos microcontroladores y en artículos diversos en internet).

Comunicación Serie: La comunicación serie se utiliza para intercambiar datos entre la placa Arduino y otro dispositivo con puerto serie, como computadoras, pantallas, sensores, memorias, otros microcontroladores, y más. La placa Arduino UNO tiene un puerto serie de niveles TTL (0 a 5V) en los pines RX y TX, y un puerto serie universal, o USB, manejado por un chip que se ocupa de esta comunicación en especial. Arduino puede comunicarse en serie a través de otros pines digitales, utilizando la biblioteca (o librería = Library) SoftwareSerial. Esto permite conectar dispositivos adicionales habilitados para comunicación serie, y también dejar el puerto serie principal disponible para el USB.

Comunicación Serie por Hardware y por Software: La mayoría de los microcontroladores tienen hardware diseñado para comunicarse con otros dispositivos. Los puertos serie de software utilizan un sistema de interrupción de cambio de nivel en los pines para implementar la comunicación. Existe una biblioteca incorporada para la comunicación serie de software. El software serial es utilizado por el procesador para simular puertos serie adicionales. La única desventaja del software serial es que requiere más procesamiento, y no puede soportar velocidades altas, como el hardware serie.

SPI: SS/SCK/MISO/MOSI son los pines dedicados para la comunicación SPI. Se pueden encontrar en los pines digitales 10-13 del Arduino Uno y en las cabeceras del ICSP. La Interfaz Periférica Serial (SPI) es un protocolo de datos en serie utilizado por los microcontroladores para comunicarse con uno o más dispositivos externos en una conexión tipo bus (se conectan varios dispositivos sobre las mismas líneas). El SPI también se puede utilizar para conectar dos microcontroladores. En el bus SPI siempre hay un dispositivo que se denomina Maestro = Master en inglés, y todos los demás Esclavos = Slaves en inglés. Lo normal es que el microcontrolador sea el dispositivo maestro. El pin SS (Slave Select) determina con qué dispositivo esclavo se está comunicando el Maestro. Los dispositivos habilitados para SPI siempre tienen los siguientes pines: MISO (Master In Slave Out): una línea para enviar datos al dispositivo Maestro. MOSI (Master Out Slave In): la línea para que el Maestro envíe datos a los dispositivos periféricos. SCK (Serial Clock): Una señal de reloj generada por el dispositivo Master para sincronizar la transmisión de datos.

I2C: SCL/SDA son los pines dedicados para la comunicación I2C. En el Arduino Uno se encuentran en los pines analógicos marcados A4 y A5. I2C es un protocolo de comunicación entre componentes ubicados en una sola tarjeta de circuito. El bus I2C se compone de dos líneas: SCL y SDA. SCL es la línea de reloj, que está diseñada para sincronizar las transferencias de datos. SDA es la línea utilizada para transmitir datos en ambos sentidos. Cada dispositivo del bus I2C tiene una dirección única, y se pueden conectar hasta 255 dispositivos en el mismo bus.

Aref: Tensión de referencia para las entradas analógicas.

Interrupción: INT0 e INT1 son dos pines de interrupción externa que posee el Arduino UNO. Una interrupción externa es una interrupción del sistema que ocurre cuando hay necesidad de anunciar un suceso urgente desde el exterior al microcontrolador. Este anuncio de urgencia puede provenir de un conmutador accionado por el usuario, o de otros dispositivos del sistema. Estas interrupciones en Arduino se utilizan cuando no se puede perder una señal, o tomarla con atraso. Por ejemplo la lectura de la onda cuadrada generada por uno o dos encoders, o «despertar» al procesador por un evento externo cuando por programa se lo ha dejado en modo «dormido». Arduino tiene dos mecanismos de interrupción externa, por cambio de una señal en los pines habilitados al efecto. Son dos pines de interrupción externos en el ATmega168/328 llamados INT0 e INT1. Tanto INT0 como INT1 están asignados a los pines 2 y 3. Las interrupciones de cambio de señal en los pines digitales programados como entrada se pueden activar en cualquiera de éstos, aunque no existe una función dedicada para estos sucesos.

Comparación entre placas Arduino

Comparación entre modelos de Arduino

Especificaciones de placas Arduino retiradas del mercado


Manejo de potencia para motores con el integrado L293D

El integrado L293D incluye cuatro circuitos para manejar cargas de potencia media, en especial pequeños motores y cargas inductivas, con la capacidad de controlar corriente hasta 600 mA en cada circuito y una tensión entre 4,5 V a 36 V.

L293D

Los circuitos individuales se pueden usar de manera independiente para controlar cargas de todo tipo y, en el caso de ser motores, manejar un único sentido de giro. Pero además, cualquiera de estos cuatro circuitos sirve para configurar la mitad de un puente H.

El integrado permite formar, entonces, dos puentes H completos, con los que se puede realizar el manejo de dos motores. En este caso el manejo será bidireccional, con frenado rápido y con posibilidad de implementar fácilmente el control de velocidad.

Diagrama detallado del circuito interno

Diagrama simplificado

Las salidas tienen un diseño que permite el manejo directo de cargas inductivas tales como relés, solenoides, motores de corriente continua y motores por pasos, ya que incorpora internamente los diodos de protección de contracorriente para cargas inductivas.

Las entradas son compatibles con niveles de lógica TTL. Para lograr esto, incluso cuando se manejen motores de voltajes no compatibles con los niveles TTL, el chip tiene patas de alimentación separadas para la lógica (VCC1, que debe ser de 5V), y para la alimentación de la carga (VCC2, que puede ser entre 4,5V y 36V).

Las salidas poseen un circuito de manejo en configuración «totem-pole» (término en inglés que se traduce como «poste de tótem», nombre que, gráficamente, nos remite a un «apilamiento» de transistores, como las figuras en los famosos totems indígenas).

En esta estructura, unos transistores en configuración Darlington conducen la pata de salida a tierra y otro par de transistores en conexión seudo Darlington aporta la corriente de alimentación desde VCC2. Las salidas tienen diodos incorporados en el interior del chip para proteger al circuito de manejo de potencia de las contracorrientes de una carga inductiva.

Estos circuitos de salida se pueden habilitar en pares por medio de una señal TTL. Los circuitos de manejo de potencia 1 y 2 se habilitan con la señal 1,2EN y los circuitos 3 y 4 con la señal 3,4EN.

Las entradas de habilitación permiten controlar con facilidad el circuito, lo que facilita la regulación de velocidad de los motores por medio de una modulación de ancho de pulso. En ese caso, las señales de habilitación en lugar de ser estáticas se controlarían por medio de pulsos de ancho variable.




Las salidas actúan cuando su correspondiente señal de habilitación está en alto. En estas condiciones, las salidas están activas y su nivel varía en relación con las entradas. Cuando la señal de habilitación del par de circuitos de manejo está en bajo, las salidas están desconectadas y en un estado de alta impedancia.

Conexionado para un motor con giro en ambos sentidos (lado izquierdo) y con motores con giro en sentido único en dos salidas (lado derecho)


Por medio de un control apropiado de las señales de entrada y conectando el motor a sendas salidas de potencia, cada par de circuito de manejo de potencia conforma un puente H completo, como se ve en el diagrama de arriba, lado izquierdo. En la tabla de funcionamiento que sigue se puede observar los niveles TTL que corresponden a cada situación de trabajo:

Ejemplo de circuito en forma de puente H (para control bidireccional del motor) y su tabla de manejo

Disipador

Las patas centrales de la cápsula del chip están pensadas para proveer el contacto térmico con un dispador que permitirá lograr la potencia máxima en el manejo del integrado. En la figuras que siguen se observa la distribución de pines afectados a esta disipación, el área de cobre que se deja en el circuito impreso por debajo y a los lados del chip, y el diseño del disipador que propone el fabricante. La hoja de datos aporta una curva que permite una variación de estos tamaños según la potencia a manejar.

Shield de Arduino

Esta plaqueta posee dos L293D, o sea que permite controlar 4 motores de CC o dos motores paso a paso. Tiene aparte otras salidas.

Diagrama de la placa

Utiliza estos pines en el Arduino UNO:

Digital 4 – DIR_CLK
Digital 7 – DIR_EN
Digital 8 – DIR_SER
Digital 12 – DIR_LATCH
Digital 11 – PWM_Motor1
Digital 3 – PWM_Motor2
Digital 6 – PWM_Motor3
Digital 5 – PWM_Motor4
Digital 9 – Servo_1
Digital 10 – Servo_2

Descargamos ahora una librería de Adafruit para manejar el Shield directamente, ya que si no el manejo podría resultar bastante complicado.

La librería que necesitamos es esta adafruit-Adafruit-Motor-Shield-library-8119eec, y para instalarla seguimos el procedimiento habitual.

Para iniciar la plaqueta, necesitamos incluir este par de instrucciones:

La primera línea incluye la librería de AdaFruit en el programa. La segunda crea una instancia de un motor conectado a la puerta M1. La inicialización se define con el parámetro que le pasamos, que puede ir del 1 = M1 al 4 = M4.

Para establecer la velocidad del motor:

La primera línea define la velocidad el motor a 200. El valor 255 sería el máximo de RPM. La segunda línea indica que deseaemos dejar el motor en punto muerto.

Para que el motor avance usamos:

Y para que retroceda:

Es todo lo necesario para controlar un motor.

Si queremos hacer un primer programa sencillo que haga avanzar el motor unos segundos y después retroceda, he aquí el programa:

En caso de querer controlar cuatro motores:

Enlaces: L293D, Hoja de datos – Quadruple Half-H Drivers

Artículos relacionados:
Uso de la placa L298N para motores de CC
Puente H: Placa controladora de motores L9110S
Guía rápida de placas de control de motores
Manejo de potencia para motores con el integrado L293D
Control de motores de CC por Ancho de Pulso (PWM)


¿Un FPGA en un Arduino?

Arduino anunció recientemente una nueva línea de productos, y uno de ellos, el MKR Vidor 4000, incluye un FPGA. ¿Qué harán los diseñadores con el poder de un FPGA en sus manos?

Un FPGA en un Arduino

Arduino es una popular herramienta de creación de prototipos por varias razones. En primer lugar, no requiere un programador voluminoso y caro (como los chips PIC) y se puede programar a través de USB. En segundo lugar, las placas Arduino son de código abierto y, debido a esto, hay muchos fabricantes de placas Arduino que ofrecen precios competitivos. En tercer lugar, los Arduinos son famosos por su robusto entorno de shields y soporte de bibliotecas, lo que hace que el uso de dispositivos complejos como los chips de Ethernet sea cosa fácil.

A medida que progresó la tecnología, también lo hizo el Arduino. En el lanzamiento de las nuevas placas Arduino se reflejan muchas tendencias de la industria. Por ejemplo, la introducción del Arduino Yun agregó capacidades de Wi-Fi, y el Arduino Duo marcó el comienzo con procesadores más potentes. La miniaturización se concretó con el Arduino Nano, y con el LilyPad se introdujo la electrónica portátil. Pero todas estas mejoras involucran hardware especializado que realiza tareas únicas, como comunicaciones por RF o bajo consumo de energía.

Ahora que los FPGA se están volviendo más baratos y más accesibles, Arduino está a punto de lanzar un Arduino con un FPGA incorporado, el MKR Vidor 4000. La parte «MKR» de su nombre se pronuncia como “Maker” («Creador»), y Massimo Banzi, cofundador de Arduino, se refiere a él como una placa de «factor de forma de creador». Esto no es sorprendente, ya que generalmente se acepta que Arduino está diseñado para creadores, y no es de especial interés para los profesionales de ingeniería electrónica.

El FPGA

El FPGA incluido es un Intel Cyclone 10CL016, y el sitio web de Arduino afirma que el FPGA contiene 16.000 elementos lógicos, 504 Kb de RAM, 56 multiplicadores 18×18 de hardware para aplicaciones DSP de alta velocidad, etc. El sitio web también establece que los pines FPGA pueden dar salidas de hasta 150MHz, y que también pueden configurarse como puertos de comunicaciones comunes como UART, I2C y SPI. Si es cierto, este complemento FPGA podría ser extremadamente útil para los diseñadores que desean crear sistemas digitales de alta velocidad que necesitan capturar datos y procesarlos rápidamente (como los procesadores de señales digitales).

Sin embargo, ¿cuántos aficionados realmente necesitan usar un FPGA?

¿Cómo ayudará esto a los diseñadores?

El acceso a un FPGA permite que los diseñadores creen circuitos personalizados para conectarse al Arduino, lo que puede eliminar la necesidad de circuitos externos. También permite cargarle las funciones de E/S del Arduino al FPGA, pero conlleva el costo de requerir una línea de comunicación entre el FPGA y el Arduino (a menos que el FPGA y la CPU estén integrados en el mismo paquete, en cuyo caso los dos pueden tener líneas de E/S especiales para su comunicación).

Los FPGA, sin embargo, son dispositivos complejos y, a menudo, se programan en lenguajes como HDL y Verilog, que no son aptos para personas no muy arriesgadas. Si bien Arduino anunció que están diseñando un sistema de compilación basado en la nube que facilitará el uso del FPGA, esto aún está por verse. La mayoría de las veces que un sistema se hace más fácil de usar, sacrifica su poder, capacidad y control. Dicho esto, el Vidor 4000 podría ser una herramienta educativa invaluable para aquellos que desean comenzar con FPGA.

¿Más al estilo pi?

El Vidor 4000 no solo cuenta con la inclusión de un FPGA; también tiene varios dispositivos de E/S que lo hacen parecer más a un Pi que a un Arduino.

El Vidor 4000 incluye también un módulo Wi-Fi Nina W102, un chip criptográfico ECC508, un conector micro HDMI, un conector MIPI para cámara y un conector rápido MiniPCI con hasta 25 pines programables por el usuario. Estas características, especialmente el Wi-Fi incorporado, crean una plataforma de IoT potencialmente popular que puede realizar tareas increíblemente complejas. Con el chip criptográfico incorporado, la verificación SSL y HTTPS se convertirán en una tarea trivial y ayudarán a descargar las tareas de seguridad del microcontrolador principal.

Si bien este dispositivo no será tan poderoso como un Raspberry Pi, definitivamente es más pequeño y está más enfocado en el hardware, algo en lo que la Pi se queda atrás.

Placas competidoras para creadores con FPGA

El Vidor 4000, obviamente, no es la primera placa en salir con capacidades FPGA, pero tampoco es la primera construida teniendo en cuenta la compatibilidad con Arduino. Otro producto ya en el mercado, XLR8, es una tarjeta de desarrollo compatible con Arduino que está basada en FPGA, incluye un microcontrolador integrado de instrucción AVR de 8 bits y es programable a través del IDE de Arduino.

El XLR8 está preconfigurado con «bloques xcelerator», que son bloques que están especialmente diseñados para manejar tareas específicas. Los bloques con los que viene preinstalada la unidad incluyen un bloque matemático de punto flotante, un servocontrol, un controlador NeoPixel y un ADC mejorado.

La integración de los FPGA en un proyecto Arduino sin duda creará una nueva ola de proyectos e ideas que podrán construir los aficionados, pero los FPGA son dispositivos complejos. Sin embargo, los usuarios de Arduino pueden comenzar a diseñar su propio hardware desde cero y los FPGA incluidos en los microcontroladores pueden cambiar la forma en que se construyen los circuitos.

La nueva placa MKR Vidor 4000 lleva la complejidad de los FPGA a los que no son ingenieros electrónicos.




Walbi, el bípedo que aprende a caminar

Conozca a Walbi, un humanoide a escala 50% con programas Arduino para captura y reproducción de movimiento. Se mueve a mano, graba y reproduce luego los movimientos. El WALink BIped es un robot creado por Pedro y Gil Tavares, de Lisboa, para un proyecto de aprendizaje automático que no se concretó.

Walbi usa un Arduino Nano como «cerebro», servos LX-16A de «músculos», y partes plásticas impresas en 3D como «huesos». Los servos LewanSoul LX-16A son servos ideales para pequeños proyectos robóticos, ya que son livianos, pueden mover cargas de más de 19 kg/cm, y se conectan con un solo cable que va de servo a servo, lo que hace que el cableado del robot sea un juego de niños.

Walbi es un humanoide a escala 50%: sus piernas miden 55 cm de altura desde el talón hasta la cintura, y pesan 1,1 kg. Las partes blancas de su cuerpo fueron impresas en 3D, pero podrían haberse hecho fácilmente con madera resistente y liviana.

La programación de Walbi es muy sencilla. Usted puede descargar los dos programas necesarios para realizar la captura y reproducción de movimientos, y entonces puede hacer que Walbi camine, se arrastre, suba, salte o baile. Solo tiene que mover sus piernas a una postura deseada, registrar esa postura, darle forma a Walbi en otra postura, grabarla y así sucesivamente, y luego, cuando haya grabado la secuencia completa, puede sentarse y ver cómo se desempeña hábilmente siguiendo los movimientos que aprendió.

Qué se necesita

Componentes de hardware (sí, siempre hay que comprar algunas cosas):

Aplicaciones de software y/o servicios en línea: Arduino IDE

Herramientas manuales y máquinas de fabricación: Impresora 3D (genérica)

Construyendo a Walbi

Las piezas de Walbi se imprimieron en 3D, con plástico PLA, utilizando una impresora FlashForge Creator Pro. Descargar los archivos STL de Thingiverse, o usar un método alternativo para construir los pies, los “huesos” de las piernas y la cintura, utilizando madera o metal. Los soportes de los servos encajan en estas partes, y unen los servos con ellas.

Como se muestra en el dibujo de abajo, necesitará soportes metálicos de los cuatro tipos diferentes disponibles para adjuntar los servos a las partes impresas, y entre sí.

Conexionado

Para controlar los servos LX-16A se necesita una placa de LewanSoul llamada Bus Linker.

Ésta recibirá comandos desde un puerto serie en el Arduino Nano. Como utilizamos la USART del hardware de Arduino para comunicarnos con la computadora, recurrimos a la biblioteca SoftwareSerial para crear un segundo puerto serie en el Nano, que nos sirve para conectarnos a la placa Bus Linker.

El cableado se minimiza con estos servos serie. Hay un cable que va de cada servo al siguiente (un cable serie provisto con los servos) y los servos se enchufan directamente a la placa de depuración. Su computadora se conecta al puerto USB de Arduino, y Arduino se conecta a la placa de depuración mediante tres cables (TX, RX y GND) conectados a los pines de Arduino que fueron configurados para SoftwareSerial.

Los servos utilizan una velocidad de comunicación serie en baudios de 115200 (que es demasiado alto y falta investigar si se modificar). Esta velocidad en baudios es alta para SoftwareSerial, por lo que tuvimos que implementar funciones de comprobación de errores y reintento. En algunos casos se necesitaba persistencia para obtener una lectura correcta.

Fuerza

Los servos pueden proporcionar 19,5kg.cm a 7,4v. Usamos 6v y la corriente en estado quieto resultó inferior a tres amperios.

   

Programación

Puedes obtener el código Arduino en el repositorio de Github del proyecto.

Se utilizan dos programas para la captura y reproducción de movimiento, una técnica similar a la que se usa en las películas. Empiezas poniendo al robot en una pose. Como los servos están predeterminados para apagar el motor, se pueden girar los servos a mano. Una vez que se tiene el robot en la posición deseada, se usa el programa Walbi_record para leer y mostrar todos los ángulos de servo. Usted luego alimenta esas lecturas de ángulo en la variable poseAngles en Walbi_play, y usa el programa para reproducir la secuencia de poses grabadas a una velocidad establecida por la variable timeToMove (en milisegundos).



Aquí hay algunos consejos y trucos aprendidos al crear Walbi:

  • Los soportes para el LX-16A solo se acoplan al servo en UNA posición, por lo que es muy fácil conectarlos incorrectamente, especialmente a las partes impresas en 3D. Tuvimos que reensamblar a Walbi un par de veces para corregir errores de montaje que eran bastante difíciles de detectar.
  • Los servos vienen con identificación ID 1 por defecto. Asigne a cada servo una ID diferente antes de montarlos en el robot, o será imposible comunicarse con varios servos serie conectados con la misma ID.
  • El uso de bridas para cables realmente mejora la apariencia.

  • Los servos vienen con los tornillos necesarios para conectar el disco de acoplamiento de los servos, y el disco a los soportes. Los soportes vienen con los tornillos necesarios para sujetarlos a los servos. Tendrá que comprar tornillos por separado para sostener las conexiones y para el soporte de las piezas de plástico. Se utilizan tornillos y tuercas DIN912 M2-6 y M2-10.
  • Es posible mejorar la tracción pegando almohadillas de silicona en las plantas de los pies del robot.

  • Es preferible usar discos de acoplamiento de metal para servo, ya que las de plástico que vienen provistas con los servos se romperán en el caso de que las piernas se golpeen durante las pruebas. Si estas piezas se rompen, el robot se aflojará y la reproducción del movimiento perderá precisión. De otra manera, es esta reproducción es sorprendentemente buena.

Piezas a medida

STL para piezas impresas en 3D (Originalmente impreso en un Flash Forge Creator Pro.)

Código Programas Arduino para control de movimiento y reproducción

En Alienexpress encontré algunas publicaciones que pueden servir de guía para obtener los elementos:

SERVO
JUEGO DE SERVO Y ACCESORIOS
SERVO Y PIEZAS DE MONTAJE