Sunteți pe pagina 1din 25

Robot automvil

autnomo

//Integrantes
Lilian Rosales
201330006-5
Katrina Stamulis
201330003-0
Matko Milovic
201330007-3
Felipe Hurtado
201330010-3
Juan Carlos Cspedes
201330004-9
//Asignatura
Introduccin a la Ingeniera
//Fecha
11 de septiembre de 2013

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera

1. Introduccin
En el siguiente trabajo mostraremos el proyecto realizado en el ramo de Introduccin a la
Ingeniera, por cierto primer desafo de ingeniera para nosotros, en el cual se nos peda
realizar un proyecto con la Raspberry Pi.
En este contexto, nos juntamos a discutir la lluvia de ideas acerca de que podra ser nuestro
proyecto. As llegamos a la conclusin de que lo mejor sera hacer un robot que se moviera
y que si es que detectaba un objeto deba girar para de esta manera esquivarlo,
nombrndolo oficialmente en ese momento como Tiguer.bot. Esta idea se nos ocurre
tambin gracias a la experiencia anterior de tres de los integrantes del grupo al realizar un
proyecto similar pero solo con Arduino.
Aqu viene el desafo del proyecto el cual es que la Raspberry Pi sea quien posea la
inteligencia para que el robot sepa si continuar su movimiento recto o girar, esto
incluyendo tambin el uso de un Arduino, pero solo cumpliendo la funcin de ejecutar las
ordenes de Raspberry Pi, y debido a esto fue que se debi cambiar mucho el proyecto
durante el proceso de construccin con respecto a lo pensado en un inicio para obtener el
resultado planteado.
Todo lo anterior se explicar a modo de tutorial con mayores detalles en las prximas
pginas, adems de mostrar una breve descripcin de los materiales utilizados y la
metodologa del trabajo.

2. Objetivos
2.1.

Objetivo General

Presentar un proyecto libre, relacionado al rea Telemtica, sobre la plataforma Raspberry


Pi, escrito en el lenguaje de programacin C.
2.2.

Objetivos Especficos

-Idear un proyecto que desafe nuestras capacidades.


-Utilizar una plataforma de hardware levemente limitada, en este caso, Raspberry Pi
-Escribir el cdigo principal en C
-Generar comunicacin bidireccional entre una tarjeta Arduino y Raspberry Pi
-Compactar el hardware utilizado al menor tamao posible y que sea funcional
-Adquirir nuevos conocimientos, tanto en el rea del software, como en la electrnica de la
que haremos uso.

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera

3. Metodologa
3.1. Hardware utilizado:

Raspberry Pi
Arduino UNO
Sensor de ultrasonido SRF04
Servomotor HS-322
Motor DC
LED
Transistor NP2222

El desafo de este trabajo fue utilizar Raspberry Pi como controlador principal, por lo que
toda la inteligencia del robot, el cdigo principal, se encuentra en la RasPi, y la Arduino
queda relegada a una ejecutora de lo que RasPi ordene. Estas tarjetas estarn conectadas
va puerto serial con un cable micro-USB USB-A. Desde la Arduino se controla el
servomotor y el sensor de ultrasonido, mientras que el RasPi controlar el motor DC y un
par de LEDs.
3.2. Software utilizado:
El software utilizado para este proyecto es el lenguaje de programacin C, junto al lenguaje
propio de Arduino, que resulta casi idntico a C. Estos lenguajes son utilizados a bajo nivel,
especialmente el de Arduino. La Raspberry Pi fue cargada con libreras externas a las de
estndar ANSI-C. Adems de lo mencionado, no se hizo uso de otro software.
3.3. Proceso
-Planteamiento de un objetivo
-Abstraccin de su funcionamiento
-Trabajo terico de procesos y relacin con el medio
-Contrastacin de lo ideal con lo posible
-Ajustes a la teora, para poder llevarla a la realidad
-Realizacin de un prototipo funcional
-Perfeccionar el prototipo para acrcalo al ideal inicial

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera

