Páginas

miércoles, 11 de diciembre de 2013

IOIO


 

 

 

 

IOIO

Hoy me salgo de la temática general de Arduino para comentar una nueva placa que ha caido en mis manos, me la recomendó un amigo para que le echara un vistazo.

Y la verdad es que me ha sorprendido gratamente, por su simplicidad y potencia. Se trata de una pequeña placa parecida a un Arduino Nano en tamaño (algo mayor) con un coste aproximado y que nos permite interactuar con nuestro movil/tablet Android.




En mi caso opté por la versión OTG, la cual tiene un conector de corriente y un conector microUSB. Por lo demás es como la versión normal de IOIO.

La programación se hace desde Eclipse instalando un plugin pero para que sea más sencillo existe la opción de bajarse una versión de Eclipse ADT (Android Developer Tools) que te la ofrece directamente Google. La puedes descargar directamente en:

SDK Eclipse ADT

Una vez tienes descargada esta versión de Eclipse tienes que descargar y añadir a tu proyecto Android las librerías específicas del IOIO, las cuales puedes descargar en la sección "Client Software and IOIO Application Firmware Images":

Librerias IOIO

Este dispositivo está diseñado especialmente para trabar con Android aunque puede trabar sin él y dispone de varios pines donde podemos conectar distintos elementos y sensores. Lo que más me ha sorprendido es la facilidad con que se puede conectar con Android pudiendo hacerse por el cable USB o por Bluetooth sin necesidad de hacer nada para hacer la conexión por el canal que esté disponible.

El problema que le veo desde mi punto de vista, ya que soy nuevo con este dispositivo es la poca información que hay y los pocos proyectos disponibles aunque cada día hay más. 

Mi objetivo es conectar el IOIO a un Arduino y a su vez con Android de forma que pueda obtener desde mi móvil toda la información que puedan  recavar estos 2 dispositivos. iré poniendo mis avances, si alguien tiene hecha esta comunicación Android - IOIO puede aportarlo y lo colgamos aquí.

lunes, 20 de mayo de 2013

Arduino Robot


 

  

 

 

 

 

 

 

 

 

 

Arduino Robot

Hace unos días se anunció la presentación del Arduino Robot, un robot para que todos los que tenían ganas de experimentar con estos artilugios y no se atrevían porque no sabían por donde empezar.

No es que este diseño sea el mejor ni el más bonito pero sin duda será un punto de partida común para muchos desarrolladores de manera que habrá mucha información disponible.




Viene dotado con un buen número de sensores y componentes necesarios para navegación, por lo que parece bastante interesante.

Aún so se conoce el precio pero se rumorea que estará al rededor de los 275$ así que nos toca esperar aún. 

Os dejo el enlace a la web de Arduino Arduino Robot 

domingo, 28 de abril de 2013

Proyecto Acuario Interfaces

  

 

 

 

 

Proyecto Acuario Interfaces


A falta de terminar de ajustar el tema de medición del pH mi proyecto de Controlador de mi Acuario lo tengo terminado.

El controlador final me sirve para poder controlar 2 acuarios, con sus respectivos sensores de temperatura y sondas de pH.

El controlador dispone de 1 placa de relays  de 4 canales y otra de 1 canal este último para poder hacer mediciones de pH por 2 sondas distintas.

La información se nos muestra de 2 formas distintas mediante un Display LCD de 4 líneas y por su interface web. Mediante el interface web podemos gestionar varias funciones del controlador:
  • Poner en Hora el reloj interno
  • Programar los temporizadores
  • Encender y apagar los dispositivos controlados por los relays
  • Hacer lecturas de pH y temperatura
  • Consultar el histórico de mediciones realizadas (se graba una medición cada 1h).
El interface web es sencillo de utilizar, por si alguien encuentra el acceso web en Internet por casualidad, la modificación de los horarios está protegido por contraseña.


   
Desde aquí puedo hacer lecturas de pH y temperatura, acceder al historial de mediciones y volver todos los dispositivos controlados por los relays al horario programado. El reloj que se ve en pantalla permite actualizar la hora del reloj interno DS1307 de una forma muy sencilla.






 Le doy a Leer SD y se me muestran los ficheros almacenados en la memoria:
Pincho sobre DATOS.TXT y puedo ver todo el histórico:








A parte de este interface el proyecto cuenta con un interface, sólo informativo, que es el Display LCD de 4 filas. En el se muestran los valores de los sensores así como la fecha y hora actual.


Cada minuto se nos muestra por pantalla los horarios de los dispositivos controlados y se actualizan los valores de los distintos sensores de temperatura y pH.


Esta es la parte con la que podemos interactuar, en la próxima entrada de mi blog iré mostrando las tripas del controlador.




