Archivos de la categoría Hobbies

V911 – Un buen microhelicóptero para iniciarse en el radio control

Muchos de nosotros hemos visto helicópteros de control remoto, y nos hemos preguntado cuan costosos son, y cuán complicado es manejarlos…. La verdad es que son bastante costosos y es demasiado complicado hacerlos volar.  Como de por sí los seres humanos somos bastante necios, hace algún tiempo probé con un HK-450, y creanme, un helicóptero de radio control significa un agujero en el bolsillo 🙂

Así como uno es necio, quedó la espinita del helicóptero, y gracias a mis amigos de www.tmart.com, tuve la oportunidad de probar el famoso Helicóptero V911, que tiene algún tiempo en el mercado, y es el favorito de muchos fanáticos del radiocontrol.

Voy a ir reseñando algunas características del mismo, mientras comparto algunas fotografías. Primero, el helicóptero, que lo pueden encontrar en este enlace http://www.tmart.com/Wltoys-V911-2-4-Channel-2.4GHz-Gyroscope-RC-Helicopter-Black-Red_p215250.html, puede ser adquirido por un precio bastante razonable desde la bodega de EEUU. Por $ 40,52 costo que incluye el envío, pueden adquirirlo directamente por internet. Cabe anotar, que en comercios locales, he visto helicópteros similares, pero el precio de www.tmart.com es imposible de batir.

DSC00877Desde el momento de realizar la compra, hasta el momento de entrega del paquete (el mio llegó directo a mi casa, sin cargo adicional, gracias al buen servicio de correos del ecuador), pasaron exactamente 14 días. La espera no es demasiado larga.

El helicóptero es perfecto para alguien que se está iniciando en el radiocontrol. El paquete (que sirve como caja para transporte…. muy conveniente) incluye todo lo necesario para volar, ya que es un helicóptero RTF (Ready To Fly). Dentro de la caja, nos encontramos con lo siguiente:

  • Helicóptero V911
  • Radiotransmisor digital de 2.4Ghz
  • 2 baterías 1S/150mAh
  • Cargador de baterías para puerto USB
  • Un juego completo de hélices de repuesto (superior y de cola)

DSC00879

DSC00883

Todos estos items vienen debidamente protegidos por una cubierta plástica, para evitar posibles daños durante el viaje. El mio llegó en perfectas condiciones, así que no tengo queja alguna.

El transmisor se siente bastante sólido. A pesar de ser  un poco mas pequeño que un transmisor RC estandard, las palancas son suaves y precisas. Tiene trims digitales, y un selector para el dual rate,permitiendo un vuelo suave o un poco más agresivo, dependiendo de los gustos del piloto.

DSC00881El transmisor contiene también una pequeña pantalla LCD con backlight azul, que nos indica la posición de las palancas, el modo del dual rate, y una animación del rotor del helicóptero, que cambia su velocidad en función de la palanca del acelerador… un detalle interesante.

Algo a tomar en cuenta es que el transmisor es Modo 2, es decir, tiene la palanca de acelerador a la izquierda.

DSC00882

 

Ahora si, lo que nos interesa… el helicóptero como tal. Realmente es una maravilla de la miniaturización.

DSC00883

El helicóptero mide no mas de 22cm de largo y  pesa menos de 50g. En ese pequeño paquete, tenemos 2 motores, 2 microservos, y el circuito principal que contiene el receptor, 2 speed controllers, y un giroscopio para estabilizar la cola.

DSC00886

 

Estos si son microservos!!

DSC00887

 

Rotor de cola ultraliviano, pero efectivo

DSC00888

El cannopy (o cabina) está fabricado en lexan, super liviano y flexible. El cuerpo del helicóptero está fabricado en una mezcla de partes de plástico y fibra de carbono, por eso su escaso peso. Al ser tan liviano, se vuelve super resistente a los golpes y pequeños “accidentes” que se puedan presentar durante su vuelo.

De hecho estoy bastante impresionado con el rendimiento de este microhelicóptero. Había leido excelentes comentarios sobre su desempeño, pero no hay nada como probarlo en carne propia.

Resumiendo, podemos mencionar:

  • Excelente costo, y envío rápido desde www.tmart.com
  • Paquete RFT, incluye todo para volar. Solo se necesitan 6 baterías AA para el transmisor
  • Transmisor de 2.4Ghz, con trims digitales y dual rate
  • Incluye 2 baterías, para extender el tiempo de vuelo. Cada batería dura aproximadamente 5 minutos, y se cargan en 15 minutos.
  • Permite volar en exteriores, con viento moderado
  • Resistente, muy resistente. Excelente para principiantes
  • Mencioné que es super estable y facil de manejar??

Les dejo un videito del vuelo de este excelente microhelicóptero…. fíjense en los golpes jejeje, va una semana a ese ritmo y no tiene un solo rasguño 🙂

Microhelicóptero de 3 canales, con cámara de video integrada.

Hoy les voy a presentar al nuevo miembro de la flota de microhelicópteros RC. Hace algúnos meses ví este Microhelicóptero IR de 3.5 canales, con video on-board en algún bloque de anuncios y me pareció interesante, más que nada porque a pesar de su pequeño tamaño, incluye una cámara de video, que permite grabar su vuelo en una tarjeta Micro SD.

Este item, como todos los que he recibido desde www.dx.com llegó debidamente empacado, para poder soportar el largo viaje desde la China hasta el Ecuador. El tiempo de despacho fué de algo más de 3 semanas, y el único valor adicional al costo del helicóptero que hay que pagar, es el de $5 que se cancela en aduana por la revisión del item, a su arribo al país. Ya que el costo del item incluye el precio del envío, no es mayor costo dicho pago.

