Construir el robot Devastator y aprender acerca de sensores, microcontroladores, Software y control del motor mientras te diviertes

Por Paul Pickering

Colaboración de Editores de Digi-Key de América del Norte

La construcción de un robot multifunción desde un kit es una buena forma de empezar a trabajar como diseñador, ya que proporciona una oportunidad para aprender acerca de muchos campos relacionados: microcontroladores, sensores, motores, desarrollo de software y mucho más. Además, hay una amplia selección de kits de robot, add-ons, y ayuda en línea para diseñadores principiantes y experimentados por igual.

Este artículo analiza algunas de las medidas prácticas, problemas y posibles actualizaciones a tener en cuenta a la hora de construir sobre la plataforma DF Robot Devastator (Figura 1).

Imagen del DFRobot Devastator

Figura 1: El DFRobot Devastator es una plataforma versátil que puede ayudar a los diseñadores y fabricantes a adquirir una amplia gama de conocimientos de software y electrónica. (Fuente de la imagen: DFRobot)

¿Por qué Devastator? Es una plataforma sólida y duradera, con construcción de aluminio y dos motores CC con escobillas y engranaje de metal. Puede manejar una carga de hasta 3 kg, tiene varios orificios de montaje para sensores, servomotores, brazos de robot, y otros accesorios, y es compatible con las populares placas del microcontrolador compatibles con Maker.

La construcción de un completo sistema de robot

El robot viene con el chasis, las ruedas, rodamientos y dos motores, pero deja la elección de otros componentes al diseñador. Un sistema completo requiere una placa de microcontrolador, una placa de controlador de motor, y un medio para introducir comandos. Los complementos opcionales pueden incluir elementos tales como un brazo de robot, una cámara de video, o un sistema para evitar colisiones y proporcionar un grado de funcionamiento autónomo.

Elegir una plataforma de microcontrolador

El robot Devastator es compatible con varias plataformas de microcontroladores populares. La plataforma de desarrollo de código abierto Arduino tuvo su origen en Italia en 2003 y es ampliamente utilizada por diseñadores novatos y profesionales. La Arduino Uno (Figura 2) usa el microcontrolador RISC de 8 bits de Microchip Technology (anteriormente Atmel) ATmega328P.

Otras características estándar incluyen un puerto USB controlado por un microcontrolador ATmega16U2 preprogramado, entradas y salidas digitales, un puerto de entrada analógica, y un puerto de programación serial en circuito (ICSP) para actualizaciones de software. El nuevo Arduino Due actualiza el núcleo a un ARM® Cortex-M3® de 32 bits. Este núcleo se utiliza también en la placa controladora de DFRobot, que se describe a continuación, y combina la compatibilidad de Arduino y el controlador del motor.

Imagen de Arduino Uno

Figura 2: El Arduino Uno es una opción popular para los proyectos Maker y se basa en los microcontrolador RISC de 8 bits ATmega328P de Microchip Technology. (Fuente de la imagen: Arduino)

La computadora de placa única Raspberry Pi fue desarrollada originalmente para enseñar informática básica en las escuelas, pero se ha vuelto muy popular entre la comunidad de diseñadores. La última Raspberry Pi 3 se basa en un CPU Broadcom de núcleo cuádruple de 64 bits que se ejecuta a 1.2 gigahertz (GHz). Incluye una opción de LAN inalámbrica 802.11n, Bluetooth 4.1 y Bluetooth de baja energía (BLE). También tiene 1 GB de RAM, una ranura para tarjeta micro SD, 4 puertos USB, HDMI y puertos Ethernet, una interfaz de cámara, 40 pines GPIO, además de otras interfaces especializadas.

Los gurús de Windows que buscan aprovechar al máximo su experiencia existente pueden comenzar con la placa de controlador LattePanda compatible con Devastator, ya que viene instalada y activada con una edición completa de Windows 10. La placa utiliza un CPU de cuatro núcleos que se ejecuta a 1,8 GHz, la cual está integrada con un coprocesador ATmega32u4 de 8 bits de Microchip, para compatibilidad con Arduino.

La LattePanda viene con 2 GB de RAM DDR3L y hasta 32 GB de almacenamiento, un USB 3.0 y dos puertos USB 2.0, Wi-Fi, Bluetooth 4.0, un coprocesador y un total de 22 GPIO divididos entre los dos procesadores.