3.4. Evolucin del proyecto


Como fue mencionado, el proyecto nace de un desafo, al ser un proyecto libre, pero de
temtica referida a la carrera, como grupo tuvimos que elegir un proyecto en el cual
invertir el tiempo otorgado, y que nos reportar la mayor rentabilidad, tanto en mbito
intelectual, como acadmico. Y con tal condicionante, de entre las mltiples ideas que
barajamos, trabajamos con un proyecto en el que ya habamos tenido experiencia, un
robot automvil que detecta distancias y se aleja al detectar un objeto cercano. En esa
ocasin, trabajamos slo con Arduino, a diferencia del presente, en el que debamos utilizar
RPi.
Ya teniendo nuestro objetivo en mente y sus funciones, corresponda crear el algoritmo
bajo el cual se moviera el cdigo del robot, y que fuese la inteligencia con la que contara el
robot. Al tener ya pensado que el robot slo reconocera distancias frente a l en el mundo
real, nos encontrbamos en un sistema que procesa un universo tridimensional, con una
mirada de una dimensin. Ese particular punto aligeraba la potencia de procesamiento
requerido, y a la vez, los datos almacenables posibles disminuan, junto a la limitada
capacidad de movimientos posibles, cuatro. Lo anterior contribuy a un Algoritmo ms
avanzado que con el que se presenta Tiguer.bot v.2, as nace v.1, el cual es el objetivo a
conseguir en un eventual v.3.
El algoritmo por s solo no funciona, por lo que nos tocaba respaldarlo con hardware
compatible, capaz de ejecutar acciones o entregar informacin correspondiente. Este
punto no ha cambiado mucho a lo largo del proyecto, el motor DC de v.2, en v.1
corresponda a otro servomotor. Se recomienda ver la seccin de hardware.
Establecidos el algoritmo y el hardware que utilizaramos, faltaba saber con qu software
tendramos que trabajar. Para el cdigo tenamos la opcin de trabajar con python o con
lenguaje C, ambos tenan libreras para los pines GPIO, con funcionalidades similares,
python se distingua por ser ms simple en algunas reglas de sintaxis, y ser ms familiar a
nuestros ojos, adems de que ya sabemos cmo ejecutar ciertos procesos sobre archivos
de texto plano. C, por otra parte, tiene la ventaja que, al ser compilado antes de su
ejecucin, es ms rpido.
Teniendo pensado como queramos que operara el robot, y el hardware que utilizaramos,
se deba administrar los componentes, eficazmente, para que las acciones se ejecutaran lo
ms rpido posible y la informacin se trasladara sin retrasos, y eficientemente, evitando
sobrecargar el robot con bateras, pesos y conexiones innecesarias.

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera

La bsqueda de informacin para el primer prototipo consisti en las mencionadas libreras


para los pines GPIO. Y con toda la informacin obtenida, planes generados y sketches del
robot, se forma el prototipo Tiguer.bot v.1
El problema surge luego de esto, cuando al tener que llevar la idea al mundo real, no todos
los componentes pueden ser conseguidos y algunos puntos no son tan simples como
parecan. Es en ese momento en el que v.1 debi ser reestructurado para adaptarse a la
realidad en la que se desenvuelve, y en aquella en que tratamos de crear. El principal
problema fue la comunicacin entre ambas tarjetas, ya que la comunicacin va GPIO era
bastante complicada, ya que la emisin de informacin requera, en momentos, de ms de
un pin, que ambas tarjetas estuvieran en lectura y escritura de manera coordinada, y
resolver los problemas de voltaje entre ambos tipos de pines (RPi trabaja a 3v, Arduino a
5v). Luego, en el mbito mecnico del robot se present la dificultad de no conseguir
servomotores de 360, sino que contbamos slo con aquellos de 180 y finalmente, el
modelo del sensor, no era un Ping, sino que otro modelo. Nuestra respuesta es estos
problemas fue modificar la mecnica del robot, conservando un servo 180, que manejase la
direccin, y un motor DC que entregara movimiento al sistema completo. El caso del sensor
fue ms sencillo, luego de determinar el modelo en cuestin, bast con modificar el cdigo
del sensor ping para adaptarlo a este modelo.
El punto principal que diferencia v.1 de v.2, es la comunicacin entre tarjetas, en v.1
habamos pensado en comunicar va GPIO, pero tras la evidenciacin de los problemas ya
mencionados, optamos por buscar un medio diferente por el cual enviar y recibir datos,
resultando en la utilizacin del puerto serial USB. Buscando documentacin, encontramos
el trabajo del Dr. Juan Gonzlez Gmez, que contena libreras escritas en C para la
comunicacin entre una mquina GNU/Linux con un dispositivo capaz de comunicar de ese
modo. Tal sistema de comunicacin cambiaba repentinamente el panorama al que nos
enfrentbamos, por las caractersticas de esta comunicacin. Fue necesario hacer ciertas
modificaciones al cdigo, lo que se explica dentro de la seccin tutorial. Ante tales cambios,
con el sentido de llegar a nuestro objetivo, un robot automvil autnomo, y en funcin del
tiempo, decidimos modificar el algoritmo, aligerando los procesos requeridos, acotando la
inteligencia del robot a slo dos situaciones.
Teniendo el nuevo algoritmo y establecida la posibilidad de comunicacin serial, ms lo
aprendido en el proceso, de genera el Prototipo Tiguer.bot v.2. Es tras estolo que el
Tutorial del siguiente punto explica. Luego, modificamos el cdigo de comunicacin,
adaptndolo a nuestras necesidades y agregando el cdigo requerido para que el robot
funciones como determinamos. Una vez mezclado todo, comienza el diseo industrial-

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera

mecnico del robot para lograr incluir todo en el menor espacio posible. Una vez
ensamblado todo, podemos decir que estamos en presencia de Tiguer.bot Alpha

4. Componentes

Raspberry Pi modelo B
Es un minicomputador de bajo costo con
multiples utilidades, que posee una RAM de
512 MB y CPU de 700 Mhz (se le puede hacer
overclocking). Las ventajas de utilizar
Raspberry pi residen en su conectividad,
pudiendo transmitir informacin via internet,
usb, etc.

Arduino Uno R3 Atmega328


El Arduino es una plataforma computacional
fsica open-source basada en una simple
tarjeta de I/O y un entorno de desarrollo que
implementa el lenguaje Processing/Wiring. El
Arduino Uno R3 puede ser utilizado para
desarrollar objetos interactivos o puede ser
conectado a software de tu computadora
(por ejemplo, Flash, Processing, MaxMSP).

Sensor ultrasonido SRF-04

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera

Es un sensor de distancias por ultrasonidos


capaz de detectar objetos y calcular la
distancia a la que se encuentra en un rango
de 3 a 300 cm. Su funcionalidad, enva un
pulso de arranque y mide la anchura del
pulso de retorno. Muy til por su gran
precisin, pequeo tamao y bajo costo

Servo Motor Hitec Hs-5745MG


Servo Motor programable de 3 polos que
requiere pulsos entre 3 y 5 volts. Posee
entrada y salida digital y es capaz de girar en
180

Motor DC 5V
Motor de corriente continua de 5V que
utilizamos para dar potencia al robot.

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera

5. Tutorial
5.1. En busca de la inteligencia
El primer paso es conocer el algoritmo que se quiere utilizar, el cual ser la
inteligencia que tendr el robot:

La imagen superior plasma la forma en que debe funcionar el programa. El


