Robot Sanduino – Motores CD

El Robot Sanduino A01 usa dos motores de Corriente Directa (CD), los cuales se pueden conectar como se muestra en la siguiente figura.

SanduinoA01-MotoresCD

El puente H y la tarjeta Arduino UNO deben estar atornillados a la base superior del Robot Sanduino A01, usando un espaciador entre cada tarjeta de circuitos y la base superior, para evitar que las tarjetas se tuerzan al apretar los tornillos.

Las líneas de colores que unen conectores representan cables, que no necesariamente son de los colores mostrados.

Con el siguiente programa, puedes probar que todo el sistema esté apropiadamente conectado.

/* Programa: Sanduino_Motores.ino
   Autor: Julio Sandria (Enero 2015)
   Requiere: Robot Sanduino A01, con puente H
   y Arduino UNO conectados.
   Mueve el motor izquierdo con pines 6 y 7
   Mueve el motor derecho con pines 8 y 9
*/

void setup() {
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);
}

void loop() {
  // Robot avanza 2 segundos
  digitalWrite(6,HIGH);
  digitalWrite(7,LOW);
  digitalWrite(8,HIGH);
  digitalWrite(9,LOW);
  delay(2000);
  
  // Robot retrocede 2 segundos
  digitalWrite(6,LOW);
  digitalWrite(7,HIGH);
  digitalWrite(8,LOW);
  digitalWrite(9,HIGH);
  delay(2000);  
}

Carga el programa en la tarjeta Arduino UNO del robot.

NOTA: Asegúrate de conectar una fuente de energía al interruptor y otra fuente de energía a Arduino UNO.

Al iniciar el programa, el robot debe avanzar dos segundos. Si en lugar de esto el robot retrocede, entonces hay que cambiar la polaridad de los cables conectados a los motores y al puente H.

Si al iniciar el programa, el robot gira hacia un lado dos segundos, hay que invertir la polaridad de los cables del motor conectado hacia el lado que gira.

Programación en lenguaje C – Hola mundo!

El siguiente programa, es un ejemplo muy sencillo de programa en lenguaje C.

/* Programa: hola.c
   Autor: Julio Sandria
   Ejemplo Hola mundo!
*/

#include <stdio.h>

void main()
{
    printf("Hola mundo!");
}

Para ejecutar el programa anterior, abre Code::Blocks, selecciona la opción File, después New, después Empty File. Esto creará un archivo vacío. Escribe o pega el código anterior en la sección de programación, como se ilustra en la imagen siguiente.

CodeBlocks13.12-hola

Guarda el programa con el nombre hola.c (File | Save File). Al hacer esto, Code::Blocks, reconoce el códico como un programa en C y lo muestra en colores.

Ejecuta el programa (Build | Run). Esto abrirá una terminal o ventana de símbolo de sistema (en Windows) como la siguiente.

Ejecucion-hola

Observa que en la primera línea de la parte interior de la ventana está la frase Hola mundo!. Esto es lo que hace el programa, imprimir en la salida estándar (una terminal o ventana de comandos) dicho texto.

Las primeras cuatro líneas del programa son comentarios, que no tienen ningún efecto en el programa, son para que nosotros podamos poner algún texto. Los comentarios con muchas líneas empiezan con los caracteres /* y terminan con los caracteres */.

La línea 6 del programa contiene la instrucción include:

#include <stdio.h>

Esta línea le indica al compilador que en esa posición incluya una librería llamada stdio.h, la cual contiene la definición de instrucciones como printf que se usa a continuación.

Todo programa en C tiene una función main(), que es el punto inicial de ejecución de un programa.

La línea 8, void main() indica que allí inicia la función principal (main). Todo el contenido de la función está entre los símbolos { y }.

void main()
{
    printf("Hola mundo!");
}

La función main está definida únicamente por una línea, que tiene la función printf(“Hola mundo!”), la cual lo único que hace es imprimir la frase Hola mundo!, en la salida estándar de la computadora, la cual por omisión una ventana donde se ejecuta el programa (terminal o símbolo de sistema).

Blink – Encender y Apagar un LED con Arduino

¿Cómo controlar un LED con Arduino?

Arduino UNO y otros modelos de tarjetas Arduino, tienen incorporado un LED conectado al PIN 13, como se ilustra en la siguiente imagen, donde el LED está señalado en rojo.

arduinounor3frontsupledpin13

El programa siguiente hace que Arduino encienda y apague el LED conectado al PIN 13.

/* Programa: Blink.ino
   Modificado por: Julio Sandria
   Enciende un LED por dos segundos, y después
   lo apaga un segundo, repite esto siempre hasta
   que se apague Arduino
*/
void setup() {
  // inicializa el pin digital 13 como una salida
  // El pin 13 tiene un LED conectado en la
  // mayoria de las tarjetas Arduino
  pinMode(13,OUTPUT);
}
void loop() {
  // loop = bucle, ciclo
  // loop() se repite siempre hasta que se apague Arduino
  digitalWrite(13,HIGH);  // Enciende el LED
  delay(2000);            // Espera 2000 milisegundos (2 segundos)
  digitalWrite(13,LOW);   // Apaga el LED
  delay(1000);            // Espera 1 segundo
}

