martes, 12 de julio de 2016

COMPUTACIÓN EN LA NIEBLA Y LA RELEVANCIA PARA EL IoT

COMPUTACIÓN EN LA NIEBLA Y LA RELEVANCIA PARA EL IoT

Es innegable como el Internet de las Cosas constituye una de las mega tendencias mas relevantes de las TICs, y su rápido despliegue traerá una explosión de nuevos servicios y productos que se soportaran sobre esta tecnología y otras aliadas como el Big data, la computación en la nube y la computación móvil.

Grandes promesas = Grandes desafíos
IoT promete llevar la conectividad a todos los niveles, invadiendo cada hogar, vehículo, y lugares de trabajo con dispositivos inteligentes conectados a internet, sin embargo a medida que se incremente nuestra dependencia de estos nuevos dispositivos conectados junto con los beneficios que estos nos aportan, la demanda de conexiones, puertas de enlace y controladores mas confiables sera mas critico para los diseños de las infraestructuras de red.
Considerando el ritmo de despliegue del IoT, a corto plazo electrodomésticos, puertas, e incluso piezas de ropa tendrán habilitadas conexiones a Internet que a medida que crezcan los servicios que proveen estarán siempre conectadas, sometiendo la infraestructura de conectividad y los centros de datos a mayor estress, los expertos predicen que el IoT puede incluir 26 millones de unidades conectadas para el 2020.

bbva-openmind-banafa-iot-fog-1 

El enfoque popular de muchos de los primeros diseños de IoT es centralizar el procesamiento de los datos en la nube, con los que según este enfoque se reducen los costos y se fortalece la seguridad de las aplicaciones. Sin embargo al tener cantidades puras de entradas de datos que serán recibidas desde fuentes globalmente distribuidas, que demandaran respaldos en disco y que son la base de sistemas que depende de una respuesta en tiempo real, hacen que este enfoque no sea del todo eficiente y escalable. La alternativa es acercar cierto nivel de procesamiento de forma inteligente a los lugares donde la información que resulta de este procesamiento de los datos masivos sea mas relevante.
Para ilustrar la necesidad de un procesamiento local de cierto tipo de datos, IDC (Industrial Design Consultancy) estima que la cantidad de datos analizadas en dispositivos que están físicamente mas cerca de los controladores IoT debe de aproximarse a un 40%, lo cual sustenta la necesidad de un urgente cambio de enfoque para el despliegue del IoT.

bbva-openmind-banafa-iot-fog-2
Para tratar con este desafío la computación en la niebla es la respuesta
La computación en la niebla permite que el procesamiento relevante para la toma se decisiones que disparen acciones se ejecute tan cerca como se  posible del controlador IoT y solamente los datos relevantes pre-procesados localmente pasen a la nube, Cisco acuño el termino computación en la niebla ("Fog Computing") y le dio una definición brillante: "La niebla extiende la nube para acercarse a las cosas que producen y actúan sobre los datos. Estos dispositivos llamados nodos en la niebla pueden desplegarse en cualquier lugar con una conexión de red: en pisos de fabricas, en la cima de las torres de potencia, a lo largo de las lineas ferroviarias, en un vehículo o en plataformas de petroleo. Cualquier dispositivo con capacidad de procesamiento, almacenamiento y conectividad puede ser un potencial nodo en la niebla..."

bbva-openmind-banafa-iot-fog-3 
Para comprender el concepto de computación en la niebla observemos las siguientes acciones que este modelo posibilita:
  • Analiza los datos mas sensibles a retrasos en el borde de la red, cerca de donde se generan o se requieren para tomar acciones.
  • Toma accionen en los datos de IoT en milisegundos, basado en un conjunto de reglas conocidas como políticas.
  • Envía datos selectivamente a la nube para un análisis histórico o almacenamiento. 
Beneficios del procesamiento en la niebla
  • Minimiza la latencia.
  • Conserva el ancho de banda.
  • Enfoque de la seguridad en todos los niveles de la red (un gran desafío por si mismo).
  • Operación confiable con decisiones rápidas.
  • Colecta y asegura un amplio rango de datos.
  • Mueve los datos al lugar mas idóneo para su procesamiento.
  • Menor gasto de energía al usar la computación de alto nivel solo cuando es necesario y menos uso de ancho de banda.
  • Mejor análisis y visión mas local de los datos.
