Archivo de la categoría: Hardware

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.

Anuncios

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:

Kit de Prácticas UR-Maker

El kit de prácticas disponible es: https://es.aliexpress.com/item/UNO-KIT-Upgraded-version-of-the-For-Starter-Kit-the-RFID-learn-Suite-Stepper-Motor-ULN2003/1207142899.html

Driver Arduino UNO de este kit:

Descripción:

  • 1 X Arduino UNO
  • 1 X Cable USB
  • 1 X Jump Cable
  • 1 X Breadboard
  • 5 X luz LED
  • 1 Pack resistencia
  • 1 X hembra a macho línea dupond
  • 1 X potenciómetro
  • 1 X Buzzer
  • 1X 74HC595 (Shift Register)
  • 1 X receptor de infrarrojos
  • 1 X ds18b20
  • 1 X Sensor de llama
  • 1 X interruptor de bola
  • 1 X fotoresistor
  • 1 X botón clave
  • 1 X control Remoto
  • 1 X tubo de pantalla de 4 dígitos
  • 1 X 8*8 Módulo de matriz de puntos
  • 1 X 1-Tubo de visualización de dígitos
  • 1 X convertidor de motor paso a paso
  • 1 X motor paso a paso
  • 1 X 9g Servo
  • 1 X IIC 1602 LCD
  • 1 X Módulo de joystick XY
  • 1 X Módulo de temperatura
  • 1 X Módulo de prueba de agua
  • 1 X módulo RFID
  • 1 X llavero RFID
  • 1 X Tarjeta blanca RFID
  • 1 X Módulo de sonido
  • 1 X módulo de relé
  • 1 X Módulo de reloj
  • 1 X 4*4 tablero clave
  • 1 X Módulo de color RGB 3
  • 1 X 9 V batería Snap

Arduino UNO, Nano y NodeMCU ESP8266 a buen precio

Una de las preguntas que me hacen con más frecuencia es donde comprar Arduinos a buen precio. Una de las opciones para comprar Arduinos es GearBest https://www.gearbest.com/

Aquí os dejo tres Arduinos que puedes usar en muchos proyectos y que en función del proyecto y sus necesidades doy pistas para optar por uno u otro.

Arduino UNO

Arduino UNO es el Arduino más popular y del que existe más documentación en Internet. Es el Arduino perfecto para iniciarse y al tener el factor de forma estándar de Arduino puedes ponerle alguno de los miles de shields disponibles en el mercado, aquí puedes ver algunos ejemplos https://www.gearbest.com/arduino-shields-_gear/

Un detalle de estos Arduinos es que es necesario instalarse el driver de conversor de puerto serial a USB. Este Arduino dispone de un chip CH340G como conversor serial a USB y por lo tanto deberemos usar el driver de este chip y que podemos encontrar su última versión en http://www.wch.cn/download/CH341SER_EXE.html. Enlaces de descarga:

En este enlace puedes comprarlo por alrededor de 4€ y con envío gratuito a España: https://www.gearbest.com/boards-shields/pp_228782.html?wid=1433363

Arduino Nano

Arduino Nano es el Arduino ideal para los proyectos donde es necesario un Arduino con el microcontrolador ATmega328P del Arduino UNO pero con un tamaño mucho más pequeño, menor consumo e incluso alimentar mediante batería.

Al igual que el Arduino UNO, este Arduino Nano dispone de un chip CH340G como conversor serial a USB y por lo tanto deberemos usar el driver de este chip y que podemos encontrar su última versión en http://www.wch.cn/download/CH341SER_EXE.html. Enlaces de descarga:

En este enlace puedes comprarlo por alrededor de 4€ y con envío gratuito a España: https://www.gearbest.com/boards-shields/pp_265453.html?wid=1433363

NodeMCU ESP8266

Si quieres empezar a trabajar con ESP8266 o tu proyecto con Arduino necesita de conexión wifi, el módulo más adecuado es el NodeMCU ESP8266 por su facilidad de uso y pequeño tamaño.

Se trata de la versión de hardware v1.0, debe tenerse en cuenta porque las versiones anteriores cambian bastante los pines y los drivers a instalar.

Comparación entre versiones:

Para usar el NodeMCU es necesario instalar el driver del chip adaptador de serial a USB. Esta placa dispone de un chip CP2102 como conversor serial a USB y por lo tanto deberemos usar el driver de este chip y que podemos encontrar su última versión en https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers.

En este enlace puedes comprarlo por alrededor de 4€ y con envío gratuito a España: https://www.gearbest.com/transmitters-receivers-module/pp_366523.html?wid=1433363

Si quieres más información sobre el uso del ESP8266 y del nodeMCU puedes ver estos artículos del curso avanzado de Arduino:

También hablo del nodeMCU en estos dos vídeos del curso de ESP8266: