Comunicacion con un smartphone usando el magnetometro


Una forma barata y sencilla de comunicación entre un microcontrolador (por ejemplo, Arduinoo Netduino +) y un dispositivo Android es sorprendentemente difícil de lograr siendo el medio más práctico para lograrlo es utilizar un módulo Bluetooth o WiFi que aumente significativamente el costo de un proyecto (del orden de $ 30 – $ 60).

En este post veremos  un pequeño hack que permite comunicaciones de ancho de banda muy bajo en una dirección y prácticamente  sin costo alguno. No es práctico para la mayoría de las aplicaciones, pero  la idea era suficientemente interesante para explorarla 

Se puede utiliza el magnetómetro  de cualquier dispositivo para realizar una comunicación inalámbrica. El truco reside en crear una pequeña bobina a modo de antena y variar el campo magnético de la brújula del teléfono: de esta forma mediante esas pequeñas variaciones, podemos enviar datos al teléfono de una forma muy sencilla (la conexión de datos no es rápida ya que tan sólo permite un refresco de unos 40Hz pero es interesante ver cómo funciona).

Paraa probar el montaje necesitará lo siguiente:

  • Un teléfono o dispositivo Android que cuente con un magnetómetro (brújula electrónica). A dia de hoy no se conoce e ningún dispositivo sin uno.
  • Un Arduino
  • Aproximadamente 1 metro de alambre de cobre esmaltado (alambre del imán), aunque cualquier alambre aislado fino hará.
  • La aplicacion android ‘ Tricorder ‘ (disponible gratuitamente en la tienda de aplicaciones de Android)
  • Resistencia de 120 ohmios
  • Un diodo (opcional)

Haga una bobina envolviendo el 1 metro de hilo magnético alrededor de algo cilíndrico (por ejemplo, una pila  AAA) con un diámetro de aproximadamente 1 cm. Usted debe obtener alrededor de 30 vueltas de 1 metro. El diámetro o el número de vueltas no es importante mientras estén en bien erolladas para lo cual puede envolver  un hilo ligero alrededor de la bobina para ayudar a mantener su forma.

 

Conecte ahora a bobina como se ilustra en el esquema anterior. La resistencia de 120 ohmios limita el consumo de corriente a aproximadamente 40mA, que es el máximo permitido

El propósito del diodo es proteger el Arduino de un golpe de disparo de EMF cuando el pasador 13 está bajo. Esto se conoce como un diodo de retorno . Con sólo 30 vueltas y un núcleo de aire, es probable que salga sin usarlo,pero es una buena práctica incluirlo.

Ahora toca localizar el magnetómetro delterminal pues su ubicación variará de un dispositivo a otro. Aquí es donde el tricorder sera muy útil pues  la aplicación Tricorder  mostrara el campo magnético.

Para el HTC Desire la señal es más fuerte en la parte inferior . A la izquierda de la pantalla LCD es donde se encuentra el magnetómetro  pero esto es probable que varíe de un dispositivo a otro.

Ahora  cargue este skretch en su placa  Arduino antes de conectar la bobina.

  Unesdoc.unesco.org unesdoc.unesco.org
  * Generar una onda cuadrada de 1 Hz en el pin 13
  * /
 Void setup () {
   PinMode (13, OUTPUT);
 }

 Void loop () {
     DigitalWrite (13,1);
     Retardo (500);
     DigitalWrite (13,0);
     Retardo (500);
 }

Cuando la bobina está desconectada, debería ver el LED del Arduino parpadeando.

Ahora conecte la bobina. El LED debe dejar de parpadear en este punto porque la bobina pone en cortocircuito el LED ,lo cual  es lo  esperado.

Inicie la aplicación Tricorder y cambie al modo MAG e inicie la exploración.

Escanee metódicamente la bobina a través de la superficie del teléfono Android hasta que empiece a ver una fuerte onda cuadrada:donde vea la amplitud de este pico de señales es donde se encuentra el magnetómetro.

Debería ver una onda cuadrada similar si coloca la bobina en la misma ubicación en la superficie inferior del dispositivo. Utilice un poco de cinta para mantenerlo colocado allí.

Ahora tenemos una forma de detectar  en Android ,por lo que la tentación  es conectar la bobina al Arduino UART y comenzar a enviar  datos a 9600bps , pero desafortunadamente esto no va a suceder porque estamos limitados por la tasa de muestreo del magnetómetro disponible para nosotros por el sistema operativo Android.

Aquí está un histograma de time-between-samples de un HTC Desire ejecutando Froyo (Anrdoi 2.2) a una velocidad de muestreo máxima:

Podemos ver aquí que casi todas las muestras vienen en entre 18ms y 25ms. Hay algunos  picos qeu van todo el camino hasta 45ms pero  son tan pocos que podemos ignorarlos. Esto significa que estamos limitados a un máximo de una tasa de muestreo de 40 Hz. Si manejamos la bobina con una línea de E / S digital que inmediatamente tapa nuestro ancho de banda máximo a 40bps.

Este otro sketch para  Arduino energiza la bobina con una onda cuadrada de inicio a 500Hz y disminuye a aproximadamente 1Hz durante unos segundos.

  Int i;
 Int d = 1;
 Void setup () {
   PinMode (13, OUTPUT);
 }

 Void loop () {
   Para (i = 1; i <500; i + = d) {
    
     // Aumenta el incremento a medida que disminuye la frecuencia
     D = (i ^ {6}) + 1;
   
     DigitalWrite (13,1);
     Retraso (i);
     DigitalWrite (13,0);
     Retraso (i);
   }
 }


