Archivo de la categoría: Hardware

HW y Plataformas IoT

Hay empresas que fabrican el HW para IoT con comunicación integrada, pero también su propia plataforma específica, pero generalmente pueden intercambiarse con otras.

Particle

Web https://www.particle.io/. Particle es HW + Software + Conectividad

Hardware: https://store.particle.io/

IDE: https://docs.particle.io/tutorials/developer-tools/dev/

Device OS es el sistema operativo para el HW: https://www.particle.io/device-os/

Device Cloud es la plataforma: https://www.particle.io/device-cloud/

Serverless IoT with Particle and AWS: https://mike.lapidak.is/thoughts/serverless-iot-with-particle-and-aws

Pycom

Pycom es un fabricante de HW IoT programable en Python que también ofrece su propia plataforma.

Pycom tiene HW + plataforma + IDE y se programa en Python y lleva un ESP32 con micropython. Hay versiones con wifi o LoRa o Sigfox.

Hardware:

Software: https://pycom.io/solutions/software/

Red: https://pycom.io/solutions/network/

Pybites es la plataforma: https://pycom.io/solutions/software/pybytes/

LoPy (LoRa) con TTN: https://www.thethingsnetwork.org/docs/devices/lopy/

LoPy4 placa basada en ESP32 con comunicación LoRa, Sigfox, WiFi, Bluetooth: https://pycom.io/product/lopy4/

Los SiPy disponen de conectividad Sigfox que además incluyen WiFi y BLE para desarrollo con micropython:

Campaña Kickstarter: https://www.kickstarter.com/projects/pycom/pylife?ref=582489&token=8c77e87b

Mysensors.org

Web https://www.mysensors.org/

MySensors es una comunidad de hardware y software de código abierto centrada en la domótica y la Internet de los objetos.

Estamos aquí para ayudar a las personas que desean crear sensores y actuadores originales y asequibles basados en componentes como Arduino, ESP8266, Raspberry Pi, NRF24L01+ y RFM69.

Proporcionamos instrucciones de construcción fáciles de seguir, ejemplos de código listo para usar y diseños de hardware de código abierto adaptables. Todo esto se ejecuta en la biblioteca de software MySensors para una comunicación segura que ha sido probada en batalla con más de 20 de los controladores de automatización del hogar líderes en el mercado.

Hardware: https://www.mysensors.org/hardware

Controladores/plataformas: https://www.mysensors.org/controller

PHPoC

PHPoC: https://www.phpoc.com/index.php

PHP on Chip: https://www.phpoc.com/what_is_phpoc.php

Productos: https://www.phpoc.com/products.php

Comprar: https://www.3dsoma.com/es/96-phpoc

Más sobre el lenguaje de programación: https://www.phpoc.com/support/manual/phpoc_vs_php/contents.php?id=overview

Artik

Samsung Artic, la plataforma de IoT de Samsung: https://www.artik.io/

Módulos HW: https://www.artik.io/modules/

Artik Cloud: https://artik.cloud/

Más información:

Uso de plataforma artik:

Libelium

Empresa IoT afincada en Zaragoza

Web: http://www.libelium.com/

HW

Plataforma: http://www.libelium.com/cloud-services/services-cloud-manager/

Waspmote: es el arduino con muchos sensores y conectividades:

Plug and sense: ya integrado el waspmote: http://www.libelium.com/products/plug-sense/technical-overview/

Meshlium es el gateway que conecta a la red pública la red privada de sensores que tengo

Se integra con plataforma de terceros como bluemix, iotsens, etc…

Y luego la parte de aficionados https://www.cooking-hacks.com/

Anuncios

Dispositivos Hardware IoT

En este curso vamos a usar Arduino u otras placas compatible como HW de sensorización y actuación en IoT, pero existen otros microcontroladores o PLCs que haría la misma funcionalidad.

Dispositivos Hardware, son los dispositivos que van a medir y los que van a interactuar con el exterior. El elemento HW programable capaz de interactuar con estos dispositivos es el microcontrolador o el microprocesador.

