Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Diseño y construcción de un robot acuático para la recolección de basura en lagos
y lagunas
Resumen
El proyecto consiste en el diseño y construcción de un robot capaz de recoger desechos
flotantes en un medio acuático. Esto con el fin de proveer una alternativa tecnológica para la
recolección de este tipo de residuos. A lo largo de este documento se explicarán las
principales herramientas y técnicas usadas para su construcción, así como los rasgos
elementales de su funcionamiento. La base de la estructura es cúbica, de 50 cm. de largo y
está constituida de PVC de una pulgada de diámetro. El robot es controlado a distancia
mediante Bluetooth y sus señales son procesadas y ejecutadas haciendo uso de un
microcontrolador Arduino. Consideramos que su implementación es viable en zonas
acuáticas con poca corriente. Los conocimientos y habilidades adquiridos durante el
proceso de diseño y construcción poseen aplicaciones en otras áreas del conocimiento,
contribuyen a nuestro desarrollo académico y nos brindan herramientas que seguramente
nos serán de utilidad para afrontar retos a lo largo de nuestra vida profesional.
1
Introducción
Marco teórico
El proyecto que se presenta considera la integración de conocimientos de programación
con electrónica y mecánica básica, a fin de resolver un problema de la vida real: la
presencia de objetos ligeros y basura en la superficie de un cuerpo acuático.
Dicha problemática fue seleccionada dada la insistencia actual de la aplicación de la
tecnología en la solución de problemas de carácter ecológico y de ayuda al medio
ambiente. De esta manera, se consideró la afectación que tiene hacia la fauna, la
presencia de basura en superficies acuáticas, que en general, son de difícil acceso para
las personas. Otra idea que guía este proyecto, es la posibilidad de reciclar material de
desecho, lo que no solo da alternativas para el aprovechamiento de materiales, sino que
también permite la reducción de costos del producto final.
Cabe señalar entonces, que este trabajo se centra en el diseño y construcción del
dispositivo, más que en el análisis de la problemática misma.
Así, el presente marco teórico radica en dar una serie de definiciones básicas de
conceptos que fungen como un marco de referencia de elementos que interactúan de
manera práctica en el producto final.
Robot
Según el diccionario de Oxford, un robot es aquella:
Máquina automática programable capaz de realizar determinadas
operaciones de manera autónoma y sustituir a los seres humanos en algunas
tareas, en especial las pesadas, repetitivas o peligrosas; puede estar dotada de
sensores, que le permiten adaptarse a nuevas situaciones (2007).
Podríamos añadir a esta definición, el hecho de que se emplean en un entorno real
con el que establece una conexión inteligente entre percepción y acción por medio de
sensores que aportan información para la resolución de un problema.
Aunado a ello, podemos clasificarlos por sus distintos tipos(2017):
Androides y zoomórficos: robots análogos al hombre y a los animales
respectivamente
Industriales: Están destinados a realizar de forma automática determinados
procesos de fabricación o manipulación
2
De Servicio: todos los que no son industriales
Telemanipulados o Teleoperados: precisa el mando continuo de un operario.
Móviles: están provistos de patas, ruedas u orugas que los capacitan para
desplazarse en función de su programación y de la información que reciben. Pueden
llevar diversos sistemas de sensores para captar información
Josep Fernández Rufaza menciona que, dentro de los robots móviles, se encuentran
los vehículos guiados automáticamente o AGV ( Automatic Guided Vehicle), y son aquellos
que están capacitados para moverse de manera autónoma en entornos determinados,
teniendo como objetivo realizar tareas específicas como el transporte de objetos o
manipulación y recolección de estos, recibiendo órdenes de una unidad de control.
(2001,CEABE)
Un robot AGV tiene como objetivo principal poder navegar de manera autónoma en
un ambiente no controlado, es decir, se debe contar con la información de su localización y
contar con un mecanismo que le permita desplazarse.
Nuestro dispositivo entra en esta última clasificación, ya que el prototipo ha sido
diseñado para realizar tareas sencillas y, con una aplicación en Android, controlar sus
movimientos de manera remota. Así, es posible definir trayectorias complejas y controlarlo.
Estructura y funcionamiento de una computadora
De acuerdo con Vasconcelos (2011), una computadora es una máquina capaz de
procesar y transformar gran cantidad de datos rápidamente. Este mismo autor señala que
una computadora digital realiza dichas acciones controlando y efectuando operaciones con
señales digitales, esto es, señales que saltan entre un valor bajo y uno alto, sin pasar por
valores intermedios.
Los unos y ceros que manejan las computadoras digitales son llamados bits (Binary
DigiT) y constituyen la unidad mínima de información. Un byte es una agrupación de 8 bits
consecutivos y suele representar un caracter.
En general, las computadoras digitales se construyen con base en un esquema o
arquitectura conocido como modelo de Von Neumann (Vasconcelos, 2011), el cual
describe una máquina integrada por cinco partes:
3
1. Unidad de entrada: Parte de la computadora encargada de recibir información del
exterior para conducirla hacia la sección de procesamiento.
2. Unidad de salida: Parte que permite que los datos procesados salgan de la
computadora.
3. Unidad de memoria: Medio de almacenamiento tanto de datos de entrada, datos
procesados e instrucciones.
4. Unidad de control: Sección de la computadora que dirige y coordina los procesos a
realizar.
5. Unidad aritmética y lógica: Parte encargada de realizar las operaciones.
Microcontrolador Arduino
Angulo y Hernández (2011) consideran que un microcontrolador es un computador
completo dentro de un circuito integrado; aunado a la CPU o microprocesador, contiene las
memorias y las unidades de entrada/salida y otros recursos complementarios.
Según su página oficial, Arduino Uno es una plataforma de hardware libre, basada en una
placa con unmicrocontrolador. El microcontrolador es del Fabricante Atmel y usa el modelo
Atmega328.
Las características principales de Arduino son:
El voltaje de alimentación externa: se encuentra en un rango de 7 a 12V, pero el
voltaje con que trabaja el microcontrolador es de 5V. La frecuencia de trabajo del
procesador de dicho microcontrolador es de 16 MHz. Tiene una memoria flash para
almacenar un programa con una capacidad de 32 Kbytes La comunicación con el
exterior es a través de 6 entradas o puertos analógicos y 14 puertos digitales que
pueden ser configurados como entradas o salidas, siendo así un total de 20 puertos
E/S.
Las entradas analógicas: se caracterizan por leer valores de voltaje de 0 a 5 Volts
con una resolución de 1024 (10 bits). Por lo que es capaz de detectar variaciones
en el nivel de la señal de entrada de casi 5 mV.
Los puertos digitales sólo tienen dos estados: 0 lógico o 1 lógico; en términos de la
electrónica de la tarjeta Arduino 0 lógico es de 0 a 0.2 Volts y 1 lógico es de 4.5 a 5
4
Volts que puede ser como voltaje de entrada o de salida de la tarjeta. Los puertos
digitales corresponden a los pines del 0 al 13 marcados en la tarjeta.
En cuanto a las señales digitales, éstas consisten en una sucesión de pulsos
digitales, en otras palabras, secuencias de bits que representan los datos, y que dependen
de un pulso de reloj.
Para establecer una comunicación es necesario un protocolo, esto es, las reglas
para determinar la frecuencia a la que se envía una señal y cómo se debe interpretar esa
sucesión de bits que representan la información.
Arduino tiene diferentes tipos de interfaces de comunicación. Dentro la
comunicación serial tenemos el protocolo serial simple SPI (Interfaz Periférica Serial). Un
dispositivo denominado maestro envía la señal de reloj, y tras cada pulso de reloj, envía un
bit de datos al esclavo. Los nombres de las señales son, SCK para el reloj yMOSI para el
maestro. En el Arduino, el protocolo está implementado en los pines 13 como reloj y en el
pin 11 como dato.
Un circuito eléctrico es un arreglo de componentes conectados entre sí, que permite
el flujo de electrones denominado corriente eléctrica bajo la fuerza de un voltaje.
Tal como lo explica Serway Raymond y Beichner (1999), el voltaje, tensión o
diferencia de potencial es la fuerza que ejerce una fuente de suministro de energía eléctrica
o fuerza electromotriz (FEM) sobre las cargas eléctricas o electrones para moverse en un
circuito eléctrico cerrado.
La corriente eléctrica consiste en la circulación de cargas o electrones a través de
un conductor en un circuito eléctrico cerrado, que se mueven de la terminal negativa a la
positiva de la fuente de suministro de fuerza electromotriz (FEM).
Sistema Operativo
Es el programa encargado de simplificar el manejo y utilización del dispositivo. Está
conformado en tres niveles: usuario, kernel (núcleo) y hardware.
En general puede efectuar las siguientes tareas:
Manejo de archivos y directorios.
Mantenimiento de memoria secundaria.
Configuración del equipo.
5
Optimización del uso tanto de la memoria principal como secundaria.
Eficiencia en la ejecución de los programas.
Android
Android es un sistema operativo basado en Linux 2.6 para sistemas de servicios
básicos tales como seguridad, gestión de memoria, gestión de procesos, la pila de red, y
el conductor modelo. Es desarrollado por el conglomerado de empresas: Open Handset
Alliance, el cual encabeza Google (Universidad Carlos III de Madrid, 2016), inicialmente
para dispositivos móviles y posteriormente hacia otros instrumentos. Permite programar y
modificar aplicaciones sobre una variación de la máquina de Java en su entorno de
trabajo, con compilación en tiempo de ejecución.
El núcleo también actúa como una capa de abstracción entre el hardware y el resto
de la pila de software. Es decir, una aplicación puede llamar a cualquier función básica de
un teléfono, como hacer llamadas, enviar mensajes de texto, o usar la cámara con la
intermediación del núcleo. Además, utiliza una máquina virtual personalizada que ha sido
diseñada para optimizar la memoria y los recursos de hardware en un entorno móvil.
La programación en Android está basada en Java, lo que hace que sea compatible
con la mayoría de los dispositivos con el sistema operativo antes mencionado.
Java
Es un lenguaje de programación que se fundamenta en el paradigma de
Programación Orientada a Objetos (POO), y como cualquier otro, cuenta con su propia
estructura y reglas de sintaxis.
Los fundamentos de este paradigma están en el uso de componentes de software
tal como lo describe Microsoft en su página oficial (2017):
Objeto: Componente o código de software que contiene en sí mismo tanto
sus características(campos) como sus comportamientos (métodos)
Campo: ayuda a definir su estructura y permite diferenciarlo de otros objetos.
Se define con un identificador y un tipo, el cual indica los valores que puede
almacenar. El conjunto de valores de los campos definen el estado del objeto.
6
Método: Es la implementación de un algoritmo que representa una operación
o función que realiza un objeto. El conjunto de los métodos de un objeto
determinan el comportamiento del objeto.
En otras palabras, en la POO el elemento principal es el objeto, y es una unidad que
contiene sus características y comportamiento en símisma, es independiente y puede o no
relacionarse con objetos de su misma clase como sucede en la vida real.
Java, es un lenguaje considerado como potente, versátil y multiplataforma (funciona
en cualquier sistema operativo moderno).
Tal y como se describe en la página oficial de
IBM, es un derivado del lenguaje C, por lo que
sus reglas de sintaxis resultan ser similares .
De manera general, los sistemas en Java
constan de diversas partes: un ambiente, el
lenguaje, la interfaz de programación de
aplicaciones Java (API) y varias bibliotecas de
clases. Los programas, pasan a través de
cinco fases para poder ejecutarse: edición,
compilación, carga, verificación y ejecución, tal
y como se muestra en la figura 1.1 (Deitel,
2004)
(Figura 1.1)
Bluetooth
Para la Universidad de las Américas Puebla(2017),Bluetooth es un estándar
global abierto para enlaces de radio, que ofrece conexiones inalámbricas
económicas para transmisiones de datos entre computadoras portátiles,
7
dispositivos de mano, teléfonos celulares mediante un enlace de
radiofrecuencia.
El estándar Bluetooth opera en la banda 2.4 GhZISM (industrial, scientific and
medical) y del mismo modo que WIFI, utiliza la técnica FHSS (Frequency Hopping Spread
Spectrum, en español Espectro Ensanchado por Saltos de Frecuencia),que consiste en
dividir la banda de frecuencia de 2.402 2.480 GHz en 79 canales (denominados saltos)
de 1 MHz de ancho cada uno y, después, transmitir la señal utilizando una secuencia de
canales que sea conocida, tanto para la estación emisora como para la receptora. Con la
llegada de estándares de comunicaciones inalámbricas en la redes de transmisión de
datos, ha permitido la implementación de diversas interfaces operadas bajo frecuencias no
licenciadas.
Bluetooth pertenece a las Redes Inalámbricas de Área Personal WPAN (por sus
siglas en inglés) es decir, es parte de las tecnologías creadas para proveer comunicación
inalámbrica en áreas de uso personal. Contar con un espectro de frecuencias, lo convierte
en una alternativa para los sistemas de comunicaciones móviles, tal como se describe en
el artículo Bluetooth technology: alternative to cellular networks of voice and data (2017).
Uno de los objetivos que se pretenden con su uso, es ofrecer la posibilidad de crear
pequeñas redes inalámbricas (WLAN) y facilitar la sincronización de datos entre equipos
personales, también el bajo costo y consumo de potencia.
Servomotor
Charles Platt, en la enciclopedia de componentes electrónicos (2016), describe al
servomotor como el “[...] dispositivo electromecánico que tiene un sistema de corrección
con retroalimentación para el control de un parámetro específico.”(p.201)
Está conformado por 4 elementos principales confinados dentro de una carcasa de
plástico:
Motor de corriente continua: Permite la movilidad en dos sentidos del servomotor.
Juego de engranajes reductores: Reduce la alta velocidad de giro para acrecentar
su capacidad de torque 1
Tarjeta de control: Circuito electrónico que envía al servomotor una posición.
1 Momento de fuerza
8
Sensor de desplazamiento: Usualmente, potenciómetro para conocer la posición
angular en la que se encuentra el servomotor.
En un documento, la Universidad Técnica Federico de Santa María (2010)
menciona que,para comandar un servo es necesario aplicar un pulso de duración y
frecuencia específicos. Todos los servos disponen de tres cables, dos para alimentación
Vcc yGnd (4.8 a 6 [V]) y un tercero para aplicar el tren de pulsos, que hace que la tarjeta de
control diferencial interno ponga el servo en la posición indicada, dependiendo del ancho
del pulso.
A diferencia de otro tipo de motores, tiene la característica de contar con un tope
mecánico en los engranajes para tener un cierto grado de rotación, porque son dispositivos
de posicionamiento, como se muestra en la figura 1.2, donde además, se señalan sus
componentes. Sin embargo para el propósito de este proyecto, dicho tope fue retirado.
(Figura 1.2)
Turbina
Es una máquina formada por una serie de paletas unidas a un eje central, la cual
aprovecha la energía dada para generar una fuerza motriz.
Según Julián Pérez Porto y María Merino (2012), las turbinas s e pueden clasificar en:
Turbinas eólicas: aprovechan la energía cinética del viento para producir energía
mecánica
Turbinas térmicas: utilizan la energía del cambio de densidad que sufre su fluido de
trabajo al atravesar la máquina. Por ejemplo: turbina de gas y turbina de vapor.
Turbinas hidráulicas: El agua intercambia energía con un dispositivo mecánico de
revolución que gira alrededor de su eje de simetría; éste mecanismo lleva una o
9
varias ruedas, (rodetes o rotores), provistas de álabes, de forma que entre ellos
existen unos espacios libres o canales, por los que circula el agua
Objetivo del proyecto
Diseñar y construir un robot dotado con una aplicación de software que permita el
control por parte del usuario, para la recolección de basura en lagos y lagunas.
Problema
¿Cómo integrar los conocimientos de programación, electrónica ymecánica básica
para reducir la contaminación de lagos y lagunas, a través de la recolección de basura?
Desarrollo
El desarrollo de nuestro prototipo está basado en la idea de reutilizar materiales,
puesto que estamos conscientes del daño provocado por los seres humanos a nuestro
planeta.
El producto final se realizó en cuatro etapas. La primera corresponde al diseño
lógico y estructural del robot; la segunda, al desarrollo de la composición electrónica; la
tercera, a la construcción del prototipo; la cuarta, al diseño y desarrollo del software. A
continuación se describen dichas etapas:
1. Diseño lógico y estructural del robot
La primera parte de esta etapa consistió en modelar una estructura adecuada para
brindar alternativas viables y eficaces para la resolución del problema anteriormente
planteado. Para ello, se realizaron cálculos, se externaron y ponderaron ideas sobre un
posible diseño del prototipo, se identificaron los materiales idóneos al proyecto y se
tomaron decisiones a partir de: un funcionamiento eficaz; criterios de funcionalidad como
facilidad y comodidad de empleo; la viabilidad en los costos; la factibilidad de
reproducción; un bajo impacto ambiental; y la durabilidad del producto.
Elegimos un cubo como mejor diseño estructural, porque tiene la capacidad de
recolectar mayor volumen de residuos comparado con otras figuras geométricas. Sin
embargo decidimos diseñar la estructura con dos de las artistas superiores opuestas, a un
desnivel de 10 cm para acomodar los componentes electrónicos en una placa de acrílico
10
centrada. Con ello podría darse también mayor estabilidad al prototipo. Además, las
características del espacio y la masa que ocupa, da la posibilidad de un índice más alto de
estabilidad y flotabilidad.
Otros de los componentes principales son aquellos que brindan movilidad al
dispositivo; las turbinas y los motores. Su planteamiento fue a partir de la idea de realizar
un ensamblaje adecuado para que su movilidad fuera óptima considerando la fuerza del
dispositivo y el costo del producto. (Anexo de imágenes: Figura 1.13)
Al mismo tiempo, se diseñó el circuito electrónico para su ensamblaje en una
protoboard , en la cual se colocarían los componentes para la conexión entre el módulo de 2
Bluetooth, el microcontrolador arduino, los motores y las fuentes de poder.
Otro de los retos a resolver, fue la disposición del circuito electrónico en la estructura
del dispositivo, ya que en el agua estaría expuesto al medio, lo que provocaría posibles
daños a los elementos electrónicos. Se pensó en un recipiente que permitiera aislar a los
más vulnerables. Por otro lado, se diseñaron bases de madera para elevar los motores que
irían conectados a los ejes de las turbinas, mismos que se eligieron para tener la suficiente
distancia a las bases de las estas y así, protegerlos de las condiciones mencionadas.
Las turbinas se planearon a partir de la estructura de los ejes, los cuales deben
brindar mayor soporte para que la contrafuerza del eje al motor no sea perjudicial. Sumado
a esto, los engranajes deben incrementar la potencia del motor para que, junto con las
hélices ayuden al desplazamiento.
Debido a que el objetivo es recoger residuos que se encuentren en la superficie del
agua, el robot tiene que contar con la característica de flotabilidad. Se llegó a la resolución
de usar tubos de espuma, que se componen de un material sintético repleto de espacios
de aire que, sumados al comportamiento normal del material, evita el hundimiento del
robot. Para la recolección de los residuos, se decidió colocar una red reciclada en las
caras del cubo.
Para que se pueda controlar el dispositivo a distancia, se propuso el diseño y
desarrollo de una aplicación para celulares. Dadas las necesidades, el lenguaje de
programación seleccionado fue Java para Android. Para que tuviera la facilidad y rango de
conexión entre el microcontrolador Arduino y la aplicación, se contempló el uso de un
2 La protoboard es una especie de tablero con orificios, en la cual se pueden insertar componentes electrónicos y cables para armar circuitos
11
módulo de Bluetooth, ya que las ventajas de éste comparado con uno de wifi fueron: la
relación costoalcance y la facilidad de interconexión.
Para todo lo anteriormente planteado, se realizaron diversos planos con la finalidad
de tener una representación gráfica y concisa del prototipo del producto final. Tal y como se
muestra en la figura 1.3 y en el anexo de imágenes figura 1.11 y 1.12.
(Figura 1.3)
2. Desarrollo de la composición electrónica
En esta etapa, se elaboró la electrónica que controla a la parte mecánica a partir del
diseño ya esbozado. Se utilizaron: 1 protoboard, 10 jumpers, 1 Arduino Uno, 1 Módulo de
Bluetooth y 2 pilas recargables.
En primera instancia y poniendo en práctica los conocimientos más elementales
sobre electrónica de potencia , se elaboró un circuito que distribuye la energía eléctrica 3
hacia los servomotores y el microcontrolador Arduino, para que el funcionamiento entre
éstos y el flujo de la corriente fueran los correctos. Con el propósito de contar con la
potencia necesaria de funcionamiento, se ocupó una pila recargable y una solar como
fuente de poder del circuito, y posteriormente se añadieron los motores a éste. Luego, se
hizo la conexión eléctrica entre el microcontrolador y el módulo de Bluetooth, dando lugar
así a un circuito completo y eficiente.
3 La electrónica de potencia combina la energía, la electrónica y el control, ha revolucionado la idea del control para la conversión de potencia y para el control de los motores eléctricos. El control se encarga del régimen permanente y de las características dinámicas; la energía está relacionado con el equipo de potencia para la generación, transmisión y distribución de energía eléctrica; la electrónica se ocupa de los dispositivos y circuitos de estado sólido requeridos en el procesamiento de señales para cumplir con los objetivos de control deseados.
12
3. Construcción del prototipo
Esta etapa radica en la construcción de la parte mecánica del robot . Como se
mencionó anteriormente, los servomotores tienen cierto ángulo de giro causado por la
posición de los engranajes con respecto a un tope, sin embargo, esto no resultaba
deseable para el proyecto, dado que se requería un giro de 360°. Debido a esto, el
servomotor tuvo que ser modificado abriendo la carcasa de plástico, quitando los
engranajes del motor y, con ayuda de un par de pinzas de corte, retirar dicho elemento.
Ulteriormente, procedimos con la construcción y ensamblaje del esqueleto,
compuesto fundamentalmente por piezas y accesorios de Policloruro de Vinilo (PVC), para
ello se utilizaron: 13 tubos de 50 cm cada uno, 4 codos, 4 esquineros, y 4 conexiones T;
todos unidos con pegamento apropiado para el tipo de material. (Anexo de imágenes:
figura 1.4)
En las aristas desniveladas, se colocó un tubo de espuma cortado en dos
segmentos de 30 cm cada uno. Fueron cortados transversalmente para poder cubrir los
tubos de PVC, y unidos a estos por medio de cinchos de plástico. También se colocó un
mosquitero a modo de red en 4 caras del prisma: la base y 3 laterales, para que la basura
pueda entrar pero no salir.
Los baleros tienen la capacidad de dar movilidad y sustento a la dinámica entre el
eje y la base; reducen la fricción entre el primero y las piezas conectadas a éste, por medio
de una rodadura que le sirve de apoyo y facilita su desplazamiento.
Otro de los elementos básicos para la turbina es la rueda o rotor, que cuenta con
palas de Polipropileno, obtenidas gracias al reuso de una caja de este material, y
colocadas alrededor de una lata de aluminio cortada, de tal forma que el fluido en
movimiento produzca una fuerza tangencial que impulse a las hélices y las haga girar. Esta
energía mecánica se transfiere a través de un eje para proporcionar el movimiento del
dispositivo.
El juego de engranajes es uno de los mejores medios disponibles cuando en las
máquinas, la transmisión de potencia se hace de un eje a otro paralelo cercano a él. En
este caso, para los ejes de las turbinas se requirió de: 1 eje de bicicleta, 2 baleros , 2 4
tuercas para ajustar los baleros, 2 tuercas para sujetar la base de las paletas, 2 tuercas
para sujetar el engranaje, 2 bases de madera para sujetar a la estructura y 1 tubo de PVC
4 Pieza que sirve como apoyo a un eje y sobre el cual éste gira.
13
de 25 cm, que sirve de base para poder colocar el eje en la placa de acrílico cercanos a
los servomotores y al circuito. (Anexo de imágenes: Figura 1.7 Figura 1.10).
4. Diseño y desarrollo del software
El desarrollo de la aplicación en Java para Android fue dividido en dos partes. La
primera, consistió en el desarrollo de la interfaz gráfica de la aplicación. La segunda, en la
conexión entre el módulo de Bluetooth asociado al Arduino y al del celular. El programa
hace que el usuario pueda comandar el dispositivo a una distancia de hasta 100 metros.
El módulo de bluetooth HC05 es del tipo MaestroEsclavo, esto quiere decir que,
además de recibir conexiones desde una PC o tablet, crea la comunicación AppAndroid a
Arduino . También es capaz de generar conexiones hacia otros dispositivos. Esto nos
permite conectar dos módulos de bluetooth y formar una conexión punto a punto, para
transmitir datos entre el microcontrolador y el celular.
Por otra parte, se encuentra el programa en Arduino que está hecho en lenguaje C
pero compilado y cargado en el microcontrolador. Básicamente, su funcionamiento radica
en mandar las señales correspondientes para hacer que los motores giren.
Resultados
Después de alrededor de cuatro meses de trabajo, se logró obtener un robot con la
estructura planeada a la de un cubo, de aproximadamente 50 cm por lado, funcionando con
una aplicación desarrollada en Java para Android, un programa en lenguaje C cargado en
un microcontrolador Arduino y la relación entre éstos mediante un módulo de Bluetooth
HC05. (Anexo de imágenes: Figura 1.5)
El usuario interactúa con el robot a través de un teléfono celular. Se usa un programa
que se ejecuta sobre Android y el módulo para lograr esta conexión, permitiendo así que la
secuencia del movimiento se muestre de manera inmediata en el cubo y lleve a cabo la
recolección de desechos. (Anexo de imágenes: Figura 1.6)
A partir del planteamiento del problema inicial, se tuvo que realizar una investigación
minuciosa en la cual se hizo el análisis de cada una de las partes lógicas y estructurales del
robot. Gracias a esto, pudimos relacionar nuestros conocimientos sobre programación en
lenguaje C, programación orientada a objetos y electrónica básica; asimismo,
incorporamos nuevos conocimientos desarrollados a lo largo de este proyecto sobre las
características de distintos materiales, así como la comparación y selección de los
14
mismos, para la construcción de un prototipo que realice las funciones requeridas para
solucionar un problema específico.
Ver video en la dirección:
https://vimeo.com/207872857
Análisis e interpretación de resultados
Se consideran alcanzados los objetivos del proyecto, ya que el robot cumple con las
características definidas al inicio del proyecto, sin embargo dicho desempeño no fue
gratuito y se presentaron múltiples retos relacionados con el diseño y manufactura del
prototipo.
Sin embargo, existen mejoras que se pueden hacer tales como:
Poner flotadores verticales para bajar la línea de flotación y permitir que
basura más grande entre al cubo.
Adicionar una tapa al cubo para no dejar salir a la basura.
Perfeccionar el ensamblado de los engranajes y el eje.
Los principales retos que se enfrentaron durante el desarrollo del proyecto fueron:
El diseñar un robot que fuera viable, económico y de fácil manufactura.
Elegir los materiales adecuados para que fueran ligeros y fácilmente adaptables al
proyecto.
Rediseñar el prototipo para adaptarlo a las condiciones de vulnerabilidad al agua.
El almacenamiento de los residuos.
Conclusiones
El proyecto resulta pertinente para la limpieza de cuerpos de agua pequeños, tales
como albercas o lagos artificiales. Pero resulta muy ambicioso pensar en lagos naturales
grandes, ya que el alcance del módulo no supera la distancia de 100 metros y el prototipo
se enredaría con la flora subacuática.
El desarrollo de este robot contribuyó a mejorar las habilidades del trabajo
colaborativo y a tener consideraciones importantes en cuanto a materiales y técnicas
usadas para la construcción del mismo.
15
Desarrollar por cuenta propia, tanto la estructura física como el software, reduce los
costos considerablemente comparado con el gasto que representa adquirir un producto
comercial de este tipo, ya que el costo total de nuestro producto es de $2000 y en el
mercado el más barato es de $5800.
Fuentes de información
Anónimo.(2017).Robótica.Tudela, España: Centro Integrado Politécnico. Recuperado el 17 de
enero del 2017 de: http://www.etitudela.com/profesores/rpm/rpm/downloads/robotica.pdf
Anónimo. (2017). Definición de Bluetooth.Universidad de las Américas de Puebla.
Consultado el 03 de enero del 2017
de: http://catarina.udlap.mx/u_dl_a/tales/documentos/lem/valle_i_lf/capitulo3.pdf
Angulo, J., Hernández, J., Prieto, M., Etxebarria M. y Angulo, M. (2010). Electrónica digital y
microprogramable. España: Paraninfo.
Arduino (2017). Página oficial de Arduino. Consultado el 20 de febrero del 2017, de
https://www.arduino.cc/en/Main/ArduinoBoardUno
Camargo, O; Martínez, L && Hernández, C. (2017). Bluetooth technology: alternative to
cellular networks of voice and data. Consultado el 21/02/2017,
de:http://file :/// C:/Users/PREPA%206/Downloads/DialnetTecnologiaBluetooth4168
662.pdf
Canchala, A. (2017). Página oficial de Microsoft, Fundamentos de la Programación
Orientada a Objetos. Consultado el 04 de marzo del 2017, de:
https://msdn.microsoft.com/eses/library/bb972232.aspx
Carletti, E.J.(2007). Servos: Características Básicas. Consultado el 03 de febrero, de:
http://robotsargentina.com.ar/MotorServo_basico.htm
16
Deitel, Harvey M. && Deitel. Paul J.(2004), Cap.24 Introducción a las aplicaciones y a los
applets de Java. en Cómo programar en C/C++ y Java (4°a ed.) (pp.
769773).México, PearsonEducación.
Fernández Ruzafa, J && Escoda Herrando, J.(2001) Navot: robot autónomo educacional ,
XXII Jornadas de Automática, Comité Español de Automática. Barcelona España
Platt, Charles.(2016). Encyclopedia of Electronics Components. Power Sources & Conversion ,
Volume I,O'Reilly Media Inc., U.S.A., Pages 201207.
Pérez, Julián && Merino, María. Publicado: 2012. Actualizado: 2015. Definicion.de:
Definición de turbina (http://definicion.de/turbina/).
Ramírez, V. && Weiss M.(1986). Introducción a los microprocesadores, equipo y sistemas.
México: Limusa
Rashid, M. (1993). Power Electronics Circuits, Devices, and Applications.New York:
Prentice Hall.
Serway, R. && Beichner, R.(1999). Physics for scientists and Engineers with Modern
Physics .(2° ed.). United States of America: Brooks cole.
Steven Perry, J.(2012). Conceptos básicos del lenguaje Java: programación orientada a
objetos en la plataforma Java. Consultado el 22 de febrero del 2017, de :
https://www.ibm.com/developerworks/ssa/java/tutorials/jintrotojava1
Varios. (2016). Programación en dispositivos móviles portables, Android. Consultado el 12
de diciembre del 2016 de
http://sites.google.com/site/swcuc3m/home/android/portada.
17
Varios. (2007). Oxford Dictionary. Oxford: Oxford University Press. oxforddictionaries.com.
Recuperado el 15 de enero del 2017
https://es.oxforddictionaries.com/definicion/robot
Varios. (2010). Servomotores. Universidad técnica Federico Santa María, Chile.
Consultado el 10 de febrero del 2017
de:http://www2.elo.utfsm.cl/~mineducagv/docs/ListaDetalladadeModulos/servos.pdf
Vasconcelos, J. (2011). Introducción a la Computación. México: Grupo Editorial Patria.
Anexos
SplashScreen.java
package com.led_on_off.led;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class SplashScreen extends
Activity
@Override
protected void onCreate(Bundle
savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Thread timerThread = new Thread()
public void run()
try
sleep(700);
catch(InterruptedException e)
e.printStackTrace();
finally
Intent intent=new
Intent(SplashScreen.this,DeviceList.class)
;
startActivity(intent);
;
timerThread.start();
@Override
protected void onPause()
super.onPause();
finish();
ledControl.java
package com.led_on_off.led;
import
android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
18
import android.bluetooth.BluetoothSocket;
import android.content.Intent;
import android.view.View;
import android.widget.ImageButton;
import android.widget.Toast;
import android.app.ProgressDialog;
import
android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.os.AsyncTask;
import java.io.IOException;
import java.util.UUID;
public class ledControl extends
ActionBarActivity
ImageButton forward, left, right, reverse,
stop, Discnt;
String address = null;
private ProgressDialog progress;
BluetoothAdapter bluetoothAdapter = null;
BluetoothSocket bluetoothSocket = null;
private boolean isBtConnected = false;
static final UUID myUUID =
UUID.fromString("00001101000010008
00000805F9B34FB");
@Override
protected void onCreate(Bundle
savedInstanceState)
super.onCreate(savedInstanceState);
Intent newint = getIntent();
address =
newint.getStringExtra(DeviceList.EXTRA_
ADDRESS);
setContentView(R.layout.activity_led_cont
rol);
forward =
(ImageButton)findViewById(R.id.forward);
left = (ImageButton)findViewById(R.id.left);
right =
(ImageButton)findViewById(R.id.right);
reverse =
(ImageButton)findViewById(R.id.reverse);
stop =
(ImageButton)findViewById(R.id.stop);
Discnt =
(ImageButton)findViewById(R.id.discnt);
new ConnectBT().execute();
forward.setOnClickListener(new
View.OnClickListener()
@Override
public void onClick(View v)
if (bluetoothSocket!=null)
try
bluetoothSocket.getOutputStream().write("
a".toString().getBytes());
catch (IOException e)
msg("Error");
);
left.setOnClickListener(new
View.OnClickListener()
@Override
public void onClick(View v)
if (bluetoothSocket!=null)
try
19
bluetoothSocket.getOutputStream().write("
c".toString().getBytes());
catch (IOException e)
msg("Error");
);
right.setOnClickListener(new
View.OnClickListener()
@Override
public void onClick(View v)
if (bluetoothSocket!=null)
try
bluetoothSocket.getOutputStream().write("
d".toString().getBytes());
catch (IOException e)
msg("Error");
);
reverse.setOnClickListener(new
View.OnClickListener()
@Override
public void onClick(View v)
if (bluetoothSocket!=null)
try
bluetoothSocket.getOutputStream().write("
b".toString().getBytes());
catch (IOException e)
msg("Error");
);
stop.setOnClickListener(new
View.OnClickListener()
@Override
public void onClick(View v)
if (bluetoothSocket!=null)
try
bluetoothSocket.getOutputStream().write("
g".toString().getBytes());
catch (IOException e)
msg("Error");
);
Discnt.setOnClickListener(new
View.OnClickListener()
@Override
public void onClick(View v)
Disconnect(););
private void Disconnect()
if (bluetoothSocket!=null)
try
bluetoothSocket.close();
catch (IOException e)
msg("Error");
finish();
private void msg(String s)
Toast.makeText(getApplicationContext(),s
,Toast.LENGTH_LONG).show();
@Override
public boolean
onCreateOptionsMenu(Menu menu)
getMenuInflater().inflate(R.menu.menu_led
_control, menu);
return true;
@Override
public boolean
onOptionsItemSelected(MenuItem item)
int id = item.getItemId();
20
if (id == R.id.action_settings)
return true;
return
super.onOptionsItemSelected(item);
private class ConnectBT extends
AsyncTask<Void, Void, Void>
private boolean ConnectSuccess = true;
@Override
protected void onPreExecute()
progress =
ProgressDialog.show(ledControl.this,
"Conectando", "Espera");
@Override
protected Void doInBackground(Void...
devices)
try
if (bluetoothSocket == null ||
!isBtConnected)
bluetoothAdapter =
BluetoothAdapter.getDefaultAdapter();
BluetoothDevice dispositivo =
bluetoothAdapter.getRemoteDevice(addr
ess);
bluetoothSocket =
dispositivo.createInsecureRfcommSocket
ToServiceRecord(myUUID);
BluetoothAdapter.getDefaultAdapter().can
celDiscovery();
bluetoothSocket.connect();
catch (IOException e)
ConnectSuccess = false;
return null;
@Override
protected void onPostExecute(Void
result)
super.onPostExecute(result);
if (!ConnectSuccess)
msg("La conexión falló, intenta otra vez");
finish();
else
msg("Conectado");
isBtConnected = true;
progress.dismiss();
DeviceList.java
package com.led_on_off.led;
import android.content.Intent;
import
android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import
android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.widget.TextView;
21
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Set;
public class DeviceList extends
ActionBarActivity
Button pairedDevicesBtn;
ListView deviceList;
private BluetoothAdapter
bluetoothAdapter = null;
private Set<BluetoothDevice>
pairedDevices;
public static String EXTRA_ADDRESS =
"device_address";
@Override
protected void onCreate(Bundle
savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_device_li
st);
pairedDevicesBtn =
(Button)findViewById(R.id.button);
deviceList =
(ListView)findViewById(R.id.listView);
bluetoothAdapter =
BluetoothAdapter.getDefaultAdapter();
if(bluetoothAdapter == null)
Toast.makeText(getApplicationContext(),
"Tu dispositivo no tiene conexión
Bluetooth",
Toast.LENGTH_LONG).show();
finish();
else if(!bluetoothAdapter.isEnabled())
Intent turnBluetooth = new
Intent(BluetoothAdapter.ACTION_REQUE
ST_ENABLE);
startActivityForResult(turnBluetooth,1);
pairedDevicesBtn.setOnClickListener(ne
w View.OnClickListener()
@Override
public void onClick(View v)
pairedDevicesList();
);
private void pairedDevicesList()
pairedDevices =
bluetoothAdapter.getBondedDevices();
ArrayList list = new ArrayList();
if (pairedDevices.size()>0)
for(BluetoothDevice bt : pairedDevices)
list.add(bt.getName() + "\n" +
bt.getAddress()); //Get the device's name
and the address
else
Toast.makeText(getApplicationContext(),
"No se encontraron dispositivos
emparejados.",
Toast.LENGTH_LONG).show();
final ArrayAdapter adapter = new
ArrayAdapter(this,android.R.layout.simple
_list_item_1, list);
deviceList.setAdapter(adapter);
deviceList.setOnItemClickListener(myList
ClickListener);
22
private AdapterView.OnItemClickListener
myListClickListener = new
AdapterView.OnItemClickListener()
public void onItemClick (AdapterView<?>
av, View v, int arg2, long arg3)
String info = ((TextView)
v).getText().toString();
String address =
info.substring(info.length() 17);
Intent i = new Intent(DeviceList.this,
ledControl.class);
i.putExtra(EXTRA_ADDRESS, address);
startActivity(i);
;
@Override
public boolean
onCreateOptionsMenu(Menu menu)
getMenuInflater().inflate(R.menu.menu_de
vice_list, menu);
return true;
@Override
public boolean
onOptionsItemSelected(MenuItem item)
int id = item.getItemId();
if (id == R.id.action_settings)
return true;
return
super.onOptionsItemSelected(item);
arduino.ino
#include <Servo.h>
char jarvis;
Servo motorL, motorR;
void frente()
motorL.write(170);
motorR.write(10);
Serial.print(1, DEC);
void atras()
digitalWrite(8, LOW);
motorL.write(10);
motorR.write(170);
Serial.print(2, DEC);
void izquierda()
motorL.write(10);
motorR.write(10);
Serial.print(3, DEC);
void derecha()
motorL.write(170);
motorR.write(170);
Serial.print(4, DEC);
void detener()
digitalWrite(8, HIGH);
motorL.write(61);
motorR.write(27);
Serial.print(5, DEC);
void setup()
Serial.begin(38400);
pinMode(8, OUTPUT);
motorR.attach(2);
motorL.attach(4);
void loop()
if (Serial.available() > 0)
jarvis = Serial.read();
if (jarvis == 'a')
23
atras();
else if (jarvis == 'b')
frente();
else if (jarvis == 'c')
izquierda();
else if (jarvis == 'd')
derecha();
else if (jarvis == 'g')
detener();
ANEXO DE IMÁGENES
Figura 1.4
Figura 1.5
Figura 1.6
Figura 1.7
Figura 1.8
Figura 1.9 Figura 1.10
Figura 1.11
Figura 1.12
Figura 1.13
24