Intel Edison y Ubidots (usando Python y la biblioteca MRAA)
El Intel Edison es una pequeña computadora en módulo ofrecida por Intel como un sistema de desarrollo para el Internet de las Cosas. Cuenta con un CPU Intel Quark x86 de doble núcleo a 400 MHz que se comunica a través de Bluetooth y Wi-Fi.
Requisitos
Grove - Sensores (los de tu preferencia)
2 x cables MicroUSB
Configuración del Software
Por favor, revisa la guía de inicio de Intel para hacer una configuración básica de tu Intel Edison.
Antes de realizar este tutorial, asegúrate de que tu Edison esté ejecutando la última imagen de Yocto. Esta guía fue probada con Yocto 3.0. Para obtener la última imagen, ve a Descargas de Software para la Placa Intel® Edison.
1. Accede a la Intel Edison con la dirección IP de la placa como root a través de ssh con el siguiente comando - ssh root@<IP_addres>
Una vez que hayas ingresado la contraseña de tu Intel Edison, verifica si tienes acceso a la placa correctamente; consulta la imagen de referencia a continuación para obtener ayuda. Si ves root@edison
como se destaca a continuación, estás conectado.
2. A continuación, escribe el siguiente comando en la terminal de tu computadora para instalar el paquete requerido:
$ opkg install python-pip
NOTA IMPORTANTE: también tendrás que instalar la Biblioteca Python de Ubidots. Por favor, sigue los pasos de instalación en el README de este repositorio en Github y regresa a este tutorial cuando termines.
3. Para gestionar los pines analógicos o pines digitales del Edison, necesitarás descargar la biblioteca MRAA. Por favor, consulta este video tutorial para aprender cómo instalarlo fácilmente:
Configuración de Ubidots
Ingresa a tu cuenta de Ubidots para crear las variables necesarias para gestionar los datos. Haz clic en la pestaña Dispositivo y presiona "Agregar Dispositivo", asigna al dispositivo un nombre amigable de tu preferencia; decidí llamar al nuestro "Edison."
2. Abre el dispositivo que acabas de crear, presiona "Agregar Variable" para crear una variable para cada sensor; sensor1; sensor2; relé.
Una vez que se hayan creado las variables, tendrás que asignar el ID de las variables de cada sensor al código. Si no sabes cómo encontrar el ID de la variable, consulta el artículo a continuación:
También necesitas asignar tu TOKEN de Ubidots al código, si no sabes cómo obtenerlo, consulta este artículo a continuación:
3. Ve a la sección Dashboard y agrega un widget de control que se encargará de enviar los diferentes valores a la variable relé.
En la parte superior derecha de la página web, selecciona "Crear widget":
Luego selecciona control > interruptor > edison > relé > finalizar.
Como puedes ver, el widget de control se ha creado en tu panel de control, y ahora puedes continuar con esta guía. Una vez que hayas terminado con esto, regresa al panel de control para cambiar el estado de la variable y visualizar cómo cambia el estado del relé.
Configuración del Hardware
Coloca el Escudo Arduino grove dentro de la placa de expansión de Arduino, alineando los agujeros del escudo Arduino grove con los de la placa de expansión. Presiona hacia abajo en el escudo Arduino grove para crear una conexión firme.
Las conexiones para los sensores son las siguientes para esta guía:
Por favor, consulta la imagen a continuación para verificar las conexiones que hicimos:
Gestión de Datos con Ubidots
Ahora que tu placa está ensamblada, sigue estos pasos a continuación para gestionar tus datos con la nube de Ubidots y tu aplicación personalizada.
1. Crea la carpeta y el script que vamos a ejecutar. Para hacer esto, ingresa los comandos a continuación en la terminal de la computadora:
root@edison:~# mkdir ubidots root@edison:~# cd ubidots/root@edison:~/ubidots# touch inteledison.py
2. Una vez que se haya creado el script llamado "inteledison.py", lo abriremos con el editor nano, ejecutando esta línea:
root@edison:~/ubidots# nano inteledison.py
Ahora debes adjuntar el código a continuación al editor recién abierto. Una vez que hayas pegado el código, tendrás que asignar el TOKEN y los IDs de las variables donde se indica dentro del código.
'''Este script envía/recibe valores a/de Ubidots''''''Librerías a importar'''import timeimport osimport mraafrom ubidots import ApiClient'''Definir Constantes'''TOKEN = "Asigna_tu_token_de_Ubidots_aquí" # Pon aquí tu TOKENVAR_ID_SENSOR1 = "Asigna_el_ID_de_la_variable_aquí" # Pon aquí el ID de tu variableVAR_ID_SENSOR2 = "Asigna_el_ID_de_la_variable_aquí" # Pon aquí el ID de tu variable VAR_ID_RELAY = "Asigna_el_ID_de_la_variable_aquí" # Pon aquí el ID de tu variable'''Variables iniciales'''relay_value = 0'''Inicializa los pines como AIO/GPIO y establece su modo'''# Pines AIO - Pines analógicosa0 = mraa.Aio(0) a1 = mraa.Aio(1)# Pin DPIO - Pin digitalrelaypin = mraa.Gpio(7)relaypin.dir(mraa.DIR_OUT)def sendValues(api): # Recupera la variable a la que te gustaría que se guardara el valor sensor1 = api.get_variable(VAR_ID_SENSOR1) sensor2 = api.get_variable(VAR_ID_SENSOR2) # Guardando los valores del sensor print "enviando valor del sensor 1" sensor1_value = sensor1.save_value({'value': a0.read()}) print "enviando valor del sensor 2" sensor2_value = sensor2.save_value({'value': a1.read()}) print "Valores enviados a Ubidots"def getValue(api): global relay_value, relaypin relay = api.get_variable(VAR_ID_RELAY) # Recupera la variable a la que te gustaría que se guardara el valor last_value = relay.get_values(1) # Obteniendo el último valor de la variable de Ubidots relay_value = int(last_value[0]['value']) #print relay_value # Descomenta esta línea para visualizar el estado del pin # Control del relé if relay_value >= 1: print "Interruptor ENCENDIDO" relay_value = 1 else: print "Interruptor APAGADO" relay_value = 0 print "Valores recibidos de Ubidots"if __name__ == '__main__': api = ApiClient(token=TOKEN) while True: sendValues(api) getValue(api) relaypin.write(relay_value) time.sleep(1)
Para guardar el script presiona "control + X", luego escribe "y" para guardar los cambios y presiona enter.
3. Ahora es el momento de ejecutar el script con la siguiente línea en la terminal de tu computadora:
root@edison:~/ubidots# python inteledison.py
Ahora, regresa a tu aplicación de Ubidots para verificar que los datos se están recibiendo en la sección Dispositivo de tu aplicación personalizada:
Además, en la sección Dashboard puedes controlar el relé usando el widget de control "Interruptor":
Resultado
Ahora es el momento de crear un panel de control para controlar y gestionar las variables de tu Intel Edison. Para aprender más sobre los widgets y eventos de Ubidots, consulta estos video tutoriales.
Feliz hacking :)