Controlar los motores

Después de instalar el microcontrolador principal, el siguiente paso es seleccionar una placa de control del motor. Devastator contiene dos motores de 6 V que funcionan a 160 rpm (sin carga). Cada uno tiene un par de salida máxima de 0,8 kgf.cm (0,058 ft-lb.) y un máximo de corriente de parada de 2,8 amperios (A).

La Raspberry Pi requiere una tarjeta de expansión plugin para funciones específicas del robot, pero la placa cuádruple BLE Romeo DFR0398 de DFRobot proporciona una opción de placa única Arduino para entusiastas que contiene el microcontrolador y los controladores de motor (Figura 3). La placa proporciona un núcleo más poderoso que los derivados de UNO, pero mantiene la compatibilidad del software de Arduino.

Microcontrolador de STMicroelectronics STM32F103R6: este dispositivo utiliza el núcleo ARM®Cortex®-M3 de 32 bits que se ejecuta a 72 megahercios (MHz) e incluye 512 kbytes de memoria flash, un bloque de modulación de ancho de pulso (PWM) para control del motor, 16 canales de conversión de analógico a digital (ADC) de 12 bits, y dos canales de conversión digital a analógico (DAC) de 12 bits.

Imagen de DFRobot DFR0398 Romeo BLE Quad

Figura 3: El DFR0398 Romeo BLE Quad es una placa de control de robot compatible con Arduino con capacidad Bluetooth y controladores para cuatro motores. (Fuente de la imagen: DFRobot)

Los controladores de motor son cortesía de dos dispositivos de Microsemi HR8833. Cada controlador MOSFET incluye dos controladores de puente H para el control bidireccional de los motores de Devastator. El Romeo BLE Quad incluye cuatro interfaces de codificador, y también integra el transceptor RF CC2540 de Texas Instruments para conectividad inalámbrica Bluetooth 4.0.

Agregar capacidad

Las placas de microcontrolador se pueden ejecutar a 5 voltios desde el conector USB, pero los motores requieren una fuente portátil (es decir, una batería) con mayor voltaje y corriente. Muchos adeptos de Maker adaptan los paquetes de baterías recargables diseñadas originalmente para automóviles radiocontrolados (RC). Estos usualmente tienen voltajes de 7 voltios o más y capacidades de más de 5000 miliamperios-hora (mAh), y cambiar el conector original es un trabajo sencillo. El puerto de servo potencia Romeo BLE Quad puede aceptar de 7 a 10 voltios CC.

Programación de la placa del microcontrolador

Es sencillo instalar el software en el microcontrolador y los proveedores que apoyan a Maker tienen instrucciones paso a paso en sus sitios web.

A la hora de decidir sobre un sistema operativo (SO), las opciones se diferencian por la plataforma. La placa LattePanda viene con Windows instalado. Raspberry Pi ofrece varias opciones, incluyendo Windows IoT Core y varias distribuciones de Linux. Raspbian, una variante de la fuente abierta del sistema operativo Debian Linux, es la elección más común entre los fabricantes.

Arduino, por otro lado, no utiliza un sistema operativo tradicional. En su lugar, las plataformas Arduino utilizan un ejecutivo cíclico que se repite y se pasa en bucle a través de una secuencia de código. Los desarrolladores escriben e instalan el código con el entorno de desarrollo integrado (IDE) de Arduino con fuente abierta. Es una aplicación multiplataforma escrita en Java y está disponible para Windows, Mac OS X y las máquinas host de Linux. El entorno Arduino tiene su propia terminología para varios elementos. Por ejemplo, una placa plugin compatible con Arduino es un "escudo", y un módulo de software es un "sketch".

Programación con el Romeo BLE Quad

Debido a que la placa Romeo BLE Quad es una solución de robot de placa única con periféricos avanzados, se utilizará para la discusión a continuación

Para empezar, elija el sistema operativo preferido para la máquina y descargue el IDE desde el sitio web de Arduino. Aunque el DF Romeo BLE Quad no utiliza el mismo procesador ATmega328 que el hardware Arduino estándar, el proceso de desarrollo de software es similar ya que la placa es compatible con el IDE de Arduino.