algoritmo es un tanto bsico, pero se le pueden anexar funcionalidades, aprovechando las
ventajas de conectividad y de cmputo de Raspberry Pi. De esta manera, se crea un sistema
en que arduino solo se preocupa de ejecutar las rdenes emitidas por la Raspberry Pi. De
esta manera, la Raspberry es quien se encarga de procesar las informacin recibida desde
Arduino o datos ingresados manualmente por el usuario, por tanto, el algoritmo presenta
la posibilidad de ejecutar un modo automtico, manual y los dos modos en paralelo; esto
sera el modo semi-automtico, en el cual, el robot se protege a una distancia corta
evadiendo la ejecucin de la orden ingresada y alejndose del potencial peligro, en caso de
estar lejos es capaz de ejecutar las acciones indicadas.
5.2. El viaje al mundo fsico
Teniendo ya el algoritmo pensado y por tanto orientados a lo que queremos que el robot
haga, podemos proceder a intentar llevarlo al mundo real, para tal labor debemos listar los
dispositivos y sensores que nuestro proyecto requiere, como se pudo ver en el punto 4.
Una vez conseguidos se debe determinar la manera ms eficaz y eficiente de conectarlos y
administrarlos. Para lo cual determinamos lo siguiente:

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera

3,7 v

La razon tras estas conexiones es la facilidad con la que Arduino controla el


servomotor y el sensor SRF04. La batera se conecta con Raspberry Pi para alimentarla, y
dado que la conexin entre Arduino y Raspberry es por USB, esa misma alimetacin se
suministra a Arduino. En el caso del motor DC determinamos que era mejor suministrarlo a
travs de una bateria externa y controlar su flujo a travs de un transistor.
Este diagrama puede ser expandido a medida que se expande el algoritmo.
5.3. Programando
Ha llegado el momento de hacer que estas conexiones tengan un sentido y cumplan su
objetivo, es decir traducir nuestro algoritmo a un cdigo ejecutable por una mquina
digital. El lenguaje elegido para escribir este cdigo fue el lenguaje de programacion C, ya
que se encontraba dentro de nuestros fines acadmicos utilizar dicho lenguaje.
El principal problema a la hora de escribir este cdigo, no fue programar las acciones
ejecutables, sino, la comunicacin serial entre ambas tarjetas. Al principio habiamos
pensado en comunicar va pines del GPIO de Raspberry Pi a Arduino, sin embargo, tal
solucin presenta ms inconvenientes al tener que ser una comunicacin sincrona. La
solucin a la que llegamos y que resulta mucho ms simple y efectiva fue utilizar el canal
USB que permite una comunicacin bi-direccional asincrona, adems de alimentar
electricamente el Arduino. Aqu es cuando aparece una de las ventajas, el hecho de que el
sistema operativo sea una distribucin GNU/Linux (Raspbian), nos permite obtener
numerosas documentaciones de funcionalidades trasnersales a esta familia de sistemas, en
particular la que nos intereso y que juega un papel central en la ejecucin de nuestro
proyecto fue un cdigo de comunicacin serial1.

1 - Linux and the serial port. Dr. Juan Gonzlez Gmez. Enero 2009

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera

El trabajo liberado bajo GPL incluye todas las librerias necesarias para activar o desactivar el
puerto serial y para enviar y recibir informacin. Nosotros modificamos parte del cdigo,
especficamente el ejemplo de una mini-terminal.
Por otro lado en Arduino utilizams tres cdigos ejemplo del IDE, blink, knob y Ping. En el
caso de Ping tuvimos que adaptarlo al modelo de sensor que teniamos. Luego de unir todo
dentro de un mismo cdigo y cambiar el tipo de la variable respuesta del sensor, de un
long a un byte. Ese tipo permite 256 niveles de proximidad, siendo representables
como los caracteres de la tabla ASCII.
La comunicacin serial efectuada esta pensada para ir byte a byte, es decir, esta pensada
en char, es por tal razn que modificamos la salida serial con la que se entregaba la
distancia, puesto que es mucho ms fcil analizarlo por byte que juntar todos los bytes
requeridos para una variable long y luego procesarlas para tener su significado. El margen
de distancia con el que trabajamos era suficientemente amplio como para permitir un
pequeo margen de error en la entrega de distancia, el sensor mide hasta 300 cm.,
mientras que el byte nos otorga los 256 niveles en los cuales se repartir la distancia
mxima.
El espectro de accin del robot es de infinito hasta 00011111, que es la representacin
binaria con la cual se procesa las distancias en RPi.
5.4. Descargando el cdigo
Para proceder, se debe descargar el IDE de Arduino para programarlo y las libreras del
trabajo del Dr. Juan Gonzlez Gmez.
Comenzaremos explicando cmo escribir el cdigo para Arduino, se deben declarar donde
estarn los pines, esto es si son salidas o entradas e iniciar la comunicacin serial.
Activar el sensor y obtener la respuesta de la distancia, esta enviarla por el puerto serial y
leer el puerto en busca de comunicacin de entrada, llmese orden a ejecutar. Luego de
eso viene la ejecucin.
Mientras que en RPi deberemos descargar el cdigo ejecutando sudo wget
www.iearobotics.com/wiki/images/4/4b/Serial-1.0-bin.tar.gz y la libreria Wiring Pi
ejecutando git clone git://git.drogon.net/WiringPi
Luego de eso lo que haremos es descomprimir y desempaquetar el primer archivo
descargado, con tar xvf Serial-1.0-tar.gz ; ingresar al directorio creado y dentro al subdirectorio term_ex aqu debemos modificar el archivo term.c para adaptarlo al algoritmo

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera

que hemos generado. En nuestro caso, modificamos el cdigo para que al ejecutarlo
pregunte al usuario si desea un control manual, semi-automtico o automtico.
Como se podr ver ms adelante en la documentacin lo que hacemos dentro del cdigo
es adaptar los procesos de lectura, que en el caso manual se omiten y en el semiautomtico solo tienen relevancia en la eventualidad de estar en una distancia corta. En el
caso automtico, la distancia que se lea, implica una orden asociada a la categora en que
se encuentra, es decir, si es distancia larga, el vehculo se autoriza a continuar su trayecto.
En caso contrario RPi ordena el cambio de ruta. En el caso semi-automtico solo se toma en
cuenta la distancia cuando es corta y es la nica orden autnoma que se emite. En el
directorio padre ejecutar make.
5.5. Montaje
Para proceder a crear el auto es necesario darle una estructura que lo soporte y que
idealmente sea ligera, resistente y optimizar al mnimo el espacio requerido. Se puede
utilizar una tabla de poco espesor y resistencia ptima, como sugerencia.
Se debe realizar un esquema de montaje con el fin de acotar el espacio de uso y as tener
presente los pasos para realizar el armado en s.

Figura 1: Este es un modelo de la base para el auto, donde los rectngulos grises
representan espacios vacos donde se debe recortar para alivianar el peso de la tabla y
pasar cables, entre otros usos.

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera

Figura 2: vista horizontal.


Esto es lo que denominamos la versin v.alpha de Tiguer.bot.

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera

6. Anexo (Galera de imgenes)

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera

7. Otros
7.1 Ventajas/Desventajas
Ventajas
Responde al entorno:
1. Si encuentra un obstculo a cierta distancia es capaz de esquivarlo.
2. Si no encuentra obstculo alguno, sigue su ruta en lnea recta.
Podran implementarse un nmero de Tiguer.bots; esto con el fin de crear una
manada, la cual sea capaz de no chocar entre s, imitando el comportamiento
bsico de un tigre cachorro.
Teniendo en cuenta un motor DC con la fuerza de torque suficiente para mover
el cuerpo del robot, puede llegar a ser bastante veloz y cumplir con su funcin
eficazmente.
Desventajas
El proyecto actualmente tiene un retraso de 5 a 8 segundos entre el instante de
recibir la seal del sensor y en responder ante ste, lo cual entorpece bastante
el comportamiento adecuado de Tiguer.bot.
Al desarrollar el proyecto no se habilitan las mltiples funcionalidades de RPi;
por lo cual se pierde bastante potencial de sta.
El costo de construir un Tiguer.bot es bastante alto, cerca de unos 88 USD
debido a los diversos dispositivos que se utilizan para su correcto
funcionamiento, adems del trabajo de programacin, diseo del robot y
materiales de montaje.
La rentabilidad como negocio es nula, ya que el proyecto fue ideado
enfocndose en los mbitos acadmicos.
Al tener fines acadmicos, el fondo de inversin para un futuro mejoramiento
del proyecto se ve bastante limitado; solo si se cambia el enfoque a un modelo
ms comerciable podra darse el propsito de mantener el proyecto de una
manera un poco ms estable.
La poca funcionalidad de Tiguer.bot, ya que fue pensado solo con el fin de no
colisionar con objetos, manteniendo una distancia mnima predefinida.
7.2. Rentabilidad
El costo unitario de cada bot, fue estimado en 88 USD, un precio bastante elevado para un
dispositivo de caractersticas tan simples. Si bien se puede reducir el precio gracias a la
fabricacin en masa y en serie, tal procedimiento slo conllevara a un descenso de los
costos de manufactura, llmese el recurso humano. La compra en masa de materiales y

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera

componentes, aunque es posible, no genera una cada significativa, los primeros, porque su
aporte en el costo final es menor, mientras que el segundo no permite un mayor descenso
en su costo. Finalmente, el valor del producto no justifica el potencial precio con el que
saldra al mercado. Es esta la razn por la cual el proyecto no es comercialmente viable y
sus objetivos son netamente acadmicos.

8. Documentacin
8.1. Cdigo principal en RPi
#include
#include
#include
#include

<termios.h>
<stdio.h>
<stdlib.h>
<string.h>

#include "serial.h"
#include "console_io.h"

//-----------------//-- CONSTANTS
//-----------------//--TIMEOUT in micro-sec
#define TIMEOUT 10000
//-------------------//-- Global variables
//-------------------//-- Serial port descriptor
int serial_fd;

/**************************************************************************/
/* Main loop. When the user press a key, it is sent to the serial port. */
/* When a character is received from the serial port, it is printed on */
/* the screen
*/
/**************************************************************************/
void term(void)
{
char c[1];
char rec[1];
int n;
//-- Main loop
do {
//-- Poll the serial port. A character has been received?
n=serial_read(serial_fd,rec,1,TIMEOUT);
//-- If so, print it on the screen!!

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera
if (n==1) {
if(rec[0]<'1')
serial_send(serial_fd,"G",1);
else
serial_send(serial_fd,"F",1);
fflush(stdout);
}
//-- Repeat until the user press the ESC key
} while (c[0]!=ESC);
};
void termm(void)
{
char c[1];
char rec[1];
int n;
//-- Main loop
do {
//-- if there is a key pressed by the user
if (console_io_kbhit()) {
//-- Read the character
c[0]=console_io_getch();
//-- Send the character to the serial port, if different from ESC
if (c[0]!=ESC)
serial_send(serial_fd,c,1);
}
//-- Repeat until the user press the ESC key
} while (c[0]!=ESC);
}