Hay tres clases de dispositivos IoT:

  • Los dispositivos más pequeños son los controladores embedded de 8 bits System-On-Chip (SOC). Un buen ejemplo de este Open Source hardware es Arduino. Por ejemplo: Arduino Uno platform, este tipo de HW no suelen llevar sistema operativo (SO).
  • El siguiente nivel son los dispositivos con una arquitectura de 32 bits como los chips de Atheros y ARM. Normalmente estos dispositivos se basan en plataformas de Linux embedded, cómo OpenWRT u otros sistemas operativos embedded (Muchas veces incluyen pequeños routers domésticos y derivados de estos). En algunos casos, no corren ningún SO. Por ejemplo: Arduino Zero o Arduino Yun.
  • Las plataformas IoT con más capacidad son los sistemas completos de 32 y 64 bits, también se les denomina Single-Board-Computer (SBC). Estos sistemas, como Raspberry Pi o BeagleBone, pueden correr varios SO como Linux o Android. En muchos casos, estos son Smartphone o algún tipo de dispositivo basado en tecnologías móviles. Estos dispositivos pueden comportarse como Gateways o puentes para dispositivos más pequeños. Por ejemplo: un wearable que se conecta vía Bluetooth a un Smartphone o a una Raspberry Pi, es típicamente un puente para conectarse a Internet.

Además a esta lista de dispositivos podemos añadir los Microcontroladores Industriales o PLCs, softPLCs o cualquier dispositivo que pueda conectar a internet y del que pueda obtener datos como un power meter como http://circutor.com/en/products/metering o un dispositivo con interfaz SNMP.

Otro tipo de HW IoT son los Gateway. Un Gateway IoT es un dispositivo físico o un programa de software que sirve como punto de conexión entre la nube y los controladores, sensores y dispositivos inteligentes. Todos los datos que se mueven a la nube, o viceversa, pasan por el gateway, que puede ser un dispositivo de hardware dedicado o un programa de software. Un gateway IoT también puede denominarse pasarela inteligente o nivel de control.

A estos dispositivos o nos nodos sensores se les lama también motes (short for remote) https://en.wikipedia.org/wiki/Sensor_node

Este es el primer elemento, es que está más cerca de las “cosas” es el HW que se encarga de medir e interactuar con las “cosas” y procesar esos datos. Este dispositivo puede tener conectado otros hardware como:

Programación de los dispositivos IoT

Un sistema operativo IoT es un sistema operativo diseñado para funcionar dentro de las restricciones propias de los dispositivos de Internet of Things, incluidas las restricciones de memoria, tamaño, potencia y capacidad de procesamiento. Los sistemas operativos de IO son un tipo de sistema operativo integrado, pero por definición están diseñados para permitir la transferencia de datos a través de Internet.

ARM Mbed es una plataforma y un sistema operativo para dispositivos conectados a Internet basado en microcontroladores ARM Cortex-M de 32 bits. Estos dispositivos también se conocen como dispositivos de Internet of Things. El proyecto es desarrollado en colaboración por Arm y sus socios tecnológicos.

RTOS sistemas operativos en Tiempo real para sistemas embebidos, generalmente basados en linux.

Buen resumen de lo necesario para saber sobre sistemas embebidos para IoT a nivel de HW http://so-unlam.com.ar/wiki/index.php/PUBLICO:Sistemas_embebidos_e_Internet_de_las_Cosas

Guia para elegir el mejor HW IoT: https://www.ibm.com/developerworks/library/iot-lp101-best-hardware-devices-iot-project/index.html

Hardware IoT

El HW libre por excelencia es Arduino como microcontrolador y Raspberry Pi como microprocesador, con menor potencia física pero mayor potencia de cálculo.

Dentro del HW libre no solo debemos quedarnos con Arduino, sino que existen otros dispositivos, incluso algunos son compatibles y se programan igual que Arduino:

Más HW IoT:

¿Conoces alguna más?

En el caso de HW libre, el siguiente paso es una personalización del HW mediante el diseño de HW como Eagle o Kicad

HW IoT Industrial

En el mundo industrial se está incorporando el IoT con la denominación IIoT (Industrial Internet of Things) ya sea con dispositivos basados en HW libre o los fabricantes de Autómatas están incorporando comunicaciones más abiertas a sus dispositivos.

PLC basado en Arduino: https://www.industrialshields.com/