El IDE aloja a más de veinticinco placas de varios fabricantes, pero el Romeo BLE Quad no está entre ellos. El Romeo BLE Quad es una versión de otra placa DFRobot, la Bluno M3, con controladores de motor añadidos. Para configurar el IDE, el archivo M3 Bluno primero debe ser descargado desde el sitio de GitHub de código abierto.

Para instalar este archivo:

  1. Abrir el IDE de Arduino y vaya a Archivo -> Preferencias. Copie el enlace GitHub en el cuadro de "URL de Administrador de tarjetas adicionales" y haga clic en "OK".
  2. Ir a Herramientas-> Placa-> Adminisrador de Placa, introduzca "Bluno M3" en el cuadro de búsqueda y haga clic en "Instalar". Esto descargará el archivo de configuración.
  3. Seleccione la placa Bluno M3 desde el menú Herramientas -> Placa.

El sistema ahora está listo para el desarrollo de aplicaciones. El IDE estándar admite la programación en C y C++, e incluye varios ejemplos de código. Los programadores utilizan el editor de texto para escribir bosquejos (programas) (Figura 4).

Imagen de pantalla del IDE de Arduino y el editor de textos

Figura 4: Pantalla del IDE de Arduino y editor de textos: un nuevo programa incluye las dos funciones requeridas. (Fuente de la imagen: Arduino)

El IDE entonces depura el código, lo compila cruzado, y carga el resultado a la placa del microcontrolador a través del puerto de programación serial en circuito (ICSP). Romeo BLE Quad también puede programarse a través de su puerto Bluetooth.

El editor de textos comienza un nuevo programa con dos funciones necesarias precargadas, listo para agregar código: la función setup() configura las condiciones iniciales y se ejecuta una vez y, a continuación, loop() se ejecuta de forma continua.

Se deben descargar e instalar dos bibliotecas Arduino para ejecutar los motores de Devastator con Romeo BLE Quad: Motor.h y PID_v1.h.

El código para el motor empieza por pedir estas dos bibliotecas como ficheros de cabecera a través de una instrucción de incluir, define los pines de E/S y algunas constantes iniciales, luego configura los motores en la sección de configuración() (Lista 1).

Copy
/*!
* @file RemeoBLEQuadDrive.ino
* @brief RemeoBLEQuadDrive.ino PID control system of DC motor
*
*  RemeoBLEQuadDrive.ino Use PID control 4 way DC motor direction and speed
* 
* @author linfeng(490289303@qq.com)
* @version  V1.0
* @date  2016-4-14
*/
 
#include "PID_v1.h"
#include "Motor.h"
 
Motor motor[4];
int motorSpeed[4] = {-200,200,400,-400};/*Set 4 speed motor*/
/* Speed=motorSpeed/(32*(setSampleTime/1000))(r/s) */
const int motorDirPin[4][2] = { //Forward, Backward
/*Motor-driven IO ports*/
  {8,23},
  {7,9},   
  {24,14},
  {4,25}
};
 
 
//const double motorPidParam[3]={0.6,1,0.03};/*DC MOTOR,Yellow??180degree*/
//const double motorPidParam[3]={1.5,1,0.05};/*DC MOTOR,Yellow??90 degree*/
const double motorPidParam[3]={1.2,0.8,0.05};/*Encoder V1.0,160rd/min ;19500/min; 32:1,Kr=3.5*/
void setup( void )
{
  Serial1.begin(115200);
     for(int i=0;i<4;i++){
                                motor[i].setPid(motorPidParam[0],motorPidParam[1],motorPidParam[2]);/*Tuning PID parameters*/
                                motor[i].setPin(motorDirPin[i][0],motorDirPin[i][1]);/*Configure IO ports*/
                                motor[i].setSampleTime(100);/*Sets the sampling period*/
                motor[i].setChannel(i);/*Sets the motor channel */
                                motor[i].ready();/*Motor enable*/
                motor[i].setSpeed(motorSpeed[i]);/*Set motor speed*/
                }
}
 
void loop( void )
{
                for(int i = 0; i < 4; i++){
                                motor[i].calibrate();/*motor PID calibrate*/
                }
 
}

Listado 1: Este ejemplo de código C configura y controla cuatro motores Arduino para el Romeo BLE Quad. (Fuente de código: DFRobot)

Las secciones configuración() y bucle() configuran y controlan el motor de cuatro canales. Ya que el Devastator solo necesita dos chasis, las piezas de repuesto están disponibles para accesorios como el brazo de un robot que se analizan a continuación.