Es importante entender que la computación en la niebla no reemplaza la computación en la nube, sino que trabaja en conjunto con esta optimizando el uso de los recursos disponibles; pero esta resulto de la necesidad de solventar desafíos como: el procesamiento en tiempo real, la acción sobre datos entrantes, la limitación de recursos (Ancho de banda, poder de computación) y el aprovechamiento de las ventajas derivadas de los recursos de TI virtualizados. Esta mejora de la jerarquía de ruta de datos es posible gracias al aumento de la capacidad de procesamiento que los fabricantes están incorporando en sus routers y switches de borde.

El Dinamismo de la computación en la niebla
El concepto del procesamiento en la niebla de "acercar a la tierra la nube", implica que un enorme numero de dispositivos con capacidad de procesamiento se acoplaran a esta con asimetrías en cuanto a velocidad y características, lo que plantea retos relacionados con la seguridad, la gestión del almacenamiento de datos, la administración de la infraestructuras de red adaptativas entre otros, lo que implicara un replanteamiento de los modelos de gestión de la infraestructura de TI, que sean mas pro-activos, colaborativos y con una extensión que sobrepase las fronteras de las organizaciones.
Para el manejo de muchos de los desafíos que plantea un futuro despliegue masivo de IoT, la computación en la niebla ofrece soluciones funcionales. Los proveedores de equipos de red están proponiendo plataformas base que incluyen enrutadores con fortalezas industriales y confiables, que ejecutan una combinación de sistemas operativos abiertos como Linux, maquinas virtuales Java embebidas con sistemas operativos propietarios; para garantizar la portabilidad de las aplicaciones sobre la infraestructura usando entornos de programación que son familiares y soportados por múltiples fabricantes. Bajo este modelo, dispositivos de borde inteligentes pueden procesar o direccionar paquetes de tareas resultantes de los datos de sensores y controladores IoT, transmitiendo solo datos resumidos y excepciones a la nube, es decir conocimiento resultado del procesamiento local de volúmenes de datos.
 
bbva-openmind-banafa-iot-fog-4

El éxito de la computación en la niebla, se resume en la capacidad de recuperación (Resiliencia) que aporta a la infraestructura de red, la cual es critica para asegurar la continuidad de las operaciones de cualquier negocio y requiere de las siguientes tareas para garantizar su éxito:
  • Redundancia
  • Seguridad
  • Monitoreo de la potencia y enfriamiento de los centros de datos
  • Soluciones de Failover localizados para maximizar la disponibilidad.
Es evidente que sin el despliegue de la computación en la niebla la garantía de la escalabilidad de las infraestructuras y su eficiencia no serán posibles, por lo que cualquier diseño de solución IoT debe considerar un profundo análisis de los datos y procesos que deben ejecutarse en la niebla y tomar este análisis como referencias para el dimensionamiento del hardware para los controladores IoT.










 




 

miércoles, 1 de junio de 2016

HACIA DONDE VAMOS CON EL IoT

HACIA DONDE VAMOS CON EL IoT

Cuando hacemos una búsqueda simple del termino "Internet of Thing", muy seguramente hay alrededor de mas de 200 millones de resultados, el termino no solo se ha vuelto popular, sino además interesante por el numero de aplicaciones, nuevos servicios y mejoras en la calidad de nuestras interacciones, sin embargo su completo despliegue demandara una rango muy amplio de nuevas tecnologías y habilidades que muchas de las organizaciones aun no pueden alcanzar, la razón principal es la inmadurez de la mayoría de tecnologías que posibilitan el IoT, por lo que los esfuerzos de las organizaciones se enfocaran en reducir esta brecha de madurez.

En los próximos años la visión del IoT evolucionara hacia el IoE, con nuevas posibilidades en los mercados, nuevos actores tecnológicos, nuevos modelos de negocios, enfoques y soluciones que aparecerán con mas frecuencia superando las soluciones tradicionales. Por sus características es posible que la adopción del IoT e IoE se parezca mas al modelo de difusión de las TI tradicionales, es decir desde las empresas a los consumidores, pero con el atenuante del poder de los consumidores para impactar esa adopción con las capacidades que dan las redes sociales.
banafa-10-tendencias-1

Desde la perspectiva de muchos gurus en tecnología es fácil denotar la coincidencia en cuales son los 10 desafíos que deben superarse para un despliegue fluido del IoT e IoE.

