Primeros pasos en IoT con Raspberry Pi


La Raspberry Pi es una  plataforma muy popular para la creación de prototipos, lo que hacen que sea  también sea una  plataformas interesante para el Internet de las Cosas (IOT) gracias a su potencia  y bajo coste.  Pero la construcción de un dispositivo IoT no  es simplemente crear una aplicación ya que  realmente se necesita  una gran cantidad de infraestructura de apoyo a la  solución de la IoT.

MyDevices es una empresa de orientación al IoT  que  desarrolla plataformas de  IoT  creando  soluciones de aplicaciones que simplifican el mundo conectado,  siendo  la primera en crear una solución basada en arrastrar y soltar del mundo IoT llamada Cayenne.

Resumidamente algunas  características clave de esta novedosa  plataforma son las siguientes:

  •  Una aplicación móvil para configurar, el monitor y los dispositivos de control y sensores desde cualquier lugar.
  • Fácil instalación que conecta rápidamente los dispositivos, sensores, actuadores, y las extensiones en cuestión de minutos.
  • Motor de reglas para desencadenar acciones a través de dispositivos.
  • Panel personalizable con widgets de visualización de arrastrar y soltar.
  • Programación de las luces, motores y actuadores
  •  Control de GPIO que se pueden configurar desde una aplicación móvil o en el salpicadero.
  • Acceso remoto instantáneo desde el teléfono o la computadora.
  • Para construir un proyecto de la IO a partir de cero se ha logrado el objetivo de proporcionar  un Proyecto Generador de IO que reduce el tiempo de desarrollo de horas en lugar de meses.

 

Como veremos , hablamos de un constructor de sitio web fácil de usar, pero para proyectos de IOT, así que veamos  los pasos para crear un proyecto de IoT con esta potente herramienta usando  su Raspberry Pi

Paso1

En primer lugar , si no  tiene instalado Raspbian en su Raspberry Pi,  tendrá que crearse una nueva imagen  con esa distribución .

Para instalar Raspbian vaya a esta url . Verá que hay  dos versiones:

  • RASPBIAN JESSIE :Imagen de escritorio completo basado en Debian Jessie
    Versión: mayo de 2016
    Fecha de publicación: 27/05/2016
    Versión de kernel: 4.4
  • RASPBIAN JESSIE LITE:versión  mínima de la imagen basada en Debian Jessie
    Versión: mayo de 2016
    Fecha de publicación: 27/05/2016
    Versión de kernel: 4.4

Obviamente si la SD es suficiente grande , lo interesante es descargar la primera  en lugar de la versión mínima

Una vez decidida,  descargue la imagen correspondiente  en su ordenador y siga los siguientes pasos:

  • Inserte la tarjeta SD en el lector de tarjetas SD  de su ordenador comprobando cual es la letra de unidad asignada. Se puede ver fácilmente la letra de la unidad, tal como G :, mirando en la columna izquierda del Explorador de Windows.
  • Puede utilizar la ranura para tarjetas SD, si usted tiene uno, o un adaptador SD barato en un puerto USB.
  • Descargar la utilidad Win32DiskImager desde la página del proyecto en SourceForge como un archivo zip; puede ejecutar esto desde una unidad USB.
  • Extraer el ejecutable desde el archivo zip y ejecutar la utilidad Win32DiskImager; puede que tenga que ejecutar esto como administrador. Haga clic derecho en el archivo y seleccione Ejecutar como administrador.
  • Seleccione el archivo de imagen que ha extraído anteriormente de Raspbian.
  • Seleccione la letra de la unidad de la tarjeta SD en la caja del dispositivo. Tenga cuidado de seleccionar la unidad correcta; si usted consigue el incorrecto puede destruir los datos en el disco duro de su ordenador! Si está utilizando una ranura para tarjetas SD en su ordenador y no puede ver la unidad en la ventana Win32DiskImager, intente utilizar un adaptador SD externa.
  • Haga clic en Escribir y esperar a que la escritura se complete.
  • Salir del administrador de archivos  y expulsar la tarjeta SD.
  • Ya puede insertar la SD en su Raspberry Pi en el adaptador de micro-sd , conectar un monitor por el hdmi , conectar un teclado y ratón en los  conectores USB, conectar la  con un cable ethernet  al router  conectividad a Internet y finalmente conectar la alimentación  para comprobar que la Raspeberry arranca con la nueva imagen

 

Paso 2:

Para comenzar la configuración de su Raspberry   ,lo primero es crear una cuenta gratuita en cayenne-mydevices.com que servirá tanto para entrar en la consola web como en la aplicación movil.

Para ello, vaya a la siguiente url  e introduzca simplemente su nombre ,dirección de correo y una clave de acceso  que  utilizara para validarse.

paso1.png

 

 

Paso 2

Una vez registrado , solamente tendrá que elegir la plataforma  para avanzar en el asistente. Obviamente   seleccionamos  en nuestro caso   Raspberry Pi.

