viernes, 8 de noviembre de 2013

ARDUINO 005: MODULO XBEE   

    Para este ejercicio vamos a utilizar una plataforma de Arduino UNO, un modulo XBEE con un protocolo llamado ZigBee (conjunto de  tecnología de alto nivel de transmisión inalámbrica, de bajo consumo. Su objetivo es la comunicación de dos o varios objetivos de baja tasa de envío de datos).
              Estos módulos tienen un alto potencial de comunicación entre ellos, con lo cual, en sitios cerrados pueden llegar a transmitir hasta 30 metros entre dos objetivos, en sitios exteriores hasta 100 metros y con los módulos Xbee PRO podría llegar hasta 1.5 kilómetros de transmisión.
              Los módulos ZigBee, también llamados mochilas, se deberán de conectar a la placa Xbee Shield y por lo tanto esta conectarse a la de Arduino. El modulo Xbee Shield al conectar en la placa de Arduino, deja algunos puertos fuera de la utilidad, con lo cual, estos puertos pueden ser utilizados por sensores u otro tipo de componente que desee.
              En esta imagen podemos observar como va situado la placa Xbee, encima de la placa Xbee Shield y por lo tanto como van los pines situados y nombrados en cada pin. Otro de los factores fundamentales sera la transmisión de nuestro PC a la placa Arduino. Lo haremos mediante la conexión de USB que tenemos en los dos objetivos. Al transmitir los datos de un objetivo a otro, se necesita que los jumpers, en la imagen mencionados, estuviesen en modo USB, si no estuviesen en este modo no se transmitiría ningún dato propuesto. Al finalizar la transmisión, debemos cambiar los jumpers a modo Xbee para que la transmisión se pueda comenzar y las placas pudiesen comunicarse.

jueves, 20 de junio de 2013

ARDUINO 004: SENSOR DE LUMINOSIDAD

    Para este ejemplo vamos a utilizar un fototransistor, un diodo led y como no nuestro Arduino UNO. Además de estos componentes vamos a necesitar varias resistencias para que el led y el fototransistor puedan funcionar. 
    Lo que pretendemos hacer en este ejemplo es medir la luminosidad ambiental, mediante el fototransistor y reflejar ese efecto en un diodo led. Es decir, cuando el fototransistor detecte que hay poca luz el diodo led emitirá poca luz mientras que cuando el fototransistor detecte mucha luz el diodo led emitirá más luz.  
     La conexión del fototransistor es la siguiente:
 

     Como podemos observar en el gráfico la luz incidente en el transistor hará que aumente o disminuya la corriente en el emisor del transistor con lo que hará que la tensión en la resistencia R cambie. Si esa tensión la medimos mediante un PIN Analógico-Digital del Arduino ya podemos saber si hay mucha luz, tensión en A0 más cerca de 5V, o hay poca luz, tensión en A0 más cerca de 0V. 
     El montaje que vamos hacer en nuestro arduino es el que se representa en la siguiente imagen:





     El programa para controlar nuestro montaje es:

int pinSensor = A0;   //Entrada para el potenciometro
int ledPin = 6; // selecciona el pin para el LED
void setup() 
{
 pinMode(ledPin, OUTPUT);     
}
void loop()
{
int valor_pot = analogRead(A2); //lee el valor del sensor
int valor_luz = int((float(valor_pot) * 255.0) / 1023.0); 
//marca la luminosidad
analogWrite(ledPin, valor_luz); 
//da el valor del temporizador al led
delay(30); // detiene el programa por un tiempo
} 

     Introducimos lo primero, la selección del Pin del Led (int ledPin = 6),así marcaremos la salida para conectarla al Led. A continuación, pondremos void setup() para inicializar o cargar el programa si no aparece, void setup(), marca error y no podremos realizar el ejercicio. Void loop() lo colocamos seguido a void setup(), el apartado donde se realiza la lógica del programa. Dentro del ejercicio, las operaciones serán variadas, por ejemplo int valor_pot = analogRead(A2), con esta operaciones leeremos el valor del fototransistor, cuanto es el valor que obtenga el sensor se lo marcara al led también. Int valor_luz = int((float(valor_pot) * 255.0) / 1023.0), marca la luminosidad, la operación consiste en que el valor de luz sea el valor del sensor. AnalogWrite(ledPin, valor_luz), esta operación da el valor de luz del sensor al led y así sincronizar las dos partes. Delay(30), detiene el tiempo del programa durante un tiempo ajustado por nosotros, el tiempo puede variar a opinión de cada uno.

    Bueno y si ahora os preguntáis para que puede servir este montaje, es que se utiliza más de lo que creemos, y sólo os tenéis que preguntar que hace vuestro smartphone. Si os fijáis bien veréis que la pantalla se ilumina más cuando hay mucha luz y que se ilumina menos cuando hay poco luz. De esta forma podemos ahorrar batería en un móvil.

    Esperamos que os haya parecido interesante este pequeño montaje. Agur hasta la próxima entrada.

Ander Iñigo G1E

 

viernes, 24 de mayo de 2013