Este es solo un programa de ejemplo. Para controlar LEDs externos a Arduino consulta nuestra página: Arduino Blink Monitor Ejemplo.

Riego automatizado de plantas con Arduino

El cuidado de las plantas que tenemos en el jardín o macetas en nuestra casa, escuela u oficina, es muchas veces una actividad relajante y que nos da un rato de distracción de nuestras actividades rutinarias. Pero esto ya no es relajante cuando no tenemos el “don” o el tiempo para cuidarlas y vemos cómo se van muriendo poco a poco las pobres plantitas por falta o exceso de agua, luz o temperatura.

De modo que a quienes nos gusta hacer uso de la tecnología, generalmente aprovechamos cuanta ocasión se nos presenta para hacerlo…

Puedes leer más información de este proyecto en la página siguiente:

Cómo mimar tus plantas con tecnología digital

Prototipo de robot Lego futbolista programado en Java

En este documento se presenta un prototipo de robot futbolista construido con el paquete Lego Mindstirms Robotics Invention System 2.0 y programado en Java usando lejos. En este artículo se presenta una introducción a los robots futbolistas y la construcción inicial y programación básica del robot Lego futbolista (RoLeF).

Technical Report · February 2007
DOI: 10.13140/RG.2.2.10156.67208

Aprendiendo y aplicando Inteligencia Artificial con Robots Móviles

Aprender inteligencia artificial a veces es una tarea muy frustrante cuando intentas entenderlo con mucha teoría y un poco de práctica. Este artículo pretende ilustrar que el aprendizaje de la inteligencia artificial podría ser atractivo y de entretenimiento cuando intentas construir robots que muestren un comportamiento inteligente como ver, oír, hablar, moverse, e incluso aprender. Usamos Robots Lego móviles y Java para aprender y aplicar algunas técnicas de Inteligencia Artificial como redes neuronales, algoritmos genéticos, visión por computadora, reconocimiento de voz y síntesis de voz.

Tabla 1. Tecnologías Java usadas con robots Lego

Java Technology Mean and use
J2SDK Java 2 Software Development Kit to compile and run Java programs
LeJOS Lego Java Operating System to run Java programs inside the RCX
LMbpn A Lego Mindstorms Backpropagation Neural Network (own)
LMsga A Lego Mindstorms Simple Genetic Algorithm (own)
JFM Java Media Framework for Computer Vision
JSAPI & Sphinx Java Speech API and Sphinx for Speech Recognition
JSAPI & Sphinx Java Speech API and Sphinx for Speech Synthesis

Artículo en inglés:
Sandria Reynoso, Julio César, Mario Morales García y Arturo Mendoza Rendón. 2006. Learning and applying artificial intelligence with mobile robots. Research in Computer Science. Vol. 20, pp. 191-198.
Disponible en https://www.researchgate.net/publication/310771450.

Una red neuronal para robots Lego Java

Aprende a programar robots Lego Mindstorms inteligentes con Java

Los desarrolladores pueden construir robots inteligentes con Java, ya que proporciona APIs para sistemas de programación que pueden ver, oír, hablar, moverse e incluso aprender, utilizando redes neuronales, que son algoritmos que imitan a nuestro cerebro.

Este artículo muestra cómo desarrollar un robot que puede aprender mediante el algoritmo de propagación hacia atrás (backpropagation), una red neuronal básica, y su implementación en un Lego Roverbot. Utilizando el algoritmo y Java, el Roverbot -un robot Lego vehículo- puede aprender algunas reglas básicas para moverse hacia adelante, hacia atrás, izquierda y derecha.

Artículo:
Sandria Reynoso, Julio César. 2005. A neural network for Java Lego robots. JavaWorld, May 16.
Disponible en http://www.javaworld.com/article/2071879.
PDF en https://www.researchgate.net/publication/310771385.

Construcción y Programación de robots limpiadores con Lego Mindstorms y Java

En este Informe Técnico se muestra el proceso de construcción de robots limpiadores usando paquetes Lego Mindstorms Robotics Invention System 2.0 y su programación con el lenguaje Java sobre leJOS (Lego Java Operating System). Los dos robots mostrados son los ganadores del segundo y tercer lugar del Primer Torneo Mexicano de Robots Limpiadores organizado por el Instituto Nacional de Astrofísica, Óptica y Electrónica (INAOE), la Universidad Veracruzana (UV) y la Sección Puebla del Institute of Electric and Electronic Engineers (IEEE) en las instalaciones del INAOE en Tonantzintla, Puebla, en agosto de 2004.

Dichos robots fueron construidos y programados por los autores de este informe, profesor y alumnos de octavo semestre de la carrera de Ingeniería en Sistemas de Cómputo Administrativo de la Universidad de Xalapa (UX). Este trabajo es resultado del curso corto Programación en Java con robots Lego Mindstorms y del curso de asignatura Inteligencia Artificial, ambos impartidos por el primer autor en la UX.

Technical Report · December 2004
DOI: 10.13140/RG.2.2.25789.67048 · 
Disponible en: www.researchgate.net/publication/310674457