paso2.png

Paso 3

Para  avanzar  en el asistente deberemos  tener instalado   Raspbian en nuestra Raspberry Pi que instalamos en el paso 1  .

Esta versión trae pre-instalado con un montón de software para la educación,  programación y uso general contando con  Python, Scratch, Sonic Pi, Java

Es interesante destacar  que Raspbian  se puede instalar con NOOBS o descargando  la imagen   siguiendo la  guía de instalación explicada en el paso 1.

 

 

 

paso3

 

 

paso 4

paso4

 

Ahora lo siguiente es instalar la aplicación móvil   , que esta disponible tanto para IOS como Android.

En caso de Android este es el enlace para su descarga en Google Play

Es muy interesante destacar que  desde la aplicación para el  smartphone  se puede automáticamente  localizar e instalar el software  myDevices Cayenne en su Raspberry Pi, para lo cual ambos ( smarphone y Raspberry Pi )  han de estar conectados a la misma red,por ejemplo la  Raspberry Pi al router con un cable ethernet  y su samartphone a la wifi de su hogar ( no funcionara si esta conectada por 3G o 4G)

Una vez instalada la app , cuando hayamos introducido nuestras credenciales , si esta la Raspberry en la misma red  y no tiene instalado el agente instalara automáticamente este   como podemos ver en el siguiente video

Hay otra opción de instalar  myDevices Cayenne en su Raspberry  Pi, usando el  Terminal en su  Pi o bien pr SSH.

Ejecute tan sólo los dos siguientes comandos ::

wget https://cayenne.mydevices.com/dl/rpi_f0p65dl4fs.sh
sudo bash rpi_f0p65dl4fs.sh -v

 

 

!Ya esta listo! Ya sólo tiene que empezar a conectar dispositivos y sensores a sus raspberry Pi por medio del conector  GPIO  y  por supuesto  también añadirlos en la consola de Cayenne  ,  y con esto ya podrá ver el hw  que añada  en tiempo real tanto en el interfaz web como en su smartphone.

Por supuesto podrá ver el historial , programar eventos , etc, pero toda esa configuración la reservamos para un nuevo post

 

Por ultimo mencionar que estan  ofreciendo 50 dólares a través de PayPal a cualquier usuario para cada proyecto que se suaba a  Cayyene con el objetivo de mostrar que muchos, muchos usuarios vean a Cayyenne como uan aplicación práctica.

Todos los  lectores de este sitio son bienvenidos a entrar, !Ademas  se puede enviar varios proyectos  por cada participante!

Puede consultar  mas detalles de esta oportunidad en la siguinte url: http://community.mydevices.com/t/submit-your-cayenne-projects-50-just-for-participating/1158

Anuncios

Manejo de un robot con node.js


Node.js es un entorno en tiempo de ejecución multiplataforma de código abierto  para  servidor , aunque como vamos a ver,  se puede usar para otros propósitos . Fue creado con el enfoque de ser útil en la creación de programas de red altamente escalables, como por ejemplo, servidores web. 

Es un lenguaje de programación ECMAScript, asíncrono, con I/O de datos en una arquitectura orientada a eventos y basado en el motor V8 de Goog asi que desde este punto de vista Node.js es similar en su propósito a Twisted o Tornado de Python, Perl Object Environment de Perl, libevent o libev de C, EventMachine de Ruby, vibe.d de D y JEE de Java existe Apache MINA, Netty, Akka, Vert.x, Grizzly o Xsocket.

Como nota  muy diferenciadora,al contrario que la mayoría del código JavaScript, no se ejecuta en un navegador, sino en el servidor.

Asimismo Node.js implementa algunas especificaciones de CommonJS   e  incluye un entorno REPL para depuración interactiva

Tal es la potencia de  Node.js  que ya existen plataformas basadas en este entorno para intereactuar con placas como Arduino ,Linino. Intel Edison, Raspberry pi,etc  en aplicaciones de Robotica o plataformas de IoT

Johnny – Five    es una Plataforma JavaScript Robótica  e  IO  lanzada por bocoup en 2012  y mantenida por una comunidad de desarrolladores de software apasionados e ingenieros de hardware (más de 75 desarrolladores han hecho contribuciones a la construcción de éste).

onny

Como  ejemplo de “Hola Mundo”  con un LED parpadeante sencilla , el  siguiente ejemplo para Arduino nos muestra lo sencillo que es hacerlo en el entorno de Johnny Five :

 

var five = require("johnny-five");
var board = new five.Board();

board.on("ready", function() {
  var led = new five.Led(13);
  led.blink(500);
});

 

  • Ejecute el  códido Run: npm install johnny-five

 