Artículo de Industrial Shields sobre Arduino como aplicación de PLC: http://blog.industrialshields.com/es/iot-in-industry-improves-reliability-equipment/

PLCs basados en Arduino: https://industruino.com/

PLC basado en Arduino: http://www.winkhel.com/

Carcasa para Arduino y Raspberry Pi en la industria: Arduibox: http://www.hwhardsoft.de/english/webshop/raspibox/#cc-m-product-10145780397

SIMATIC IOT2020: gateway de Siemens basado en Arduino para futuras aplicaciones industriales: http://es.rs-online.com/web/p/kit-de-desarrollo-de-iot/1244037/ y aplicaciones https://www.rs-online.com/designspark/simatic-iot2020.

Simatic IoT 2040: https://w3.siemens.com/mcms/pc-based-automation/en/industrial-iot/Documents/simatic-ioc2040-flyer-en.pdf

Los otros PLCs SBC (Single Board Computer): http://www.infoplc.net/blogs-automatizacion/item/102505-plc-single-board-computer

OpenPLC Project: http://www.openplcproject.com/

Autómatas con MQTT: http://www.unitronics.com/ y modelo nistream https://unitronicsplc.com/unistream-series-unistream5/

ABB PM556, automata de ABB abierto: http://new.abb.com/drives/es/noticias-y-casos-de-exito/impulsa-el-internet-de-las-cosas-los-servicios-y-las-personas

Raspberry Pi en IoT

Qué es Raspberry Pi

Una Raspberry Pi es una placa de desarrollo basada en linux, pero a efectos de todos se trata de un ordenador con linux completo.

Raspberry nació con un propósito: incentivar la enseñanza de informática en el entorno docente. Es un ordenador muy pequeño, del tamaño de una tarjeta, muy económico y también muy conocido para crear prototipos. Con esta plataforma de desarrollo se gestiona una gran cantidad de datos y es especialmente atractiva para la creación de aplicaciones móviles (Apps) donde el peso de la interfaz gráfica es muy importante. Está muy indicada, además, para proyectos multimedia basados en Linux.

En 2009 se creó la Fundación Raspberry Pi en Reino Unido y dos años más tarde comenzaron a fabricarse las primeras placas prototipo. El éxito fue tan grande que los fundadores trasladaron su producción a Gales, de donde salen miles de dispositivos al día. Existen varios modelos de placas y su popularidad ha generado que salgan al mercado diversidad de accesorios que suman funcionalidades a la placa base, al igual que Arduino.

La placa Raspberry se utiliza, como Arduino, en entornos de robótica o domótica, pero también como servidor de archivos. Es otra opción dentro del IoT y es muy interesante cuando el objetivo es procesar y tratar muchos datos. Cualquiera de ellos, Arduino o Raspberry, ofrece fórmulas eficaces para multitud de proyectos, pero todavía es difícil establecer su límite al estar en constante evolución.

Pero además, la Raspberry Pi 3 viene cargada con tecnología adicional para que podamos conectar nuestros proyectos al mundo de Internet de las Cosas.

  • 11n Wireless LAN
  • Bluetooth 4.0
  • Bluetooth Low Energy (BLE)

Estas nuevas características son precisamente las que nos van a permitir cubrir nuestras necesidades de conexión de forma inalámbrica a nivel de red local LAN y acceso a Internet, gracias al WiFi, y a nivel de comunicación con sensores y actuadores, gracias al Bluetooth. La Raspberry Pi 3 nos pone en bandeja todo lo necesario para comenzar a construir proyectos para Internet de las Cosas y aprender multitud de cosas, como programación, comunicaciones, electrónica, etc.

Buena introducción a Raspberry Pi:

Más información:

Marca powered by raspberry pi: https://www.hwlibre.com/powered-by-raspberry-pi-el-nuevo-sello-de-calidad-de-raspberry-pi/

Webs importantes de Raspberry Pi:

Arduino vs Raspberry Pi

Ver: https://aprendiendoarduino.wordpress.com/2017/06/19/arduino-vs-raspberry-pi-3/

Modelos Raspberry Pi

Raspberry Pi tiene diverso hardware. Productos Raspberry Pi: https://www.raspberrypi.org/products/

Hardware: https://www.raspberrypi.org/documentation/hardware/

