Archivo de la categoría: Hardware

GPIO Raspberry Pi

Del mismo modo que Arduino dispone 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.

Web: https://www.raspberrypi.org/documentation/usage/gpio/

Disposición de los pines en la placa:

En Raspberry Pi Zero:

Pinout: https://pinout.xyz/ 

Más información:

Especificaciones eléctricas GPIO

Los pines trabajan con una tensión de 3,3 V y un consumo máximo de corriente de 16 mA. Esto significa que podemos suministrar energía de forma segura desde un solo pin GPIO a través de una resistencia, uno o dos LEDs.

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

Para alimentar cualquier otra cosa que requiera más corriente, como un motor de corriente continua, es necesario utilizar componentes externos para evitar dañar el GPIO.

Salidas: Un pin GPIO designado como pin de salida puede ajustarse a alta (3V3) o baja (0V).

Entradas: Un PIN GPIO designado como PIN de entrada puede ser leída como alta (3V3) o baja (0V). Esto es más fácil con el uso de resistencias internas de pull-up o pull-down. Los pines GPIO2 y GPIO3 tienen resistencias pull-up fijas, pero para otros pines esto puede ser configurado en el software.

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

Plantilla GPIO: http://rasp.io/portsplus/

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

Accesorio expansión GPIO:

Comprar: https://www.amazon.es/ASHATA-Accesorios-Expansion-Raspberry-Breadboard/dp/B07J1SBD6G/

Advertencia: aunque la conexión de componentes simples a los pines GPIO es perfectamente segura, es importante tener cuidado en la forma de cablear las cosas. Los LEDs deben tener resistencias para limitar la corriente que pasa a través de ellos. No use 5V para los componentes de 3V3. No conecte los motores directamente a los pines GPIO, en su lugar utilice un circuito de puente H o una placa controladora de motores.

Manejar GPIO

Se puede acceder a una referencia práctica de los GPIO abriendo una ventana de terminal y ejecutando el comando pinout. Esta herramienta es proporcionada por la librería GPIO Zero Python, que se instala por defecto en la imagen de escritorio de Raspbian, pero no en Raspbian Lite.

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

Pueden tener una dirección para recibir o enviar corriente (entrada, salida respectivamente) y todo esto es totalmente controlable por lenguajes de programación como Python, JavaScript, node-RED y otros.

Librería GPIOZero: https://gpiozero.readthedocs.io/en/stable/

Es posible controlar los pines de la GPIO usando un número de lenguajes y herramientas de programación. Vea las siguientes guías para empezar:

Para probar los pines del GPIO mediante línea de comandos: https://geekytheory.com/tutorial-raspberry-pi-gpio-parte-1-control-de-un-led

Simulador Raspberry Pi

Además puedes montar una máquina virtual con Raspbian. Puede crear un live disk, ejecutarlo en una máquina virtual o incluso instalarlo en el equipo. Descargar en https://www.raspberrypi.org/downloads/raspberry-pi-desktop/

Tutoriales instalar Raspbian en Virtualbox:

Hardware Raspberry Pi

La familia Raspberry Pi ha tenido 4 versiones, siendo el modelo actual el Raspberry Pi 4 B. El primer Raspberry Pi, modelo 1, tuvo varias versiones, A, B y B+, siendo el más habitual el B. Las versiones 2  solo tuvo versión B y la 3 tuvo varias versiones, A, B y B+.

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

Hardware adicional: 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 3 Model A+
  • Raspberry Pi 4 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 3+
  • Raspberry Pi Compute Module Lite

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:

Raspberry Pi 1

El modelo 1 tiene un SOC Broadcom BCM2835, chip gráfico VideoCore IV y procesador ARM11 ARM1176JZF-S de un núcleo a 700MHz, aunque podía hacerse overclock hasta 1000 MHz.

Raspberry Pi 2 Model B