Como ejemplo mas avanzado en el repositorio de github  (https://github.com/stylixboom/lr_motor ) Siriwat Kasamwattanarote   nos ensela  como podemos  controlar  un coche de juguete  directamente a través de SSH  (mediante  el terminal)  usando  Node.js.

Desde SSH no  se aceptan 2 teclas de flecha al mismo tiempo, es por eso que la forma en que gira a la izquierda / derecha no es tan suave (al cambiar las dos teclas en consecuencia) pero el funcionamiento es muy fluido

Los requerimientos son los siguientes:

 

Este proyecto es pues aprender a controlar dos motores ( izquierda – derecha) mediante el uso de la Raspberry Pi . El código proporcionado  está escrito en Node.js , y requiere un paquete de ‘ Pigpio ‘ para  acceder al puerto GPIO en la Raspberry Pi . ‘ Pulsación ‘ es escuchar a la entrada de teclado de la tecla de flecha ( arriba-abajo – izquierda – derecha) .

Este experimento apoya dos controladores de motor diferentes :

  • Toshiba – TB6612FNG Texas Instruments
  •  L293D

Notas:

-TB6612FNG es más eficiente , pero más caro (unos  10 $ ) , y se necesita soldadura .

 

TB6612FNG
Ref: http://www.robotshop.com/media/files/PDF/Datasheet%20713.pdf
Truth table
Input                           Output
IN1     IN2     PWM     STBY    OUT1    OUT2    Mode
H       H       H/L     H       L       L       Short brake
L       H       H       H       L       H       CCW
L       H       L       H       L       L       Short brake
H       L       H       H       H       L       CW
H       L       L       H       L       L       Short brake
L       L       H       H       OFF(High ohm)   Stop
H/L     H/L     H/L     L       OFF(High ohm)   Standby

-L293D es mucho más barato ( $ 0,6 ) y más fácil de utilizar con una placa.

L293D
Ref: http://www.robotplatform.com/howto/L293/motor_driver_1.html
Truth table
Input                   Function
PWM     IN1     IN2    
H       H       L       Reverse
H       L       H       Forward
H       H       H       Stop
H       L       L       Stop
L       X       X       Stop

En caso de usar la primera opcion , este es el esquema seguido: 





Una vez montado el circuito y ya vez tenga el código descargado  (https://github.com/stylixboom/lr_motor)  ,simplemente para ejecutarlo use :

                        $ sudo node app_t.js

Finalmente en el vídeo que os dejo a continuación podemos ver el conjunto del  robot utilizando una Raspberry Pi combinando NodeJS y el controlador de motores. .

Cómo construir un Espejo inteligente


Microsoft está apoyando  el proyecto Magic Mirror , un espejo  según la compañía o de bajo coste que cualquier persona puede realizar, con idea de mejorarlo  a toda la gran comunidad maker para crear un espejo conectado capaz de correr aplicaciones y mostrar información en tiempo real mientras nos miramos en él cada mañana
La idea no es nueva ,pero  quizás el uso  intensivo de la  nube de Microsoft  tal vez si pues al concepto de espejo mágico , transciende un paso más allá al permitir el reconocimiento del usuario  pues  el espejo puede reconocer a los usuarios registrados y personalizar la experiencia en consecuencia.

 

El espejo mágico que vamos a ver es  un proyecto de IO   pensado  para mostrar el poder de la plataforma de Windows universal (UWP) alojando aplicaciones web .

El lado del cliente se codificó con las tecnologías web estándar (CSS, HTML, JS) :es decir el corazón . El back-end aprovecha la potencia de NodeJS y Mongo alojados en Azure. El lado del cliente implementa la API de Windows ( mediaCapture ) para detectar las caras de la cámara dispositivos, y usa servicios cognitivos de la cara de la API de Microsoft para que coincida con las caras de los perfiles.

Puesto que un dispositivo de espejo no debería contar de la típica entrada desde un teclado y un ratón, la aplicación web proporciona una visión que permite a los usuarios personalizar la experiencia,pero como añadido, podemos agregar una cámara para reconocimiento facial que permitirá configurar diferentes perfiles para cada miembro de la familia, incluso Microsoft está liberando la API a través de “Microsoft Cognitive Services” para que cualquiera la pueda implementar.

 

Proceso de ensamblaje
El proceso de montaje requiere bastante trabajo manual así que recomiendan  tomar las medidas de seguridad apropiadas.

Usted necesitará los siguientes materiales para montar el espejo mágico:

 

 

camara

 

Así mismo  también necesitará algunas  herramientas :

  • Pegamento gorila
  • Cinta negra
  • Tijeras
  • Destornillador de múltiples bits
  • Alicates de corte
  • Taladradora eléctrica

 

Los pasos a seguir para la construcción del espejo resumidamente son los siguientes:

Desmontaje del espejo y taladros

En el  proyecto se utiliza un pequeño armario con espejo (los típicos usados para  las medicinas)  que sea  lo suficiente ancho para albergar un monitor  . El bastidor del gabinete médico donde va el espejo normalmente se mantiene unido por  grapas  que se pueden quitar  utilizar un simple  destornillador  La idea es que necesitará quitar el espejo para reemplazarlo  por la  Lamina acrílica de  espejo de 2 vías  .Tenga cuidado con cortarse al quitar el espejo. Una vez que las grapas se hayan ido, se puede quitar el espejo unidireccional y sustituirlo por el espejo de dos vías. Luego tendrá que volver a ensamblar el conjunto con grapas o pegamento .

espejonew

Ahora  tendrá que perforar dos  agujeros : uno  en la parte superior del armario que sea lo suficientemente grande para pasar el extremo USB de la cámara  y otro al fondo  para que pueda pasar a través de los cables de alimentación.

Montaje del monitor

El siguiente paso , es retirar la carcasa exterior del monitor, sin dañar el sensor táctil donde van los controles )como se ve en la imagen siguiente pues necesitará este sensor para controlar la configuración de energía del monitor. Se pueden utilizar los alicates para cortar el panel del sensor de la carcasa exterior. Debe quedar como la imagen de abajo.

tv

El borde de la pantalla es de color gris por lo que puede  cubrir los bordes  con cinta negra.

Una vez preparado el monitor tenga en cuenta   que debe colocar el  monitor  tan cerca del espejo como sea posible. Desde la pagina de github puede encontrar el modelo en 3D de los soportes para que  puede 3d imprimir usted mismo. Si no desea imprimir los topes , puede utilizar rollos de papel higiénico como un reemplazo  piezas de poliestierreno cortadas  para que encajen en el armario

A continuación se muestra una imagen que muestra cómo el monitor debe descansar sobre los topes.

espejo

Añadir el resto de electrónica

Ahora  toca dotar del cerebro al espejo por lo que lo siguiente es fijar la Raspberry Pi 3 junto con sus conexiones. Conectaremos la alimentación  a la Raspberry Pi 3 de 5v  mediante un alimentador (mínimo 1500mA) a la toma micro-usb. También conectaremos por hdmi   al monitor a través de la conexión HDMI del  monitor a la toma correspondiente de su Raspberry Pi 3.

Por ultimo conectaremos la  cámara, para lo cual la fijaremos con cinta a la parte superior de la caja y la conectaremos a la Pi3 a través del USB.

rp3

 

La instalación de la aplicación

Una vez que el espejo este montada y cableada, puede instalar la aplicación en su espejo mágico Frambuesa Pi (RP). Los chicos de Microsoft han hecho un gran esfuerzo pues  aunque por el momento solo es posible desplegar el sw necesario  para la Raspbery pi desde un PC, muy pronto aseguran sus creadores que también sera posible hacerlo desde un Mac.

En caso del despliegue en un PC los requisitos previos son :

  • Visual Studio (2013+)
  • Windows 10 SDK instalado en Visual Studio
  • Raspberry pi 3 ejecutando el núcleo de Windows IO

 

Los pasos a seguir son los siguientes:

  1. En Visual Studio, haga clic en ile > New Project > JavaScript Templates > Windows > Hosted Web Apps ( Archivo> Nuevo> Proyecto JavaScript plantillas> Windows> Aplicaciones Web alojados)
  2. Ir al explorador de soluciones, haga clic en package.appxmanifest> Aplicación y establecer http://webreflections.azurewebsites.net/mirror  como la página de inicio
  3. Dentro de la vista package.appxmanifest, haga clic en la pestaña URI contenido e insertar  http://webreflections.azurewebsites.net/ con WinRT de todos los accesos
  4. Haga clic en la pestaña Capacidades y seleccione a Webcam :camera:
  5. En la cinta, cambiar la arquitectura taget de cualquiera de las CPU a ARM
  6. Haga clic en play,que debería decir la máquina remota(Remote Machine)
  7. Un mensaje debería aparecer que le pide el nombre de la máquina. Ajuste el IPv4 de la RP como el nombre de la máquina y seleccione universal para la autenticación
  8. !Ya está listo!: Ha instalado con éxito la aplicación web alojada de Espejo Mágico  en su Raspberrypi que ejecuta el núcleo de Windows IO .

 

El espejo será capaz de mostrarnos información como la hora, fecha, el tiempo, datos financieros y la situación del tráfico, y en la parte superior aparecerán las notificaciones con prioridad y en la parte inferior tendremos las cosas menos urgentes

Obviamente en el centro permanecerá totalmente limpio, salvo un mensaje de bienvenida, ya que hay que recordar que principalmente es un espejo aunque con extra de tecnología de nuestro siglo.

Toda los detalles e instrucciones ya están disponibles en el GitHub oficial de Microsoft; y si todo esto les suena familiar, es porque este proyecto se basa en una creación de Michael Teeuw  del que ya hablamos en este blog , quien en 2014 presentó dentro de la comunidad Raspberry su desarrollo de Magic Mirror, que ahora ha sido potenciado por los servicios Cloud de Microsoft.

Tutorial IoT con Fiware


Gracias a  Telefónica R&D Chile( Telefónica I + D Chile) nos  ofrecen   un interesantisimo tutorial  intruductorio sobre  IOT   concretamente usando la plataforma Orion Context Broker  (FIWARE ) con Arduino aunque puede extrapolarse  a otras placas de IoT ( por ejemplo Netduino ,Intel Edison o Raspberry Pi)

 

Un punto interesante para analizar el IoT (Internet of Things  )es el uso de las normas. Para el caso concreto vamos a revisar más adelante en la sección Orion Context Broker, una adaptación basada en la especificación OMA (Open Mobile Alliance) NGSI (Next Generation Service Interface).  En términos simples, esto significa que las peticiones HTTP o acciones que deben utilizarse son los que están actualmente empleados por los navegadores tales como GET, POST, DELETE y PUT para interactuar con el contexto Broker.

Configuración de hardware

Los componentes que vamos a utilizar son:

  •  Una placa Arduino (hay muchas alternativas, pero una versión con WiFi es esencial)
  •  Una placa protoboard
  •  LEDs
  •  Cables de conexión
  • Un router o un dispositivo celular que pueden ofrecer Wi-Fi (tethering)

Como se ha comentado en este blog , Arduino tiene su propia interfaz de desarrollo utilizando el lenguaje C ++ y se integra una serie de librerías para facilitar la  aplicación de prototipos. Esto no quiere decir que Arduino no se puede utilizar en entornos industriales o de alta demanda. Sin embargo, en estos escenarios cuestiones de costos por lo general conducen a la utilización de componentes ad-hoc.

Al observar la estructura, se puede reconocer algunos pines digitales en la parte superior y analógicas pines en la parte inferior (idéntico  a muchas otras placas como Netduino). Además, en la parte inferior, también  hay una  fila de conectores para alimentar al propia  placa u otras que se conecten. Por supuesto la  placa   también  tiene un conector a una toma de corriente y un conector mini USB, entre otros componentes, dependiendo de la versión de la tarjeta y si se utiliza add-on “escudos” o no.

Si conectamos un LED a la placa podemos hacerlo directamente, conectando el ánodo LED de pin digital 13 y el cátodo del   led  al pin de   GND como se ve aquí.  Hay que señalar que es interesante conectar  entre el pin digital 13 con una resistencia de 220 ohmios para proteger el diodo led , pero estrictamente podría omitirse dicha resistencia.

led.jpg

 

Por último, este mismo esquema se puede usar para agregar más LEDs o sensores de nuestra placa Arduino para que pueda añadir más funcionalidades. Para ello hay que recordar que en un tablero de alimentación corre horizontalmente en los puntos exteriores y vertical en los puntos interiores

 

Arduino, software and communications Arduino, software y comunicaciones

En este ejemplo  vamos a aprender cómo programar la placa Arduino con el fin de activar el LED se instaló en la segunda parte y se apaga. A continuación, vamos a utilizar una conexión a Internet con WIFI  en  la placa.

Como requisito previo, hay que ya hemos configurado el software de Arduino según nuestro sistema operativo. Además, hay que tener USB de la placa conectada a nuestro ordenador para cargar el programa a nuestra placa (  consulte  aquí para ver cómo instalar el software en una placa Intel Edison).

Debe onviamente seleccionar la versión del software que corresponde a su sistema operativo.  Una vez que el software está configurado e instalado abrimos nuestra IDE hasta el comienzo de la codificación.

sketc

 

Vamos  a ver  un ejemplo de la IDE Arduino.  Este ejemplo es específicamente para el IDE para los conjuntos de Intel, aunque los conceptos son los mismos. En la segunda fila de menú (donde el icono de comprobación es), encontrará los comandos para compilar y cargar nuestros desarrollos a la placa.   Si examina el código, tenemos dos funciones.  Uno es de configuración, donde las variables se inicializan y el bucle en el que se ejecutan las operaciones según se requiera. En el menú Archivo tenemos los ejemplos de opciones – 01 Básico – Blink. Esto mostrará una nueva ventana con el código necesario para poner a prueba nuestra LED:

/*

Blink Parpadeo

Se enciende un LED durante un segundo, luego se apaga durante un segundo, en repetidas ocasiones.

Este código de ejemplo está en el dominio público.

*/ Pin 13 tiene un LED conectado en la mayoría de las placas Arduino.

// Darle un nombre:

int led = 13;

// La instalación se ejecuta de rutina una vez cuando se presiona RESET:

void setup() { 

// Inicializar el pin digital como salida.

pinMode (led, OUTPUT);

}

// La rutina de bucle se ejecuta una y otra vez para siempre:

void loop() {

digitalWrite(led, HIGH);  //  Enciende el LED (ALTA es el nivel de tensión)

delay(1000);  // Espera un segundo

digitalWrite(led, LOW);  //  Apagar el LED haciendo que la tensión BAJA

delay(1000);  // Espera un segundo

}

El ejemplo que genera Arduino es bastante simple.  En la línea 10 se establece una variable con el número pin correspondiente en la placa . Posteriormente, el pasador la variable se  configura  como salida y se inicializa. Y, en el bucle, el LED se enciende y se apaga separado por un retraso de un segundo .

Antes de cargar el código anterior en la placa , el IDE se debe configurar para que sepa la placa  y qué puerto se  está utilizando:

Select Tools> Board> Intel Edison Seleccione Herramientas> Junta> Intel Edison ( para el caso de una placa Intel Edison)

Select Tools> Port> dev / ttyACM0 Seleccione Herramientas> Puerto> dev / ttyACM0

Ahora bien, si la tarjeta está correctamente conectada al puerto USB, podemos ‘Subir’ el código de la tarjeta (Ctrl + U) y deberíamos ver nuestra LED encendido y apagado de cada segundo.

 

Ahora para usar el wifi, tenemos que trabajar un poco más.  Por suerte, en los ejemplos de Arduino, tenemos una sección de WIFI con diferentes alternativas utilizando las soluciones de redes.  Entre ellos se encuentran los servidores Telnet y clientes, servidores Web y clientes, e incluso un cliente de Twitter.

CONSEJO: En nuestro caso, por motivos de simplicidad, podemos utilizar un cliente Web ya que vamos a enviar solicitudes posteriormente al corredor Orion Contexto utilizando el protocolo HTTP.  Tenga en cuenta que hay mejores soluciones, pero para los propósitos educativos vamos a tratar de minimizar el código tanto como sea posible.

#include <SPI.h>

#include <WiFi.h> >

/ ************************** /

/ * * Configuración de la instalación /

/ ************************ /

char ssid[] = “YourWifiSSID”;//Nombre de la red

char pass[] = “WifiPassword”; //Contraseña de red

char server[] = “130.206.80.47”;  // ORION IP address -> Create in /lab/ // Dirección IP ORION -> Crear en / lab /

int status = WL_IDLE_STATUS; int estado = WL_IDLE_STATUS; // we predefine the status as On but not connected // Nos predefinimos la condición pero no conectada

int led = 13; int LED = 13; // We initialize a variable to assign the pin number to which the led will be connected // Inicializamos una variable para asignar el número de identificación personal al cual se conectará el LED

/**

* Configuración Configuración Arduino

* (Ejecutar una sola vez)

**/

void setup() {

// Inititialization del puerto serie Arduino

Serial.begin(9600);

while (!Serial) {

// Esperar para el puerto serie para conectar. y Necesario para Leonardo solamente

}

// Comprobar que la placa tiene un escudo WiFi

if (WiFi.status() == WL_NO_SHIELD) {

Serial.println(“Wifi shield is not available”);

// No continúe con la instalación, o en otras palabras, se quedan aquí para siempre

while(true);

}

El código completo está disponible en:

https://bitbucket.org/tidchile/ecosystem/src/ https://bitbucket.org/tidchile/ecosystem/src/

FIWARE  y Orion Context Broker

Como se ha discutido anteriormente en este ejemplo, el Broker de Orión define un contexto como un servicio que en base al stándar  OMA NGSI 9/10 puede manejar el envío y recepción de información contextual.  ¿Qué significa esto?  En primer lugar, para manejar un gran número de mensajes de entidades y administrar las actualizaciones, consultas, y también se encargan suscripciones de datos de las entidades. Recordemos que, según la NGSI 9 y 10 estándares, nos ocupamos de las entidades como una abstracción de los nodos físicos o dispositivos utilizados en las soluciones de la IO.

En el ejemplo anterior, hemos hecho una solicitud de actualización a una entidad ya creada.  Pero primero vamos a revisar cómo trabajar con Orión. . Una manera simple de probar el servicio OCB es crear una cuenta en https://account.lab.fiware.org/ y crear una máquina virtual con Orion preconfigurada en la sección de la nube. Alternativamente, el sitio y el acceso GitHub de Orión descargar una máquina virtual para ejecutar en nuestro entorno local

Otra herramienta útil es un cliente REST, pero podemos usar cURL si parece más sencillo. RESTClient es un cliente para Firefox que es bastante fácil de usar.

Los aspectos de configuración de la OCB están fuera del alcance de este tutorial, ya que requeriría demasiados detalles.  En cuanto al Laboratorio fiware, es importante tener en cuenta que fiware proporciona máquinas virtuales en la nube de forma gratuita para probar fiware compontents. Sólo tiene que crear una cuenta para acceder a los servicios. Sólo una advertencia rápida. . A partir de hoy (19-03-2015) y temporalmente, España no tiene recursos disponibles, pero hay otras regiones en las que las máquinas virtuales se pueden crear.

Cuando tengamos las herramientas necesarias, la forma más básica para interactuar con la OCB es:

1. Creando una entidad:Para ello hay que tener en cuenta varios factores.  En primer lugar, la llamada se envía como una solicitud HTTP POST, por ejemplo, http://myhost.com:1026/v1/updateContext.  Con esto queremos decir que estamos ocupando la versión 1 del API con la operación updateContext.

También tenemos que definir varias variables en la cabecera de la solicitud:

Accept: application/json

Content-Type: application/json

X-Auth-Token: [TOKEN AUTHENTICATION]

En cuanto a la generación de tokens, la forma más sencilla es utilizar un script en Python creado por Carlos Ralli en GitHub. Se necesita una cuenta FIWAREy ejecutar el ‘get_token.py  se requiere la escritura’.

Después de configurar el encabezado de la solicitud, configurar el “cuerpo” de la solicitud mediante el siguiente código JSON:

{

“contextElements”:[

{

“type”:”LED”,

“isPattern”:”false”,

“id”:”LED001″, “

“attributes”:[

{

“name”:”switch”,

“type”:”bool”,

“value”:”false”

}

]

}

],

“updateAction”:”APPEND”

}

Esta es la estructura de un “contexto Elementos”, que es un grupo de entidades con ciertos atributos, tales como, “isPattern” e “id”, “tipo”.type ”  se refiere a un tipo definido y permite la búsqueda de entidades por un tipo particular. “Id” es un atributo que debe ser único para cada entidad para ejecutar búsquedas en base a este ID. “IsPattern” se explicará más adelante en el punto No. 2.

También puede agregar una serie de atributos de la entidad en la propiedad “atributos”, donde cada atributo se define por el “nombre”, “tipo” y “valor”. Por último, “updateAction” define si vamos a realizar un “añadir” o y “UPDATE”.

Si todo va bien, vamos a recibir una respuesta 200 OK desde el servidor y que nos dará los detalles de la entidad creada:

{

“contextResponses” :

{

“contextElement” : {

“type” : “LED”,

“isPattern” : “false”,

“id” : “LED001”, “

“attributes” :

{

“name” : “switch”,

“type” : “bool”,

“value” : “”

}

]

},

“statusCode” : { “

“code” : “200”,

“reasonPhrase” : “OK”

}

}

]

}