Como les comentaba, el paquete llegó debidamente protegido, para no dañar ninguno de los items que contiene en su interior.

DSC00724

DSC00725

En la caja, vienen señaladas algunas características del helicóptero. Algo bastante cómico pero muy usual en los items que vienen desde la China, es la falla en las descripciones. En este caso, tenemos que nuestro helicóptero tiene una cámara de 130 Mega Pixeles de resolución….. algo exagerado jeje.

DSC00726

 

 

Pasando por alto ese pequeño detalle, vamos a revisar el interior del paquete. Internamente, y protegido con una carcasa plástica, se incluye:

  • Helicóptero RC de 3.5 Canales, con cámara de video
  • Transmisor Infrarojo
  • Cable cargador USB
  • Tarjeta de memoria Micro SD de 1GB
  • Lector de tarjetas Micro SD para puerto USB
  • Hélices de repuesto

DSC00728

 

DSC00729

 

 

Ahora si, vamos a lo que nos interesa. El helicóptero como tal, es un poco más grande que el microhelicóptero que revisé hace algunos meses, y por ende más pesado. Éste tiene un peso de 150gr, con la batería interna, y la tarjeta de memoria conectada.

DSC00730

 

El hecho de que sea un poco más grande y pesado, se dá porque en la parte inferior del mismo, tiene la cámara de video. Es una cámara de 130Kpx (graba video en una resolución de 320×240), y la cámara se activa desde un botón en el transmisor.

DSC00731

 

DSC00732

 

La cámara trae incluida una tarjeta micro sd de 1 GB para grabar directamente el video. Esto es un extra agradable ya que nos permite grabar video sin necesidad de comprar ningún item adicional.

DSC00733

Y como mencionamos, se incluye en el paquete un lector de tarjetas, para descargar los videos y revisarlos en el computador.

DSC00735

 

Previo al vuelo, es necesario cargar la batería. Esto lo hacemos conectando el cargador al puerto USB del computador, y el otro extremo del cable lo conectamos al helicóptero. Aproximadamente demora unos 15 minutos en cargar completamente la batería, y estamos listos para volar.

En las pruebas Out of the Box, el helicóptero se comportó bastante mal. De hecho nunca llegó a elevarse más de 30cm del suelo. Esto puede deberse a 2 factores.

  • Es mucho más pesado que otros microhelicópteros del mismo tamaño
  • Estamos a 2500m sobre el nivel del mar.

Este problema, lo podemos ver en el siguiente video. Ojo que para este video, la batería estaba completamente cargada.

Pues como no se elevaba, la opción más simple de resolver fué eliminar peso. Para esto, removí la aleta de cola, y un contrapeso que tenía dentro de la carcasa, para balancear al helicóptero. Con esto, aunque sea poco, se logró bajar 10gr al peso, con esto vuela mucho mejor.

DSC00744

 

 

Ahora que el helicóptero vuela mucho mejor, podemos probar la cámara de video. Ésta, aunque sea de baja resolución, obtiene buenas tomas con poca luz (incluso mejores que la clásica keychain camera), y no es tan sensible a la vibración del helicóptero. Les dejo un video de muestra de esta cámara

Resumiendo….

  • Se lo puede encontrar en www.dx.com y la compra en línea no presenta ningún problema
  • El bajo precio del helicóptero, incluyendo su envío gratis, lo hace una buena compra para un regalo
  • Incluye todo lo necesario para volar y grabar video
  • En la costa debe volar perfecto, pero resulta un poco frustrante que en la altura de Cuenca tenga un mal desempeño
  • Las modificaciones realizadas para que mejore su vuelo son sencillas, pero al que se inicia en el radio control pueden no resultar tan obvias
  • El helicóptero vuela lento y es muy controlable….. quizás demasiado lento para evitar algunos obstáculos
  • El control remoto tiene el control de potencia con regreso al origen automático. Esto hace muy dificil mantener una posición estática en el aire. Además la palanca derecha, tiende a quedarse pegada en la parte superior. Si el helicóptero fuera más sensible, ocasionaría varios choques contra obstáculos
  • Al ser el transmisor infrarojo, como en todos los helicópteros de este tipo, el vuelo en exteriores está bastante limitado.

No es el mejor microhelicóptero que he probado, pero la camarita de video lo convierte en algo novedoso….

 

 

Intel Galileo – La unión de un Arduino y un procesador x86

alileo

Intel ha anunciado su nueva placa de desarrollo, enfocada en hobbistas y entusiastas de la electrónica.

El nombre de esta nueva incursión: Galileo. Las especificaciones son aún escasas, pero podemos mencionar las siguientes características:

  • Procesador Pentium de 400Mhz
  • Puerto Ethernet 100Mbps
  • Puerto USB Host
  • Puerto USB cliente, para la programación
  • Sockets compatibles con los shields de Arduino

Aún no hay información del precio, pero se anuncia la venta para noviembre de este año. Si el precio es inferior a los $40, tenemos un claro competidor de nuestro popular Raspberry Pi.

Mayor información en http://www.intel.com/content/www/us/en/do-it-yourself/galileo-maker-quark-board.html

Review del Multicoptero UFO de 4 canales, 2.4Ghz. Para empezar en el radio control “con bajo presupuesto”