La Raspberry Pi 2 B fue una versión actualizada del Raspberry Pi B cuyo principal cambio fue una potencia de cálculo muy superior. Monta un SOC Broadcom BCM2836, un procesador ARM Cortex A7 de cuatro núcleos a 900 MHz y 1Gb de SDRAM. Se mantienen el chip gráfico VideoCore IV.

Raspberry Pi 3 Model B+

La Raspberry Pi 3 B+ apareció en marzo del 2018 para actualizar el modelo anterior la Raspberry Pi 3 Model B y entre sus mejoras cuenta con un nuevo procesador y mejor conectividad, así que pasa de tener 1.2Ghz a tener 1.4Ghz y en cuanto a la conectividad inalámbrica ahora incorpora doble banda a 2,4GHz y 5GHz, y su nuevo puerto Ethernet se triplica, pasa de 100 Mbits/s en el modelo anterior a 300 Mbits/s en el nuevo modelo, también cuenta con Bluetooth 4.2 (Low Energy).

Raspberry Pi 3 Model A+

Fue anunciada en noviembre de 2018. Los modelos A+ presentan menores prestaciones a un menor precio. Cuenta con 512 MB de RAM (compartidos con la GPU VideoCore IV), un solo puerto USB y sin puerto de conexión de red por cable (RJ-45).

Nueva Raspberry Pi 3 model A+: https://www.raspberrypi.org/blog/new-product-raspberry-pi-3-model-a/

Raspberry Pi 3 model A+: https://www.raspberrypi.org/products/raspberry-pi-3-model-a-plus/

Tablas comparativas:

Raspberry Pi 4 Model B

La Raspberry Pi 4 Model B es una actualización mayor de lo que podemos ver a primera vista, el cambio de procesador a un ARM Cortex-172 con cuatro núcleos a 1,5 GHz también implicaba pasar de los 40 nm a los 28 nm. En consecuencia, todos los componentes y la potencia del dispositivo ha cambiado.

Fue anunciada en junio de 2019. Se han cambiado los puertos HDMI de tamaño completo por dos puertos microHDMI. Cuenta con la capacidad de manejar dos pantallas 4K a 60 Hz. Se ha incluido por primera vez USB 3.0, y el puerto Ethernet ya no está limitado a 300 Mbps. Tiene un procesador Broadcom nuevo hasta tres veces más eficiente que el anterior.

Raspberry Pi 4 viene con Bluetooth 5.0 y Wi-Fi 802.11ac para las conexiones inalámbricas. También se ha cambiado el conector microUSB de alimentación por un USB-C que suma 500 mA extra de energía para alcanzar un total de 1.2 A. Algunos detalles extra a tener en cuenta son por ejemplo el soporte para doble monitor con resolución 4K.

Se han puesto a la venta un total de tres modelos diferentes, que varían según la capacidad de la memoria RAM que trae. Son los siguientes modelos:

  • Raspberry Pi 4 con 1 GB de RAM: 35 dólares.
  • Raspberry Pi 4 con 2 GB de RAM: 45 dólares.
  • Raspberry Pi 4 con 4 GB de RAM: 55 dólares.

Web: https://www.raspberrypi.org/products/raspberry-pi-4-model-b/

Problemas con Raspberry Pi 4: https://raspberryparanovatos.com/articulos/problemas-raspberry-pi-4-y-soluciones/

Más información: 

Familia Raspberry Pi Zero

La familia Raspberry Pi Zero, una serie de modelos de muy pequeño tamaño y bajo coste, que los hacen interesantes para integración en dispositivos e IoT.

  • Raspberry Pi Zero tiene, a grandes rasgos, la misma potencia que un Raspberry Pi 1 B, en un tamaño muy inferior
  • Raspberry Pi Zero W es ena actualización del Raspberry Pi Zero original que añade Bluetooth 4.1 y Wifi 802.11n, manteniendo el resto de características

Alternativas a Raspberry Pi