1.- La infraestructura
La clave del éxito es la plataforma de soporte, las cosas cada vez serán mas baratas, las aplicaciones se multiplicaran y la conectividad reducirá su precio, siempre que la infraestructura evolucione y pueda soportar los siguientes servicios:
- Control de las operaciones de los dispositivos de bajo nivel, lo que implica el monitoreo, la gestión, las comunicaciones, la seguridad y las actualizaciones de firmware.
- La adquisición, transformación y gestión de los datos que brindan los dispositivos de bajo nivel, es decir el soporte para la computación en la nube y en la niebla.
- El soporte para el desarrollo de aplicaciones, que incluyan lógica en tiempo real orientada a eventos, visualización, análisis y adaptadores para interconectar las tecnologías de operación de las empresas con las TI.
2.- La interoperatividad
A medida que los nuevos dispositivos IoT proliferen sera necesario nuevos ecosistemas que puedan integrarse a diversas demandas como hogares inteligentes, industria inteligente, comercio inteligente, ciudades inteligentes entre otros; por lo que las tecnologías deben tener variantes para adaptarse e incluso actualizarse a fin de poder llevar sus servicios directamente a las aplicaciones que es donde se desarrollara la nueva batalla de los mercados; para llegar a este nuevo entorno es necesario la unificación de los estándares.
banafa-10-tendencias-2
3.- Procesamiento basado en secuencia de eventos.
Con mas dispositivos conectados, el volumen de datos que generan podria ser inmanejable, por lo que el procesamiento en la nube y su balance con procesamiento distribuido en la niebla es critico, de forma que pueda hacerse una valoración local de los eventos que generan los dispositivos y solo portarlos a la nube en casos muy particulares según las demandas de los servicios y las aplicaciones.
4.- Sistemas operativos.
Con el amplio rango de los sistemas operativos existentes para propósitos específicos, todos deben adaptarse a las demandas de los sistemas embebidos donde se ejecutaran, permitiendo que parte de su núcleo pueda existir de forma distribuida o compartida con un modelo extensivo al tradicional cliente-servidor.
5.- Los procesadores y las arquitecturas.
Deben responder a las demandas de los modelos de IoT e IoE, mejorando su capacidad de procesamiento en la niebla (local), la versatilidad para conectarse y con un bajo consumo de potencia, para ser capaz de auto abastecerse.
6.- WAN de baja potencia.
Muchas de las soluciones actuales son propietarias, pero la tendencia es a la estandarización, la redes tradicionales actuales no ofrecen una adecuada combinación de características técnicas con los costos operativos que los dispositivos IoT demandan en cuanto a cobertura, ancho de banda y consumo energético. El objetivo a largo plazo de una red IoE de área amplia es entregar velocidades de datos adaptativas con cobertura nacional, una vida útil no menor a 10 años y un costo del hardware menor a $5; una evolución de las redes propietarias LPWAN hacia las redes estandarizadas NB-IoT.
7.- Redes IoT de corto alcance de baja potencia.
Necesarias para la conexión de sensores y actuadores con los controladores de conectividad global, las soluciones de comunicación de corto alcance son las mas diversas y mas complicadas de estandarizar, por lo que es predecible una diversidad de tecnologías a las que deberán de adaptarse los controladores, con una debilidad latente en estos enlaces: la seguridad.
8.- Administración de los dispositivos (Cosas).
Todas las cosas como cualquier nodo requerirán de gestión (Actualizaciones de firmware, software, configuración de parámetros, etc.), el problema critico es la escala del volumen de los dispositivos que se proyecta gestionar.
9.- La Analítica.
De acuerdo con muchos autores, los datos que generen los dispositivos IoT demandaran un nuevo enfoque para su análisis, por lo que nuevas herramientas y algoritmos serán necesarios a fin de tener una adecuado balance en la correlación de la información que se procesara y comunicara a fin de ser escalable las operaciones del IoE.

banafa-10-tendencias-3
10.- La Seguridad
Este es el desafío mas critico para el despliegue seguro del IoT e IoE, con la venida de esta nueva tecnología se amplia la extensión de las amenazas, por lo que las medidas para mitigarlas deben enfocarse en nuevos marcos de referencia, basados en la seguridad embebida, lo que implica que los mismos descriptores de las políticas de seguridad se deben compactar en virtud de la poca capacidad de los procesadores de los dispositivos para poderse pasar entre organizaciones, además de tener una visión global de las amenazas para el ajuste de las firmas que permitan identificar los ataques y reducir al mínimo sus impactos.