Hardware Guide: https://www.raspberrypi.org/learning/hardware-guide/

Más información:

Modelos:

  • Raspberry Pi (1) Model A
  • Raspberry Pi (1) Model A+
  • Raspberry Pi (1) Model B
  • Raspberry Pi (1) Model B+
  • Raspberry Pi 2 Model B
  • Raspberry Pi 3 Model B
  • Raspberry Pi 3 Model B+
  • Raspberry Pi Zero (Hay dos versiones 1.2 y 1.3)
  • Raspberry Pi Zero W
  • Raspberry Pi Compute Module
  • Raspberry Pi Compute Module 3
  • Raspberry Pi Compute Module Lite

Tablas comparativas:

GPIO

Del mismo modo que Arduino disponía de una serie de pines que podíamos conectar al mundo exterior para leer o escribir, Raspberry dispone de otra serie de pines homólogos que en la jerga habitual de la RPI se llaman GPIO (General Purpose Input Output).

GPIO: https://www.raspberrypi.org/documentation/hardware/raspberrypi/gpio/README.md

La cantidad de pines disponibles en el GPIO ha variado de unas versiones a otras, manteniendo la compatibilidad con las versiones anteriores para evitar problemas, y a grandes rasgos ha habido dos versiones de GPIO. La gran variación fue de la Raspi 1 a la Raspi 2 que aumentó el número de pines disponibles y que básicamente se pueden ver aquí:

A esta forma de numerar se le suele conocer como modo GPIO, Pero surgió otra forma de numerar no de acuerdo a la posición de los pines en la salida, sino a la posición de los pines correspondientes en el chip Broadcom que es la CPU de la Raspberry, y a esta segunda manera se la llama modo BCM.

Nos encontramos con dos formas distintas de referirse a los pines, GPIO según los números del conector externo o BCM según los pines del chip que revuelven las posiciones. No tiene por qué ser mejor una que otra pero es importante asegurarse de cuál de las dos se está usando.

Disposición de los pines en la placa:

Pinout: https://pinout.xyz/

Más información:

IMPORTANTE:Todos los IO ports son de 3.3V, así que se debe tener cuidado.

Especificaciones eléctricas del GPIO: http://www.mosaic-industries.com/embedded-systems/microcontroller-projects/raspberry-pi/gpio-pin-electrical-specifications

Iconos de alerta de firmware: https://www.raspberrypi.org/documentation/configuration/warning-icons.md

Para manejar los pines de GPIO la mejor manera de usarlos es en Python mediante el uso de librerías. Veremos más adelante como usarlo en el apartado de programación y manejo.

Arduino en IoT

Arduino se ha convertido una figura destacada e incluso uno de los impulsores del IoT y no por casualidad, sino que  por sus características es un HW con gran capacidad para usar en proyectos de IoT.

Características de Arduino para IoT

  • Barato y rápido prototipado.
  • HW libre y por lo tanto es modificable para que consuma menos y para hacer un HW final de características industriales.
  • Disponibilidad de HW de comunicaciones de todo tipo para conectar con Arduino. Nuevas tecnologías de comunicación llegan antes que para elementos comerciales
  • Librerías y SW público para su reutilización o adaptación.
  • Flexibilidad en la programación.
  • Apoyo de la comunidad.

No en vano cuando se busca IoT (Internet de las cosas) enseguida aparece Arduino.

Arduino sirve para recoger datos no solo del entorno sino de máquinas o elementos externos y comunicarnos con Internet, mediante su consumo eléctrico, contactos de alertas externas, su temperatura, su posición, etc…

Arduino nos permite de una forma sencilla y barata poder conectar entre sí elementos cotidianos para manejarlos y añadir sensores a cualquier elemento y en cualquier ubicación.

Qué es Arduino: https://aprendiendoarduino.wordpress.com/2018/04/02/que-es-arduino-7/

Hardware Arduino:

Hardware Arduino IoT

La familia de Arduino MKR son una serie de placas con un factor de forma diferente al de Arduino mucho más pequeño y basados todos en el microcontrolador de 32 bits de Atmel SAMD21. Estas placas están pensadas principalmente para IoT.

MKR Family: https://store.arduino.cc/arduino-genuino/arduino-genuino-mkr-family

Arduino MKRZero