Existen muchas alternativas de SBC a Raspberry Pi, la gran ventaja de Raspberry Pi el la mayor documentación y aportación de la comunidad en el hardware y software.

Las más famosas son:

Más información:

Otras placas similares a Raspberry PiQualcomm: https://developer.qualcomm.com/hardware/dragonboard-410c Soporta WIndows, Linux y Android.

Qué es Raspberry Pi

Raspberry Pi es un ordenador de placa reducida, ordenador de placa única u ordenador de placa simple (SBC) de bajo costo desarrollado en el Reino Unido por la Raspberry Pi Foundation. Se ha convertido en un hardware muy popular debido a su bajo coste y gran potencia ampliamente utilizado en proyectos IoT e Industria conectada.

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:

Ver magpi es la revista oficial y se puede descargar gratis: https://www.raspberrypi.org/magpi/

Todo lo necesario para empezar con Raspberry Pi: https://xataka.com/makers/cero-maker-todo-necesario-para-empezar-raspberry-pi

Documentación raspberry Pi: https://www.raspberrypi.org/documentation/

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:

Repositorio en Github

El repositorio: https://github.com/raspberrypi

Linux: https://github.com/raspberrypi/linux

Firmware: https://github.com/raspberrypi/firmware

Documentación: https://github.com/raspberrypi/documentation

Para ver los bugs y abrir nuevos: https://github.com/raspberrypi/documentation/issues

Calentamiento Raspberry Pi

Los problemas de sobrecalentamiento en las últimas Raspberry Pi son una realidad. Pueden aparecer incluso en reposo, pero lo más habitual es que hagan acto de presencia cuando se está exprimiendo al máximo su potencia.

La fuente del sobrecalentamiento en las tareas exigentes procedía directamente del procesador. Para resolver este problema existen kits de disipadores y ventilador, con esto conseguiremos mayor fiabilidad y estabilidad.

Más información:

Arranque USB

Documentación oficial: https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/msd.md 

Modos de arranque: https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/README.md

Qué puede hacer una Raspberry Pi

Raspberry Pi puede utilizarse en muchos aspectos y realizar diferentes funciones, alguno de los más conocidos son:

  • Servidor Web
  • Servidor BBDD
  • Ordenador de sobremesa
  • Media center
  • Top Table
  • Gateway VPN
  • Placa de desarrollo
  • Lectura sensores
  • Manejar actuadores
  • Home Automation (Domotica)
  • Robótica: https://piwars.org/ 
  • etc…

Como media server http://www.instructables.com/id/Raspberry-Pi-Media-Server-MiniDLNA/

Ideas para usar RPi en casa: http://hipertextual.com/2013/09/ideas-usar-raspberry-pi-casa

Raspberry Pi vs Arduino

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

Anexo I – Material Prácticas Cursos y Requisitos Técnicos

Para realizar cualquiera de los cursos de los itinerarios es necesario:

  • Un Ordenador PC o portátil por alumno con al menos un puerto USB accesible
  • El PC de cada alumno deberá tener un sistema operativo instalado, ya sea un sistema Windows o un sistema Linux. 
  • Acceso a Internet
  • Red Wifi
  • Espacio equipado con mobiliario adecuado al número de alumnos

Todo el software y documentación utilizado en el curso es libre con licencia creative commons o similar y publicado en https://www.aprendiendoarduino.com/

Listado de material orientativo para realizar las prácticas de cada itinerario por alumno:

Material Formación Itinerario Arduino

