miércoles, 7 de marzo de 2012

Iniciando DFRobot Rover

DFRobot Rover - Compatible con Arduino es un tanque versátil robot móvil basado en el popular microcontrolador Arduino Duemilanove. El Rover utiliza el popular sistema Tamiya caja de cambios de doble motor y la pista de Tamiya y juego de ruedas.  
El PCB DFRobotShop Rover incorpora una norma Arduino Duemilanove (montaje en superficie ATMega328), L293B controlador de motor (conectado a los pines de 5 a 8), regulador de voltaje y el área de prototipos al tiempo que contribuye a la estructura mecánica del robot.

Características
compatible con Arduino
Sobre la base de montaje cuenta con  ATMega328 y el Puente H L293B
• Incorpora doble puente en H para bi-direccional de control del motor (los pines digitales 5, 6, 7 y 8)
El regulador de voltaje incluido (conectado a la entrada de la batería y conector cilíndrico de 3,5 mm)
Sensor de luz y sensor de temperatura pre-soldada y seleccionable a través de puentes
• Fácil conexión a Bluetooth y DFRobot APC220 módulos inalámbricos
• Zona de creación de prototipos grande para un empate 400 puntos o 170 puntos de amarre paneras soldadura o su "carga" propia
• Los conectores macho I2C para una fácil conexión
"punto de conexión universal" en la parte delantera del robot (ver especificaciones de compatibilidad)
• LED 6x azules alrededor de la junta para el efecto (seleccionable mediante jumper LED_SEL)
• En el sistema de programación a través de ICSP
• LED de 4x para indicar la dirección del motor

Para comenzar se tiene que instalar la IDE de arduino y tener un cable USB

ubuntu
$ sudo apt-get install -y arduino

Fedora
$ sudo yum install -y arduino

Una vez seleccionado tienes que seleccionar el puerto donde tienes conectado DFRover
Tiene que ser algo parecido a USB

Despues seleccionamos el tipo de arduino 
>seleccionas Arduino Duemilanove Atmega328



 Puedes testear los siguientes códigos.
 1. Código ejemplo para testear los sensores de luz y de temperatura

2.Velocidad Maxima Hacia adelante 3.Control mediante las teclas W/A/S/D para poder moverlo tienes que ingresar a monitor serial o mediante putty o cualquier cliente serial.

lunes, 5 de marzo de 2012

Raspberry Pi y FXI Cotton Candy

Raspberry Pi:




Raspberry Pi es una placa computadora (SBC) de bajo coste desarrollada en Reino Unido por la Fundación Raspberry Pi. Desde el 29 de Febrero de 2012, se pueden realizar pedidos en las páginas web de los distribuidores de componentes electrónicos Farnell y RS Components. La fundación planea lanzar dos versiones con un precio entre 25 y $35. Su objetivo es estimular la enseñanza de ciencias de la computación en las escuelas.






Y sus caracteristcas son:
  • Broadcom BCM2835 700MHz ARM1176JZFS processor with FPU and Videocore 4 GPU
  • GPU provides Open GL ES 2.0, hardware-accelerated OpenVG, and 1080p30 H.264 high-profile decode
  • GPU is capable of 1Gpixel/s, 1.5Gtexel/s or 24GFLOPs with texture filtering and DMA infrastructure
  • 256MB RAM
  • Boots from SD card, running the Fedora version of Linux
  • 10/100 BaseT Ethernet socket
  • HDMI socket
  • USB 2.0 socket
  • RCA video socket
  • SD card socket
  • Powered from microUSB socket
  • 3.5mm audio out jack
  • Header footprint for camera connection
  • Size: 85.6 x 53.98 x 17mm
La diferencia con el modelo A (que costara 25 dolares) es que el B tiene 2 puertos USB y uno ethernet.

Sitio Oficial:




 FXI Cotton Candy :