Producto: https://store.arduino.cc/arduino-mkrzero

Primero modelo de la familia MKR y heredero del Arduino Zero.

Arduino MKR1000 WIFI

Producto: https://store.arduino.cc/arduino-mkr1000

Versión para IoT con procesador Atmel ARM Cortex M0+ de 32bits ATSAMW25 que es el mismo procesador que Genuino Zero pero con wifi integrado, chip de cifrado y antena integrada.

El ATSAMW25 está compuesto por tres principales bloques:

  • SAMD21 Cortex-M0+ 32bit low power ARM MCU
  • WINC1500 low power 2.4GHz IEEE® 802.11 b/g/n Wi-Fi (mismo que el wifi 101 shield)
  • ECC508 CryptoAuthentication

Arduino MKR WiFi 1010

Producto: https://store.arduino.cc/arduino-mkr-wifi-1010

El MKR WIFI 1010 es una mejora significativa del MKR 1000 WIFI. Está equipado con un módulo ESP32 fabricado por U-BLOX. Esta placa tiene como objetivo acelerar y simplificar la creación de prototipos de aplicaciones de IO basadas en WiFi gracias a la flexibilidad del módulo ESP32 y su bajo consumo de energía.

La placa tienes estos 3 bloques principales:

  • SAMD21 Cortex-M0+ 32bit Low Power ARM MCU;
  • U-BLOX NINA-W10 Series Low Power 2.4GHz IEEE® 802.11 b/g/n Wi-Fi; and Bluetooth
  • ECC508 Crypto Authentication.

Arduino MKR FOX 1200

Producto: https://store.arduino.cc/arduino-mkrfox1200

Arduino anunciado en abril de 2017. En una placa de desarrollo pensada para el IoT con conectividad Sigfox. Comparte muchas características con otras placas de la familia MKR como em microcontrolador SAM D21 32-bit Cortex-M0+.

Incluye un módulo ATA8520 con conectividad sigfox de amplia cobertura y bajo consumo capaz de funcionar durante 6 meses con dos pilas AA. También incluye una suscripción por dos años a la red Sigfox: http://www.sigfox.com/en

Web: https://blog.arduino.cc/2017/04/18/introducing-the-arduino-mkrfox1200/

Más información sobre el Arduino MKRFOX1200 en el artículo: https://www.aprendiendoarduino.com/2018/03/05/arduino-mkrfox1200/

Arduino MKR WAN 1300

Producto: https://store.arduino.cc/mkr-wan-1300

Presentado el 25 de septiembre de 2017 en la maker faire de NY: https://blog.arduino.cc/2017/09/25/introducing-the-arduino-mkr-wan-1300-and-mkr-gsm-1400/

Arduino + LoRa:

Arduino MKR GSM 1400

Producto: https://store.arduino.cc/mkr-gsm-1400

Presentado el 25 de septiembre de 2017 en la maker faire de NY: https://blog.arduino.cc/2017/09/25/introducing-the-arduino-mkr-wan-1300-and-mkr-gsm-1400/

Arduino + GSM:

Arduino MKR NB 1500

Producto: https://store.arduino.cc/arduino-mkr-nb-1500

El nuevo estándar Narrow Band IoT, con el ecosistema Arduino fácil de usar. Totalmente compatible con las clases Narrow Band IoT NB y las redes LTE CAT M1.

Arduino MKR Vidor 4000

Producto: https://store.arduino.cc/arduino-vidor-4000 :

El MKR VIDOR 4000 es altamente configurable y potente, y puede realizar procesamiento digital de audio y video de alta velocidad.

El MKR VIDOR 4000 puede configurarlo de la manera que desee; esencialmente puede crear su propia tarjeta controladora.

Viene cargado de hardware y potencial:

  • un SRAM de 8 MB
  • un chip Flash QSPI de 2 MB – 1 MB asignado para aplicaciones de usuario
  • un conector Micro HDMI
  • un conector para cámara MIPI
  • Wifi & BLE alimentado por U-BLOX NINA Serie W10.

También incluye la clásica interfaz MKR en la que todos los pines son accionados tanto por SAMD21 como por FPGA.

Además, tiene un conector Mini PCI Express con hasta 25 pines programables por el usuario.