El material necesario para realizar las prácticas del curso consiste en un Arduino Starter Kit (https://www.arduino.cc/en/Main/ArduinoStarterKit) o similar compuesto por al menos:

  • 1x Arduino UNO Rev3 o equivalente
  • 1x Cable USB
  • 1x Breadboard/Protoboard
  • 1x Adaptador para la batería de 9 Voltios
  • 30x Puentes de conexión para la protoboard (jumpers)
  • 3x Fotorresistencias LDR
  • 3x Potenciometros de 10K o equivalentes
  • 3x Pulsadores
  • 1x Sensor de temperatura (TMP36, DHT11 o similar)
  • 1x Sensor de inclinación
  • 1x LCD alfanumérico I2C (16×2 caracteres)
  • 10x LED de diferentes colores
  • 1x Motor CC 6 o 9 Voltios
  • 1x Servo motor
  • 1x Piezo Buzzer
  • Varias Resistencias de diversas capacidades
  • 1x Módulo IMU MPU6050 o equivalente
  • 1x Módulo bluetooth HC-05 o equivalente
  • 1x Breakout board relé
  • 1x Shield Ethernet
  • 1x placa compatible ESP8266 (p.e. Wemos D1 Mini o NodeMCU)
  • Otros sensores para Arduino (p.e. infrarrojos, sensor de agua, etc…)

NOTA: se aconseja que los módulo sean de tipo breakout board fáciles de conectar

Material Formación Itinerario Raspberry Pi

  • 1x Raspberry Pi con Carcasa 
  • 1x tarjeta micro SD 16Gb
  • 1x cable alimentación 
  • 1x cable HDMI
  • 1x Adaptador GPIO a protoboard
  • 1x Breadboard/Protoboard
  • 30x Puentes de conexión para la protoboard (jumpers)
  • 3x Pulsadores
  • 3x Potenciometros de 10K o equivalentes
  • 1x Sensor de temperatura (TMP36, DHT11 o similar)
  • 1x Piezo Buzzer
  • 10x LED de diferentes colores
  • 1x Conversor analógico digital MCP3008 o equivalente
  • 1x Módulo IMU MPU6050 o equivalente
  • Otros dispositivos I2C (p.e. RTC, sonda temperatura, etc…)
  • Varias Resistencias de diversas capacidades

Material Formación Itinerario ESP8266/ESP32

  • 1x Wemos D1 min o NodeMCU o equivalente
  • 1x Wemos Wifi ESP32 OLED o equivalente
  • 1 x ESP32-CAM o equivalente
  • 1x shields para wemos D1 mini relé
  • 1x shields para wemos D1 mini neopixel
  • 1x shields para wemos D1 mini oled
  • 1x Cable USB
  • 1x Raspberry Pi con Carcasa 
  • 1x tarjeta micro SD 16Gb
  • 1x cable alimentación 
  • 1x cable HDMI
  • 1x Adaptador GPIO a protoboard
  • 1x Breadboard/Protoboard
  • 30x Puentes de conexión para la protoboard (jumpers)
  • 3x Fotorresistencias LDR
  • 3x Potenciometros de 10K o equivalentes
  • 3x Pulsadores
  • 1x Sensor de temperatura (TMP36, DHT11 o similar)
  • 10x LED de diferentes colores
  • 1x Piezo Buzzer
  • Varias Resistencias de diversas capacidades
  • 1x Módulo IMU MPU6050 o equivalente

Material Formación Itinerario IoT/Industria Conectada

  • 1x Arduino UNO Rev3 o equivalente
  • 1x Wemos D1 min o NodeMCU o equivalente
  • 1x shields para wemos D1 mini relé
  • 1x shields para wemos D1 mini oled
  • 1x Moteino con comunicación LoRa
  • 1x placa ESP32 con RFM95 868MHz por alumno (Adafruit Huzzah32, TTGO,…)
  • 1x gateway LoRaWAN 868MHz de interior por grupo
  • 1x Arduino MKR 1400 para conectividad GSM + SIM (p.e. hologram)
  • 1x Cable USB
  • 1x Breadboard/Protoboard
  • 30x Puentes de conexión para la protoboard (jumpers)
  • 3x Fotorresistencias LDR
  • 3x Potenciometros de 10K o equivalentes
  • 3x Pulsadores
  • 1x Sensor de temperatura (TMP36, DHT11 o similar)
  • 10x LED de diferentes colores
  • 1x Piezo Buzzer
  • Varias Resistencias de diversas capacidades
  • 1x Módulo IMU MPU6050 o equivalente
  • Otros sensores para Arduino (p.e. infrarrojos, sensor de agua, etc…)
  • Otros dispositivos I2C (p.e. RTC, sonda temperatura, etc…)

Opcionalmente:

  • 1x Módulo Ultra low power 2.4GHz RF nRF24L01+
  • 1x Kit XBee
  • 1x Arduino MKRWAN1300
  • 1x Servidor (VPS) por alumno

Material Formación Itinerario Digitalización Profesorado

  • 1x Arduino UNO Rev3 o equivalente
  • 1x Kit montaje escornabot y herramientas para montarlo
  • 1x Micro:bit
  • 1x Shield Micro:bit para expansión
  • 1x Raspberry Pi con Carcasa 
  • 1x tarjeta micro SD 16Gb
  • 1x cable alimentación 
  • 1x cable HDMI
  • 1x Adaptador GPIO a protoboard
  • 1x Cable USB
  • 1x Breadboard/Protoboard
  • 30x Puentes de conexión para la protoboard (jumpers)
  • 3x Fotorresistencias LDR
  • 3x Potenciometros de 10K o equivalentes
  • 3x Pulsadores
  • 1x Sensor de temperatura (TMP36, DHT11 o similar)
  • 1x Sensor de inclinación
  • 1x LCD alfanumérico I2C (16×2 caracteres)
  • 10x LED de diferentes colores
  • 1x Servo motor
  • 1x Piezo Buzzer
  • Varias Resistencias de diversas capacidades
  • 1x Módulo IMU MPU6050 o equivalente
  • 1x Módulo bluetooth HC-05 o equivalente
  • 1x Breakout board relé
  • 1x placa compatible ESP8266 (p.e. Wemos D1 Mini o NodeMCU)
  • Otros sensores para Arduino (p.e. infrarrojos, sensor de agua, etc…)
  • Otros dispositivos I2C (p.e. RTC, sonda temperatura, etc…)
  • Otros Actuadores y periféricos (p.e. teclado, pantalla TFT, etc…)

Material Formación Otros Cursos

Material común:

  • 1x Arduino UNO Rev3 o equivalente
  • 1x Cable USB
  • 1x Breadboard/Protoboard
  • 30x Puentes de conexión para la protoboard (jumpers)
  • 3x Fotorresistencias LDR
  • 3x Potenciometros de 10K o equivalentes
  • 3x Pulsadores
  • 1x Sensor de temperatura (TMP36, DHT11 o similar)
  • 1x Sensor de inclinación
  • 1x LCD alfanumérico I2C (16×2 caracteres)
  • 10x LED de diferentes colores
  • 1x Piezo Buzzer
  • Varias Resistencias de diversas capacidades
  • Otros sensores para Arduino (p.e. infrarrojos, sensor de agua, etc…)
  • Otros dispositivos I2C (p.e. RTC, sonda temperatura, etc…)
  • Otros Actuadores y periféricos (p.e. teclado, pantalla TFT, etc…)

PLCs Basados en Arduino:

  • 1x M-Duino básico
  • 1x Controllino o similar
  • 1x Revolution Pi

Cursos Node-RED:

  • 1x Raspberry Pi con Carcasa 
  • 1x tarjeta micro SD 16Gb
  • 1x cable alimentación 
  • 1x cable HDMI
  • 1x Adaptador GPIO a protoboard
  • 1x Wemos D1 min o NodeMCU o equivalente
  • 1x shields para wemos D1 mini relé
  • 1x shields para wemos D1 mini neopixel
  • 1x shields para wemos D1 mini oled

Dispositivos Hardware IoT

En este curso vamos a usar Arduino y otras placas compatibles como HW de sensorización y actuación en IoT y módulos de comunicación, pero existen otros microcontroladores, PLCs y otro hardware en general que haría la misma funcionalidad.

Podemos dividir el HW IoT en tres grandes conjuntos:

  • Placas controladoras con CPU/microcontrolador con cierta capacidad de cómputo.
  • Sensores y actuadores, conectados a los controladores para leer o actuar sobre el mundo físico
  • Módulos de comunicación, que permiten conectarse a distintos tipos de redes el HW IoT

Dispositivos Hardware para IoT, 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 controlades IoT: 

  • Los dispositivos más pequeños son los controladores embedded de 8/16/32 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/64 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 este http://circutor.com/en/products/metering o también una gran máquina enfriadora con interfaz de red como https://www.vertiv.com/en-asia/products-catalog/thermal-management/free-cooling-chillers/liebert-hpc-l-and-hpc-m-freecooling-chillers/.

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 

Los cálculos que hacen estos dispositivos se denomina Edge Computing. Hasta ahora en la mayoría de los casos las grandes plataformas de Cloud Computing se encargaban de hacer ese “trabajo sucio” de analizar los datos recolectados por los sensores y dispositivos IoT.

La Edge Computing se refiere de forma específica a cómo los procesos computacionales se realizan en los “dispositivos edge”, los dispositivos IoT con capacidad de análisis y procesos como routers o gateways de red, por ejemplo.

La eficiencia de este paradigma no es óptima en muchos casos en los que los propios nodos de la red pueden analizar esos datos para evitar ese paso por la nube. Permite que los datos producidos por los dispositivos de la internet de las cosas se procesen más cerca de donde se crearon en lugar de enviarlos a través de largas recorridos para que lleguen a centros de datos y nubes de computación.

Si hay un campo en el que este tipo de filosofía tenga sentido, ese es el del coche autónomo. Estos “centros de datos sobre ruedas” no paran de recolectar información sobre sus sistemas y su entorno, y toda esa información debe ser procesada en tiempo real para que podamos disfrutar de una conducción autónoma óptima y segura. El coche autónomo no puede estar esperando a comunicarse con la nube y a esperar la respuesta: todo ese proceso y análisis de datos hay que hacerlo en tiempo real, y es ahí donde la Edge Computing entra en juego, confirmando el importante papel que el ordenador central del coche tiene para aglutinar, analizar y dar respuesta a las necesidades de la conducción autónoma en cada momento. Intel estima que un coche autónomo podría acabar generando 4 TB de datos al día que incluye: cámaras, lidar, GPS, radar, etc…

Más información:

Programación de los dispositivos IoT

Estadística de los lenguajes de programación usados en los dispositivos HW IoT:

Firmware es un programa informático que establece la lógica de más bajo nivel que controla los circuitos electrónicos de un dispositivo de cualquier tipo. Está fuertemente integrado con la electrónica del dispositivo, es el software que tiene directa interacción con el hardware, siendo así el encargado de controlarlo para ejecutar correctamente las instrucciones externas. Ver https://es.wikipedia.org/wiki/Firmware

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 IoT 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

PLC basado en Raspberry Pi: https://revolution.kunbus.com/

Otro PLC basado en Raspberry Pi: https://www.unipi.technology/ 

Sensores y Actuadores

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:

Módulos de Comunicación

Los dispositivos IoT deben tener una comunicación mediante algún tipo de protocolo y este módulo puede estar integrado o ser una expansión.

Algunos de los módulos usados en IoT

  • Ethernet
  • Modbus
  • ZigBee
  • XBee
  • WiFi
  • Bluetooth
  • Thread
  • Red de telefonía móvil (2/3/4/5G)
  • 6LoWPAN
  • LoRaWAN
  • Z-Wave
  • NFC
  • nRF24
  • Wize
  • Sigfox

Otros Módulos

Otros módulos muy importantes que van asociados al HW IoT son:

  • Power management (lowpower)
  • Componentes de identificación y seguridad (ATSHA204A, ATECCX08A, 24AA02E64T,…)