Controlar el robot de forma inalámbrica

Es posible conectar un cable USB en la placa de control y dirigir el robot de esa manera, pero es mucho más práctico controlarlo de forma inalámbrica a través de Wi-Fi o Bluetooth y un teléfono inteligente, tableta o la computadora. Como se mencionó anteriormente, Romeo BLE Quad incluye el mismo módulo Bluetooth 4.0 que la plataforma Bluno. Las aplicaciones de fuente abierta para iOS 7.0+ y Android 4.3+ están disponibles en GitHub. Con estas aplicaciones, el diseñador puede controlar el robot y cargar un nuevo boceto de forma remota.

Actualizaciones para el diseño básico

Después de montar el diseño básico, un siguiente paso popular es agregar accesorios para que el robot pueda realizar algunas tareas útiles (Figura 5). Aquí están algunas actualizaciones para probar.

Imagen de sensor ultrasónico DFRobot URM37 v4.0 y del módulo de la cámara de Adafruit 397

Figura 5: The DFRobot ofrece URM37 v4.0 sensor ultrasónico (izquierda) y Adafruit módulo de cámara 397 (derecha) que son dos populares accesorios (Fuentes de imágenes: DFRobot y Adafruit)

Detectar y evitar los obstáculos es una función deseable en un robot móvil. El sensor ultrasónico URM DFRobot37 v4.0 genera una tensión proporcional a la distancia y es compatible con Arduino y Raspberry Pi. El sensor detecta la presencia de un objeto o una pared, entonces el código se ejecuta u giro al azar y el robot continúa en la nueva dirección.

Transformar el robot en una cámara móvil es otra popular actualización. El módulo de cámara 397 de Adafruit puede capturar vodeo o imágenes fijas. La cámara con su sensor de imagen CMOS puede capturar una imagen de 640 x 480 píxeles a 30 fotogramas por segundo (fps), y tiene una función de detección de movimiento.

Considere la posibilidad de montar la cámara en un brazo de robot, como el montaje de inclinación/desplazamiento DF05BB (Figura 6). El kit incluye dos soportes y dos servomotores DF05 y está diseñado para el montaje horizontal.

Imagen del montaje inclinación/desplazamiento DFRobot DF05BB

Figura 6: El montaje de inclinación/desplazamiento DFRobot DF05BB viene con dos servomotores y dos soportes. (Fuente de la imagen: DFRobot)

Ensamblar todas las piezas

Un robot Devastator completo incluye el chasis, la tarjeta controladora, una tarjeta de expansión y un sensor de ultrasonidos (Figura 7). Las dos placas están situadas en la plataforma superior para mayor comodidad, pero también hay una plataforma de montaje inferior si se desea una cámara móvil de montaje superior.

Imagen del chasis Devastator, la tarjeta controladora, una placa de expansión de control del motor y un sensor de ultrasonidos

Figura 7: Este ejemplo de un diseño completo incluye el chasis Devastator, la tarjeta controladora, una junta de expansión de control motor y un sensor de ultrasonidos. (Fuente de la imagen: DFRobot)

Conclusión

DFRobot es una excelente plataforma basada en Maker para diseñadores y fabricantes por igual que permite explorar el desarrollo de software, la funcionalidad del microcontrolador, las opciones de sensor y el control del motor en un entorno divertido, con el soporte adecuado.

Además, muchos recursos están disponibles en el sitio web de Digi-Key. Por ejemplo, puede obtener más información acerca de la programación de la plataforma Arduino aquí. Digi-Key también ofrece ayuda con la programación de Raspberry Pi con Python, el lenguaje de Pi más popular. Todos los productos mencionados anteriormente tienen una extensa documentación, notas de aplicación y tutoriales.

Después de completar este proyecto, se puede probar con muchos otros más. Maker.io está dedicada al movimiento de desarrolladores, con docenas de proyectos destacados, recursos, fuentes de financiamiento y más.

Descargo de responsabilidad: Las opiniones, creencias y puntos de vista expresados por los autores o participantes del foro de este sitio web no reflejan necesariamente las opiniones, las creencias y los puntos de vista de Digi-Key Electronics o de las políticas oficiales de Digi-Key Electronics.

Acerca de este autor

Paul Pickering

Acerca de este editor

Editores de Digi-Key de América del Norte