El día de hoy les voy a presentar la nueva nave que se ha sumado a mi flota de micro multicopteros a control remoto. Es un multicóptero UFO Y4, con control de 4 canales, a 2.4Ghz de frecuencia. Este multicoptero lo pueden encontrar en www.tmart.com, a un excelente precio, tomando en cuenta todo lo que incluye.

DSC00513

Este multicóptero viene empacado de tal manera, que llega totalmente protegido del maltrato que pudiera soportar durante el viaje desde la China. La caja no es demasiado grande (para evitar en lo posible costos en aduana), pero tiene suficiente espacio para proteger al multicóptero, al control remoto y a sus accesorios.

Dentro del paquete, se incluyen los siguientes items:

  • Multicoptero UFO Y4
  • Control remoto de 4 canales, programable
  • 2 baterias LiPo de 1S 300mAh
  • Cargador de baterias USB
  • 3 Hélices de repuesto
  • Manual de usuario

Lo único que debemos comprar antes de volar, son 4 baterías AA para el transmisor. Éste funciona sin problemas con baterías alcalinas. Hay que tomar en cuenta, el momento de desempacar el multicóptero, que las baterías, el cargador y los repuestos, se encuentran en una pequeña cajita en la parte trasera del soporte interno de la caja.

DSC00514

 

DSC00516

 

DSC00518

 

Como les comentaba, este multicóptero tiene una configuración Y4, es decir, lleva forma de Y, con 3 ejes de rotores, pero en la parte delantera tiene 2 motores que giran en sentido contrario para mantener la estabilidad.

DSC00683

DSC00685

 

Algo super práctico, especialmente para los principiantes, es que éste multicoptero tiene una armadura protectora que cubre las hélices, motores y electrónica del equipo. Con esto estamos relativamente a salvo de roturas en las hélices por choques contra paredes y obstáculos. La armadura es muy liviana y resistente, lo que contribuye a que la experiencia de vuelo sea muy buena, y para nada frustrante, como sucede con otros tipos de multicópteros.

En la parte inferior, se encuentra el soporte para las baterías, el cual las asegura para que no se caigan durante el vuelo. Además, en la parte inferior, se encuentra toda la lógica de control, receptor y giroscopios que hacen que el UFO se estabilice solo en el aire.

DSC00686

 

DSC00687

 

El transmisor es una versión mas pequeña de lo normal, de un transmisor de RC. Tiene 4 canales, un LCD bastante grande, pero poco útil, y 2 botones que sirven para seleccionar el modo de vuelo (Lo / Hi Rates) y el modo acrobático, donde el multicoptero realiza giros sobre sus ejes al movimiento de los controles. Ojo con este modo!!, puede causar un serio golpe si no se lo realiza en un lugar con el espacio adecuado. Los controles del transmisor son super suaves, el control es super liviano, en parte porque solo necesita 4 baterías AA, y tiene trims digitales, lo cual es un extra para un equipo de este precio.

Después de unos días de prueba de este multicoptero, podemos resumir sus características en lo siguiente:

Pros:

– Buen empaque protector, y disponibilidad de envío desde EEUU o China
– No se ve como un producto barato. Los acabados del multicoptero y del transmisor son excelentes. Las palancas del transmisor son suaves y precisas.
– El transmisor usa solo 4 baterías AA, y adicionalmente tiene un puerto USB que permite cargar al multicóptero (para esto se necesitan baterías recargables en el transmisor)
– El multicóptero es super estable gracias a sus giroscopios y sistemas de control. Lo hace muy facil de volar para principiantes
– En el paquete viene incluido todo, incluso hélices de repuesto
– Excelente precio (USD. $47, incluido el envío desde la china)
– Puede volar en exteriores, con viento moderado

Contras:

– En el sitio web del distribuidor, no existen partes de repuesto listadas. Pero en ebay se puede conseguir facilmente
– La estructura protectora es también la estructura mecánica del multicóptero. Un golpe extremadamente fuerte podría romperlo y destruir la unidad

Que tal vuela se preguntarán? Les dejo un pequeño y accidentado video de las pruebas. Cabe recalcar que despues de unas 2 semanas de vuelos en interiores y exteriores, el multicoptero sigue como nuevo!

 

 

Usando un LCD nokia 5100 con el Stellaris Launchpad

Ha pasado mucho tiempo apagado el pequeño Stellaris Launchpad, y por eso, aprovechando que tuve un poco de tiempo libre el fin de semana, decidí jugar un poco con él.

En esta ocasión, he conectado un LCD Nokia 5100 que tenía por ahí, y he armado un pequeño voltímetro digital.

Primero, hay que descargar la librería lcd_5100 e instalarla dentro de nuestra carpeta de Energia, en la ruta energia\hardware\lm4f\libraries. Esto debemos hacerlo antes de abrir Energia, para que al iniciar la aplicación, se instale la librería para poder ser usada por nuestro Launchpad

Para la conexión del Launchpad con el LCD, vamos a usar los siguientes pines:

  • Backlight: PA6
  • SCLK: PA3
  • MOSI: PA5
  • DC: PA2
  • RST: PB5
  • SCE: PA7

y el código fuente para el Stellaris es el siguiente:

// ejemplo para uso del display nokia 5100
/*
Pines usados en el display

led:   PA6
SCLK:  PA3
MOSI:  PA5
DC:    PA2
RST:   PB5
SCE:   PA7

*/

#include "Energia.h"
#include 
#include "LCD_5110.h"
#include 

// Variables
LCD_5110 myScreen;
boolean	backlight = false;
uint8_t k = 0;