Aquí están los datos del magnetómetro:


Como se esperaba, no se detectan altas frecuencias (a la izquierda). Parece que sólo obtener buena recogida cuando la frecuencia baja a alrededor de 6Hz!

Para la codificación utilizamos NRZ (no retorno a cero) similar a la utilizada en RS232 con un período de bit de 140ms (aproximadamente 7 bps). El límite inferior UART de Arduino es de 300bps, así que no podemos usarlo para generar la señal.

Del mismo modo, en el terminal Android vamosa tener que decodificar en el software también.

#define BIT_DELAY 140

int i;
char *text = "Hello World! ";

void setup() {
  pinMode(13,OUTPUT);
}

void loop() {
 
  char *s;
  s = text;
  while (*s != 0) {
    transmitByte(*s++);
  }
  
  delay (BIT_DELAY*10); 
}
/**
 * Bit bang a byte
 */
void transmitByte (byte c) {
  
  // Start bit
  digitalWrite (13,1);
  delay(BIT_DELAY);
  
  // Data bits
  for (i = 0; i < 8; i++) {
      digitalWrite (13, ( (c&0x80)!=0 ? 1 : 0) );
      delay(BIT_DELAY);
      c <<= 1;
  }
  
  // Stop bit
  digitalWrite (13, 0);
  delay(BIT_DELAY);
}

 

Aquí vemos el ejemplo  en acción:

Nota :la aplicación Tricorder no esa disponible temporalmente en Google Play ,pero en su lugar hay algunas apps similares como  Magentic Filed measure

Via    jdesbonnet

Cómo crear y gestionar mas de una cuenta de g-mail


Gmail,  es un servicio de correo electrónico con posibilidades POP3 e IMAP, que es semi-gratuito(puesto que también tiene una versión empresarial de pago)  proporcionado como todos sabemos por Google. Este servicio aunque parezca que lleva toda la vida con nosotros en realidad  es  bastante «reciente  puesto que inicio su andadura  como beta a  partir del 15 de abril de 2004   hasta que en el 7 de julio de 2009, junto con Google Calendar, Google Docs, Hangouts   dejaron su calidad de Beta y pasaron a ser considerados productos terminados.

En noviembre de 2012, Gmail logró superar a Outlook (el servicio de correo electrónico más utilizado hasta esa fecha) en cuanto a número de usuarios registrados a nivel global sin duda propiciado por el  gran éxito del sistema operativo Android, llegando en mayo de 2014 a superar las mil millones de descargas en dispositivos Android.

Algunas de las innovaciones que incluía   g-mail desde las versiones previas:

  • Personalización de la bandeja de entrada :se puede vestir la bandeja de entrada al gusto habiendo miles de temas para elegir que además se pueden cambiarlo cuando se desee.
  • Centralización de Gmail  permitiendo utilizar una sola dirección de correo para todo: mensajes personales, compras, vida social, pagos, búsqueda de trabajo, etc.
  • Bloquea de spam
  • Ordenación de  los mensajes en su sitio  para no ver la bandeja de entrada colapsada.
  • Multidispositivo :se puede consultar el correo se esté donde se esté con las aplicaciones Gmail para Android, iPhone y iPad recibiendo  notificaciones en tiempo real para que no perder los correos importantes.
  • Posibilidad de chatear, llamar por teléfono y hacer videollamadas.
  • etc

Aunque no lo parezca ,  no hay ningún problema para tener varias cuentas de Gmail para uso  personal , tanto es así que en efecto se puede tener  todas la cuentas de g-mail  que se necesiten.

Si no sabe como hacerlo , a continuación describimos  los pasos :

En primer  haga  click en el siguiente link para poder crear otra cuenta: https://accounts.google.com/SignUp?service=mail&continue=http%3A%2F%2Fmail.google.com%2Fmail%2F

gmail.png

Como vemos la información obligatoria que se nos solicita  :

  • Nombre
  • Apellidos
  • Contraseña( solo admite letras o números)
  • Fecha de nacimiento
  • otra cuenta de correo( puede ser distinta de gmail)
  • Teléfono

Cumplimentados todos los pasos , tendrá que darle a botón del siguiente paso.

A continuación nos saldrán las condiciones de uso:

captura

Si estamos de acuerdo, pasaremos ACEPTO y  a continuación ya nos mostrara la bandeja clásica  de entrada , con únicamente el correo asociado a esa cuenta

Si tenemos mas de una cuenta de Gmail , para poder ver  todas las cuentas asociadas desde el mismo interfaz ,pinchamos el rueda dentada , opción «Configuración«

Pulsaremos «Cuentas en importación»

confi

Ya solo nos queda pulsar en «Añadir otra dirección de correo»

Tras cumplimentar la dirección enviara un correo con un link para comprobar

otra-direccion

Ahora en la caja introduciremos  el código de conformación que recibiremos en la otra cuenta de gmail

verifica

Una vez que lo introduzcamos  ambas direcciones de correo de Gmail  se podrán consultar usando una única credencial  y por supuesto accediendo al correo de ambas cuentas.

Puede que en principio no pueda parecernos tan interesantes pero seguro con el tiempo aprendemos a sacar rentabilidad a esta magnifica oportunidad que  nos ofrecen