Cotton Candy, el micro ordenador con la forma de una unidad flash, será lanzado muy pronto, tras varios meses de desarrollo y un pequeño rediseño.  un diminuto ordenador capaz de funcionar enchufándolo directamente a cualquier pantalla de televisión, o incluso a otro ordenador, “secuestrando” los periféricos de entrada/salida y arrancando su propio sistema operativo, Android o Ubuntu Linux.
Sus especificaciones técnicas no han cambiado desde la última vez, y sigue incorporando un SoC con CPU ARM Cortex-A9 de doble núcleo a 1.2Ghz y 1GB de memoria RAM, bastante por encima del “ordenador de 25 dólares”. Cotton Candy integra una GPU ARM Mali-400MP como la que se encuentra dentro del smartphone Samsung Galaxy S II, que le otorgará un rendimiento notable, a la altura de tablets de generación actual, que son capaces de mover sin mucho estrés juegos de alto rendimiento. Con slot MicroSD, conectividad inalámbrica Wi-Fi 802.11b/g/n, Bluetooth 2.1 + EDR y un puerto Micro USB convierten a este pequeño dispositivo virtualmente en una “tablet sin pantalla”.
El miniordenador, que ha sufrido una ligera metamorfosis ya está preparado para su comercialización, y FXI Tech lo lanzará este mismo mes, a un precio de US$199. Antes de que consideremos que el precio puede parecer alto, si lo comparamos con el recien lanzado Pi, hay que tener en cuenta varios factores: este es el ordenador más pequeño de su categoría, pudiéndose instalar en cualquier sitio sin que estorbe y con la posibilidad de transportarlo, literalmente, en un bolsillo, algo que otras soluciones de precio similar no permiten. Además, por sus especificaciones técnicas puede competir con los equipos ARM más punteros del mercado, siendo capaz de reproducir contenido en alta definición entre otras virtudes, aunque quizás las soluciones basadas en x86 y de mayor tamaño puedan tener mejores prestaciones, con mayor almacenamiento. Es interesante el cambio de rumbo que está experimentando la industria en los últimos tiempos, miniaturizando los equipos y cambiando el enfoque de su comercialización hacia el entretenimiento como principal atractivo. Quizás en unos años la novedad sea un PC de tamaño completo, como los que hoy utilizamos por norma general.
Sitio Oficial:


miércoles, 29 de febrero de 2012

Internet por medio de CFE y PLC



El Power Line Communications (PLC) o Línea de Comunicación Eléctrica, es una tecnología que permite contar con una conexión de banda ancha mediante el cableado eléctrico. Entre sus ventajas se encuentra su costo, el aprovechamiento de las líneas eléctrica y su alcance en comunidades donde otro tipo de enlaces no son viables.

En México, la Comisión Federal de Electricidad (CFE) tiene planeado ofrecer este servicio, sin embargo, a pesar de sus características y de uso en algunas naciones, PLC encuentra oposición entre los usuarios de diferentes frecuencias de radiocomunicación. La razón: puede causar interferencia en las vías inalámbricas.

“El PLC funciona usando señales de alta frecuencia en la red de transmisión eléctrica. Esto requiere de dispositivos que combinen las señales de los datos con la corriente de baja tensión. Estos dispositivos o módems separan la señal de datos de la corriente normal de electricidad”.

Las Ventajas que ofrecen son

No hay necesidad de cableado adicional, se aprovecha el ya existente. PCL es fácil de usar y sencillo de conectar, basta contar con el módem y conectar nuestro equipo a cualquier enchufe en la casa u oficina.

Es una tecnología más económica comparada con las conexiones ADSL o por cable coaxial. No necesita línea telefónica y la velocidad de transmisión puede ir desde los 2.5 Mbps hasta 45 Mbps, es decir muy por arriba de la conexión vía teléfono.

Lo innovador en México

La introducción de esta tecnología en México fomentaría y aumentaría en un importante porcentaje el uso de internet en nuestro país. Cualquier enchufe de nuestra casa, oficina taller, serían las conexiones ideales para el acceso de banda ancha a precios competitivos. A diferencia de las actuales tecnologías, el PLC podría llegar a las comunidades rurales más apartadas del país.

PLC o también conocido como Broadband Over Power Lines (BPL), está siendo usado en países como España. Endesa e Iberdrola son las compañías quienes lo han hecho hasta el momento con buenos resultados.

En mexico la Comisión Federal de Electricidad ha realizado diferentes pruebas en distintos puntos del país desde el año 2003 


PLC es una opción atractiva ya que de esta forma, todos los enchufes de una oficina se podrán utilizar como nodos. Esto otorga movilidad a sus clientes, sobre todo al cambiar de ubicación, solo tienen que desconectar sus modem PLC y llevarlos a su nueva ubicación.



Además, el equipo utilizado es sencillo y rápido de instalar. Solo es necesario conectar el enchufe a la corriente y conectar el USB o Ethernet (RJ45). 

Descripción de PLC 

La tecnología conocida como PLC (Power Line Communications, de Comunicación en Línea de Energía) es aquella que permite, transmitir señales de voz, datos, internet, telefonía y video, usando como medio de transmisión cableado de electricidad convencional. 

Características 

