Protocolo I2C y Arduino

El protocolo I2C, define las reglas de como podemos conectar diferentes dispositivos entre si, desarrollado por Philips en la década de los 80/90, convirtiéndose en la actualidad como un estándar. I2C crea un bus de comunicación entre los diferentes dispositivos en serie, esto nos permite conectar hasta 1000 dispositivos uno detrás de otro. La comunicación siempre se realizara entre dos dispositivos, uno actuara de maestro, este es el que trasmitirá la señal para sincronizar la transferencia de datos, y el otro de esclavo. El que hace de maestro, no tiene por que hacer esta función siempre, puede ir pasándose de uno a otro, aunque no todos los periféricos tienen esta funcionalidad, están diseñados para ser siempre esclavos.

Para identificar que periférico a enviado la información, cada uno de ellos tiene una dirección única, igual que una red de ordenadores donde cada ordenador tiene sus propia dirección.

El bus I2C consta de 3 lineas, SDA ( datos), SCL (reloj) y GND (masa)

  • SDA: Es la linea por donde circulan los datos, formateada de la siguiente forma:
    | start | A7 A6 A5 A4 A3 A2 A1 R/W | ACK | … DATA … | ACK | stop | idle |
  • SCL: Por esta linea va la señal para sincronizar las transferencias de datos.
  • GND o masa: Se utiliza como referencia de voltaje para el calculo de las otras lineas.

I2C y Arduino

Arduino cuenta la posibilidad de poder manejar comunicaciones I2C. Según el modelo de Arduino que tengamos, los pines de SDA y SCL, varían, En el caso del Arduino UNO los pines son: para SDA es el pin A4, y el SCL es el pin A5, para el LEONARD estos vienen marcados como tales, y en caso de MEGA el pin para el SDA es el pin digital 20 y para SCL es el pin digital 21.

[singlepic id=31 w=480 h=480 float=center]

Para el manejo de comunicaciones I2C en Arduino debemos importar la librería “Wire.h” ha nuestro programa. Esta librería esta incluida con las básicas que trae el programa de Arduino.

 Ejemplo con dos Arduinos

Ejemplo de como podemos unir dos Arduinos a través de una comunicación I2C. Uno de los Arduinos sera el maestro y el otro el esclavo.

Esquema de conexionado

[singlepic id=32 w=480 h=480 float=center]

Código fuente para el Arduino maestro:

#include <Wire.h>

void setup()
{
  Wire.begin();                // Iniciamos la comunicacin I2C, en el maestro la direccion no es obligatoria
  Serial.begin(9600);          // Iniciamos la comunicacion por el puerto serie para mostrar los datos

}

void loop()
{
  Wire.requestFrom(1, 12);       // Manda una peticion al escaldo numero 2 de 6 bytes

  while(Wire.available())       // Miestras tengamos datos en el buffer seguimos leyendo
  {
    char Datos = Wire.read();       // Leemos un byte y lo pasamos a una variable de tipo char
    Serial.print(Datos);            // Lo mostramos en el puerto serie
  }

  delay(60000);                  // Esperamos 1 minuto para volver a pedir informacin al esclavo
}

Código para el Arduino que hace las funciones de esclavo

#include <Wire.h>

void setup()
{
  Wire.begin(1);                // Nos añadimos al bus como esclavo, con la direccion 1
  Wire.onRequest(requestEvent); // Registro de eventos
}

void loop()
{
  delay(100);                    // retraso de 100 milisegundos
}

// Funcion que se ejecuta cuando recibe una peticion desde el maestro

void requestEvent()
{
  Wire.write("Hola maestro");   // Responde a la peticion del maestro de enviarle 12 bytes
}

Detectar correo phishing

[singlepic id=30 w=320 h=320 float=right]Hoy me ha llegado un correo phising, como muchos otros que me llegan al cabo del día, de que mi cuenta bancaria se había bloqueado, y tenia que volver ha introducir mis datos. No les suelo hacer ni caso, pero este me llamo la atención. El español era bueno, normalmente suele parecerse a las traducciones que hace google, o en español sudamericano, pero este no, esta bien redacto, alguien que domine mejor la gramática, puede decir que no, pero para mi, de todo lo que he visto, estaba bien. Y estaba dirigido a mi, con mi nombre completo, nombre y apellidos, cosa  muy rara. Normalmente no suelen traer ese tipo de información. Si no fuera, por que no tengo cuenta en ese banco, hasta podría haber hasta picado, 🙂 🙂 :-).

A todos estos correos, les hago una comprobación muy rápida, para saber de donde vienen. Todos los correos traen un enlace, el que tenemos que pinchar para acceder a la pagina donde tenemos que introducir nuestros datos. Si ponemos el cursor encima de el, sin pinchar en el, el programa de correo nos mostrara la url donde vamos a acceder. Como es lógico, no va ha ser la del banco.

Imagen del correo que me ha llegado, mostrando la dirección donde supuestamente esta la pagina del banco.

[singlepic id=29 w=480 h=480 float=center]

El correoa nos dice que accederemos a “http://bbva.es/verificacion/handler.jsp” pero realmente donde accederemos es a “****://miraclemoving.net/bbva.esp/bbva.php***” ( no acceder a la pagina puede ser que nos inyecte algún tipo de malware simplemente por acceder, no vayamos de listos). Todas las direcciones que utilizan siempre tienen alguna referencia al banco, en este caso “bbva.esp” y “bbva.php”. Pero donde nos tenemos que fijar es el dominio principal, es decir la primera palabra que hay a la izquierda del .com, .org, .es, etc. y comprobar si es nuestro banco o no, va a ser siempre que no, los banco no utilizan ninguna de estas comunicaciones para solicitar esos datos. Hay otros, que en vez de tener las referencias al banco a la derecha, las tienen a la izquierda, tipo: “banco.no.se.que.mas.decir.dominio.com”. hay hacer caso solo a la primera palabra después del .com

Otra comprobación que se puede hacer también, es mirar desde que servidor de correo a sido enviado. En thunderbird, podemos ir al botón de “Otras acciones” que se encuentra encima del mensaje, en la zona donde están los botones de responder, reenviar, etc. Y en este, elegiremos la opción “ver código fuente”. Se nos abrirá una ventana con el correo completo, con todo los campos, y demás parafernalia de las que esta compuesto un e-mail. Pero de todo eso, solo tenemos que fijarnos en el campo que pone “Received:”. Hay esta el nombre y la dirección IP del servidor de correo desde donde se ha enviado el correo. En este caso, no voy ha poner la dirección, resulta que es un servidor español, y para mas,  de un bufete de abogados. Que seguro que, en vez de revisar su servidor, me ponen una denuncia.

Esta comprobación nos llevara un segundo, y nos evitara muchos problemas. Utilicemos la cabeza, y pensemos que, en Internet, están las mismas personas que hay en el mundo real, y si en la vida real tomamos precauciones, en Internet hay que hacer lo mismo.