KIT EXPANSIÓN- ROBOT MOVIL EVASOR DE OBSTÁCULOS CON SENSORES INFRARROJOS WWW.ROBODACTA.MX 1
Kit-Expansión Robot móvil
evasor de obstáculos con
sensores infrarrojos
KIT EXPANSIÓN- ROBOT MOVIL EVASOR DE OBSTÁCULOS CON SENSORES INFRARROJOS WWW.ROBODACTA.MX 2
Material -Material del robot Movimientos básicos (consultar PDF aquí )
- elementos de sujeción
a)4 tornillos 7/16” 2-56 y 4 tuercas 2-56”
b)2 soporte en escuadra
-MiniProtoboard
-6 cables jumper Macho-hembra
- 4 cables jumper Macho-Macho
-2 sensores infrarrojos GP2Y0D815Z0F 15cm PCB
-tira de pines ( si tienes cable jumper H-H ) si no en vez de eso utiliza el cable
jumper H-M)
Robot evasor de obstáculos
Cuando se habla de un robot evasor de obstáculo se trata de un robot que por medio de
sensores puede evadir ciertos obstáculos que se encuentren a su alrededor. Cuando el sensor
detecta algún objeto que obstruya el camino del robot, mandará una señal al controlador
(Driver) que a su vez mandará una señal a los motores para realizar una acción en específico.
Nota: Para este kit se necesita el Kit Básico Robodacta
Paso 1 Ensamblaje
Colocaremos la protoboard y seguiremos los pasos tal y como lo muestran las figuras.
Tomando en cuenta que el soporte en escuadra azul será reemplazado por el soporte
metálico de la siguiente figura
KIT EXPANSIÓN- ROBOT MOVIL EVASOR DE OBSTÁCULOS CON SENSORES INFRARROJOS WWW.ROBODACTA.MX 3
Si tiene cables jumper Hembra-Hembra es mejor que utilices estas tiras (como se indica en el
paso 1) para hacer las conexiones que se necesiten. Si tienen cables jumper Macho-Hembra
sería lo ideal para omitir este paso y conectarlos directamente.
Recuerda que los soportes ahora son los metálicos pero se ensamblan de la misma manera
siguiendo el paso 2.
KIT EXPANSIÓN- ROBOT MOVIL EVASOR DE OBSTÁCULOS CON SENSORES INFRARROJOS WWW.ROBODACTA.MX 4
KIT EXPANSIÓN- ROBOT MOVIL EVASOR DE OBSTÁCULOS CON SENSORES INFRARROJOS WWW.ROBODACTA.MX 5
Los sensores tienes tres terminales que son: GND, VCC y OUT. Estas dos primeras son la
alimentación del sensor (negativo y positivo) respectivamente y la terminal de OUT es la señal
de salida. Por medio de ésta señal podremos saber si un objeto ha sido detectado, por lo que
irá directamente a las terminales de la tarjeta controladora (Arduino, RedBoard, etc).
Los sensores se alimentarán con 5V, mismos que tomaremos del regulador que viene por
defecto en la tarjeta que vamos a utilizar.
Paso 2 Programación
//Robodacta Robot Expansión evasor de obstáculos
//Declararación de variables
int value= 1; //este valor vale 1, no está en el pín 1
int irsensorD=3; // receptor derecho
int irsensorI=2; // receptor izquierdo
int ena=9;// terminal 9 y 7 controlan motor 1
int enb=7;
int enaa=10;// terminal 10 y 8 controlan motor 2
int enbb=8;
// inicia void setup
void setup (){
pinMode(irsensorD,INPUT); // elegimos si los pines son entradas o salidas
pinMode(irsensorI,INPUT);
pinMode(ena,OUTPUT);
pinMode(enb,OUTPUT);
pinMode(enaa,OUTPUT);
pinMode(enbb,OUTPUT);
}
// inicia Void Loop
void loop ()
// iniciamos el programa con void adelante
{
adelante();
/*1. Usamos sentencia if que permite poner condiciones a una acción, si se cumple tal
condición
se ejecuta lo que hay dentro del if, si no se cumple entonces no habra cambios y el
programa no lo ejecutará.
2. usaremos value para crear la condicion de sensado si value =0 entonces
KIT EXPANSIÓN- ROBOT MOVIL EVASOR DE OBSTÁCULOS CON SENSORES INFRARROJOS WWW.ROBODACTA.MX 6
la sentencia if se ejecuta, si value=1 entonces la sentencia if no se ejecuta y
ejecuta adelante y no ha
detectado ningun objeto */
value=1;
value=digitalRead(irsensorD);// value lee el valor digital del sensor D y adopta ese
valor
if (value==0) // si value es igual a 0 ejecuta la siguiente acción
{ alto();
delay(200);
atras();
delay (2000);
izquierda ();
delay (1000);
adelante ();}
adelante ();
value=digitalRead(irsensorI); // value lee el valor digital del sensor I y adopta ese valor
if (value==0)
{ alto();
delay(200);
atras ();
delay(2000);
derecha ();
delay (1000);
adelante ();}
}
// Establecemos subrutinas
// void para controlar cada sentido del robot
void atras(){
digitalWrite (ena, LOW);// estado bajo 0
digitalWrite (enb, HIGH);//estado alto 1
digitalWrite (enaa, LOW);
digitalWrite (enbb, HIGH); }
void adelante(){
digitalWrite (ena, HIGH);
digitalWrite (enb, LOW);
digitalWrite (enaa, HIGH);
digitalWrite (enbb, LOW);}
void izquierda(){
KIT EXPANSIÓN- ROBOT MOVIL EVASOR DE OBSTÁCULOS CON SENSORES INFRARROJOS WWW.ROBODACTA.MX 7
digitalWrite (ena, HIGH);
digitalWrite (enb, LOW) ;
digitalWrite (enaa,LOW);
digitalWrite (enbb,HIGH);}
void derecha (){
digitalWrite (ena,LOW);
digitalWrite (enb,HIGH);
digitalWrite (enaa, HIGH);
digitalWrite (enbb,LOW); }
void alto () {
digitalWrite (ena,LOW);
digitalWrite (enb,LOW);
digitalWrite (enaa, LOW);
digitalWrite (enbb,LOW); }
Puedes descargar el programa desde aquí ProgramaRobotEvasor
Observamos entonces que tenemos la zona de declaración de variables irsensorD,
irsensorI son las variables asignadas a las terminales 2 y 3. Éstas serán variables enteras, que
significa que tendrán números sin decimales. Estos tipos de sensores están diseñados para
entregar un 0 o un 1 lógico dependiendo de la distancia a la que se encuentre. No son una
señal analógica que cambia conforme al tiempo. Es más bien un si detecto o no detecto. Por
lo que no usaremos las terminales de entrada analógica de la Tarjeta de control.
Tenemos también ena, enb, enaa y enbb, como ya lo habíamos observado en el
programa anterior donde solo programamos el robot para realizar algunos movimientos
básicos por periodos de tiempo, son las variables que controlan la etapa de potencia.
Value es una variable que se usa dentro de la programación, en ésta indicamos que su
valor será de 1 y no que estará en el pin 1. Sera una variable del sistema que no tendrá un pin
físico y nos ayudará a leer los valores de las terminales físicas donde se encuentran los
sensores.
En void setup tenemos las entradas y salidas. IrsensorD e irsensorI serán entradas y las
señales hacia los motores serán salida.
El programa del Kit con movimientos básicos solo contenía las salidas hacia la etapa de
potencia, pero ahora agregamos las que pertenecen a los sensores para darle cierto grado de
autonomía.
KIT EXPANSIÓN- ROBOT MOVIL EVASOR DE OBSTÁCULOS CON SENSORES INFRARROJOS WWW.ROBODACTA.MX 8
En void loop tenemos el cuerpo del programa, value iniciará con un valor de 1, pero
value será igual a el valor que tenga la terminal irsensorD o irsensorI dependiendo sea el caso.
Se usa la sentencia If indicando que la condición se cumplirá si value vale 0, esto es
cuando un objeto es detectado.
Las palabras atrás (), izquierda (), derecha (), adelante () y alto () son subrutinas ya establecidas
en el programa, usadas de la misma forma que en el programa anterior (kit básico)
Los delays son utilizados para marcar el tiempo en el que se realizará la acción.
Físicamente actuará de esta manera, el robot irá hacia adelante hasta que detecte un
obstáculo, esto hará que el sensor mande un 0 lógico al controlador que entonces ejecutará
las subrutinas de detener por 2s, atrás por 2s y luego izquierda o derecha según sea el caso
por 1s, después de esto el robot seguirá nuevamente hacia adelante hasta que otro de los
sensores se haya activado.
Paso 3 Poniéndolo en marcha
Se usará el Arduino IDE para cargar el programa a la tarjeta. Recuerda que mientras
cargues los programas a la tarjeta no debes de tener puesto el conector de barril macho de
alimentación. Luego de esto debió haberte quedado algo como en la figura de abajo.
En la siguiente liga podrás observar un video con su funcionamiento.
https://www.youtube.com/watch?v=FRbIWZCnvD0