// Add setup code
void setup() {
    myScreen.begin();

    myScreen.setBacklight(backlight);
    myScreen.setFont(0);
    myScreen.text(0, 0, "Launchpad ADC.");
    myScreen.setFont(0);
    myScreen.text(0, 1, "--------------");

    delay(1000);
    myScreen.text(0, 5, "Backlight off");
}

// Add loop code
void loop() {
    int analog=analogRead(A0);
    double valorReal = (analog-1093)/318.79;
    String valor=floatToString(valorReal, 3);
    if (myScreen.getButton()) {
        backlight = (backlight==0);
        myScreen.setFont(0);
        myScreen.text(0, 5, backlight ? "Backlight on " : "Backlight off");
        myScreen.setBacklight(backlight);
    }

    myScreen.setFont(1);

    myScreen.text(0, 2, valor);
    myScreen.setFont(0);
    for (uint8_t i=0; i<14; i++) myScreen.text(i, 4, (i==k) ? "*" : " ");
    k++;
    k %= 14;

    delay(100);
}

String floatToString(double number, uint8_t digits) 
{ 
  String resultString = "";
  if (number < 0.0)
  {
     resultString += "-";
     number = -number;
  }
  double rounding = 0.5;
  for (uint8_t i=0; i<digits; ++i)     rounding /= 10.0;      number += rounding;   unsigned long int_part = (unsigned long)number;   double remainder = number - (double)int_part;   resultString += int_part;   if (digits > 0)
    resultString += "."; 

  while (digits-- > 0)
  {
    remainder *= 10.0;
    int toPrint = int(remainder);
    resultString += toPrint;
    remainder -= toPrint; 
  } 
  return resultString;
}

El ejemplo es bastante sencillo. Lo único adicional que he tomado de un ejemplo en C, es la conversión de Double a String, para mostrar el valor convertido desde el ADC en el LCD.

Y dado que una imágen vale mas que 1000 palabras, les dejo la prueba del funcionamiento.

IMG_20130914_130648

Si desean visualizar el código fuente en Codebender, pueden utilizar este enlace

Arduino GSM Shield: Comunicando tu arduino con el mundo exterior

Si como yo, has estado jugando un poco con tu Arduino, tarde o temprano llega un momento donde es necesario conectarlo al mundo exterior. Lo mas usual es conectarlo mediante Ethernet o WiFi si te dá el presupuesto, para poder enviar información hacia el mundo exterior.

Pero estas no son las únicas opciones de comunicación. En esta ocasión, vamos a revisar el Shield GPRS/GSM EF-Com fabricado por la Elekfreaks, y distribuido por www.dx.com.

Este shield, permite que nuestro arduino opere como un teléfono GSM, obviamente debiendo programar todas las funciones del mismo. Dentro del hardware de este shield, podemos encontrar los siguientes dispositivos:

  • Modem GSM/GPRS basado en el chip SIM900
  • Conectores de entrada y salida de audio (para realizar o recibir llamadas)
  • Reloj RTC, con batería de respaldo
  • Varios pines de GPIO libres controlables  mediante comandos AT
  • Opción para conexión RS232 via hardware o software

Contenido del paquete

Al recibir el paquete, pude notar inicialmente, que el empaque era bastante grande para un shield de Arduino, por lo que definitivamente debía tener varios items en su interior. Dentro del paquete, al abrirlo pude encontrar:

  • Shield GSM / GPRS
  • Antena externa
  • Adaptador de 9V / 1A
  • Display Nokia 5100 con backlight Azul

DSC00285

 

DSC00286

 

DSC00291

 

El display es un extra inesperado. En el sitio web no indica que se incluye este display, pero el Shield tiene un header instalado propiamente para éste. Es un extra que da valor agregado al producto.

Operación

El adaptador de 9V es necesario, porque alimentando directamente al Arduino y al Shield desde el puerto USB, éste no alcanza a proveer la corriente necesaria para su operación. Según el fabricante, el módulo en picos de consumo de corriente, puede superar 1A facilmente.

Algo a tomar muy en cuenta, es la posición del display LCD en el shield. Lastimosamente no existen marcas del Pin 1 del header, y en el Wiki del fabricante, menciona que el LCD con backlight azul (existen 2 versiones, una con backlight azul y otra con backlight blanco) debe ir como se muestra en las fotos, con el display sobre el chip SIM900. Esta posición es incorrecta, ya que el display con backlight azul debe ir montado en la posición exterior del Shield. Esto lo veremos en las imágenes posteriores.

Programación

Como lo mencionabamos, el Shield GPRS funciona como un modem GSM serial, es decir, para su uso, únicamente requerimos los pines Rx, Tx y Gnd del puerto serie de nuestro arduino, o de un puerto serial por Software, en los pines que nosotros definamos

Tomando en cuenta esto, vamos a programar un pequeño Sketch, que ejecutará las siguientes tareas:

  1. Mostrará un mensaje de bienvenida en el LCD Nokia 5100
  2. Esperará un caracter en el puerto serial del Arduino
  3. Mediante un Puerto Serial de Software inicializará la comunicación con el Shield GSM
  4. Enviará un mensaje de texto (SMS) a un número colocado en el software

El código que vamos a usar en nuestro arduino es el siguiente:

#include <"lcd5110_graph.h">
#include <"softwareserial.h">

LCD5110 myGLCD(9,10,11,12,13);

extern uint8_t SmallFont[];

#define rxPin 2
#define txPin 3

SoftwareSerial mySerial(rxPin, txPin);