banafa-10-tendencias-4
La integración de las operaciones (razón de ser de aplicaciones y servicios) en las políticas de seguridad es otra de las consideraciones a tomar en cuenta, ya que la extensión del riesgo alcanzara todo lo que este conectado, maquinas, actuadores, sensores e incluso dispositivos dentro del cuerpo humano.

Los aspectos técnicos descritos anteriormente, serán alcanzables tarde o temprano dejando madura la tecnología para un despliegue global del IoT e IoE, sin embargo el debate de las implicaciones legales, morales y sociales de la propagación de esta tecnología apenas inicia, y si no hay un adecuada difusión de esta puede generar una mayor ampliación en la brecha digital existente en las sociedades, además de otras implicaciones relacionadas con privacidad, interferencia, acoso comercial, entre otros existente.

referencias:

http://www.dbta.com/BigDataQuarterly/Articles/10-Predictions-for-the-Future-of-IoT-109996.aspx

https://campustechnology.com/articles/2016/02/25/security-tops-list-of-trends-that-will-impact-the-internet-of-things.aspx

https://1282612.netacad.com/courses/366544 "Introdution to the Internet of Everything.

http://www.forbes.com/sites/techonomy/2013/05/17/how-big-companies-are-feeling-their-way-into-the-internet-of-everything/#631b62c336ce















lunes, 18 de mayo de 2015

TRANCEPTORES DE DE BAJA CARGA PARA SENSORES IoT



TRANSCEPTORES DE DE BAJA CARGA PARA SENSORES IoT

Una de las aplicaciones mas comunes de la tecnología IoT es para el desarrollo de sensores remotos autónomos, los cuales se pueden desplegar en forma de redes o grillas para tareas de monitoreo; cada uno de estos nodos necesita de un protocolo de baja carga que permita comunicar la información de forma simple y con el menor consumo de potencia posible.
En esta entrada trataremos algunos de los aspectos a considerar para elegir estos módulos y evaluaremos un modulo bastante potente para este propósito el trasceptor nRF24L01+

Sobre las redes de baja potencia con perdidas LLN
Las redes LLN (Low power and Lossy networks), son redes diseñadas para sistemas embebidos, los cuales están limitados por el suministro de potencia y típicamente están conectadas por enlaces como IEEE 802.15.4, Bluetooth, Wifi de baja potencia y RF.
Generalmente estas redes tienen 5 características que las distinguen:
a) Operan con complicado y muy pequeño vinculo de estado, es decir que a nivel de linea se les dificulta llevar un estado de la conexión.
b) En muchos casos optimizan la trama de comunicación a fin de ahorrar energía.
c) Los patrones de trafico no son siempre comunicaciones de unicast, puede incluir enlaces punto a punto y punto a multipunto.
d) Restringen los tamaños de las tramas en función del enlace físico disponible.
e) Deben ser muy cuidadosos para enrutarse ya que no pueden desperdiciar muchos recursos de red.
Estas cinco características determinas las especificaciones de los chips usados como transceptores, los cuales además condicionaran su alcance a la disponibilidad de potencia, que es el parámetro de diseño mas critico ya que la mayoría de aplicaciones para IoT están condicionadas por su capacidad de autonomía energética, la cual se obtiene de fuentes de muy baja potencia.

El módulo nRF24L01+
El nRF24L01+ es un transceptor embebido de 2.4Ghz con un protocolo de banda base integrado para el desarrollo de aplicaciones inalámbricas con un consumo mínimo de energía, configurable con comando de una sola palabra lo que simplifica el desarrollo de aplicaciones usando cualquier microcontrolador.
Es fácilmente programable a través de una interfaz SPI que actua en modo esclavo y tolera velocidades de reloj de hasta 10Mbps, con un radio de comunicación de 126 canales, velocidades de transferencia de 250kbps, 1Mbps y 2Mbps, tres modos de operación y regulador de voltaje integrado para un óptimo consumo de potencia que puede variar en los modos pasivos entre 0.9uA a 400 uA y durante los modos activos hasta 13.5mA.
El diagrama esquemático se muestra en la siguiente  figura:
 








La comunicación con el modulo se basa en las 4 lineas de la interfaz SPI: MISO que representa la salida de datos serial del modulo, MOSI que es la entrada de datos serial, SCK entrada para la señal de reloj y CSN que sirve como entrada para que la interfaz esclavo SPI sea seleccionada, las otras lineas CE, es un selector de todo el modulo y IRQ es la linea para disparar interrupciones.

