I. PORTADA
UNIVERSIDAD TÉCNICA DE AMBATO
Facultad de Ingeniería en Sistemas, Electrónica e Industrial
Carrera de Ingeniería en Electrónica y Comunicaciones
Título: Diseño e implementación de un Robot Autónomo
Controlado por Xbee
Carrera: Ingeniería en Electrónica y Comunicaciones
Área Académica: Comunicaciones
Línea de Investigación: Electrónica
Ciclo Académico y Paralelo: Séptimo Electrónica “A”
Alumnos participantes:
Albán Jhony
Guzmán Óscar
López Darío
Molina Eduardo
Moposita Jessica
Palate Sabrina
Ramón Jaime
Vite Luis
Módulo y Docente: Microcontroladores, Ing. Patricio Córdova.
Fecha de entrega: 11 de Febrero del 2015
Ambato-Ecuador
2014-2015
1.1 Título:
Diseño e implementación de un Robot Autónomo Controlado por Xbee
1.2 Objetivos:
General:
Diseño e implementación de un Robot Autónomo que funcione en forma manual y
automática, a través de la comunicación Xbee y sensores ultrasónicos
respectivamente.
Específicos:
Investigar la forma de trabajo de la comunicación Xbee conjuntamente con la
interacción del PIC 18F4550.
Desarrollar mediante un módulo de reconocimiento de voz e interactuar con el
robot.
Conocer el principio de funcionamiento del servidor de una cámara IP para poder
transmitir en tiempo real.
1.3 Resumen
El presente proyecto es un robot autónomo el mismo que va a ser controlado de forma
automática y manual, para el control del robot se usó 2 módulos Xbee uno para transmisión y
otro para recepción, consta de 4 sensores ultrasónicos colocados en la parte delantera, trasera
y a los lados izquierda y derecha respectivamente, el control del movimiento de las llantas
está controlado mediante dos motores, con el movimiento de una de ellas la otra también se
accionara, es decir un control tipo oruga, la programación se encuentra realizada en
processing el cual es un lenguaje de programación y entorno de desarrollo integrado de
código abierto basado en java de fácil utilización, el robot también cuenta con un
reconocimiento de voz de versión 2 el mismo que mediante palabras cortas interactúa con el
robot dándole ordenes de movimiento. Finalmente el robot también cuenta con un servidor de
cámara IP para android el mismo que está instalado en un celular, este mediante el
movimiento del robot va a transmitir video en tiempo real, se lo puede observar en la PC.
1.4 Palabras clave:
Robot autónomo, Xbee, Sensores
1.5 Introducción
El uso de los Microcontroladores tiene una amplia gama de aplicaciones, su gran cantidad de
funciones y usos que se le puede dar nos permite que al asociar diferentes elementos generar
proyectos de gran escala, en este caso utilizando los diferentes puertos que dispone el pic y
los elementos electrónicos como sensores, motores etc. podemos desarrollar un robot con
facilidad. En este caso nos referiremos a un tipo de robot en especial, que es el autónomo
controlado mediante módulos Xbee. Un robot autónomo es un robot que pueden operar con
un alto grado de autonomía, lo que es particularmente deseable en campos como la
exploración espacial, la limpieza de suelos, cortar el césped y el tratamiento de aguas
residuales entre otras aplicaciones.
la gran mayoría de los robots cuentan con tres partes perfectamente diferenciadas la primera
parte son los actuadores en este caso motores, luces, ruedas, y en definitiva cualquier aparato
que permita interactuar con el entorno, la segunda parte es sensores como láser, cámaras,
contactos, micrófonos etc. Como la tercera parte está la inteligencia en la cual se realizan,
algoritmos, métodos, programación, lo que nos van a permitir, a partir de la información de
los sensores, interactuar con el entorno.
Para un robot autónomo que pretende hacer diversas tareas, existe partes indispensables como
por ejemplo el software en el cual se va a programar, el traslado de un lugar hacia otro
sorteando obstáculos es una parte fundamental ya que el robot antes de que pueda movilizarse
debe saber y tener un reconocimiento mediante los sensores para saber dónde está y que debe
hacer.
1.6 Materiales y Metodología
1.6.1 Materiales
Materiales Cantidad
Capacitor de 22pf 2
Capacitor de 100 µf 1
Capacitor de 220 pf 1
Diodos leds 2
Xbee shield 2
Zócalos para Xbee Shield 2
Motor de 5v 2
Jumper 3
Resistencias de 10KΩ 5
Microcontrolador 18F4550 1
LM 317T 1
L293D 1
Sensores ultrasónicos SR04 4
Reglas de espadines machos 2
Reglas de espadines hembras 2
Cristal de 20MHz 1
Módulos Xbee 2
Regulador de voltaje 7805 1
Estructura de caja reductora con 4 llantas 1
Estaño 3m 1
Cautín 1
Placa de baquelita 10x5 1
Papel couche 1
Cable UTP 1
Batería polímero de litio de 2,2 A, 2 Cell
7.4v
1
Tabla 1: Lista de Materiales
1.6.2 Marco Teórico
Robot
Es una máquina programable que puede manipular objetos y realizar operaciones que antes
sólo podían realizar los seres humanos.
El robot puede ser tanto un mecanismo electromecánico físico como un sistema virtual de
software. Ambos coinciden en brindar la sensación de contar con capacidad de pensamiento o
resolución, aunque en realidad se limitan a ejecutar órdenes dictadas por las personas. [5]
Robot Autónomo
Figura 1: Carrito Robot Autónomo
Un robot autónomo es un robot que pueden operar con un alto grado de autonomía, lo que es
particularmente deseable en campos como la exploración espacial, la limpieza de suelos,
cortar el césped y el tratamiento de aguas residuales.
Algunos modernos robots industriales son "autónomos" dentro de los límites estrictos de su
entorno directo. Puede que no existan todos los grados de libertad en su entorno, pero el lugar
de trabajo del robot industrial es difícil y, a menudo puede contener variables caóticas,
impredecibles. Deberá determinarse la orientación exacta y la posición del siguiente objeto de
trabajo y (en las fábricas más avanzadas) incluso el tipo de objeto y la tarea requerida. Esto
puede variar impredecible (por lo menos desde el punto de vista del robot).
Un área importante de la investigación robótica es permitir que el robot haga frente a su
entorno ya sea en tierra, bajo el agua, en el aire, bajo tierra o en el espacio. [5]
Un robot completamente autónomo tiene la capacidad de:
Obtener información sobre el medio ambiente.
El trabajo durante un período prolongado sin intervención humana.
Moverse todo o parte de sí mismo a través de su entorno operativo, sin ayuda humana.
Evitar situaciones que son perjudiciales para las personas, los bienes o sí mismos, a
menos que sean parte de las especificaciones de diseño.
Poder aprender o adquirir nuevos conocimientos, como el ajuste de nuevos métodos
para el cumplimiento de su tarea(s) o la adaptación a los cambios de entorno.
Xbee shield
Figura 1: Xbee shield
El escudo Xbee tiene dos puentes (las pequeñas mangas de plástico extraíble que cada caben
en dos de los tres pines etiquetados Xbee / USB). Estos determinan cómo la comunicación
serie del Xbee se conecta a la comunicación serie entre el microcontrolador (ATmega8 o
ATmega168) y FTDI chip USB a serie de la placa Arduino.
Con los puentes en la posición Xbee (es decir, en los dos pines hacia el interior de la junta), el
pin DOUT del módulo Xbee está conectado al pin RX del microcontrolador; y DIN está
conectado a TX. Tenga en cuenta que los pines RX y TX del microcontrolador todavía están
conectados a los pines TX y RX (respectivamente) del chip FTDI - datos enviados desde el
microcontrolador se transmiten al ordenador a través de USB, así como de ser enviado de
forma inalámbrica mediante el módulo Xbee . El microcontrolador, sin embargo, sólo será
capaz de recibir datos desde el módulo Xbee, no a través de USB del ordenador. [3]
Sensores ultrasónicos SR04
Figura 2: Sensores ultrasónicos SR04
El sensor de distancia ultrasónico HC-SR04 es una excelente opción si estás buscando un
módulo ultrasónico potente pero barato y que sea compatible con Arduino y otras plataformas
de microcontroladores.
El sensor de ultrasonidos se enmarca dentro de los sensores para medir distancias o superar
obstáculos, entre otras posibles funciones.
En este caso vamos a utilizarlo para la medición de distancias. Esto lo consigue enviando un
ultrasonido (inaudible para el oído humano por su alta frecuencia) a través de uno de la pareja
de cilindros que compone el sensor (un transductor) y espera a que dicho sonido rebote sobre
un objeto y vuelva, retorno captado por el otro cilindro.
Este sensor en concreto tiene un rango de distancias sensible entre 3cm y 3m con una
precisión de 3mm. [2]
LM 317T
Figura 3: LM 317T
Este circuito integrado monolítico es un ajustable 3 terminal regulador de voltaje positivo,
diseñado para suministrar más de 1,5 A de corriente de carga con un ajuste de la tensión de
salida capaz en un rango de 1,2 V a 37 V. Emplea corriente interna alquilar limitante,
apagado térmico. [3]
Características:
Salida-corriente superior a 1,5 A
Salida ajustable entre 1,2 V y 37 V
Protección de sobrecarga térmica interna
L293D
Figura 4: 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.
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. [4]
Módulo Xbee
Figura 5: Módulo Xbee
Zigbee es un protocolo de comunicaciones inalámbrico basado en el estándar de
comunicaciones para redes inalámbricas IEEE_802.15.4. Creado por Zigbee Alliance, una
organización, teóricamente sin ánimo de lucro, de más de 200 grandes empresas (destacan
Mitsubishi, Honeywell, Philips, _ ODEM_ do, Invensys, entre otras), muchas de ellas
fabricantes de semiconductores. Zigbee permite que dispositivos electrónicos de bajo
consumo puedan realizar sus comunicaciones inalámbricas. Es especialmente útil para redes
de sensores en entornos industriales, médicos y, sobre todo, domóticas.
Módulos Xbee PRO de la Serie 1 que se diferencian en la capacidad de alcance, permitiendo
en algunos casos doblar la distancia de transmisión, ya que poseen una mayor potencia en la
señal. Con los módulos Xbee PRO de la Serie 2, es posible crear redes más complejas, como
las llamadas MESH. Estas permiten acceder a un punto remoto, utilizando módulos
intermedios para llegar como routers. [1]
Microcontrolador 18F4550
Figura 6: Microcontrolador 18F4550
Microcontrolador con módulo USB especificación v2.0, hasta 35 pines I/O disponibles,
memoria de programa flash 32kB, SRAM 2048 Bytes, EEPROM de datos 256 Bytes, ADC
de 10 bits y 13 canales, tecnología nanoWatt, 2 módulos captura/comparación/PWM, 4
timers, EUSART, SPP, SPI, I²C. [3]
Regulador de voltaje 7805
Figura 7: Regulador de voltaje 7805
El 7805 es el regulador de voltaje más común, y muy usado en diseños empotrados. El 7805
es un regulador lineal hecho por varios fabricantes como “Fairchild”, o “ST
Microelectronics”. Puede venir en varios tipos de encapsulados. Para corrientes de salida
hasta de 1A existen dos tipos de encapsulados: TO-220 (vertical) y D-PAK (horizontal).
Con un disipador apropiado esos tipos de reguladores LM78xx pueden proporcionar
corrientes de más de 1A. Además incluyen protección por sobrecarga térmica, y contra
cortocircuitos. [1]
Ip web cam
IP Webcam convierte su celular en una cámara en red con múltiples opciones de
visualización. Funciona en cualquier plataforma con VLC player o navegador. Emita a través
de una red WiFi sin conexión a internet.
Use IP Webcam con un software MJPG de terceros, incluyendo software de video vigilancia,
monitores de seguridad y la mayoría de reproductores de audio. [8]
Entre sus características se encuentran:
Varios renderizadores web entre los que elegir: Flash, Javascript o integrado
Grabación de video en webm, MOV o MPEG4 (en Android 4.1+)
Transmisión de audio en wav, opus y AAC (AAC requiere Android 4.1+)
Detección de movimiento por sonido, integración Tasker.
Superposición del video a la fecha, hora y nivel de batería.
Adquisición de datos del sensor con un gráfico web en línea.
Soporte de videochat (la transmisión de video para Windows solo es posible a través
de un controlador de transmisión de video universal MJPEG)
Figura 8: Ip web cam
Labview
LabVIEW es una plataforma de programación gráfica que ayuda a ingenieros a escalar desde
el diseño hasta pruebas y desde sistemas pequeños hasta grandes sistemas. Ofrece integración
sin precedentes con software legado existente, IP y hardware al aprovechar las últimas
tecnologías de cómputo. LabVIEW ofrece herramientas para resolver los problemas de hoy
en día y la capacidad para la futura innovación, más rápido y de manera más eficiente. [3]
Figura 9: Labview
1.6.3 Procedimiento
Diseño de un algoritmo que permita desarrollar el control de un robot autónomo,
controlado por una comunicación Xbee.
Cálculo del valor del PWM adecuado para definir la velocidad de los motores
instados en el robot autónomo.
Desarrollo de una interfaz gráfica en labview para el control de la comunicación Xbee
Diseño de una placa electrónica para la implementación física
Compilación y programación de un microcontrolador como ejecución de la aplicación
deseada.
Desarrollo de una aplicación extra la cual consiste trasmisión de video en tiempo real
mediante un servidor y una interfaz labview.
Desarrollo de una aplicación la cual consiste en el reconocimiento de voz para poder
interactuar con el robot.
Elaboración de una estructura con 4 llantas acoplad con una placa electrónica para el
control de los distintos componentes.
Depuración, calibración y pruebas de funcionamiento
Esquema:
Fig10. Esquema realizado en proteus
Fig11. Esquema en vista en opción ARES
Fig12. Esquema en vista 3D
Programa:
//Calculo De La Velocidad Del Sonido//En este ejemplo se trabajara con la velocidad a 20 grados centigrados que es V=343 m/s.//Se aplica el siguiente procedimiento para hallar el tiempo en microsegundos equivalente a un centímetro.//Pasamos la velocidad a centímetros por segundo, esto da V=34300 cm/s//Calculamos el tiempo con la ecuación distancia = velocidad/tiempo, despejamos tiempo y tenemos la ecuación t=d/v, reemplazando por los valores t=1cm/(34300cm/s) luego t = 0,000029155s//Como la señal va y vuelve hace el doble de la distancia que se desea medir, por lo tanto tomara el doble de tiempo, así que mediremos el doble de tiempo luego t=0,000058309s, finalmente pasamos este valor a microsegundos t=58,309us que para efecto practico lo aproximaremos a t=58us en el programa.//Tener en cuenta que la velocidad del sonido es mayor cuando aumenta la temperatura, aproximadamente 0.6m/s por cada grado centigrado.*/
#define Trig1 7 //Trigger delante#define Echo1 6 //Eco delante#define Trig2 5 //trigger derecha#define Echo2 4 //eco derecha#define Trig3 3 //Trigger Atras#define Echo3 2 //Eco atras#define Trig4 1 //Trigger izquierda#define Echo4 0 //Eco izquierda
#define mt11 21 #define mt12 22
#define mt21 23#define mt22 24
#define modo 28
int dlt;//Dato sin procesar equivalente a la distancia a medir en centimetrosint der;int atr;int izq;char buffer;int aux=0;int xx=0;
void setup() Serial.init(9600); pinMode(Trig1, OUTPUT);//Disparador como salida pinMode(Echo1, INPUT);//Eco como entrada pinMode(Trig2, OUTPUT);//Disparador como salida pinMode(Echo2, INPUT);//Eco como entrada pinMode(Trig3, OUTPUT);//Disparador como salida pinMode(Echo3, INPUT);//Eco como entrada pinMode(Trig4, OUTPUT);//Disparador como salida pinMode(Echo4, INPUT);//Eco como entrada
pinMode(13, OUTPUT);//led ayuda pinMode(modo, INPUT);//led ayuda pinMode(mt11,OUTPUT); pinMode(mt12,OUTPUT); pinMode(mt21,OUTPUT); pinMode(mt22,OUTPUT);
digitalWrite(mt11,LOW); digitalWrite(mt12,LOW); digitalWrite(mt21,LOW); digitalWrite(mt22,LOW); digitalWrite(modo,LOW); digitalWrite(13,HIGH); delay(500); digitalWrite(13,LOW); dlt=0; der=0;
atr=0; izq=0;// Serial.println("sistema cargado"); // delay(2000);// Serial.write(0xAA);// Serial.write(0x37);// delay(1000);// Serial.write(0xAA);// Serial.write(0x21); void loop()
while(digitalRead(modo) == HIGH)
sendel(); //senso distancia delante y a los lados sender(); senizq(); if((dlt>20)&&(der>20)&&(izq>20))
solodelante(); else
stop();if(dlt<=20)
if(der > izq)
giroder();else
if(izq > der)
giroizq();else
girocomp();
else
if(der<=20)
giroizq();
else
giroder();
digitalWrite(13,HIGH); delay(1000);//Espera un segundo para visualizar el dato digitalWrite(13,LOW); dlt=0; der=0; atr=0; izq=0;//Reinicio dato a 0
while(digitalRead(modo) != HIGH)
if(Serial.available())
long dato = Serial.read();Serial.printf( "\n\r" ); Serial.print( dato, HEX );delay(500);switch(dato)
case 0x11:solodelante();break;
case 0x12:soloatras();break;
case 0x13:giroder();break;
case 0x14:giroizq();break;
case 0x15:digitalWrite(mt11,LOW);digitalWrite(mt12,LOW);digitalWrite(mt21,LOW);digitalWrite(mt22,LOW);break;
case 0x31:solodelante();
break;
case 0x32:soloatras();break;
case 0x33:giroder();break;
case 0x34:giroizq();break;
case 0x35:digitalWrite(mt11,LOW);digitalWrite(mt12,LOW);digitalWrite(mt21,LOW);digitalWrite(mt22,LOW);break;
default:digitalWrite(mt11,LOW);digitalWrite(mt12,LOW);digitalWrite(mt21,LOW);digitalWrite(mt22,LOW);break;
Serial.flush();
1.7 Resultados y Discusión:
1.7.1 Conclusiones:
Un sensor ultrasónico utiliza la velocidad del sonido para poder determinar la
distancia.
La utilización de dos Pics es necesaria para nuestro robot ya que para el módulo Xbee
utilizamos un puerto, pero para poder utilizar el reconocimiento de voz es necesario
usar el mismo puerto y si lo haríamos estaríamos interfiriendo con la comunicación
por lo que se hace una obligación usar otro pic adicional.
Para la programación del módulo de voz debemos utilizar palabras cortas y claras
para un mejor reconocimiento de las instrucciones.
Debido a los 4 sensores instalados en el robot este tiene una gran autonomía por lo
que fácilmente se puede trasladar sin ningún tipo de inconveniente.
Para evitar retrasos de tensión y corriente se utilizara un capacitor en la fuente.
La señal PWM saliente del microcontrolador es amplificada con la utilización de 2
L293 colocados en paralelo para abastecer a potencia de consumo de cada motor.
Debido a incoherencias de censado de cada sensor ultrasónico es necesario el reseteo
del microcontrolador mandando un pulso en alto a una de sus entradas.
los módulos de comunicación Zigbee no presentan interferencia con otros artefactos
que trabajan en la misma banda de frecuencias de 2.4Ghz, como los hornos de
microondas, teléfonos inalámbricos y teléfonos celulares con transmisión Bluetooth
Se pudo identificar que los módulos con tecnología Zigbee, son módulos inteligentes
que tienen una funcionalidad variada y amplia, a pesar del tamaño reducido que
presentan; y permiten un ahorro significativo de energía
1.7.2 Recomendaciones:
Utilizar baterías de polímero de litio para obtener mayor corriente y por ende tener
mejor funcionamiento.
Realizar una pequeña fuente que nos brinde 3.3 V para la alimentación de los
módulos Xbee
Debido a la utilización de dos fuentes de tensión para el circuito se recomienda la
utilización de un filtro en la fuente evitando retrasos de tensión referente a la
corriente.
1.8 Referencias bibliográficas
[1]Xbee shield. Disponible en: http://arduino.cc/en/pmwiki.php?n=Main/ArduinoXbeeShield
[2] Sensores ultrasónicos SR04. Disponible en: http://www.techmake.com/sen-00029.html
[3] LM 317T. Disponible en: http://www.ti.com/lit/ds/symlink/lm117.pdf
[4] L293D. Disponible en: http://robots-argentina.com.ar/MotorCC_L293D.htm
[5] Robot Autónomo. Disponible en: http://uea2013.frbb.utn.edu.ar/wp-content/uploads/TE_1.pdf
1.11 Anexos
Fotografías de la realización del proyecto.