2. Consultar la entidad: Para consultar una entidad, la operación estándar es ‘queryContext’ que sería http://myhost.com:1026/v1/queryContext.También aplicamos las cabeceras que se describen en el punto No. 1 y el uso post.

El JSON utilizado en el cuerpo de la petición sería la siguiente:

{

“entities”:[

{

“type”:”LED”,

“isPattern”:”false”,

“id”:”LED001″

}

]

}

Aquí es donde puede utilizar “isPattern” en “verdadero” y trabajar bien en el campo “tipo” o el campo “id” con expresiones regulares si queremos ejecutar una búsqueda un poco más compleja. En el ejemplo anterior sólo estamos buscando la misma entidad creada a través de la “id”.

También hay una manera más sencilla de hacer la misma consulta utilizando la siguiente solicitud: GET http://myhost.com:1026/v1/contextEntities/LED001 donde LED001 es el “id” de la entidad a buscar.

3. Actualización de la entidad: Esto es idéntico al punto No. 1, pero cambiando el atributo “updateAction” de “añadir” a “UPDATE”.

Por último, la integración de todo lo que hemos revisado, seremos capaces de generar una acción desde una página Web sencilla que se puede implementar en un servidor remoto y, de hecho demostrar que el LED de la aplicación se activa de forma remota utilizando la OCB.