char *init1="AT+IPR=19200";  // configuracion del modulo para 19200bps
char *init2="AT+CMGF=1";  // configuracion para modo ascii 
unsigned char CR=13; // caracter de retorno de linea
void setup()
{
  myGLCD.InitLCD();
  myGLCD.setFont(SmallFont);

  mySerial.begin(19200);                 // Velocidad de conexion por defecto del Shield  
  Serial.begin(19200);                  // Velocidad del puerto serie
  Serial.println("Conexion Serial Ok.");

  myGLCD.clrScr();
  myGLCD.print("Prueba del", CENTER, 0);
  myGLCD.print("GPRS Shield   ", LEFT, 12);
  myGLCD.print("patolin.com   ", LEFT, 30);
  myGLCD.update();
}

void loop()
{
  // inicializamos el shield

      mySerial.write(init1);
      mySerial.write(CR);
      delay(1000);
      mySerial.write(init2);
      mySerial.write(CR);
      delay(1000);

  myGLCD.clrScr();
  myGLCD.print("SMS", CENTER, 0);
  myGLCD.print("Esperando", LEFT, 12);
  myGLCD.print("caracter al ", LEFT, 24);
  myGLCD.print("RS232", LEFT, 36);
  myGLCD.update();

  // esperamos un caracter cualquiera en el puerto serie

  if (Serial.available()) {
      if (mySerial.available()) Serial.write(mySerial.read());
      // limpiamos el buffer de lectura
      Serial.read();

      // enviamos el sms
      myGLCD.clrScr();
      myGLCD.print("SMS", CENTER, 0);
      myGLCD.print("Enviando....", LEFT, 12);
      myGLCD.update();

      mySerial.write("AT+CMGS=\"099XXXXXXX\""); // reemplace por el numero de celular de destino  
      mySerial.write(CR);
      delay(1000);
      mySerial.write("Prueba de SMS desde Arduino!");  
      mySerial.write(CR);
      delay(1000);
      mySerial.write(26);  // Ctrl+Z para finalizar el mensaje y enviar
      myGLCD.print("enviado!", LEFT, 30);
      myGLCD.update();

  }

}

Bastante sencillo cierto? El código se explica solo. Basta con configurar la comunicación con el Shield a la misma velocidad (19200bps en este caso) y enviar los respectivos comandos. Al ser un modem GRPS, responde a una amplia variedad de comandos AT, que podemos revisarlos en este manual propio del fabricante.

Les dejo un video de la prueba de este código sobre mi Arduino.

Para concluir, las aplicaciones para este Shield son varias! Desde una alarma de seguridad de hogar con notificaciones por SMS, hasta un dispositivo remoto que pueda contestar llamadas y devolver información.

Para concluir, podemos resumir las características de este Shield, en las siguientes:

  • Shield GSM/GPRS Quad-Band 850/900/1800/1900 MHz, con el chip SIM900 GSM
  • Compatible con Arduino Uno / Mega
  • Voltaje de Operación 5Vcc
  • Socket plástico para el Chip GSM ubicado en la parte inferior del Shield
  • Antena externa, en L para mayor facilidad de ubicación
  • Adaptador de alimentación incluido
  • Jacks de Entrada y Salida de Audio, para la generación de llamadas telefónicas via celular
  • Reloj en tiempo real incluido
  • Display LCD Nokia 5100  incluido

Para los entusiastas de la electrónica y del Arduino, puedo comentarles que el precio de este Shield es un poco elevado. El costo es de USD. 57,70 incluido el envío desde China. Si descontamos el valor del LCD y del adaptador, podríamos llegar a los USD. 50,00 que sigue siendo algo elevado, tomando en cuenta el costo del Arduino. Pero si vamos a usar este Shield en una aplicación profesional, Si resulta muchísimo más barato que otras soluciones de comunicación GSM que existen en el mercado.

Les dejo algunos enlaces correspondientes a este producto. Espero les sean de interés

 

Osciloscopio con Stellaris Launchpad – Actualización

Todo el mundo quiere un osciloscopio! (bueno, todos los que trabajan en electrónica jejeje), y para no quitarme el gustito de construir un osciloscopio digital, desde cero, hice algunas pruebas con mi stellaris launchpad, que como comentaba en un post anterior, logré que muestree a casi 1Msps. Modificando un poco el código del stellaris, bajé la velocidad de muestreo a 125Ksps, e hice algunas capturas de la señal PPM que genera mi transmisor de RC basado en Arduino.

Para visualizar la señal armé una pequeña app en Visual Basic 2010, que recibe los datos del puerto serie del stellaris, y los grafica sobre un Chart Control, que resulta que es más facil de usar de lo que han pensado.

Les dejo un par de fotos, y el código fuente del Stellaris y de  la Aplicación de Visual Basic

Captura PPM a 125Ksps, 2048 muestras

dso

 

Captura PPM a 125Ksps, 4096 muestras

dso1

 

 

 

Microhelicopteros! Review de un minihelicóptero de 3.5 canales

La gente de www.tmart.com fué muy amable en enviarme un minihelicóptero de 3.5 canales con control infrarojo, para realizar unas pruebas, así que les comentaré por acá mis experiencias con el mismo.

Hace algún tiempo, llegaron acá al Ecuador una oleada de microhelicópteros, que prometian mucho (facilidad de vuelo y durabilidad), pero la verdad es que no eran ni fáciles de volar, ni eran durables ni baratos. Mucha gente los compró y tuvieron un mal inicio en el hobbie del radio control, ya que estos helicópteros causaban mas frustración que diversión.

Es por esto que le dí una oportunidad a este helicóptero, así que vamos revisandolo.