Demandas energéticas del módulo nRF24L01+
Una de las ventajas de este modulo es su habilidad para el ahorro de la energía, característica vital para las aplicaciones IoT, así este puede programarse en modo pasivo o activo, la selección de estos modos se basa en el pin CE si dicho pin esta en cero lógico el módulo funciona en modo pasivo, por el contrario funcionara en modo activo.
Para el caso de los modos activos puede funcionar como receptor RX o Transmisor TX, para este ultimo modo el consumo de energía depende de la potencia de salida la cual es programable y gobernada por un amplificador embebido que soporta potencias desde -18dBm a 0 dBm, con consumos de corriente desde 7 mA a 11.3 mA; para el caso del receptor la potencia consumida dependerá de la velocidad de comunicación, así para la velocidad mínima 250Kbps se consumirán 12.6 mA y para la máxima 2Mbps serán 13.5 mA.
El modo pasivo soporta tres estados configurables que son: Power-Down el cual consume el mínimo valor de potencia del chip que es de 0.9 uA; Stanby-I con un consumo de 26 uA y Stanby-II con un consumo de 320 uA, la diferencia entre estos dos últimos modos esta en la velocidad de cambio a los modos activos, para el modo Stanby-II se mantiene un buffer para evitar reducir el reloj por lo tanto es mucho mas rápida su transición.
Con estas características es posible obtener múltiples combinaciones de operación, que nos permitan planificar el consumo energético del modulo.

Lógica de programación del módulo nRF24L01+
La programación del modulo se basa en 11 comando con una extensión de 1 byte enviados por la interfaz SPI, sobre 26 registros de tamaño variable, los comandos para la programación del módulo son los siguientes:
R_REGISTER: Comando=000AAAAA Datos= 1 a 5 bytes: Comando de lectura y registro status, AAAAA=dirección del registro
W_REGISTER: Comando=001AAAAA Datos= 1 a 5 bytes: Comando de escritura y registro status, AAAAA=dirección del registro
R_RX_PAYLOAD: Comando=01100001 Datos= 1 a 32 bytes: Lee la carga del RX, la carga se borra una vez leido (inicia con byte 0)
W_TX_PAYLOAD: Comando=10100000 Datos= 1 a 32 bytes: escribe la carga del TX, la carga se borra una vez leido (inicia con byte 0)
FLUSH_TX: Comando=11100001 Datos= 0 bytes: Limpia el buffer FIFO del TX
FLUSH_RX: Comando=11100010 Datos= 0 bytes: Limpia el buffer FIFO del RX, nunca ejecutarse durante una transmisión de ack
REUSE_TX_PL: Comando=11100011 Datos= 0 bytes: Reusar la ultima carga enviada, se mantiene activo hasta usar FLUSH_TX o W_TX_PAYLOAD
R_RX_PL_WID: Comando=11100011 Datos= 1 bytes: Lee el ancho de la carga del RX.
W_ACK_PAYLOAD: Comando=10101PPP Datos= 1 a 32 bytes: Escribe la carga junto con el ACK PPP=# de payload pendientes 000 a 101
W_TX_PAYLOAD_NOACK: Comando=10110000 Datos= 1 a 32 bytes: Usado en modo TX, desactiva el AUTOACK en un paquete especifico.
NOP: Comando=11111111 Datos= 0 bytes: No operación, usado para lecturas solamente del registro STATUS
Por cada comando enviado el módulo automáticamente responde con el valor del registro de estado, los diagramas de tiempo de las operaciones de escritura y lectura del módulo se muestran en los siguientes gráficos:
El módulo se puede programar con los microcontroladores Arduino, PIC, HC12 o un FPGA, a fin de dejar una secuencia que pueda aplicarse a cualquier arquitectura los pasos de programación se describirán de la manera mas general posible para mayores detalles se recomienda consultar la hoja técnica del fabricante y deben tomarse en cuenta las siguientes consideraciones:
- El modulo nRF24L01+ funcionara como esclavo para cualquier tipo de configuración
- Cada nuevo comando debe iniciar con una transición descendente de la linea CSN.
- Los comandos serializados y los datos se envían en el siguiente formato:
- Palabra de comando: MSBit a LSBit <un solo byte>
- Palabra de datos: LSByte a MSByte donde el MSBit de cada byte va primero.
- Las ejecuciones de escritura de registro solo se pueden efectuar en los modos pasivos.

