Escolar Documentos
Profissional Documentos
Cultura Documentos
Resumen Este proyecto está basado en la necesidad de un sistema de transporte más eficiente y seguro; siendo capaz
de evitar los errores humanos, a través de sensores, placas Arduino, motores y una codificación estructurada y exitosa.
Se trata de utilizar dos Arduino, el máster, que trabaja en conjunto con los sensores, recopila la información que
obtienen los sensores para enviársela al Arduino slave, el cual está a cargo de los motores del automóvil para realizar
la acción que requiera, dependiendo de la información que recolecte.
Palabras claves Circuito, comunicación serial, robot, robótica, sensor, sistema, tecnología.
Abstract This project is based on the need for a system more efficient and safe transport, being able to avoid human
error, through sensors, Arduino boards, motors and a structured and successful coding. It is using two Arduino, the
master, which works in conjunction with sensors, collects the information obtained sensors to send to Arduino slave,
which is in charge of the engines to perform the action required, depending on the information collected.
deben superar ciertos obstáculos, tales como señales en la carretera y debidamente a sus
peatones, ciclistas o calles en reparación. especificaciones.
Con propuestas como estas, los automóviles • Utilizar electricidad como medio de energía
autónomos dejan de ser ciencia-ficción y pronto para el movimiento del automóvil.
serán una realidad. • Lograr que el prototipo logre evitar posibles
accidentes.
2.3 Restricciones y limitaciones
• El prototipo es capaz de moverse. 3. Materiales de trabajo
• Es capaz de evitar obstáculos.
• Analiza colores y actúa dependiendo del 3.1 Software
color para semáforos (rojo para parar, verde Arduino Programming Languange/Arduino
para avanzar y amarillo para desacelerar), en Development Environment: Arduino es una
señales de tráfico se asigna un color para las plataforma electrónica de código abierto basada
distintas señales. en el lenguaje Arduino Programing Language.
• Se mantiene en el carril que está excepto que Este lenguaje, a pesar de estar basado en
se quiera cambiar de carril. lenguaje Wiring, es muy similar a C, por lo
tanto no es mucho lo que hay que aprender si ya
2.4 Objetivos se tiene noción de C.
El entorno de programación es el Arduino
2.4.1 Objetivo general Development Environment, la cual está basada
Diseñar y construir un prototipo robótico en Processing.
de un automóvil autónomo para transporte
personal y económico. 3.2 Hardware
112
2.4.2 Objetivos específicos 3.2.1 Arduino UNO
• Aplicar los fundamentos del área de lenguajes El Arduino UNO es una tarjeta controladora
formales, autómatas y compiladores en el desarrollada en el 2005 en Italia, por un grupo
área de ingeniería automotriz. de estudiantes del Instituto IVREA. Es muy
• Aplicar conocimientos de robótica para la utilizado en el área de robótica para controlar
creación del automóvil. motores servo, también para instrumentos de
• Diseñar el prototipo robótico de un automóvil medición y similares ya que es fácil agregarle y
autónomo para transporte personal y controlar sensores.
económico. El microcontrolador más utilizado en los
• Codificar el segmento de código para el Arduino es el ATmega328.
prototipo robótico del automóvil autónomo El Arduino UNO posee todo lo que se necesita
para transporte personal y económico. para manejar el controlador, simplemente se
• Crear el diagrama del prototipo robótico conecta a un computador por medio del cable
de un automóvil autónomo para transporte USB o se puede alimentar utilizando una batería
personal y económico. o un adaptador AC-DC. Si se conecta por USB,
• Identificar los elementos que se requieren la alimentación externa no es necesaria.
para que el prototipo robótico de un
automóvil autónomo analice diferentes tipos 3.2.2 Sensor de detección de color TCS3200
de señales de luces y colores, y que actúe Es un sensor de frecuencia de luz de color
dependiendo del tipo de señal, creando programable, detecta colores e incluye cuatro
un automóvil seguro y auto manejable, LEDs blancos. El sensor TCS3200 puede
que pueda reaccionar ante las distintas detectar una cantidad casi ilimitada de colores
3.2.4 MotorShield
Es una placa que permite controlar las
direcciones y la velocidad del motor al usar un
Arduino. Figura 1. Diseño funcional de la aplicación.
Para usar correctamente esta placa, hay que
hacer uso de los pines incorporados a esta. Esta Adicionalmente el prototipo analiza el color
placa permite también darle poder al motor que se le coloque en la parte frontal.
hasta de 12v. Dependiendo del color que capte, reacciona
de diferentes maneras.
3.2.5 LEDs de colores Por ejemplo, con rojo, con verde avanza y con
Fotoceldas de colores que emiten luz. azul cambiará de velocidad (rápido a despacio
o viceversa), y con los sensores de proximidad,
3.2.6 Resistencias el que se encontraba al frente activaba a los dos
Dispositivo que hace oposición o resistencia de los lados cuando encontraba un obstáculo 113
al paso de una corriente eléctrica. para planear y realizar un giro hacia donde tenía
espacio y de esta manera hacerlo.
3.2.7 HC-SR04
Es un sensor de rango ultrasónico que brinda 4.2 Esquema conceptual del sistema
medidas de objetos cercanos sin contacto. El En la figura 2 se presenta el esquema
sensor consta de un transmisor, un receptor y conceptual del sistema desarrollado.
un controlador.
poder movilizar el Arduino y sus componentes, digitalWrite(8, LOW); // Quita el freno del canal B
todos los sensores que se van a utilizar, y un analogWrite(11, 255); // Arranca el motor del canal B a
motorshield para adjuntar al Arduino para toda velocidad
controlar los motores del Motor Smart Robot
Car Chassis Kit. Más adelante se trabajó con un sensor de
proximidad por separado, probando que todo
esté correcto antes de integrarlo al Arduino con el
motor. El sensor de proximidad emite un pulso de
sonido de alta frecuencia y cronometra el tiempo
en que éste llega al objeto, rebota y vuelve al
sensor, y con esto logramos hacer que el automóvil
robótico evite chocarse contra objetos.
conectados los motores). (Master Writer / Slave haciéndolo más independiente y seguro
Receiver, s.f.) en curvas u otros obstáculos que puedan
En los Arduinos UNO el SDA está en el presentarse en los lados.
pin analógico 4, mientras que el SCL está en El sensor del frente utiliza los pines 4 y 5
el pin analógico 5. Estos pines también deben para trigger y echo (emite el impulso, recibe
estar conectados a la resistencia pull-up (los el impulso) respectivamente, el sensor de
Arduinos más nuevos tienen esta función la izquierda usa los pines 2 y 3, y el de la
incluida de fábrica). derecha el 6 y el 7.
El Arduino maestro siempre iniciará la
comunicación en él mismo y el Arduino Sensores de Proximidad Primera Prueba
esclavo con el cual desea comunicarse. void loop() {
Direcciones deben asignarse a los Arduino para // declaración de variables
identificarlos. long durac_frente, durac_izq, durac_der,
der, izq, frente;
5.1 Comunicación Arduino Master-Slave digitalWrite(trigger_frente, LOW); // se
Primera Prueba declaran las salidas y entradas del sensor
Ejemplo utilizado para probar la delayMicroseconds(2);
comunicación entre Arduinos. digitalWrite(trigger_frente, HIGH);
//Slave //Master delayMicroseconds(5);
#include <Wire.h> #include <Wire.h> digitalWrite(trigger_frente, LOW);
void setup() void setup() durac_frente = pulseIn(echo_frente,
{ { HIGH);
frente = durac_frente/29/2;
119
Wire.begin(5); Serial.begin(9600);
Wire.onReceive(receiveEvent); Wire.begin(); Serial.print("frente:");
pinMode(13,OUTPUT); }
Serial.println(frente);
digitalWrite(13,LOW); void loop()
digitalWrite(trigger_izq, LOW);
} {
delayMicroseconds(2);
void receiveEvent(int howMany) while(Serial.available())
{ {
digitalWrite(trigger_esq, HIGH);
while(Wire.available()) char c = Serial.read();
delayMicroseconds(5);
{ if(c == 'H') digitalWrite(trigger_izq, LOW);
char c = Wire.read(); { durac_izq = pulseIn(echo_izq, HIGH);
if(c == 'H') Wire.beginTransmission(5); izq = durac_izq/29/2;
{ Wire.write('H'); Serial.print("izquierda:");
digitalWrite(13,HIGH); Wire.endTransmission(); Serial.println(izq);
}
} digitalWrite(trigger_der, LOW);
else if(c == 'L')
else if(c == 'L')
{ delayMicroseconds(2);
{ Wire.beginTransmission(5);
digitalWrite(13,LOW); digitalWrite(trigger_der, HIGH);
Wire.write('L');
} delayMicroseconds(5);
} Wire.endTransmission();
}}}
digitalWrite(trigger_der, LOW);
}
durac_dir = pulseIn(echo_der, HIGH);
Antes de armar el automóvil robótico con der = durac_der/29/2;
todos los dispositivos, se implementan todas Serial.print("Derecha:");
las partes por separado, se agregarán dos Serial.println(der);
sensores de proximidad más y se hará que delay(500);
los tres trabajen en conjunto, uno al frente }
y los otros dos a cada lado del automóvil,
Por problemas de obtención de colores del Por ejemplo, si el maestro detectó el color
ColorPal, no era muy preciso, no diferenciaba rojo a través del sensor de color, mandará la
los colores mucho, cambiamos a un sensor lectura al Arduino esclavo y este hará que los
de color TS3200, más confiable con leds motores se paren, y si lee verde, lo manda y
integrados para su calibración. los motores arrancarán otra vez.
El TSC3200 es un convertidor de luz a Se creó un código prueba para comprobar
frecuencia programable, puede filtrar los datos el manejo de todos los sensores en un solo
RGB de la fuente de luz y convertirlo en una Arduino para comprobar que todo esté
onda cuadrada on frecuencia directamente correcto y en funcionamiento antes de formar
proporcional a la intensidad de luz (irradiación) la comunicación con otro Arduino.
(Sensor de Color TCS3200, s.f.). En las figuras 9 y 10 a continuación se
GND es la tierra del circuito, VDD es para presentan imágenes de la evolución del
administrar el voltaje necesario, OUT es el prototipo desde la primera versión y fase 2,
pin para la frecuencia de salida del sensor, con sus diferentes vistas.
S0 y S1 son los pines para la frecuencia de
escala de entrada, permite leer colores desde
diferentes distancias, y S2 y S3 son los que, en
conjunto, determinan el color (Programmable
Color Light-to-Frequency Converter, 2011).
Se colocará el sensor mirando hacia el
suelo desde el automóvil, con lo cual S0 y
S1 no son necesarios, solamente se trabajará
con S2 y S3 para detectar el color que se está
120 presentando.
121
REFERENCIAS
[1] Samaniego González, E. (2011). La Robótica con
Arduino. In E. Samaniego González, Ingeniería de
Sistemas Robóticos: Aplicaciones sobre Arduinos (pág.
14). Panamá, Panamá, Panamá: L&J Publicaciones.
122 Recuperado el 18 de Septiember de 2014.
[8] Arduino. (s.f.). Recuperado el 18 de Septiembre de [24] Programmable Color Light-to-Frequency Converter.
2014, de Arduino Uno: http://arduino.cc/en/Main/ (2011). Recuperado el 18 de Febrero de 2015, de http://
ArduinoBoardUno www.mouser.com/catalog/specsheets/TCS3200-E11.pdf
[9] Arduino. (2015). Recuperado el 10 de Julio de [25] Samaniego González, E. (2011). La Robótica con
2015, de Wikipedia: https://es.wikipedia.org/wiki/ Arduino. En E. Samaniego González, Ingeniería de
Arduino#Lenguaje_de_programaci.C3.B3n_Arduino Sistemas Robóticos: Aplicaciones sobre Arduinos (pág.
14). Panamá, Panamá, Panamá: L&J Publicaciones.
[10] Arduino Motor Shield. (s.f.). Recuperado el 18 de Recuperado el 18 de September de 2014.
Septiembre de 2014, de Arduino: http://arduino.cc/en/
Main/ArduinoMotorShieldR3 [26] Sensor de Color TCS3200. (s.f.). Recuperado el 10 de
Julio de 2015, de blog.patagoniatecnology.com: http://
[11] Automóvil sin conductor de Google. (2015). Recuperado saber.patagoniatecnology.com/sensor-de-color-tcs230-
el 10 de Julio de 2015, de Wikipedia: https://es.wikipedia. arduino-argentina-ptec-elecfreaks/
org/wiki/Autom%C3%B3vil_sin_conductor_de_Google
[27] TCS3200, TCS3210 PROGRAMMABLE COLOR
[12] Características Técnicas del Arduino UNO. (s.f.). LIGHT-TO-FREQUENCY CONVERTER. (Agosto de
Recuperado el 10 de Julio de 2015, de http://www3. 2011). Recuperado el Febrero de 2015, de TAOS.
gobiernodecanarias.org/medusa/ecoblog/ralvgon/
files/2013/05/Caracter%C3%ADsticas-Arduino.pdf [28] Using an RGB LED to Detect Colours. (s.f.). Recuperado
el 18 de Septiembre de 2014, de Instructables: http://
[13] Definición de Robótica. (s.f.). Recuperado el 5 de Mayo www.instructables.com/id/Using-an-RGB-LED-to-
de 2015, de Definición.De: http://definicion.de/robotica/) Detect-Colours/?ALLSTEPS
[14] Fernández, A. (2 de Junio de 2014). A bordo del coche que [29] Vehículo Autónomo. (2015). Recuperado el 10 de Julio
conduce solo de Volvo. Obtenido de Autopista.es: http:// de 2015, de Wikipedia: https://es.wikipedia.org/wiki/
www.autopista.es/reportajes/articulo/volvo-conduccion- Veh%C3%ADculo_aut%C3%B3nomo
autonoma-drive-me-100746