ponencia sobre aplicaciones de la … · ponencia sobre aplicaciones de la robÓtica en las...
TRANSCRIPT
PONENCIA SOBRE APLICACIONES DE LA ROBÓTICA EN LAS CIENCIAS
EXPERIMENTALES
Hace cerca de nueve años que en el Colegio se iniciaron los trabajos, a partir del
seminario para la revisión de los programas académicos de cómputo del Área de
Matemáticas y del Departamento de Opciones Técnicas, sobre cuestiones de Robótica,
con lo que se creó el “Club de Robótica e Informática” (CReI) del CCH.
Al hablar de robótica, generalmente se nos viene a la memoria un humanoide (ente
robotizado con características similares a las de un humano), por las relaciones
comerciales que al respecto se han hecho, pero no lo es del todo así, es cierto que
existe cierta relación, pero no es el único cause que se le da a esta disciplina.
Cuando se iniciaron los trabajos del CReI, se habló de desarrollar aplicaciones para
competencias, sobre todo para el ROBOCUP (Torneo de Robótica a nivel Mundial con
varias categorías) y del Torneo Latinoamericano de Robótica, precediéndolos el Torneo
Mexicano de Robótica, que se lleva a cabo en nuestro país. El objetivo no era fácil,
pues los robots que se requerían para esas competencias, debían cumplir con diseños
muy específicos y no tan simples de lograr, lo que nos llevó a considerar más
necesidades de las que inicialmente habíamos contemplado.
Podríamos pensar que para construir un robot bastara con saber de electrónica, pero
no es así. La robótica es considerada como una disciplina, por la cantidad de
conocimientos que se ven involucrados en su desarrollo, todos ellos de diferentes
ramas de las ciencias. Entonces, se involucran muchas cuestiones más, como
matemáticas, programación, mecánica, neumática, hidráulica, electricidad, materiales,
entre otros temas, inclusive, las que tienen que ver con las lenguas, dependiendo del
alcance.
Con el trabajo que se ha realizado a través de los años al respecto de la robótica en el
Colegio, hemos podido vislumbrar diferentes causes, por ejemplo, en términos de lo ya
mencionado, al principio se pensó en la participación de alumnos y profesores
interesados en cuestiones de programación, matemáticas y física solamente, pero
después nos dimos cuenta que esto no se quedaba ahí. Sobre todo si la intención era
llevar estos trabajos a foros y competencias de alcance nacional e internacional.
Entonces, se tuvo la necesidad de pensar en el idioma en el que se expondrían los
trabajos, que para las competencias y foros en los que participaríamos, sería el inglés.
Todo lo anterior nos llevó a reconsiderar muchas cuestiones, que de manera inicial no
habíamos contemplado, los tiempos, las edades de nuestros alumnos, los
conocimientos con que contaban y los que podrían lograr obtener durante su estancia
en el Colegio, las expectativas proyectadas al interior del Club, los avances
tecnológicos, la situación del país con respecto a otros, etc., lo que hoy nos pone en
una realidad diferente a la inicial, pero más conscientes de lo que podemos hacer,
siendo una de ellas esta propuesta que hoy vengo a compartirles.
EXPERIMENTOS CON ARDUINO PARA PROFESORES
Arduino se creó como un proyecto para estudiantes en el Instituto IVREA, en Ivrea
(Italia). Tomaron la idea de un microcontrolador de BASIC Stamp, que para ese
momento era muy costoso para ellos. En ese tiempo, uno de los fundadores de
Arduino, Massimo Banzi, impartía clases en Ivrea. En la creación de esta propuesta
contribuyeron varios personajes, dentro de los que se incluyen al estudiante
colombiano Hernando Barragán, quien desarrollo la tarjeta electrónica Wiring, su
lenguaje de programación y toda la plataforma de desarrollo. Todo el proceso les llevo
cierto tiempo, pero una vez concluida la plataforma trabajaron en hacerlo más ligero,
más económico y disponible para la comunidad de Open Hardware. El instituto de
donde surgió esta idea cerró sus puertas de manera temporal, y los precursores,
consideraron complicada la continuidad del proyecto, pero el español David Cuartielles,
promovió la idea y se logró una gran proyección, aunque esto no surgió como una idea
comercial, sino como una manera de apoyar al Instituto, pues siendo un proyecto de
Open Hardware, este no podría ser embargado. Entonces, podremos contar a grandes
rasgos lo siguiente:
La plataforma Arduino, es una plataforma diseñada en Italia, nació como
proyecto educativo en el año 2005.
Fue bautizado así por el bar “Bar di Re Arduino”, lugar donde Massimo Banzi se
reunía regularmente. Este bar tomó su nombre del de un antiguo rey europeo del
año 1002.
La idea original no fue “una idea de negocio”, sino una necesidad de mantener el
Instituto de diseño Interactivo IVREA en Italia.
Google se ha interesado por el proyecto y ha colaborado en el Android ADK
(Accesory Development Kit), una placa Arduino capaz de comunicarse
directamente con smart phones Android para obtener las funcionalidades del
teléfono (GPS, acelerómetros, GSM, bases de datos) y viceversa para que el
teléfono controle luces, motores y sensores conectados de Arduino.
300 unidades fueron las primeras que se produjeron y se las vendieron a los
alumnos del Instituto IVRAE, ganando sólo 1 dólar por placa con el fin de que las
probaran.
Uno de los primeros proyecto fue un reloj alarma, el cual no se apagaría hasta
que no te pararas de la cama.
En la actualidad se han desarrollado infinidad de placas basadas en este proyecto
Open Hardware, aun de los propios creadores, siendo una de las más populares la
llamada UNO, teniendo su consecuente de idénticas características, pero usando
tecnología diferente llamado LEONARDO. Otro también muy popular es el MEGA,
siendo de los de mayor tamaño y capacidad, pero también existe el NANO, de tamaño
pequeño pero de capacidades similares a las de un UNO.
Con esta propuesta, Arduino, los integrantes del Club de Robótica e Informática en sus
cursos a alumnos y profesores, de donde he sido el coordinador y ahora el
Departamento de Opciones Técnicas en concreto con el curso de Mecatrónica básica
se ha y está trabajando con la aplicación de esta plataforma en proyectos diversos,
tanto para competencias, como para cuestiones de apoyo a la docencia. En este último
punto es en donde hoy quiero ubicar esta charla. Después de haber trabajado con
Arduino y darme cuenta de lo fácil y versátil que es para el diseño de aplicaciones
diversas, y de conocer el trabajo de algunos de los compañeros del Área de Ciencias
Experimentales, al compartir espacios, foros y la experiencia al ser el responsable de la
Secretaria Técnica del SILADIN de este plantel, además de conocer algunas de las
propuestas de los aparatos con los que se auxilian para la experimentación, como
LESA y VERNIER, es que me propuse compartir con ellos esta otra opción que puede
llegar a tener gran aplicación y que no tendría límites en términos de las posibilidades,
pues es toda una computadora con las vías de crecimiento necesarias para lograr
muchas de las tareas que en esta área se realizan.
Pues bien, entrando en materia, dado el corto tiempo y espacio, comenzare hablando
de los requerimientos para la utilización de esta plataforma, por un lado, una
computadora, sin grandes requerimientos, pues el software es muy ligero y corre bajo
varias plataformas, inclusive es portable en algunas versiones; una placa Arduino, yo
les recomiendo la placa UNO, que en el mercado tiene un costo entre 300 y 400 pesos
y hasta en mercado libre la pueden conseguir, o en steren, con su cable USB; y con
eso podemos comenzar. Dado que es un proyecto Open Source, la información al
respecto está disponible sin ningún problema en su página, y en otras muchas que lo
comparten, basta entrar al portal arduino.cc/es para conseguir todo lo que se necesita y
comenzar a trabajar. Mencioné que se requiere un cable USB, que se usa como medio
de comunicación entre la placa y la computadora, que si hemos puesto atención a cada
ocasión en que conectamos algo a un puerto USB en nuestra computadora con
Windows, nos dice que ha encontrado nuevo hardware y debe instalar los
controladores, así también para el Arduino, por lo que debemos descargar de su página
los drivers, correrlos y después conectar nuestra placa y ya será identificada por la
computadora. Posteriormente, entraremos al compilador de Arduino, que también
bajamos de la dirección mencionada, gratuita, e identificaremos el ambiente de trabajo.
Deberemos decirle al software el tipo de placa con que trabajaremos y en que puerto
está, así comenzaremos por probar nuestro Arduino el cual cuenta con un programa
precargado que hace parpadear un led de manera intermitente. No siendo el objetivo
de esta charla, hablar de cómo programar el Arduino, sino de sus aplicaciones, sólo les
diré que es muy fácil programarlo y que sus programas constan de dos partes, la
primera, setup, que es donde se declaran los recursos, y la segunda, loop, donde se le
dice que debe hacer, esta última tiene una peculiaridad, que es la repetición indefinida
del proceso mientras cuente con energía.
void setup()
{
pinMode(13, OUTPUT);
}
void loop()
{
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
Este es todo el código necesario para que un led conectado al pin número 13 destelle
indefinidamente mientras la palca Arduino cuente con energía, y esto es muy útil,
porque dependiendo del color y el tamaño del led y si se quiere que permanezca
prendido o destellando a cierta frecuencia, nos puede servir como indicador de sucesos
o de requerimientos, o como alarma, o como indicador de estatus, además, el Arduino
cuenta ya con un led en su pin número 13, con el que de entrada comienza a trabajar.
Pero podemos conectarle un led diferente como se muestra en la siguiente imagen.
A este led debemos agregarle una resistencia si es que no lo conectamos al pin 13.
Los programas académicos de las diferentes materias del área de Ciencias
Experimentales requieren de mucha experimentación; sino no se llamarían
experimentales, verdad; y estando en boga el uso de las nuevas tecnologías, es que
me atrevo a presentarles una serie de pequeñas aplicaciones del Arduino orientadas al
apoyo de la exposición de algunos temas o como auxiliares de la experimentación en
algunas prácticas u otras atenciones particulares que le vean de utilidad, como la
propuesta presentada, que bien puede ser usada para ver frecuencia, luminosidad de
los leds, polaridad, resistencia, etc.. A continuación veremos otras propuestas.
INTENCIDAD DE CORRIENTE
Para medir intensidad de corriente y conversión de analógico a digital, contamos con
un experimento muy simple que sólo requiere de un potenciómetro, como lo muestra la
imagen.
Bueno, para entender mejor este ejercicio debo explicar que Arduino cuenta con varios
tipos de entradas, analógicas, digitales y serial. Las analógicas aceptan flujo de
corriente con cierto límite, 40 mA por pin y una configuración de 10 bits, a 5V o
diferente cambiándolo con el pin de VRef, con lo que se puede medir la intensidad y
mostrarla en un rango de 0 a 1023, las digitales también aceptan la misma corriente y
voltaje, pero sólo se expresan como HIGH o LOW, 0 ó 1, pudiendo ser de entrada o de
salida, y por último, las de serial, que soportan varias entradas por el mismo canal,
basta configurar cada dispositivo. En este experimento hacemos circular una corriente
provista por el mismo Arduino y la conducimos a la entrada analógica número 0, con lo
que tenemos una lectura, que dependiendo de la regulación del potenciómetro, nos
dará valores entre 0 y 1024, mostrando con ello la conversión de analógico a digital y la
variación de corriente por medio de un potenciómetro, los datos se despliegan en la
pantalla, el programa es el siguiente:
intpinSensor = 0;
intvalorAnalogico = 0;
voidsetup()
{
pinMode(pinSensor, INPUT);
Serial.begin(9600);
}
voidloop()
{
valorAnalogico = analogRead(pinSensor);
Serial.println(valorAnalogico);
delay(100);
}
Como pueden ver otra vez, es un programa muy simple, en el que se manda a la
pantalla de la computadora el valor leído, pudiéndose almacenar en un archivo Excel y
trabajar con los datos resultantes para muestreo u otras cosas.
INTENCIDAD DE LUZ
Otro experimento más es el que tiene que ver con intensidad lumínica, útil para varios
temas de biología, física y química, que mide la intensidad de luz presente en un
ambiente, por medio de una fotoresistencia, el esquema es igual muy sencillo, como se
muestra a continuación.
El programa es el mismo que se usó para el ejercicio anterior.
GENERANDO ONDAS SONORAS Podemos generar también frecuencias sonoras, para experimentos de acústica, ondas,
etc. y contar con un receptor que mida la frecuencia, o inclusive, generar notas
musicales o alarmas audibles para experimentos en los que se requiera, por poner un
ejemplo, el circuito es:
Y el programa, muy pequeño también. #include "pitches.h"
intmelodia[]={NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3,0,
NOTE_B3, NOTE_C4};
intduracionNotas[] = {4, 8, 8, 4, 4, 4, 4, 4};
void setup()
{
for (intestaNota = 0; estaNota< 8; estaNota++)
{
intduracionNota = 1000/duracionNotas[estaNota];
tone(8, melodia[estaNota], duracionNota);
intpausaNota = duracionNota * 1.30;
delay(pausaNota);
noTone(8);
}
}
void loop()
{
}
SENSOR ULTRASÓNICO
Hay muchas cosas que se pueden implementar con un simple Arduino, que, como sus
diseñadores en algún momento manifestaron, fue creado para que todos lo usaran, de
hecho, para que se divirtieran, haciendo música, arte, entretenimiento, en fin, lo que
más les gustara. En nuestro caso, experimentos, y los que aquí se presentan son muy
pocos comparados con los que se pueden llegar a implementar con esta herramienta.
Veamos otro ejercicio más. El siguiente hace uso de sonido ultrasónico con el que se
puede medir distancia, como lo harían los delfines, los murciélagos, se usa el mismo
principio, enviando un sonido a alta frecuencia, se calcula el tiempo de regreso,
permitiendo saber a qué distancia se encuentra un objeto, este tipo de sensor es muy
práctico para explicar muchos conceptos de física, veamos el circuito.
Básicamente necesitamos alimentar el dispositivo y conectar la señal a recibir en una
entrada digital y listo, el programa que nos apoya en las mediciones es el siguiente,
que nos reporta las distancias en la pantalla.
intultraSoundSignal = 7;
intval = 0;
intultrasoundValue = 0;
inttimecount = 0;
intledPin = 13;
void setup()
{
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop()
{
timecount = 0;
val = 0;
pinMode(ultraSoundSignal, OUTPUT);
digitalWrite(ultraSoundSignal, LOW); // manda un pulso bajo
delayMicroseconds(2); // espera 2 microsegundos
digitalWrite(ultraSoundSignal, HIGH); // manda un pulso alto
delayMicroseconds(5); // espera 5 microsegundos
digitalWrite(ultraSoundSignal, LOW); // lo apaga
pinMode(ultraSoundSignal, INPUT); // Switchea la señal de entrada
val = digitalRead(ultraSoundSignal);//suma el valor de value a val
while(val == LOW)
{ // Repite mientras sea un valor bajo
val = digitalRead(ultraSoundSignal);
}
while(val == HIGH)
{ //Repite mientras sea un valor alto
val = digitalRead(ultraSoundSignal);
timecount = timecount +1; // cuenta el tiempo de los pulsos
}
ultrasoundValue = timecount; // adiciona al valor de tiempo
Serial.print("pulsos = "); // imprime el valor
Serial.println(ultrasoundValue, DEC);
if(timecount> 0)
{
digitalWrite(ledPin, HIGH);
}
delay(100);
}
Y cómo funciona, envía un tren de pulsos a alta frecuencia que rebotan en un objeto y
cuenta el tiempo que tardan en llegar, con lo que calcula la distancia a la que el objeto
se encuentra, con este ejercicio se puede lograr muchas mediciones para muchos
experimentos.
SENSOR DE TEMPERATURA
Medir temperatura es muy útil en varias circunstancias, pero depende de a qué le
queremos medir la temperatura y para qué, es por eso que existen diferentes
dispositivos para este propósito, algunos son de contacto y otros a distancia, con
ciertos rangos de temperatura, tanto bajo cero, como por arriba de cero. A continuación
presentare dos opciones para este propósito, en uno será por contacto, soportando
este sensor muy altas temperaturas, y otro que será a distancia por medio de señal
infrarroja. En el primero usamos un LM35, pudiendo también echar mano de un
termistor, que sigue el mismo principio, y para el infrarrojo, usaremos el típico
MLX94614, siendo los dos muy simples de usar. El de contacto en verdad se comporta
como una resistencia donde dependiendo de la temperatura es su limitante al flujo de
corriente, necesitando ser calibrado. El de sensado infrarrojo, es similar, pero en este
caso la resistencia está a expensas de la intensidad de señal infrarroja que le llega del
cuerpo a medir, la que es interpretada y calculada desde el dispositivo y enviada al
puerto serial del Arduino para su lectura e interpretación, que se me viene a la mente el
caso de ambientes controlados de temperatura, o medición de cuerpos muy calientes.
A continuación se presentan los dos circuitos:
SENSOR DE GASES
Volviendo a las mediciones útiles, en muchas ocasiones tenemos la necesidad de
saber la cantidad de ciertos gases en el medio, como hidrogeno, oxigeno, carbono,
humo, etano, metano, ozono, gas LP, alcohol, etc., para esto existen varios tipos de
sensores que nos apoyan en estas mediciones e igual son de fácil manejo y de fácil
programación, como nos lo muestra la siguiente imagen. Su principio es similar a los
primeros que vimos, contienen elementos internos que se excitan con los gases
mencionados y permiten el paso de la corriente, reportándonos la existencia del gas
para el que están diseñados en la proporción en la que dejan circular la corriente, su
implementación no es muy difícil y se puede dejar trabajando sin gran necesidad de
supervisión, el programa sería el mismo que para el potenciómetro o el sensor de luz.
MOVIMIENTO DE MOTORES
Quizá uno de los más útiles, es éste, para la manipulación de objetos a la hora de
experimentar, ya sea para abrir algo, desplazar algo, hacer oscilar algo, etc., el motor,
siendo también un circuito muy fácil de armar y así su programación es una propuesta
que bien puede ser usada en muchas aplicaciones, aquí se presenta un servomotor.
#include<Servo.h>
Servo myservo;
int pos = 0;
void setup()
{
myservo.attach(9);
}
void loop()
{
for(pos = 0; pos < 180; pos += 1)
{
myservo.write(pos);
delay(15);
}
for(pos = 180; pos>=1; pos-=1)
{
myservo.write(pos);
delay(15);
}
}
Los proyectos puedes unirse para conformar una aplicación más completa. Referencias:
arduino.cc/es
azega.com
botscience.wordpress.com
playground.arduino.cc
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
ESCUELA NACIONAL COLEGIO DE CIENCIAS Y HUMANIDADES
PLANTEL NAUCALPAN
DEPARTAMENTO DE OPCIONES TÉCNICAS
PONENCIA
APLICACIONES DE LA ROBÓTICA EN LAS CIENCIAS EXPERIMENTALES
AURELIANO GUADALUPE MARCOS GERMÁN INFOCAB PB102014 Profesor de Carrera, Titular “B” Definitivo de tiempo completo
MAYO DEL 2014