Paso 1: Establecer las características del transceptor, rol, velocidad y potencia de transmisión:
W_REGISTER CONFIG DATO       Comando/registro: 00100000, dato 0000100R
Si R = 0; Rol de Transmisor TX, si R = 1 Rol de Receptor TX
W_REGISTER RF_SETUP DATO  Comando/registro: 00100110, dato 00L0HPW0
Potencia PW:  00=-18dBm, 01=-12dBm, 10=-6dBm, 11=0dBm
Velocidad LH: 00= 1Mbps, 01= 2Mbps, 1x= 250Kbps
Paso 2: Establecer el tamaño de la carga, numero de reintentos y tiempo entre cada reintento:
W_REGISTER RX_PW_P[P] DATO  Comando/registro: 00101011, dato 000CCCCC
P: indica el conducto pipe de 0 a 5 normalmente se usa 0 y 1
CCCCC: tamaño de la carga en bytes de 1 a 32 bytes
Esta configuración solo aplica si se operara el modulo como receptor
W_REGISTER SETUP_RETR DATO Comando/registro: 00100100, dato RRRR####
Retardo entre retransmisiones RRRR: 250uS[(bit7:4)+1] de 250 uS a 4 mS
Numero de retransmisiones ####: de 0 retransmisiones a 15 retransmisiones
Si se alcanza el máximo de retransmisiones el modulo se congelara, para rehabilitarlo es necesario limpiar el bit 4 del registro de estado, escribiendo un 1 lógico en dicho bit.
Modulo como receptor
Paso 3: Activar la escucha del modulo, para que se prepare a recibir datos desde otro modulo, con esto se pone el modulo en modo activo por lo que el consumo de energia se incrementa:
W_REGISTER CONFIG DATO  Comando/registro: 00100000, dato 00001011
Con los bits menos significativos salimos del modo Power Down y ponemos el modulo en el rol de receptor.
W_REGISTER STATUS DATO  Comando/registro: 00100111, dato 0RTM1110
R: Limpiamos la bandera de dato recibido, escribiendo 1 en el bit
T: Limpiamos la bandera de dato enviado para el recibo del ACK, escribiendo 1 en el bit
M: Limpiamos la bandera de máximo numero de retransmisiones.
Paso 4: Verificar que hay datos disponibles
NOP Comando/registro: 11111111
Con este comando leemos el registro de estado para verificar el bit 6 RX_DR, si este bit esta en 1 indica que un nuevo dato ha sido recibido, mientras se activa la bandera se puede hacer un bucle para que este verificando esta acción
Paso 5: Leemos el buffer de datos recibidos
R_RX_PAYLOAD  DATO       Comando/registro: 01100001, dato
Con este comando se lee el buffer de datos que va desde 1 a 32 bytes con el comando se recibe el primer dato si se desea leer mas datos se puede usar el comando NOP para los siguientes bytes, el buffer se borra cuando este se lee.
Una vez se completa el paso 5 si se requiere recibir mas datos se repite el paso 3, se pueden usar las interrupciones para reducir el consumo de energía.
Modulo como transmisor
Paso 3: Activar el envio del módulo, con esto se pone el modulo en modo activo por lo que el consumo de energia se incrementa:
W_REGISTER CONFIG DATO  Comando/registro: 00100000, dato 00001010
Con los bits menos significativos salimos del modo Power Down y ponemos el modulo en el rol de receptor.
W_REGISTER STATUS DATO  Comando/registro: 00100111, dato 0RTM1110
R: Limpiamos la bandera de dato recibido, escribiendo 1 en el bit
T: Limpiamos la bandera de dato enviado para el recibo del ACK, escribiendo 1 en el bit
M: Limpiamos la bandera de maximo numero de retransmisiones.
Paso 4: Desarrollar un retraso de 150 uS para estabilizar el transmisor
Paso 5: Cargar el buffer de transmisión
W_TX_PAYLOAD  DATO       Comando/registro: 10100000, dato
Con este comando se escribe en el buffer de datos a transmitir que va desde 1 a 32 bytes despues del comando se envian los datos a transmitir hasta completar los 32 bytes si la carga es menor se deben de rellenar con cero.
Paso 6: Verificamos el registro de estado de la transmisión, para garantizar que esta se ha completado sin problemas
R_REGISTER OBSERVE_TX     Comando/registro: 00001000, dato
Con este comando se puede observar el contador de paquetes perdidos y retransmitidos si el dato recibido es F en cualquiera de los nibbles significa que no fue posible transmitir el dato aun usando el numero de reintentos configurados, si este es el caso debe activarse también el bit 4 del registro de estado indicando que se alcanzo el máximo numero de retransmisiones realizadas.
Si se desea repetir el proceso se puede hacer un bucle hasta el paso 3.