martes, 26 de marzo de 2013

Módulo Shield PH para Arduino



 

  

 

 

 

 

Módulo Shield PH


Debido a todos los problemas que he tenido con el módulo de PH de AtlasScientific he optado por probar otro que he encontrado por Internet.

Se trata de un shield que se ensambla sobre el Arduino y que tiene ya incorporado el conector BNC para colocar directamente la sonda.




El módulo se ha hecho esperar ya que me lo han tenido que enviar 2 veces para que me llegara y a primera vista parece que ha merecido la pena. Su precio es bastante asequible e incorpora como novedad a parte del conector BNC hembra, un sensor de temperatura.

El acabado de este shield no se ve tan profesional pero si parece dar buen rendimiento, una cosa muy interesante es que trae un pequeño botón que junto con el skecth del desarrollador nos permite calibrar muestro sensor. 




Para ello necesitamos disponer de unos buffer de muestra de 4 y 7 de PH. Yo no dispongo de una muestra buffer de 7 pero tengo una de 6.864 lo cual hará que las mediciones que me den varíen un poquito del valor real. Para calibrar esto seguimos las instrucciones del desarrollador. Pero es tan sencillo poco seguir 3 pasos:


  1. Cargamos el sketch que del de ejemplo que nos da el desarrollador SketchPh y conectamos la sonda de PH en el BNC.
  2. Vertemos en un recipiente pequeño parte de la muestra buffer de 7 y sumergimos la sonda. A continuación pulsamos el botón del shield de PH que pone "CALIBRATE" si tenemos abierto el terminal serial pondrá Calibrando.
  3. Metemos la sonda en otro cacharro con agua limpia y agitamos un poco de forma que se limpie la sonda.
  4. Vertemos en un recipiente pequeño parte de la muestra buffer de 4 y sumergimos la sonda. Y volvemos a pulsar el botón del shield de PH que pone "CALIBRATE" si tenemos abierto el terminal serial pondrá Calibrando



Con esto tendremos el Arduino calibrado para que pueda hacer mediciones de PH con el shield. Y es cuando podemos ajustar mediante software el número de mediciones que ha de hacer para que nos saque la media y así darnos medidas menos oscilantes.


