Encender un led conectado a una Raspberry Pi desde una aplicación móvil puede parecer algo misterioso y complejo destinado solo a aquellas personas con conocimientos de programación, por lo que en principio no parece reservado a los aficionados , pero lo cierto es que como todo mito , este no del todo cierto pues existen soluciones que permiten sin tener conocimientos de programación conseguir controlar o monitorizar lo que quiera en tan solo unos minutos
En efecto gracias a un framework generico desarrollado por myDevices IO Project Builder llamado Cayenne , l os desarrolladores , fabricantes y también aficionados pueden construir rápidamente prototipos y proyectos que requieran controlar o monitorizar cualquier cosa conectada a su Raspberry , permitiendo c on una sóla cuenta gratuita de Cayenne, crear un número ilimitado de proyectos mediante una solución muy sencilla basada en arrastrar y soltar
Obviamente el punto fuerte de cayenne son las capacidades de IO para que pueda controlar de forma remota sensores, motores, actuadores, incluidas los puertos de GPIO con uede almacenamiento ilimitado de datos recogidos por los componentes de hardware, triggers y alertas, que proporcionan las herramientas necesarias para la automatización y la capacidad de configurar alertas. Ademas también p crear cuadros de mando personalizados para mostrar su proyecto con arrastrar y soltar widgets que también son totalmente personalizables.
Resumidamente algunas características clave de esta novedosa plataforma son las siguientes:
- Una aplicación móvil para configurar, el monitor y los dispositivos de control y sensores desde cualquier lugar.
- Fácil instalación que conecta rápidamente los dispositivos, sensores, actuadores, y las extensiones en cuestión de minutos.
- Motor de reglas para desencadenar acciones a través de dispositivos.
- Panel personalizable con widgets de visualización de arrastrar y soltar.
- Programación de las luces, motores y actuadores
- Control de GPIO que se pueden configurar desde una aplicación móvil o desde un navegador
- Acceso remoto instantáneo desde su smartphone o con un ordenador
- Para construir un proyecto de la IO a partir de cero se ha logrado el objetivo de proporcionar un Proyecto Generador de IO que reduce el tiempo de desarrollo de horas en lugar de meses.
Como veremos , hablamos de un constructor de sitio web fácil de usar, pero para proyectos de IOT, así que veamos los pasos para crear un proyecto de IoT con esta potente herramienta usando su Raspberry Pi 3
Paso1
En primer lugar , si no tiene instalado Raspbian en su Raspberry Pi 3, tendrá que crearse una nueva imagen con esa distribución .
Para instalar Raspbian , vaya a Descargas , y seleccione Rasbian ( a la derecha de Noobs),
No debe confundir esta distribución con la versión para PC o Mac (RASPBERRY PI DESKTOP) pues como puede entenderse es para un ordenador personal y no para una placa Raspberry Pi
Verá que hay dos versiones:
-
RASPBIAN STRETCH WITH DESKTOP
Image with desktop based on Debian Stretch
SHA-256: 309f355ad5ca3e15d4866dfa16f17e4a5412632fec00976fe270d59516668849
-
RASPBIAN STRETCH LITE
Minimal image based on Debian Stretch
SHA-256:52e68130c152895905abe66279dd9feaa68091ba55619f5b900f2ebed381427b
Obviamente si la SD es suficiente grande , lo interesante es descargar la primera (RASPBIAN STRETCH WITH DESKTOP) en lugar de la versión mínima,
Una vez decidida, descargue la imagen correspondiente en su ordenador y siga los siguientes pasos:
- Inserte la tarjeta SD en el lector de tarjetas SD de su ordenador comprobando cual es la letra de unidad asignada. Se puede ver fácilmente la letra de la unidad, tal como G :, mirando en la columna izquierda del Explorador de Windows.
- Puede utilizar la ranura para tarjetas SD, si usted tiene uno, o un adaptador SD barato en un puerto USB.
- Descargar la utilidad Win32DiskImager desde la página del proyecto en SourceForge como un archivo zip; puede ejecutar esto desde una unidad USB.
- Extraer el ejecutable desde el archivo zip y ejecutar la utilidad Win32DiskImager; puede que tenga que ejecutar esto como administrador. Haga clic derecho en el archivo y seleccione Ejecutar como administrador.
- Seleccione el archivo de imagen que ha extraído anteriormente de Raspbian.
- Seleccione la letra de la unidad de la tarjeta SD en la caja del dispositivo. Tenga cuidado de seleccionar la unidad correcta; si usted consigue el incorrecto puede destruir los datos en el disco duro de su ordenador! Si está utilizando una ranura para tarjetas SD en su ordenador y no puede ver la unidad en la ventana Win32DiskImager, intente utilizar un adaptador SD externa.
- Haga clic en Escribir y esperar a que la escritura se complete.
- Salir del administrador de archivos y expulsar la tarjeta SD.
Paso 2
Ahora que tiene la imagen de Rasbian en una SD , ya puede insertar la SD en su Raspberry Pi 3 en el adaptador de micro-sd , conectar un monitor por el hdmi , conectar un teclado y ratón en los conectores USB, conectar la con un cable ethernet al router conectividad a Internet ( si es una Raspberry Pi 2 que carece de Wifi) y finalmente conectar la alimentación para comprobar que la Raspeberry Pi 3 arranca con la nueva imagen
Como pasos mínimos recomendamos al menos seguir los siguientes pasos:
- Cambiar resolución de pantalla : normalmente la resolución máxima no suele ser adecuada para muchos monitores o TV , por lo que lo mejor es cambiarla a una menor que permita ver con comodidad el interfaz. La resolución se cambia desde el menu Raspberry Pi Configuration , a continuacion System, pulsamos en Resolution , seleccionamos una adecuada a nuestro TV/monitor y pulsamos Set Resolution
-
Cambiar configuracion regional e idioma: para no tener problemas con el teclado o incluso la conexion wifi nos interesa personalizar la configuracion de loclalizacion para lo cual iremos al menus de Raspberry Pi Configuration , a continuacion seleccionaremos las siguintes opciones:
- Localisation , seleccionar en Locale . aquí elegimos la ubicación y depues puslaremos set locale, tambien Language por defecto es ingles=en (English) cámbielo por ejemplo a español seleccionando es(Spanish), tambien Country puede cambiarlo por su pais ( por ejemplo =ES(Spain), y CharacterSet ( ISO-8859-1)
- Timezone: seleccionar Area y Location
- Keyborad: seleccionar teclado español si el que tiene coenctado
- Wifi Country: seleccionar el pais (county) : por ejemplo ES Spain ( si no selecionamos no se activa el WIFI)
- Por ultimo, una vez reiniciemos la placa para que los cambio surtan efecto , si usamos la Rasberry Pi 3 , nos queda elegir la red wifi a la que se contactara su placa ,para lo cual en la esquina superior derecha nos iremos al icono de redes wifi y pulsaremos la red correspondiente y a continuación escribiremos su clave.
Paso 3:
Desde linea de comandos de la consola o por ssh simplemene con el comando gpio readall se pueden leer el estado de todos los puertos del GPIO
Como realmente lo que buscamos es controlar los puertos del GPIO a distancia y mediante un interfaz grafico remoto, para comenzar la configuración de su Raspberry ,lo primero es crear una cuenta gratuita en cayenne-mydevices.com que servirá tanto para entrar en la consola web como en la aplicación movil.
Para ello, vaya a la siguiente url e introduzca simplemente su nombre ,dirección de correo y una clave de acceso que utilizara para validarse.
Paso 2
Una vez registrado , solamente tendrá que elegir la plataforma para avanzar en el asistente. Obviamente seleccionamos en nuestro caso Raspberry Pi.
Paso 3
Para avanzar en el asistente deberemos tener instalado Raspbian en nuestra Raspberry Pi como vimos en el paso 1 .
Esta versión trae pre-instalado un montón de software para la educación, programación y uso general contando con Python, Scratch, Sonic Pi, Java
Es interesante destacar que Raspbian se puede instalar con NOOBS o descargando la imagen siguiendo la guía de instalación explicada en el paso 1.
paso 4
Ahora si queremos controlar dispositivos tenemos que instalar el agante de cayenne bien con dos comandos o bien desde la app
Veamos en primer lugar como instalar el agente desde la app, de modo que lo siguiente es instalar la aplicación móvil , que esta disponible tanto para IOS como Android.
En caso de Android este es el enlace para su descarga en Google Play
Es muy interesante destacar que desde la aplicación para el smartphone se puede automáticamente localizar e instalar el software myDevices Cayenne en su Raspberry Pi, para lo cual ambos ( smarphone y Raspberry Pi ) han de estar conectados a la misma red, por ejemplo la Raspberry Pi al router con un cable ethernet y su samartphone a la wifi de su hogar ( no funcionara si esta conectada por 3G o 4G)
Una vez instalada la app , cuando hayamos introducido nuestras credenciales , si esta la Raspberry en la misma red y no tiene instalado el agente instalara automáticamente
Hay otra opción de instalar myDevices Cayenne en su Raspberry Pi,la cual es bajo nuestra opinión es la mas aconsejada que es usando el Terminal en su Pi o bien por SSH ejecutando tan sólo dos comandos similares a los siguientes:
wget https://cayenne.mydevices.com/dl/rpi_xxxxx.sh
sudo bash rpi_xxxxx.sh -v
El nombre del script rpi_xxxxx.sh varia en cada nueva instalación asi que fijese en el nombre exacto qeu le propone el instalador web
Aunque ambos comandos sean ejecutados desde ssh en la Raspberry Pi , directamente en el propio interfaz web nos ira mostrando los pasos por donde vamos en la instalación del agente:
A la finalización del script se reiniciara la placa, así que tenga un poco de paciencia..
!Ya esta listo! Ya sólo tiene que empezar a conectar dispositivos y sensores a sus raspberry Pi por medio del conector GPIO y por supuesto también añadirlos en la consola de Cayenne , y con esto ya podrá ver el hw que añada en tiempo real tanto en el interfaz web como en su smartphone.
paso 5
Como ejemplo vamos a conectar un led o un relé a la Raspberry Pi 3 para poder controlar estos desde Internet desde la app de Cayenne.
Por simplicidad hemos conectado un led donde el ánodo (+) lo llevaremos al pin 19 del GPIO y el cátodo a la masa de la raspberry pi en el pin 21 tal y como se ve en el dibujo
Para añadir una salida al interfaz gráfico , simplemente tenemos que iremos a la consola de Cayenne y añadiremos un controlador a nuestro dispositivo, para ello nos iremos al botón verde ( esquina superior derecha) donde pone Add new
Pulsaremos la primera opción de Device/Widget
Nos iremos a Actuators pues pretendemos controlar algo ,aunque pero no vamos a conectar una placa especifica a la salida del gpio .
Ahora vamos al grupo Relay Switch pues pretendemos hacer un control on/off y por lo tanto pretendemos actuar sobre un pin digital de salida
Ahora es importante seleccionar todas las opciones siguientes;
- Select device : seleccionaremos nuestra placa Rasberry Pi sobre la que vayamos actuar ya que Cayenne permite manejar un numero ilimitado de placas
- Conectivity: es importante seleccionar Integrated GPIO
- Channel : seleccionar aqui el pin al que vamos a conectar el led (en nuestro caso de ejemplo el GPIO 19 por su proximidad a la masa)
- Choose Widget: lo ideal es elegir el tipo "Button"
- Choose Icon: se puede elegir el que se desee , pero como vamos a controlar un led, lo ideal es seleccionar el icono de led
- Finalmente no olvidar pulsar el boton "Add Actuator"
Una vez creado el dispositivo conectado a la placa simplemente , bien desde la web o bien desde la propia app de Cayenne, nos validaremos en cualquiera de los dos y nos aparecerá automáticamente el botón desde el que podremos cambiar el estado del pin de GPIO pinchando sobre el y con ello encenderemos o apagaremos el led conectado a el ( por supuesto tambien un relé o el circuito de control que desee)
En el ejemplo vemos como el led aparece anaranjado , y esto se se refleja en la placa donde como puede verse el led también aparece iluminado:
Lógicamente lo ideal es usar un rele o cualquier circuito de control , pero realmente lo importante es poder controlar el estado del pin del GPIO , tarea que hemos realizado perfectamente sin mucha complicación con la herramienta Cayenne, tal y como ha podido ver el lector en este post.
Por supuesto podrá ver el historial , programar eventos , etc, pero toda esa configuración la reservamos para un nuevo post
Problemas posible con el agente de Cayenne
A veces al crear el widget desde cayenne aparece el estado de 'inaccesible' y por mucho que repitamos el estado Unreacheable se repite, y eso aunque la raspberry Pi sea accesible y tenga conexión.
Puede que la Raspberry Pi esté ejecutando el núcleo 4.9 de Linux, pero como webiopi (que es un software que utiliza Cayenne para controlar / monitorizar los pines GPIO en Raspberry Pi) sólo funciona en el núcleo 4.4 que es parte de la actual Raspbian Jessie8, entonces lo mas probable es que no funcione bien el control .
Para ver la versión del kernel ejecutando el comando uname -a desde consola o por ssh
Cayenne esta planeando actualizar webiopi así que cuando Jessie se mueva a algo más reciente que 4.4 actualizaran el sw, pero mientras tanto, si no tiene una necesidad específica del kernel 4.9, puede bajar a 4.4 o hacer una nueva instalación de Jessie, que debe incluir 4.4 para que pueda acceder a las funciones de Cayenne sin problemas .
Para bajar de version desde la consola o desde ssh el siguinte comando:
sudo rpi-update 52241088c1da59a359110d39c1875cda56496764
A continuación mostramos la salida de ambos comandos:
[email protected]:~ $ uname -a Linux raspberrypi 4.9.24-v7+ #993 SMP Wed Apr 26 18:01:23 BST 2017 armv7l GNU/Linux[email protected]:~ $ sudo rpi-update 52241088c1da59a359110d39c1875cda56496764 *** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom *** Performing self-update % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 12762 100 12762 0 0 33569 0 --:--:-- --:--:-- --:--:-- 33584 *** Relaunching after update *** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom *** We're running for the first time *** Backing up files (this will take a few minutes) *** Backing up firmware *** Backing up modules 4.9.24-v7+ This update bumps to rpi-4.4.y linux tree Be aware there could be compatibility issues with some drivers Discussion here: https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=144087 ############################################################## *** Downloading specific firmware revision (this will take a few minutes) % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 168 0 168 0 0 303 0 --:--:-- --:--:-- --:--:-- 304 100 52.3M 0 52.3M 0 0 969k 0 --:--:-- 0:00:55 --:--:-- 274k *** Updating firmware *** Updating kernel modules *** depmod 4.4.50+ *** depmod 4.4.50-v7+ *** Updating VideoCore libraries *** Using HardFP libraries *** Updating SDK *** Running ldconfig *** Storing current firmware revision *** Deleting downloaded files *** Syncing changes to disk *** If no errors appeared, your firmware was successfully updated to 52241088c1da59a359110d39c1875cda56496764 *** A reboot is needed to activate the new firmware[email protected]:~ $ sudo reboot login as: pi[email protected]'s password: The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Fri May 5 06:59:41 2017 SSH is enabled and the default password for the 'pi' user has not been changed. This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.[email protected]:~ $ uname -a Linux raspberrypi 4.4.50-v7+ #970 SMP Mon Feb 20 19:18:29 GMT 2017 armv7l GNU/Linux
Una vez que baje de version su kernel , también recomendamos desinstalar el agente de Cayenne y repetir la instalación del agente de Cayenne como vimos al principio
Para desinstalar el agente ejecute los siguientes comandos desde consola o por ssh:
sudo /etc/myDevices/uninstall/./uninstall.sh
Entonces, después escribiremos:
sudo /etc/webiopi/uninstall/./uninstall.sh
Como vemos existen infinidades de opciones y un universo de posibilidades ,asi que no tema , pues realmente el proceso como puede ver es bastante sencillo..