tiguer_bot.pdf

Upload: engels-pinazo

Post on 16-Feb-2018

228 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/23/2019 tiguer_bot.pdf

    1/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

  • 7/23/2019 tiguer_bot.pdf

    2/25

    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.

    Objetivos2. 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.

  • 7/23/2019 tiguer_bot.pdf

    3/25

    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 conectadasva 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

  • 7/23/2019 tiguer_bot.pdf

    4/25

    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 mbitointelectual, 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.1corresponda 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.

  • 7/23/2019 tiguer_bot.pdf

    5/25

    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 todoslos 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, elmodelo 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-

  • 7/23/2019 tiguer_bot.pdf

    6/25

    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 queimplementa 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

  • 7/23/2019 tiguer_bot.pdf

    7/25

    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.

  • 7/23/2019 tiguer_bot.pdf

    8/25

    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:

  • 7/23/2019 tiguer_bot.pdf

    9/25

    Tiguer.bot

    v.Alpha

    Introduccin a la Ingeniera

    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 atravs 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

    3,7 v

  • 7/23/2019 tiguer_bot.pdf

    10/25

    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 elcaso 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 prox imidad, 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 longy 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 wgetwww.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 sub-

    directorio term_ex aqu debemos modificar el archivo term.c para adaptarlo al algoritmo

    http://www.iearobotics.com/wiki/images/4/4b/Serial-1.0-bin.tar.gzhttp://www.iearobotics.com/wiki/images/4/4b/Serial-1.0-bin.tar.gzhttp://www.iearobotics.com/wiki/images/4/4b/Serial-1.0-bin.tar.gz
  • 7/23/2019 tiguer_bot.pdf

    11/25

    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 semi-automtico 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.

  • 7/23/2019 tiguer_bot.pdf

    12/25

    Tiguer.bot

    v.Alpha

    Introduccin a la Ingeniera

    Figura 2: vista horizontal.

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

  • 7/23/2019 tiguer_bot.pdf

    13/25

    Tiguer.bot

    v.Alpha

    Introduccin a la Ingeniera

    6. Anexo (Galera de imgenes)

  • 7/23/2019 tiguer_bot.pdf

    14/25

    Tiguer.bot

    v.Alpha

    Introduccin a la Ingeniera

  • 7/23/2019 tiguer_bot.pdf

    15/25

    Tiguer.bot

    v.Alpha

    Introduccin a la Ingeniera

  • 7/23/2019 tiguer_bot.pdf

    16/25

    Tiguer.bot

    v.Alpha

    Introduccin a la Ingeniera

  • 7/23/2019 tiguer_bot.pdf

    17/25

    Tiguer.bot

    v.Alpha

    Introduccin a la Ingeniera

  • 7/23/2019 tiguer_bot.pdf

    18/25

    Tiguer.bot

    v.Alpha

    Introduccin a la Ingeniera

  • 7/23/2019 tiguer_bot.pdf

    19/25

    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.

    esventajas

    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

  • 7/23/2019 tiguer_bot.pdf

    20/25

    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

    #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!!

  • 7/23/2019 tiguer_bot.pdf

    21/25

    Tiguer.bot

    v.Alpha

    Introduccin a la Ingeniera

    if (n==1) {

    if(rec[0]

  • 7/23/2019 tiguer_bot.pdf

    22/25

    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 ESCif (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

  • 7/23/2019 tiguer_bot.pdf

    23/25

    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 //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);

    }

  • 7/23/2019 tiguer_bot.pdf

    24/25

    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 granconectividad de Raspberry Pi por su puerto Ethernet y por sus puertos USB, los que

    permitiran hipotticamente controlar el Tiguer.botremotamente 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.

  • 7/23/2019 tiguer_bot.pdf

    25/25

    Tiguer.bot

    v.Alpha

    Introduccin a la Ingeniera

    10. Bibliografa

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

    http://www.iearobotics.com/wiki/index.php?title=Tutorial:Puerto_serie_en_Linuxhttp://www.iearobotics.com/wiki/index.php?title=Tutorial:Puerto_serie_en_Linuxhttp://www.iearobotics.com/wiki/index.php?title=Tutorial:Puerto_serie_en_Linux