void terms(void)
{
char c[1];
char rec[1];
int n;
//-- Main loop
do {
//-- Poll the serial port. A character has been received?
n=serial_read(serial_fd,rec,1,TIMEOUT);
//-- If so, print it on the screen!!
if (n==1) {
if(rec[0]<'1')
serial_send(serial_fd,"G",1);
else{

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera
//-- if there is a key pressed by the user
if (console_io_kbhit()) {
//-- Read the character
c[0]=console_io_getch();
//-- Send the character to the serial port, if different from ESC
if (c[0]!=ESC)
serial_send(serial_fd,c,1);
}
fflush(stdout);
//-- Repeat until the user press the ESC key
} while (c[0]!=ESC);
}

/**********************/
/* MAIN PROGRAM
*/
/**********************/
int main (int argc, char* argv[])
{
char mode,
//-- Check if the serial device name is given
if (argc<2) {
printf ("No serial device name is given\n");
exit(0);
}
//-- Open the serial port
serial_fd=serial_open(argv[1],B9600);
//-- Error checking
if (serial_fd==-1) {
printf ("Error opening the serial device: %s\n",argv[1]);
perror("OPEN");
exit(0);
}
//-- Configure the console for using the keyboard
console_io_open();
//--Ask the mode
printf("What is the mode you want to use?(M,S,A)\n");
scanf("%c",&mode);
//-- Execute the main loop
printf ("Press the ESC key to quit\n");
if(mode == "A")
term();
if(mode == "M")
termm();

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera
if(mode == "S")
terms();
//-- Restore the previous console configuration
console_io_close();
//-- Close the serial port
serial_close(serial_fd);
return 0;
}

8.2. Cdigo en Arduino


#include <Servo.h> //Incluir la libreria se servomotores
const int Trig = 7; //Declaracin e inicializacin de los pines con un nombre representativo
const int Echo = 5;
const int LED = 4;
Servo servo; //declaracin del servomotor
void setup(){
pinMode(Trig, OUTPUT);//estado de los pines (envo o recepcin)
pinMode(Echo, INPUT);
pinMode(LED, OUTPUT);
Serial.begin(9600); //inicializacin de la comunicacin serial
servo.attach(9); //inicializacin del pin del servomotor
}
void loop(){
long duration, cm; //declaracin de variables que utilizaremos luego
digitalWrite(Trig,LOW); //envo de una seal de ultrasonido
delayMicroseconds(2);
digitalWrite(Trig,HIGH);
delayMicroseconds(5);
digitalWrite(Trig,LOW);
duration = pulseIn(Echo, HIGH); //medicin de la duracin de entrada en High,
cm = microsecondsToCentimeters(duration); //conversion de tiempo a distancia
Serial.write(cm); //envo de la distancia
delay(100); // espacio de muestreo
if(Serial.available()){ //busqueda de una rden en el puerto serial
char c = Serial.read();
if(c == 'G'){ //orden girar
digitalWrite(LED,HIGH);
servo.write(45);
}

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera
else if(c == 'F'){ //orden seguir adelante
digitalWrite(LED,LOW);
servo.write(90);
}
}
}
byte microsecondsToCentimeters(long microseconds){
return microseconds / 29 / 2;
}

9. Conclusin
En el transcurso de este trabajo adems de todo lo aplicado a la Raspberry Pi y al hecho de
que nos sirvi para poner en practica nuestro aprendizaje en programacin en C, tuvimos la
posibilidad de aplicar y/o aprender ms acerca de la electrnica relacionada con todas las
conexiones necesarias para lograr tener un Arduino y una Raspberry Pi funcionando juntas
con la energa suficiente y tambin para colocar los respectivos motores conectados para
coordinar su funcionamiento. Adems este trabajo nos trajo un inconveniente inesperado a
la hora de disear a Tiguer.bot porque a la hora de tener el algoritmo y el cdigo listo
llego la hora de unir todo el aparataje y esto requiri un diseo previo el cual se nos
complic ms de la cuenta en su momento.
El proyecto mostrado, al utilizar Raspberry Pi como plataforma principal puede tener una
infinidad de usos adicionales al que le dimos nosotros en este caso, esto gracias a la gran
conectividad de Raspberry Pi por su puerto Ethernet y por sus puertos USB, los que
permitiran hipotticamente controlar el Tiguer.bot remotamente mediante conexin
USB a Bluetooth o Wi-Fi, adems de poder conectar algunos otros sensores a la Raspberry
Pi para que esta detecte cambios de otro tipo en el ambiente como un sensor de
temperatura por ejemplo y en ese escenario hacer un cdigo para dicho contexto.
Con todo lo anterior nos qued ms que claro lo til que es este aparato inventado hace
pocos aos y la multifuncionalidad que se puede llegar a obtener de forma compacta.

Tiguer.bot
v.Alpha
Introduccin a la Ingeniera

10. Bibliografa
http://www.iearobotics.com/wiki/index.php?title=Tutorial:Puerto_serie_en_Linux
Linux and the serial port. Dr. Juan Gonzlez Gmez. Enero 2009.

S-ar putea să vă placă și