Para ello vamos a utilizar el LED001 de reciente creación, estableciendo el atributo “interruptor” de verdadero a falso y viceversa para comprobar la acción.

Nuestra web se vería así:

 

ejemplño

Para ello, el código html, css y js se comparten en:   https://bitbucket.org/tidchile/ecosystem/src/ https://bitbucket.org/tidchile/ecosystem/src/

 

 

 

Fuente    aqui

Construyase su propio espejo inteligente


Ha sido famoso la noticia  de un ingeniero de software de Google(Max Braun,)  que ha construido su propio espejo  casero  inteligente para su cuarto de baño ,mientras está esperando que llegue algo similar en  el mercado ,de modo que decidió hacerlo el mismo  en su tiempo libre registrando  todos los detalles de construcción sobre la plataforma Medium.com.
Es posible que haya visto un espejo inteligente casero antes, pero el diseño de Braun ha resultado ser un elegante espejo  con  Android con un acabado final que nos  recuerda directamente a la ciencia ficción. Se utiliza un espejo de dos vías, un panel de visualización, una tarjeta controladora, además de un montón de componentes y suministros de arte y manualidades. Usando una combinación de Android y las API de pronóstico del tiempo, así como una alimentación por  RSS , creó este panel de información de vidrio,siendo sólo un milímetro de espesor  y colocando la pantalla en una capa entre el cristal del espejo de dos vías y la puerta del gabinete de la medicina.

 