void loop()
{

    //delay(100);

    int x;
    int sampleSize = 500;  -  Valor a cambiar 

    float avgMeasuredPH= 0;
    float avgRoomTempMeasuredPH =0;
    float avgTemp = 0;
    float avgPHVolts =0;
    float avgVoltsPerPH =0;



Aquí os dejo el enlace del desarrollador: Reza's Blog donde además podreis comprarlo. 

lunes, 18 de marzo de 2013

Controlar funcionamiento de un Arduino con otro



 

  

 

 

 

 

Controlar funcionamiento de un Arduino con otro.


Para afrontar un proyecto grande con Arduino hay un tema que nos puede preocupar, sobretodo si este proyecto va a controlar algun dispositivo que puede ser crítico. Y es la posibilidad de que nuestro Arduino se nos quede bloqueado.

Esto se puede deber a varios motivos, se quede sin memoría, sobrecalentamiento, etc ... lo que hay que tener presente principalmente es que no se llegue a este estremo teniendo una programación correcta y haciendo un buen número de pruebas y trazas de funcionamiento. 

Si pese a este trabajo vemos que puede ser crítico que se nos pueda quedar bloqueado nuestro Arduino, por ejemplo si controla una bomba de agua, un termostato de la calefacción, etc ... lo que podemos implementar es una especie de alta disponibilidad muy simple. En realidad no es alta disponibilidad pero sí un mecanismo de seguridad de forma que si nuestro Arduino se queda bloqueado es reinicido.

Para llevar a cambo esta implementación existen varias opciones pero la que yo he adoptado es la de poner un Arduino más simple y pequeño de manera que testee en que estado se encuentra nuestro Arduino principal y en caso de que no responda lo reinicie.

Esto que en teoría puede parecer complicado, es muy sencillo y facild e implementar. Para este ejemplo he utilizado 2 Arduino Nano. Los conectamos de la siguiente manera:




Arduino Master
Arduino Esclavo
5V
5V
GND
GND
D5
RST
D2
D2
D10
D10


El mecanismo de testeo es sencicllo, el Arduino Master envía una señal por una salida digital, y espera un tiempo a que el Arduino Esclavo responda por otra salida digital. Este algoritmo es simple, se puede mejorar pidiendole al Arduino Esclavo varíe la señal de respuesta en función de la señal de entrada, eso ya queda a gusto de cada uno.



Uan vez tngamos los 2 Arduinos convenientemente conectados, cargamos en cada uno de ellos los sketch que les correspondan:


// Monitorización Arduinos ***MASTER***     
        
// Conectamos los Arduino entre si:        
// GND   -> GND        
// 5V    -> 5V        
// D5    -> RST
// D2    -> D2
// D10   -> D10
// Podemos utilizar otras salidas digitales distintas        
// http://arubia45.blogspot.com.es/       

// Constates, definición de las entradas/salidas
const int myReset = 5;
const int myRead  = 2;
const int myWrite = 10;

// Tiempo de Espera de la Respuesta
const int Valor_Espera = 100;

void setup() {                
   pinMode(myReset, OUTPUT);   
   pinMode(myRead, INPUT);
   pinMode(myWrite, OUTPUT);
   Serial.begin(9600);  
   digitalWrite(myWrite, LOW);
   digitalWrite(myReset, HIGH);
}

// Función de Reset
void resetea() {
   Serial.println("Enviar Reset");
   digitalWrite(myReset, LOW);  
   digitalWrite(myReset, HIGH);
}

int i;
void loop() {
  delay(1000);     
  digitalWrite(myWrite, HIGH);
  Serial.print ("Esperando respuesta");
  for (i=1; i < Valor_Espera; i++) {
    Serial.print(".");
    delay(100);
    if (digitalRead(myRead)== HIGH) {
      Serial.println("Recibido");
      break;
    }
  }
  Serial.println(i);
  if (i== Valor_Espera)
    resetea();
  else
    digitalWrite(myWrite, LOW);
}



// Monitorización Arduinos ***ESCLAVO***     
        
// Conectamos los Arduino entre si:        
// GND   -> GND        
// 5V    -> 5V        
// RST   -> D5
// D2    -> D2
// D10   -> D10
// Podemos utilizar otras salidas digitales distintas        
// http://arubia45.blogspot.com.es/       

// Constates, definición de las entradas/salidas
const int myRead  = 10;
const int myWrite = 2;

void setup() {                
   pinMode(myRead, INPUT);
   pinMode(myWrite, OUTPUT);
   Serial.begin(9600);  
   digitalWrite(myWrite, LOW);
}

void loop() {
  delay(100);     
  if (digitalRead(myRead)== HIGH) {
    delay (200);
    Serial.println ("Enviando respuesta");
    digitalWrite(myWrite, HIGH);
    delay(200);
    digitalWrite(myWrite, LOW);
  }
  else
    Serial.println ("No recibiendo");
 

Hay que tener en cuenta que hemos conectado las tierras GND y la alimentación 5V por lo que sólo habrá que alimentar a uno de ellos por USB para que funcione o bien utilizar otro tipo de alimentación externa pero siempre común.

Ejemplo Master 

Ejemplo Esclavo 

lunes, 4 de marzo de 2013

Proyecto Acuario Presentación

  

 

 

 

 

Proyecto Acuario Presentación


Hoy os voy a presentar mi proyecto más complejo y que hace unos pocos días puse en funcionamiento, a falta de la resolución de un problema con el sensor de PH.

Consiste en el Gestor de Acuario, en muchas páginas hay muchos diseños diferentes, yo empecé viendo distintos de ellos pero al final decidí empezar de cero yo mismo.

Lo que perseguia en un principio es controlar el PH, la temperatura y los horarios de las luces de mi acuario. Al final el resultado ha sido más complejo.

Voy a ir relatando poco a  poco mis progresos integrando los distintos componentes, muchos de ellos ya los he presentado en este blog. En un  principio partimos de los siguientes componentes mínimos:

- Un Arduino Mega (Empecé con un Arduino Nano pero se me quedó insuficiente por el tema de la memoría).

- Una pantalla LCD 20x04 I2C
- Un componente Reloj DS1307  I2C
- Dos sensores de temperatura DS18S20 resistentes al agua (con cable)
- Un sensor de PH, un conector BNC y una sonda PH BNC. 
- Una placa de Relay 5V de 4 canales.
- Un shield ethernet basado en el chip W5100 con lector microSD
- Una sonda de nivel de líquido.
- Una fuente de alimentación externa al Arduino.

Todos estos componentes son independientes para su funcionamiento por lo que muchos de ellos son opcionales y se puede ampliar el Gestor con otros distintos.

En principio el interface para interactuar con el Gestor iba a ser el LCD pero al final vi mucho más útil utilizar una conexión ethernet y mediante una web poder trabajar.

El problema que ha retrasado la puesta en funcionamiento el Gestor ha sido el sensor de PH ya que en los primeros modelos estaba utilizando el  de Atlas Scientific pero debido a su alto costo y su poca fiabilidad me estoy planteando utilizar un shield nuevo con muy buena pinta y más económico.