Primero el empaque. Éste vino empacado de una manera muy profesional, con doble capa de envoltura de burbujas (grandes por fuera, pequeñas por dentro), con lo que se garantiza que el paquete arribará sano y salvo a la puerta de tu casa.

DSC00202

 

 

DSC00203

Por si no abrieron el link del producto (deberían hacerlo ahora), notarán que primero, este tiene un costo bajísimo (USD. $19,99) que incluye en envío gratis, ya sea desde las bodegas de EEUU, o desde la principal en la China. En mi caso el paquete fué enviado desde EEUU, y demoró algo más de 7 días en llegar a Cuenca. Tomen en cuenta que por la característica del artículo, éste debió pasar por aduana, lo que aumentó un pago de $5,00 el momento de la entrega, por gastos aduaneros.

 

Una vez abierto el paquete, lo primero que me gustó fué la calidad de la caja del mismo (está genial para ponerlo sobre una repisa, como adorno). El helicóptero y su control remoto vienen en una caja de acrílico transparente, que lo hace facil y seguro de transportar, por si quieres llevarlo fuera de casa

DSC00204

 

Para sacar al helicóptero de su caja, necesitarás un destornillador estrella pequeño, ya que el mismo tiene atornillada una base a su tren de aterrizaje. Esta medida me parece excelente porque lo asegura a la caja durante el viaje, evitando sorpresas en la entrega. Además, en la parte inferior de la caja, existe un pequeño compartimento (también asegurado con tornillos) que contiene el cable de carga USB, y una hélice trasera de repuesto (muy conveniente, para no truncar nuestros primeros vuelos experimentales)

DSC00206

 

DSC00208

DSC00209

 

Si algo puedo mencionar, es que el control remoto se ve algo “barato” comparado con el resto del paquete. Es de plástico rojo, y las palancas se las siente un poco débiles. El control tiene los mandos para la velocidad de giro de las hélices, rotación en el eje de la hélice, y para moverse adelante y atrás (throtle, rudder, elevator para los que conocen más de RC) y además, contiene una perilla para calibrar el giro del helicóptero, es decir, para mantenerlo estable en el aire. Aparte de los controles, existe un selector de canal, lo que nos da a pensar que podemos volar hasta 3 helicópteros a la vez, sin tener interferencia. El control remoto trabaja con luz infraroja, así que el rango de control es de máximo 5m en línea de vista, lo que es suficiente para volar en interiores. El transmisor usa 6 baterías AA, y además tiene un cable que permite cargar el helicóptero directo desde el control.

DSC00213

DSC00214

 

El helicóptero como tal, no tiene nada que ver con la calidad del control remoto. Éste está fabricado en aluminio y plástico, Excelente calidad de fabricación! Contiene 3 motores, la batería y toda la circuitería de control, incluido in giroscopio, que ayuda a estabilizarlo en el aire, facilitando su control

DSC00216

 

DSC00211

 

DSC00212

 

La batería incluida es de 150mah, lo que nos dá un tiempo de vuelo de unos 5 mins. Usando el cargador USB, demora de 10 a 12 mins en recargarse, lo que me gusta, porque he visto otros que necesitan casi 1 hora para recargar, y dan menos tiempo de vuelo.

Ahora la pregunta del millón: como vuela? Pues les digo que son los $19,99 que mejor pueden invertir en un helicóptero de este tipo. Inicialmente pensé “esto se va a estrellar y romper en el primer despegue” pero no! El helicóptero es super estable, los mandos no tienen una respuesta tan rápida, lo que ayuda en el control para los principiantes, y lo más importante, es muy muy resistente a los golpes. El truco es que, cuando veas tu helicoptero por estrellar, corta la potencia de las helices. Con eso caerá pero te asegurarás de no romper ningún engrane interno.

Resumiendo, y haciendo una comparativa, tenemos que:

A favor:

  • Precio imbatible (por $20 con todo incluido, que puede salir mal)
  • Excelente empaque, quedarías de película regalando uno
  • Listo para volar. Solo agrega baterías al control remoto y carga el helicóptero
  • Muy fácil de volar. El giroscopio hace casi todo el trabajo de estabilización, y el helicóptero como tal viene muy bien balanceado
  • Se carga desde el control remoto o desde el puerto USB
  • Se carga en 10 mins y vuela por 5 mins. Mucha diversión y poca espera
  • Ideal para la casa  u oficina. Saca al geek que hay en tí

 

En contra:

  • Necesitas 6 baterias AA
  • Tiempo de entrega de 1 semana cuando envían desde EEUU, desde China el tiempo puede subir hasta 3 semanas
  • El control remoto infrarojo puede causar interferencias (nunca lo uses cerca del control remoto de la TV)
  • Corto alcance (5m), aunque suficiente para interiores
  • Casi imposible de volar en exteriores. Incluso soplando sobre el se desestabiliza por su escaso peso.

Si desean echarle un ojo y comprarlo, este es el enlace http://www.tmart.com/3.5-Channel-Infrared-R-C-Mini-Helicopter-with-Gyro-Red_p136571.html . La compra es segura y el pago con paypal no presenta ningún problema. El momento del envío ellos envían un código de tracking del paquete, para que todo sea legal.

Y por si les queda la duda, les dejo un video de las pruebas de vuelo (ojo al final con los accidentes). Realmente es algo que puedo recomendar comprar a cualquiera que quiera probar iniciarse en el mundo de los helicópteros. La verdad es que con éstos, hay que empezar desde abajo 🙂

 

 

Reviviendo al Arduino Nano de un Cortocircuito