mirror

El panel de la pantalla es bastante impresionante. Se puede ver la fecha y la hora a la derecha donde su cara sería. A la izquierda, se puede ver el tiempo actual y un pronóstico de 24 horas con algunos titulares de las noticias recientes de abajo. En su mayor parte, los iconos y el texto son en blanco y negro para evitar ser  sea demasiado distraído.
Otros conceptos que esta barajando son el tráfico , recordatorios y básicamente cualquier cosa que tenga una tarjeta de Google Now pues la idea es que no sea necesario para interactuar con esta interfaz de usuario:en su lugar, se actualiza automáticamente y hay una interfaz de búsqueda por voz abierto para cualquier cosa que se nos ocurra.

espejonew

A pesar de su apariencia Impresionante, Braun todavía lo llama  prototipo. Si nos fijamos en el interior del espejo,esta construido en base a un Amazon Fire TV Stick corriendo Android APK ,el cual gobierna el UI(Interfaz de Usuario).
Precisamente en este punto es donde encontramos más problemas, ya que no es lo mismo la información condensada en un smartphone o incluso una tablet, que información dividida y bien presentada  para poder leerse desde lejos: ahí es donde la FireTV y su interfaz para televisores encaja a la perfección

Además de eso dispone de cables para conectar los dispositivos, LED para mostrar avisos y un HDMI para la imagen. Los resultados son muy llamativos pues podemos ver todos los datos, el tiempo, las notificaciones… e incluso interactuar desde la distancia con nuestro móvil ya que podemos enviar información a la Fire TV.
El autor escribió la Interfaz de Usuario mediante unos pocos cientos de líneas de código y ademas  esta experimentando con diferentes dispositivos como Chromecast, reproductor Nexus, y recientemente Amazon TV Stick.

El espejo puede incluso escuchar sus preguntas con la función de búsqueda por voz en la Aplicación Móvil de Google.

Este es un proyecto increíble y esperamos ver más de estos  ya industrializados  en el próximo CES, pero mientras  haya productos  similares  en el mercado  se puede obtener un resultado muy  parecido al espejo de Braun  con los siguientes componentes:

  • Un smartphone o por dimensiones mejor una tableta Android  que ya no usemos ( por ejemplo porque se le haya roto el digitalizador)
  • Un espejo de dos direcciones
  • Papel negro,bolígrafo, tijeras, pegamento,adhesivos de doblecara, clavos,etc

 

HannahMitt en su proyecto de Github, y   EvanCohen     han obtenido resultados parecidos que resumimos ahora: ambos se basan en el  uso de  la aplicación de Mirror Home que deberemos instalar  en nuestro dispositivo Android.

Tras instalarla ,deberemos ajustar el brillo al máximo para que se vea claramente, eliminar el ahorro de energía  y  desinstalar  el resto de aplicaciones pues lo ideal es  mantener el dispositivo lo más ligero posible para consumir el mínimo.
pantala1
Esta app  le puede decir las  noticias, comprueba su estado de ánimo, y le muestra los cómics: todas esta información esta disponible mientras  usted comprueba su cabello o se afeita.Esta aplicación es inusual pues como hemos dicho esta pensada  para usarla  detrás de un espejo de acrílico de dos vías.