- Ancho de banda amplio (ancho de banda de 45 Mbps). La siguiente generación de equipos PLC, la velocidad que se alcanzará será de 200 Mbps con lo cual se puede pensar en ofrecer servicios de banda ancha. 

- Aplicaciones de trasmisión de video usando PLC, gracias a su ancho de banda. Además las PLC pueden utilizarse como canal de retorno interactivo para las plataformas de TV digital y TV vía satélite. 

- Aplicación de telefonía IP. En el enchufe eléctrico (toma de alimentación) se tiene voz y datos. 

- Desde el punto de vista del precio, probablemente éste parece que podría costar alrededor de $30 dlls por mes. 

Funcionamiento 

La forma en que opera esta tecnología y se describen cada uno de los elementos involucrados.




Funcionamiento de PLC



Central Eléctrica: En la central eléctrica se lleva a cabo el proceso de generación eléctrica. 

Red de alta tensión: La electricidad se transporta a través de una red de alta tensión hasta los centros de transformación. 

Centro de transformación: En los centros de transformación se realiza el cambio de corriente de alta a baja tensión y se instala un router y un módem que permiten transmitir voz y datos a través de la red eléctrica. 

Red de baja tensión: Voz y datos son transmitidos a través de la red eléctrica de baja tensión hasta los cuartos de control. 

Viviendas, edificios públicos, zonas rurales, empresas: Con un módem PLC pueden navegar en Internet, enviar y recibir datos. 

Panorama en México 

Las empresas Ascom Power Line Communication y Endesa trabajan con CFE para ofrecer conexión a Internet por medio de la conexión de luz; se han efectuado pruebas en Jocotitlán, Edo. de México; Morelia, Michoacán; Monterrey, Nuevo León y Mérida, Yucatán. 

Desventajas 

Posiblemente haga interferencia sobre las transmisiones de radio en onda corta. 

Ventajas 

No hay necesidad de cableado adicional, se aprovecha el ya existente; lo cual la hace más económica que las conexiones ADSL o por cable coaxial. No necesita línea telefónica y la velocidad de transmisión va de 2.5 Mbps a 135 Mbps. 

Una de las dificultades para extenderse esta tecnología en otros países es la existencia de múltiples proveedores de servicio eléctrico; en México solo hay un proveedor; además le da relativa ventaja para influenciar sobre la regulación en caso de haber quejas respecto a interferencia sobre comunicación de radio de onda corta.



lunes, 27 de febrero de 2012

Controlando Arduino con el iPAD



Esta semana se realizo una comunicacion entre el  iPad y la PC, por medio de un protocolo conocido como OSC (Open Sound Control) ,es un protocolo de comunicaciones que permite comunicar instrumentos de música, computadoras y otros dispositivos multimedia (por ejemplo móviles o PDA's equipados con bluetooth) pensado para compartir información musical en tiempo real sobre una red. se podría decir que es el reemplazo del protocolo MIDI que se trata de un protocolo de comunicación serial estándar que permite a los computadores, sintetizadores, secuenciadores , controladores y otros dispositivos musicales electrónicos para comunicarse y compartir información para la generación de sonidos


OSC usa el protocolo de Internet UDP para realizar la comunicación, por esa razón como requisito necesitamos que los dispositivos se encuentran en la misma red, conocer su dirección IP y abrir un puerto de comunicación.

lo que haremos es Crear una plantilla personalizada con el touchOSC editor, la cual usaremos como control para variar la intensidad de un led RGB y poder crear colores, abriremos un enlace de comunicación entre processing y touchOSC, por ultimo mandaremos toda la informacion recibida a una placa arduino conectada por el puerto serie y veremos el resultado obtenido en el led RGB,

1-Instalando lo necesario

Materiales Necesarios
  • Arduino UNO
  • 1 LED RGB
  • 1 iPad o iPod
  • Tienen que estar todos conectados a una misma Red
Para todo esto necesitamos tener instalado 
Lo que hay que tener instalado en el dispositivo Móvil
(Te dejo los Enlaces de donde lo puedes descargar )


Tenemos que instalar la librería de oscOP5 en Processing
Instalando la librería oscP5
Tenemos que instarla en la carpeta donde la tenemos instalado Processing busca una carpeta que se llama modes > java y despues hay descomprimes todo lo de la libreria.en caso de no funcionar aun en la carpeta sketchbook creas un directorio llamado libraries igual descomprimes el contenido

2.-Configurando la App

Tenemos que ingresar la ip de la computadora donde esta conectado elArduino







3.-Creando una plantilla 

Debemos hacer es crear nuestra plantilla para el touchOSC y cargarla al dispositivo, para esto usaremos el touchOSC Editor una herramienta creada por Hexler  usaremos tres controles tipo fader con resolucion de un byte (0-255) para variar la intensidad del led RGB

1.Escoges el dispositivo que utilizaras
2.En Layout Orientation selecciona Horizontal
3.En Page Name Escribe RGB


1. Despues en el fondo negro da un click Izquierdo y te selecciona Fader Horizontal 
2.Debe de aparecer una barra la acomodas de acuerdo al tamaño que quieres despues haces lo mismo para los otros 2 colores 
3.Tienes que Renombrar
-frdRed
-frdGreen
-fdrBlue
4.Haras lo mismo para las 3 barras 
 Value Range From:0  To:255



Hay que sincronizar la plantilla al Ipad sigue las instrucciones 



4.-Codigo de Arduino


Para que en la placa arduino se procese los datos recibidos, para ello se creo un algoritmo que reciba un byte y determine si es un comando, una vez que determina el comando espera otro valor para almacenarlo en la variable correspondiente, para variar la intensidad del led usaremos los pines de PWM de arduino usando la funcion analogOut().

//dato recibido
int inByte = 0;
//Pines de los leds
int led[]={
  6,5,3};
//led a modificar
int  currLed;
//bandera de valor recibido
boolean commandFlag=0;
//led de espera de valor
const int ledCom=13;  

void setup()
{
  //salida led R
  pinMode(led[0], OUTPUT);
  //salida led G
  pinMode(led[1], OUTPUT);
  //salida led B
  pinMode(led[2], OUTPUT);
  //salida led comando
  pinMode(ledCom, OUTPUT); 

  //Inicializa comunicacion serial a 9600bps
  Serial.begin(9600);
  Serial.print("Conectado...");
}

void loop()
{
  //si hay datos en el bufer del puerto
  if (Serial.available() > 0) {
    //leemos valor recibido
    inByte = Serial.read();

    //si un comando espera valor
    if (commandFlag){
      //modificamos la intensidad del led seleccionado
      analogWrite(led[currLed],inByte);
      //reiniciamos bandera y led de comando
      commandFlag=false;
      digitalWrite(ledCom, LOW);
    }
    //Si esparamos un comando
    else
    {
      //Elegimos que led modificar
      //modificamos bandera y led de comando
      switch (inByte){
      case 114://r ascii
        currLed=0;
        digitalWrite(ledCom, HIGH);
        commandFlag=1;
        break;
      case 103://g ascii
        currLed=1;
        digitalWrite(ledCom, HIGH);
        commandFlag=1;
        break;
      case 98://b ascii
        currLed=2;
        digitalWrite(ledCom, HIGH);
        commandFlag=1;
        break;
      }
    }
  }
}

5.-Códigos de Processing



Crearemos una clase Fader que usaremos como control y para visualizar la interaccion con el dispositivo movil, este control sera lo mas parecido al fader y con las mismas propiedades que usamos en nuestra plantilla, la clase final para el Fader queda de la siguiente manera:
Clase Fader


class Fader {

  int val, valMap;
  int px, py;
  final int h=300, w=70;
  color[] col;

  color[] red= {
    color(#DE1D2A), color(#131010), color(#501515)
  };
  color[] green= {
    color(#3B811C), color(#111410), color(#25451A)
  };
  color[] blue= {
    color(#1C2D81), color(#0D0D10), color(#0C1233)
  };  

  Fader(int px, int py, char c) {
    this.px=px;
    this.py=py;

    switch(c) {
    case 'R':
      col=red;
      break;
    case 'G':
      col=green;
      break;
    case 'B':
      col=blue;
      break;
    }
    setValue(0);
  }

  void draw() {
    strokeWeight(4);
    strokeJoin(ROUND);
    stroke(col[0]);
    fill(col[1]);
    rect(px, py, w, h);
    fill(col[2]);
    rect(px, py+(h-valMap), w, valMap);

    if (mousePressed && (mouseX >= px && mouse X <= px+w) && (mouseY >= py && mouseY <= py+h)) {
      setValue((int)map((h-(mouseY-py)), 0, h, 0, 255));
    }
  }

  void setValue(int val) {
    this.val=val;
    valMap=int(map(val, 0, 255, 0, h));
  }

  int getValue() {
    return val;
  }
}
Despues crearemos nuestra plantilla personalizada, para esto haremos uso de vectores con las direcciones de cada uno de nuestros controles, estas direcciones son del url y las definimos cuando creamos nuestra plantilla con el editor. La clase de nuestra plantilla queda asi:
Clase RGBLayout


class RGBLayout {

  //Creamos nuestras direcciones para recibir datos
  //Estos nombres los pusimos al crear la plantilla
  //en el touchOSC editor     /Pagina/Direccion
  String[] Addr= {
    "/RGB/fdrRed",
    "/RGB/fdrGreen",
    "/RGB/fdrBlue",
  };

  //Creamos un vector para guardar los datos recibidos
  //crea tantas variables como direcciones tenga nuestra plantilla
  float[] Data= new float[Addr.length];

  //Por default touOSC usa el typetag "f" como identificador
  String Typetag="f";

  //Con este metodo comprobaremos si la informacion debe ser procesada
  void check(OscMessage theOscMessage) {

    //Para cada direccion en nuestra plantilla
    for (int i = 0; i < Addr.length; i++) {
      //Verfica si la informacion enviada coincide con alguna direccion
      if (theOscMessage.checkAddrPattern(Addr[i])==true) {
        //Comprueba que coincida el idenificador
        if (theOscMessage.checkTypetag(Typetag)) {
          //Guardamos el valor de la direccion en el vector Data
          Data[i] = theOscMessage.get(0).floatValue();
          //Imprime la direccion y el nuevo valor que tomo
          println(Addr[i]+" = "+ Data[i]);
        }
      }
    }
    //En caso de que no coincida ninguna direccion, se ignora la info
  }

  //imprime la informacion de todas nuestras variables
  void printData() {
    println(Data);
  }

  //imprime el nombre de nuestros objetos
  void printAddr() {
    println(Addr);
  }
}
Ahora se tiene que  importar las librerias oscP5 y netP5 para que funcione correctamente, crearemos objetos de las clases definidas anteriormemte y verificaremos los datos recibidos para posterioremente mandarlas al arduino por el puerto serie, 






//importamos librerias necesarias
import oscP5.*;
import netP5.*;
import processing.serial.*; 

OscP5 oscP5;
Serial serial;
RGBLayout layout;

//Creamos tres objetos Fader, uno por color
Fader fdrRed;
Fader fdrGreen;
Fader fdrBlue;

//variables para la intensidad de color
int r, g, b;
//PImage logo;

void setup() {
  size(600, 320);
  smooth();

  //creamos el objeto OSC en el puerto 8000
  oscP5 = new OscP5(this, 8000);
  //creamos la plantilla de touchOSC a usar
  layout= new RGBLayout();
  //intentamos abrir el puerto serial
  try {
    serial = new Serial(this, Serial.list()[0], 9600);
  }
  //en caso de error tendremos una excepcion
  catch(Exception e) {
    println("Error al abrir puerto serial...");
  }
  //muestra el direccionamiento de la plantilla
  layout.printAddr();

  //creamos los faders
  fdrRed=new Fader(10, 10, 'R');//px, py, color
  fdrGreen=new Fader(90, 10, 'G');
  fdrBlue=new Fader(170, 10, 'B');

  //cargamos la marca de agua
  //logo=loadImage("watermark.png");
}

void draw() {
  //Dibujamos los faders
  fdrRed.draw();
  fdrGreen.draw();
  fdrBlue.draw();

  //Guardamos el valor del fader en la variable
  r=fdrRed.getValue();
  g=fdrGreen.getValue();
  b=fdrBlue.getValue();

  //intentamos escribir el PS
  try {
    //comando para color r y su valor
    serial.write(114);
    serial.write(r);
    //comando para color g y su valor
    serial.write(103);
    serial.write(g);
    //comando para color b y su valor
    serial.write(98);
    serial.write(b);
  }
  //en caso de error tendremos una excepcion
  catch(Exception e) {
    println("Error con el puerto serial, no se puede escribir...");
  }

  //Dibujamos cuadro con colores mezclados
  stroke(0);
  fill(color(r, g, b));
  rect(270, 10, 300, 300);

  //image(logo, 450, 240);
}

//Este evento ocurre cada vez que llega informacion desde OCS
//theOSCMessage lleva toda la informacion recibida
void oscEvent(OscMessage theOscMessage) {
  //verificamos si coincide la informacion con nuestra plantilla
  layout.check(theOscMessage);

  //los faders toman el valor enviado
  fdrRed.setValue((int) layout.Data[0]);
  fdrGreen.setValue((int)layout.Data[1]);
  fdrBlue.setValue((int) layout.Data[2]);
}



Primero se carga en el arduino despues procesing y listo :)

6. Demostración