Existen muchas mas opciones de operación del modulo, para la lógica de programación del módulo descrita se dejan muchas de las opciones de configuración con sus valores por defecto, solamente modificando las relativas a las acciones configuradas; para configuraciones mas especializadas es necesario consultar el manual técnico del módulo.
La diversidad de opciones de configuración, el bajo consumo y su facilidad de programación desde cualquier plataforma con una interfaz SPI, hacen de este chip una excelente opción para la implementación de redes de baja carga en cualquier solución con módulos IoT.

miércoles, 25 de marzo de 2015

HERRAMIENTAS PARA DESARROLLO DE IoT

HERRAMIENTAS PARA EL DESARROLLO DEL INTERNET DE LAS COSAS

La miniaturización de los componentes electrónicos y su exponencial crecimiento en capacidad, ha permitido una evolución acelerada del Internet de las cosas IoT; este concepto puede parecer para muchas personas futurista, sin embargo cada día se esta convirtiendo en una realidad cada vez mas común.
Millones de equipos y componentes están ya conectados a Internet y su incremento es cada vez mas acelerado, por lo que cada dia hay una mayor disponibilidad de tarjetas de desarrollo que permiten la creación de aplicaciones usando esta tecnología.
En esta publicación se presentaran algunas alternativas de tarjetas que permitirán que nos introduzcamos a este mundo del IoT y ha desarrollar nuestras primeras aplicaciones practicas a un costo relativamente bajo.

INTRODUCCIÓN
El IoT esta generando una cantidad enorme de oportunidades de desarrollo de nuevos componentes y servicios que mejoran la productividad y eficiencia de los actuales procesos, afinan la toma de decisiones en tiempo real para los usuarios, enriquecen la experiencia de los usuarios al interactuar con las aplicaciones y permiten resolver problemas críticos al brindar acceso a información disponible en zonas de difícil acceso.
Algunos ejemplos de los grupos de aplicaciones, donde el IoT es latente son los siguientes: Conectividad de dispositivos Maquina-a-Maquina M2M, Gestión granular de equipos basado en la nube, Conectividad industrial de planta-a-planta, Ethernet industrial, Sistemas para máxima interoperatividad, Redes de sensores inalámbricos, Gestión de servicios inteligentes, Adquisición/analisis de datos, etc.
Para aprovechar mejor los procesos creativos, es importante que podamos contar con adecuados sistemas de arranque rápido para comprender como funciona esta tecnología y el componente principal es el conocimiento del chip donde se integra el IoT, así evaluaremos varias alternativas de tarjetas de desarrollo, para que podamos elegir la que mejor se adapta a las condiciones del servicio o producto que deseamos implementar.

ARDUINO YUN
Una forma rápida de implementar prototipos con tecnología IoT es usar la placa Arduino YUM, la cual separa el microcontrolador para interactuar con los puertos y todas las funciones de una placa Arduino regular (ATmega32u4), del modulo para el soporte para la conexión a Internet tanto de forma inalámbrica como alambrada (Atheros AR9331); esta particularidad permite acelerar la ejecución de los códigos ya que toda la comunicación esta delegada usando un puente que facilita la interacción de los dos procesadores.

El procesador AR9331 ejecuta un sistema operativo basado en Linux (OpenWRT) que además de soportar las comunicaciones a internet, permite manejar una tarjeta de memoria micro SD y un puerto USB.
El sistema operativo proporciona todo el núcleo de soporte que cualquier versión de Linux, sin embargo por defecto este modulo siempre esta activo, por lo que depende de un consumo de potencia fijo, lo que hace un poco de problema con la autonomía energética, es posible optimizar el núcleo del sistema operativo para reducir el consumo de potencia únicamente dejando los módulos que se requerirán para una aplicación especifica, sin embargo es necesario conocimientos avanzados del kernel para efectuar esta tarea.
El soporte de la comunidad de Arduino es una ventaja para facilitar el aprendizaje y el desarrollo de los primeros experimentos con IoT, además se cuenta con un gran numero de ejemplos que pueden servir de base para las aplicaciones especificas en el mundo del Internet de las cosas.