Tarde o temprano a todos nos pasa…. un cortocircuito por un descuido (en este caso, un potenciómetro mal conectado en el protoboard), y lastimosamente, despues del click del cortocircuito, el Arduino Nano con el que estaba trabajando dejó de funcionar.

Estando conectado al puerto USB, lo que esperaba es que haya muerto mi hub usb,pero en lugar de eso, el Arduino simplemente dejó de recibir +5V desde el cable USB, lo que nos daba una esperanza.

Efectivamente, conectandolo con una alimentación externa, funcionaba correctamente, así que había que buscar una solución a este problema. Resulta que entre la entrada de +Vusb y Vcc, existe un diodo, que se había abierto.

arduino1

La solución, sencilla, hacer puente en el diodo, para alimentar al AVR directamente desde el puerto. Eliminamos la protección, pero lo que necesitamos es que funcione. A la final, este arduino irá alimentado únicamente desde la entrada externa de poder.

Como vemos en la siguiente imágen, hemos hecho un puente en el diodo, y con esto nuestro Arduino volvió a la vida!

arduino2

Stellaris Launchpad y Energia: Programando un Cortex-M3 fácilmente

Luego de tenerlo algún tiempo empolvándose, decidí darle una prueba al Stellaris Launchpad que compré  (en $5.00) cuando lo lanzaron hace más de 6 meses, y la verdad que el precio de $12.00 actual, sigue siendo una ganga, para toda la potencia de este microcontrolador.

StellarisLaunchPad_estore

Entre los periféricos importantes de este micro, podemos comentar:

  • Reloj principal de 80Mhz y 32khz para modo de bajo consumo
  • 256kb de memoria flash
  • 32kb de memoria ram
  • 2kb de memoria EEPROM
  • Controlador uDMA de 32 bits
  • 2 ADC de 12 bits – 1MSPS
  • Comparadores Analógicos
  • 8 puertos UART
  • 4 puertos SPI
  • Puerto USB Host/Device/OTG
  • 12 Timers
  • 16 Salidas PWM
  • Puertos GPIO
  • Debugger integrado en la tarjeta
  • 2 pulsantes, y 1 led RGB para pruebas

stellaris_perifericos

 

Como vemos, este micro, tiene mucha potencia en ese pequeño paquete, pero tanta potencia tiene un precio. Desarrollar para este micro puede convertirse en un dolor de cabeza, ya que es necesario utilizar Code Composer Studio de TI. Este IDE basado en Eclipse, nos permite programar y depurar al stellaris, pero su gran tamaño (la descarga es de 1GB aproximadamente) y lo lento de Eclipse, puede hacernos despechar de cualquier proyecto pequeño que tengamos.

Afortunadamente, existe el Proyecto Energia, que nos permite programar al Stellaris Launchpad con una interfaz de programación similar a la de nuestro conocido Arduino, y nos brinda facilidad de programación, usando toda la potencia del Stellaris.

Al descargar y abrir Energia, vamos a tener una interfaz idéntica a la del IDE de Arduino, salvo por el color rojo de la misma (Rojo Stellaris XD), y podemos compilar algunos de los ejemplos, como el típico Blink.ino incluido dentro del IDE

stellarisblink

Ahora, vamos a hacer algo más útil. Aprovechando los ADC de alta velocidad, vamos a intentar capturar datos con el ADC a la máxima velocidad posible (tomando en cuenta que lso ADC son de 1MSPS).

Por ventaja para nosotros, Energía trae precompiladas todas las librerías Stellarisware,  que nos brindan rutinas de configuración y acceso a todos los periféricos de nuestro micro. Con estas librerías, programamos un sketch que va a hacer 3 cosas:

  • Habilitar el puerto serial para envío y recepción de datos
  • Capturar datos con el ADC, usando interrupciones, iniciando las interrupciones del ADC al recibir un dato desde el puerto serial. Se capturará 2048 datos en ráfaga, sin usar DMA.
  • Generar un timer de 1hz para referencia

Nuestro sketch para realizar esto es el siguiente:

#include "Energia.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "inc/hw_ints.h"
#include "driverlib/debug.h"
#include "driverlib/interrupt.h"
#include "driverlib/sysctl.h"
#include "driverlib/adc.h"
#include "driverlib/timer.h"

int i=0;
int j=1;
int dato0=0;
int adc[1024];
unsigned char dataReady=0;
unsigned long ulADC0Value[1];
unsigned long time1;
unsigned long time2;
unsigned long ttotal;

void setup() {
  Serial.begin(115200);
  pinMode(RED_LED, OUTPUT);
  pinMode(BLUE_LED, OUTPUT);
  pinMode(GREEN_LED, OUTPUT);

  initADC();  
  initTimer(2);

  Serial.println("Inicio OK. ");
  Serial.print(SysCtlClockGet());
  Serial.println(" hz");

}

void loop() {
  unsigned char serialIn;
  int i;
   digitalWrite(GREEN_LED,1); 

   if (Serial.available() > 0) {
     serialIn=Serial.read();
     ADCIntEnable(ADC0_BASE, 3);
   } 

   if (dataReady!=0) {
     Serial.println("Datos ADC");
     for (i=0;i<=1023;i++) {
         Serial.println(adc[i]);
     }

     dataReady=0;
   }
}

 void Timer0IntHandler()
{

  // Clear the timer interrupt
  TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT);
  //leeADC();
  digitalWrite(RED_LED, j&0x01);  
  j++;

}

void ADC0IntHandler() {
   ADCIntClear(ADC0_BASE,3);
   ADCSequenceDataGet(ADC0_BASE, 3, ulADC0Value);
   adc[i]=(int)ulADC0Value[0];  
   i++;
   if (i&0b10000000000) { i=0; ADCIntDisable(ADC0_BASE, 3); dataReady=1;}
   //ADCProcessorTrigger(ADC0_BASE, 3);
   //digitalWrite(RED_LED, i&0x01);
}

void initTimer(unsigned Hz)
{
  SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);
  //TimerConfigure(TIMER0_BASE, TIMER_CFG_32_BIT_PER);
  TimerConfigure(TIMER0_BASE, TIMER_CFG_PERIODIC);
  unsigned long ulPeriod = (SysCtlClockGet() / Hz) / 2;
  TimerLoadSet(TIMER0_BASE, TIMER_A, ulPeriod -1);
  IntEnable(INT_TIMER0A);
  TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT);
  TimerIntRegister(TIMER0_BASE, TIMER_A, Timer0IntHandler);
  TimerEnable(TIMER0_BASE, TIMER_A);

}

void initADC(void) {
	SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
	SysCtlADCSpeedSet(SYSCTL_ADCSPEED_1MSPS);
        //SysCtlADCSpeedSet(SYSCTL_ADCSPEED_500KSPS);
	ADCSequenceDisable(ADC0_BASE, 3);
	//ADCSequenceConfigure(ADC0_BASE, 3, ADC_TRIGGER_PROCESSOR, 0);
        ADCSequenceConfigure(ADC0_BASE, 3, ADC_TRIGGER_ALWAYS, 0);
	ADCSequenceStepConfigure(ADC0_BASE, 3, 0, ADC_CTL_CH0 | ADC_CTL_IE | ADC_CTL_END); //Sequencer 3 Step 0: Samples Channel PE3
	//ADCSequenceStepConfigure(ADC0_BASE, 3, 0, ADC_CTL_TS | ADC_CTL_IE | ADC_CTL_END); //Sequencer 3 Step 0: Samples TS
        ADCIntRegister(ADC0_BASE, 3, ADC0IntHandler);
	ADCSequenceEnable(ADC0_BASE, 3);
        ADCIntEnable(ADC0_BASE, 3);
        //ADCProcessorTrigger(ADC0_BASE, 3);
}

Como vemos en el código, tenemos 2 rutinas de inicialización de periféricos, 2 rutinas de interrupción, y las cásicas setup() y loop() del programa principal. Facil no?

Ahora, debemos tener una consideración adicional. El compilador para este procesador Cortex, necesita un archivo llamado startup.gcc (que se encuentra dentro del IDE Energia) que define las subrutinas de interrupción de cada uno de los periféricos. Es por esto, que debemos modificar el nuestro, para que quede algo así:

/*
 * create some overridable default signal handlers
 */
__attribute__((weak)) void UARTIntHandler(void) {}
__attribute__((weak)) void ToneIntHandler(void) {}
__attribute__((weak)) void I2CIntHandler(void) {}
__attribute__((weak)) extern void Timer0IntHandler(void) {}
__attribute__((weak)) extern void ADC0IntHandler(void) {}

y un poco mas abajo

__attribute__ ((section(".isr_vector")))
void (* const g_pfnVectors[])(void) =
{
   (void *)&_estack,                        // The initial stack pointer, 0x20008000 32K
    ResetISR,                               // The reset handler
    NmiSR,                                  // The NMI handler
    FaultISR,                               // The hard fault handler
    IntDefaultHandler,                      // The MPU fault handler
    IntDefaultHandler,                      // The bus fault handler
    IntDefaultHandler,                      // The usage fault handler
    0,                                      // Reserved
    0,                                      // Reserved
    0,                                      // Reserved
    0,                                      // Reserved
    IntDefaultHandler,                      // SVCall handler
    IntDefaultHandler,                      // Debug monitor handler
    0,                                      // Reserved
    IntDefaultHandler,                      // The PendSV handler
    IntDefaultHandler,                      // The SysTick handler
    GPIOAIntHandler,                        // GPIO Port A
    GPIOBIntHandler,                        // GPIO Port B
    GPIOCIntHandler,                        // GPIO Port C
    GPIODIntHandler,                        // GPIO Port D
    GPIOEIntHandler,                        // GPIO Port E
    UARTIntHandler,                         // UART0 Rx and Tx
    UARTIntHandler,                         // UART1 Rx and Tx
    IntDefaultHandler,                      // SSI0 Rx and Tx
    I2CIntHandler,                          // I2C0 Master and Slave
    IntDefaultHandler,                      // PWM Fault
    IntDefaultHandler,                      // PWM Generator 0
    IntDefaultHandler,                      // PWM Generator 1
    IntDefaultHandler,                      // PWM Generator 2
    IntDefaultHandler,                      // Quadrature Encoder 0
    IntDefaultHandler,                      // ADC Sequence 0
    IntDefaultHandler,                      // ADC Sequence 1
    IntDefaultHandler,                      // ADC Sequence 2
    ADC0IntHandler,                      // ADC Sequence 3
    IntDefaultHandler,                      // Watchdog timer
    Timer0IntHandler,                      // Timer 0 subtimer A

podemos ver que el ADC sequece 3, y el Timer 0 tienen aquí definidas sus subrutinas en este archivo. Si quieren descargar el archivo completo, pueden usar este link.

Y que tal funciona? pues midiendo una señal de referencia de 8khz, vemos que muestrea eficientemente a 950Ksps, que es mucho más alto de los 10Khz que se obtiene con el Arduino… hay mejora cierto?