Arduino 003: Controlar un LED con un potenciómetro

    Con este programa lograremos encender, apagar y controlar un diodo emisor de luz. Para ello, necesitaremos una placa de Arduino (en este caso usaremos una placa Arduino Uno), un diodo emisor de luz, una resistencia de 220 Ohm y por ultimo un potenciómetro.
Para utilizar el potenciómetro, necesitaremos una entrada analógica y no digital. Y para que la luminosidad del LED pueda variar, la salida debe ser PWM, ya que de no ser así, solo lograríamos encenderlo con 5V y apagarlo con 0V. No conseguiríamos una tensión intermedia.
    El conexionado es el siguiente:
y el programa para que el esquema funcione es el siguiente:

int pinSensor = A0;   //Entrada para el potenciometro
int pinLed = 9;       //Selecionamos pin para el Led
int valorSensor = 0;  //Variable para el valor del sensor

void setup(){
 pinMode(pinLed, OUTPUT);  //Establecemos el pin como salida 
}

void loop(){
 // Leemos el valor del sensor y lo almacenamos:
valorSensor = analogRead(pinSensor);
// Establecemos el valor analogico para la salida PWM
analogWrite(pinLed, valorSensor/4);
//Detenemos el programa durante 30 milisegundos
delay(30);
} 

    En las tres primeras lineas de programación declararemos las variables, dándoles un nombre e indicando el pin al que los conectaremos. La entrada del pot. al ser analógica, será la A0. La salida del LED, corresponde al pin 9, el cual es un PWM. La tensión de salida de este pin oscila entre 5 y 0V.
    En la sección del ”void setup” indicaremos si las variables son de entrada o salida. En este caso, la variable de nuestro LED, será de salida.
   El programa comienza a partir del “void loop”. Comenzaremos leyendo el valor del potenciómetro, como un valor analógico. Después, encenderemos el LED, con el analogRead, con el valor que nos este dando el potenciómetro. De esta forma, conseguiremos controlar la luminosidad del diodo LED, gracias al potenciómetro.

Autor: Jon Fernandez (G1E)

martes, 21 de mayo de 2013

TERCER PREMIO CON ROBOT "CURIOSO"

    Los Alumnos Axier Albín, Jokin Mugika y Aimar Rollan ganan el tercer premio de los DB Sariak en la categoría de proyectos científico tecnológicos con el ROBOT "CURIOSO". Enhorabuena y que disfrutéis el premio.


jueves, 16 de mayo de 2013

ARDUINO 002: SONIDO CONTROLADO POR POTENCIOMETRO


     El Arduino uno nos permite hacer multitud de cosas, tan solo variando un par de variables a la hora de hacer la programación. En este ejercicio, que se le podría denominar generando sonido con un potenciómetro, lo único que necesitaríamos sería el Arduino uno junto con su shield ya que en la shield trae incorporado el buzzer (generador de sonido) y el dicho potenciómetro. La idea de este ejercicio es generar diversos tonos en el buzzer a partir del estado analógico del potenciómetro. Más adelante explicaré como es el funcionamiento del pequeño programa hecho.
    En caso de no tener el shield podemos hacer la siguiente conexión con un potenciómetro y un buzzer: 


    El programa que hace funcionar este esquema es el siguiente:


int buzzer = 9;
int tono = 0;    

void setup() 
{
 pinMode(buzzer,OUTPUT);
 pinMode(tono, INPUT);
}

void loop() 
{            
  int sensor = analogRead(tono); 
  int frecuencia = map(sensor,0,1023,100,5000);
  int duracion = 250;
  tone(buzzer, frecuencia, duracion);
  delay(100);
} 
 
    Primero declaramos las dos variables que usaremos, como lo son el “buzzer” y “tono”. Buzzer lo igualamos a 2 ya que en nuestro Arduino tiene ese pin y Tono lo igualamos a 0 para declarar el pin del potenciómetro. La función principal sería void setup() que se ha de ejecutar cada vez que el Arduino se inicia, aunque no la utilizamos debemos ponerla siempre sino daría un error de programación. void loop() se declara como la función cíclica, que es como si fuese un bucle, estará ahí todo el rato mientras el Arduino este siendo alimentado. int sensor = analogRead(tono) es la variable donde se guardara el valor del potenciómetro.
  int frecuencia = map(sensor,0,1023,100,5000) es la variable donde se escala la frecuencia de 100 a 5000Hz y dependiendo del valor de la frecuencia que tengamos sacara diversos sonidos. int duracion = 250 variable para guardar el tiempo deseado en ms. Por último, la función tone, que tiene 3 posiciones diferentes, la primera para el pin del buzzer, la segunda para la frecuencia deseada en Hz y la tercera para la duración del tono. tone(buzzer, frecuencia, duracion).


Autor: Alex Criado (G1E)

lunes, 13 de mayo de 2013