INTEL EDISON
La plataforma Edison es una excelente alternativa para rápido diseño de prototipos con IoT, por sus caracteristicas esta plataforma fue concebida para lograr una rápida transición de un diseño de prototipos a una implementación final, por lo que es una alternativa confiable para productos e implementaciones finales.
Edison es una plataforma compacta, robusta y de pequeño tamaño y de gran rendimiento, además con un soporte enriquecido para facilitar el trabajo de los desarrolladores que pueden programar con una diversidad de herramientas como C/C++, Pyton, Java y Arduino.
La principal característica de esta tarjeta es su poder de procesamiento soportada en un procesador de núcleo doble Atom IA-32 de 500Mhz y un microcontrolador Quark de 100 Mhz, lo que permite separar las funciones de la pila de procesamiento, TCP/IP y periféricos brindando una gran versatilidad para las necesidades de los diseño y la optimización del consumo de potencia; por otro lado las características de memoria (RAM 1GB y Flash 4GB) son mas que suficientes para soportar prototipos de gran complejidad, así como el almacenamiento y procesamiento de datos in situ para reducir la cantidad de datos que se intercambian con otras unidades.
Una característica importante es que el modulo ya tiene embebidos los controladores de Wifi y Bluetooth, con lo que se tiene acceso a protocolos de alto ancho de banda para la comunicación con Internet, asi como de baja carga para la comunicación con otros sensores, adicionalmente tiene el soporte para otros protocolos seriales como I2C, SPI y UART para la implementación de otros canales de comunicación alambrados o inalámbricos.

La principal limitante de esta plataforma es el acceso a los terminales físicos para el prototipado rápido de las aplicaciones, ya que los pines están disponibles en su solo conector de 70 posiciones, por lo que se requiere de una tarjeta adicional para un acceso mas cómodo de los pines; Intel pone a disposición una tarjeta de extensión compatible con Arduino para dicho propósito con lo que se tiene acceso no solo a los pines sino a la interfaz USB para la gestión de la tarjeta.
Una característica adicional de esta tarjeta es que su diseño incluye el circuito gestor de la energía con lo que es posible acoplar múltiples fuentes de poder al modulo, desde baterías, a fuentes de baja potencia (energy harvesting) con lo que se garantiza la movilidad de las aplicaciones desarrolladas con esta tarjeta.


SPARK
Es una herramienta diseñada para ser fácilmente usada por usuarios no técnicos, además de brindar las mejores características de poder de procesamiento para los usuarios avanzados, ya que brinda distintos mecanismos para su programación.
La tarjeta de desarrollo de Spark es de hardware abierto, y combina el poder de procesamiento de un microcontrolador ARM Cortex M3, con un chip wifi broad com, que administra el controlador de red y libera recursos al microcontrolador principal; ya que las especificaciones de diseño son abiertos estas se pueden usar para el prototipado y para la integración en soluciones finales.










Una de las principales ventajas de este modulo es su diversidad de mecanismos disponibles para su programación, ya que al soportar el lenguaje wiring (lenguaje de arduino), C/C++ y ensamblador es posible crear código para este modulo con: un IDE de Arduino, entorno que puede resultar muy familiar para los que tienen alguna experiencia con esta plataforma, por otro lado se puede acceder vía el Spark Web ID, que integra todas las herramientas necesarias para que se puede trabajar usando un navegador, esta es una adecuada ventaja ya que permite actualizar o reprogramar el modulo de forma remota siempre que este cuente con acceso a internet, por otro lado es posible llegar al modulo vía CLI (Interfaz de linea de comandos), para los que están mas familiarizados con la ejecución de comandos vía consola; otra forma de conectar con el modulo es por medio de la interfaz REST API integrada en el dispositivo, con lo que es posible usar funciones desde aplicaciones móviles y web, por ultimo todas las librerias, plantillas y otros recursos estan disponibles para optimizar el funcionamiento del modulo a las condiciones de diseño definidas por el usuario.
La principal limitación de esta plataforma es la disponibilidad de pines del modulo lo que es coherente con el relativo bajo costo de la unidad, lo que implica que para diseños mas complejos es necesario crear extensiones, el consumo de energía es muy reducido y existen muchas formas para usuarios avanzados de optimizarlo.

A pesar que existen otras plataformas potentes para el desarrollo de aplicaciones con IoT, estas tres son las que brindan los recursos y herramientas mas faciles y versatiles para que usuarios no experimentados y experimentados puedan desarrollar de manera rápida su aplicaciones IoT.