La información que muestra esta app :

  • Día, hora y pantalla de tiempo
  • Recomendaciones Ciclismo
  • Oscilaciones bursátiles
  • Mensajes edificantes sobre la base de sonrisas cara
  • XKCD de hoy
  • Siguiente evento del calendario
  • Top titular de la noticia

Atención ,muchas de las funciones están escritos para mostrar sólo hasta cuando son más relevantes.Si encuentra errores puede reportarlos  aqui ( el repositorio Github del proyecto)

pantala2  pantal3

Instalada esta app, debemos medir la tableta y en el papel negro recortamos para cubrir todo el tamaño del espejo excepto donde vaya el móvil o la tablet.  Enganche  ahora  el papel negro con el espejo, ajústelo y deje un tiempo para que se seque.

Coloque con pegamento un trozo de papel tres veces más gordo que la tableta en cada una de las esquinas del espejo. Ahora  puede colocar los adhesivos en la parte superior e inferior y presione para que quede compacto.

Introduzca la tableta Android justo en el hueco que queda y conéctelo para que no se apague rápidamente(con más cinta adhesiva podemos ocultar los cables.

Ya puede fijarlo a la  pared, vigilando no dañar el propio espejo.

Si tiene dudas en el siguiente vídeo podemos ver todo el proceso:

Por cierto para terminar , esta idea no es sólo válida  para el espejo del baño, también podría servir para los espejos de los ascensores, los espejos de los retrovisores ,etc ,

 

Fuente aqui