ROBOT EXPLORADOR "CURIOSO"

    La Robótica está presente en nuestras vidas y cada día se nos permite tener más tiempo para el ocio gracias a que estos pequeños robot nos descargan de tareas cotidianas como pueden ser, limpiar, fregar, recoger el polvo etc. En la industria estos robot llevan funcionando desde hace muchos años, pero ahora se pueden controlar desde smartphones o tablets de una forma fácil e intuitiva. 

      En este caso el proyecto que hemos llevado a cabo es un robot que puede explorar tubos de aire acondicionado u otros conductos en busca de atascos o averías. Este robot está compuesto por sensores de ultrasonidos que nos permiten saber a que distancia se encuentran los obstáculos, además tiene 2 sensores de choque que nos van a indicar cuando nuestro robot se ha chocado y lo mejor de todo es que es que puede ser controlado por cualquier dispositivo Android que tenga bluetooth. 


    Además de los sensores hemos dotado a este pequeño robot de unas luces con diodos de alta luminosidad que permite iluminar el camino a seguir. Todo ello se complementa con una cámara que nos dará imágenes del lugar por donde está nuestro robot.

    El control de este robot, como ya se ha indicado anteriormente se realiza mediante una aplicación de android. Esta aplicación nos va a permitir además de manejar el robot, configurar todos los parámetros. Es una aplicación hecha mediante AppInventor, una plataforma de MIT y que es de libre acceso. La aplicación tiene este aspecto:

     La pantalla de la izquierda es la de entrada y desde ella podemos acceder a las otras dos pulsando en el icono de configuración o pulsando en Conectar nos da acceso a la pantalla de control del robot. El uso de la aplicación es muy sencillo e intuitivo por lo que explicarla carece de interés.  Como ya se ha comentado antes esta aplicación está desarrollada mediante una aplicación del MIT que se programa desde es navegador y que como requisito único es que hay que tener una dirección de Google. El aspecto de la programación es el siguiente:


   Como se puede ver todo es programación gráfica y en forma de puzzle, lo que permite una fácil comprensión del código que se está generando.  

   Para la parte de hardware nos hemos decantado por un PIC y diferentes sensores, uno de ultrasonidos, que nos permite ver a que distancia tenemos los obstáculos, y dos finales de carrera que nos indicarán cuando hemos chocado en caso de tener algún obstáculo que nos se haya detectado mediante los ultrasonidos. Para la comunicación con nuestra placa y el smartphone utilizamos un módulo de Bluetooth JY-MCU-HC-06Es un módulo de muy bajo coste y que nos convierte la señal bluetooth en un puerto serie que es muy fácil de controlar mediante cualquier microcontrolador.

    Por último nos queda ver el esquema electrónico que hemos hecho para nuestra placa. El esquema es el siguiente:


  Pero como lo interesante es que se vea como funcionaba nuestro Robot aquí os ponemos un vídeo en el que explicamos todo.



   Esperamos que os haya resultado interesante.

Autores: Axier Albín
             Jokin Mugika
             Aimar Rollán

JY-MCU-HC-06

lunes, 22 de abril de 2013

ARDUINO 001: Luces del Coche Fantastico

    Este es el primero de la serie de artículos que vamos a publicar sobre Arduino. Como empezar por el Hola Mundo de Ardunio nos parece algo repetitivo ya que podeis encontrar infinidad de ejemplos de como se hace, vamos a complicarlo un poco más y en vez de encender y apagar un led vamos a ver como sería la secuencia de luces del coche fantástico. 
     El conexionado de los led es el que podeis observar en la siguiente imagen:
 
    Como podemos observar en la imagen anterior, el programa esta hecho con 7 luces de led, a cada una de ellas le ponemos una resistencia de 220, para hacer la conexión utilizamos los puertos 2,3,4,5,6,7. Esos puertos van conectados a la resistencia y luego al positivo de los leds y el negativo lo llevamos a GND.

     El programa que va hacer funcionar el montaje es el que ponemos acontinuación:

int timer=200; 
void setup(){
pinMode(2, OUTPUT); 
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
}
void loop() {
digitalWrite(2, HIGH); 
delay(timer);
digitalWrite(2, LOW);
delay(timer);
digitalWrite(3, HIGH);
delay(timer);
digitalWrite(3, LOW);
delay(timer);
digitalWrite(4, HIGH);
delay(timer);
digitalWrite(4, LOW);
delay(timer);
digitalWrite(5, HIGH);
delay(timer);
digitalWrite(5, LOW);
delay(timer);
digitalWrite(6, HIGH);
delay(timer);
digitalWrite(6, LOW);
delay(timer);
digitalWrite(7, HIGH);
delay(timer);
digitalWrite(7, LOW);
delay(timer);
digitalWrite(6, HIGH);
delay(timer);
digitalWrite(6, LOW);
delay(timer);
digitalWrite(5, HIGH);
delay(timer);
digitalWrite(5, LOW);
delay(timer);
digitalWrite(4, HIGH);
delay(timer);
digitalWrite(4, LOW);
delay(timer);
digitalWrite(3, HIGH);
delay(timer);
digitalWrite(3, LOW);
delay(timer);
}
    Como se puede observar la secuencia entera se ha hecho paso a paso. Esto se puede mejorar con bucles pero eso os lo dejamos a vosotros para que podáis mejorar el programa. 

Escrito por: Jose Luis Feliz (G1E)