La FPGA contiene 16K Logic Elements, 504 KB de RAM embebida y 56 multiplicadores de 18×18 bit HW para DSP de alta velocidad. Cada pin puede conmutar a más de 150 MHz y puede ser configurado para funciones tales como UARTs, (Q)SPI, PWM de alta resolución/alta frecuencia, codificador de cuadratura, I2C, I2S, Sigma Delta DAC, etc.

La FPGA integrada también se puede utilizar para operaciones DSP de alta velocidad para el procesamiento de audio y vídeo. Esta tarjeta también incluye un Microchip SAMD21. La comunicación entre la FPGA y el SAMD21 es directa.

Accesorios para Arduinos MKR

Y los IoT Bundles:

Configuración Arduino

Puesta en marcha y comprobación del entorno de programación de Arduino para utilizar en el curso.

Instalación del IDE y blink para comprobar que funciona:

Programación Arduino

Librerías

Mandar Datos a un Servidor con Arduino

Vamos a conectar Arduino a un servidor y mandar datos para que los muestre en una gráfica. Mandar datos a https://www.aprendiendoarduino.com/servicios/datos/graficas.html

Conexión:

Poner este código en Arduino: https://github.com/jecrespo/aprendiendoarduino-servicios/blob/master/arduino_code/data_logger_temperatura_DHCP/data_logger_temperatura_DHCP.ino

Ver los datos en:

Tecnologías IoT

Pensando en los actores que participan en el ecosistema IoT se pueden identificar las siguientes tecnologías

Dispositivos Hardware, son los dispositivos que van a medir y los que van a interactuar con el exterior.

  • Arduino
  • ESP8266, HW low cost con wifi
  • Otras plataformas HW para IoT: https://www.postscapes.com/internet-of-things-hardware/
  • HW y conectividades de http://www.libelium.com/ son de Zaragoza y tienen buenas formaciones.
  • Diseño de HW como Eagle o KiCad, es el siguiente paso de Arduino a una personalización del HW
  • Android Things es una adaptación del Sistema Operativo Android para dispositivos que los desarrolladores quieran convertir en Inteligentes. Android Things, sistema operativo y development kit para HW de IoT https://developer.android.com/things/
  • RTOS sistemas operativos en Tiempo real para sistemas embebidos, generalmente basados en linux.
  • Autómatas o PLCs para la parte industrial y SoftPLCs

Conectividad, tecnologías para conectar el HW con Internet o una red

  • Zigbee
  • Sigfox
  • LoWaRan, LPWA
  • Bluetooth/wifi/NFC/ANT+ y beacons
  • Seguridad en la comunicaciones, es un de los retos de IoT
  • nRF24L01 is a highly integrated, ultra low power (ULP) 2Mbps RF transceiver IC for the 2.4GHz ISM (Industrial, Scientific and Medical) band.

Protocolos de comunicación, con los que comunicar el HW con el SW

  • Fiware
  • MQTT
  • API REST/HTTP
  • SNMP
  • Buses de campo industriales, modbus, etc…

Plataformas IoT,  para tratar los datos recogidos por nuestros sensores y almacenarlos. Estas plataformas tienen un HW y el SW que usan:

Encuesta: https://blogs.eclipse.org/post/benjamin-cab%C3%A9/key-trends-iot-developer-survey-2018

Servicios IoT, son los servicios que ofrecen las plataformas

  • Machine learning, inteligencia artificial en los dispositivos
  • Smart Metering
  • Open Data
  • Dashboards/Cuadros de mando
  • Almacenamiento de datos
  • Análisis de Datos
  • Visualización de Datos

Ejemplos de empresas en el ecosistema IoT:

Áreas involucradas en IoT

  • Electrónica
  • Desarrollo de HW embebido
  • Desarrollo de SW
  • Redes informáticas y de telecomunicaciones
  • Administración de sistemas
  • Sistemas de información, BDDs
  • Desarrollo web, cloud computing
  • Seguridad informática
  • Big data: dashboards, análisis de datos, procesamiento de datos, etc.
  • Dominio del campo aplicado: electricidad, electrónica de control, mecánica, física, mecatrónica, medicina, agronomía, etc.
  • Desarrollo de producto
  • etc…

Recursos open source IoT: