Controlar Cualquier Dispositivo Eléctrico con un ODROID-C2: Un Proyecto de Muestra

control any electrical device with ODROID-C2

Siempre ha sido un sueño del siglo 20 que existiera una era en la que cualquier aparato eléctrico del hogar pudiera controlarse con un simple clic desde cualquier dispositivo conectado a internet, como un PC, tablet o TV inteligente, y desde cualquier lugar. Esta era ha llegado y hoy te presentaremos una forma de controlar cualquier dispositivo eléctrico desde cualquier otro dispositivo que tenga acceso a internet.

Nosotros usaremos una lámpara como ejemplo, pero ésta podría ser fácilmente sustituido por un frigorífico, una lavadora o una cafetera eléctrica, por ejemplo. No obstante, tuvimos que hacer una simplificación, que es electrificar la lámpara con una corriente de 12V en lugar de 220V, principalmente por razones de seguridad. Advertimos a los usuarios de esta guía que vayas hacer lo mismo: ¡Es muy fácil exponerse a descargas eléctricas peligrosas!

El módulo relé que utilizamos con el ODROID-C2 en este proyecto se puede conectar fácilmente a una fuente de alimentación de 220V, que controla cualquier dispositivo eléctrico (hasta 10A). Los usuarios experimentados pueden intentar trabajar con este voltaje, asegurándose siempre de tomar todas las precauciones en términos de seguridad. Vamos a seguir profundizando en el ilimitado potencial del ODROID-C2.

Requisitos de hardware

  • ODROID-C2 (http://bit.ly/1oTJBya)
  • Módulo placa relé de 5V con canales 1/2/4/8 ARM AVR DSP PIC (http://ebay.eu/2ncLWD8)
  • Lampara JM/84211 3W 3000K 12V o cualquier otra de similares caracterisiticas
  • Cables Dupon hembra a hembra, macho a macho (http://ebay.eu/2mDWf6Q)
  • 4 pilas Li-ion 3.7V 2300mAh LS 14500 (http://ebay.eu/2m0F7EI)

Requisitos de Software

  • Ubuntu 16.04 v2.0 de Hardkernel (http://bit.ly/2cBibbk)
  • Python 2.3 o 3.3 preinstalado con Ubuntu
  • Librería WiringPi para controlar los pines GPIO del ODROID-C2. Puede aprender cómo instalar esto en http://bit.ly/2ba6h8o
  • Editor de HTML gratuito CoffeeCup (http://bit.ly/2lCxgB8)
  • PuTTY * - Vamos a necesitar conectarnos a nuestro ODROID-C2 a través de SSH, PuTTY es el cliente perfecto para hacer esto (http://bit.ly/2kFVngX)
  • FileZilla - Vamos a necesitar una forma de transferir archivos al ODROID-C2 usando SFTP, que es FTP sobre SSH (http://bit.ly/1gEw9op)

Conectándolo todo

Figure 1 - Block diagram
Figura 1 - Diagrama por bloques

El diseño de este proyecto es muy simple, y el relé Songle juega un papel esencial. Hemos conectado el GND del relé Songle al pin6 del ODROID-C2 (GND). El pin VCC del relé está conectado directamente al pin2 de ODROID-C2, que proporciona 5V a este circuito y electrifica la resistencia eléctrica del relé. Finalmente, el pin INT1 del relé está conectado al pin7 de nuestro ODROID, que es el pin que realmente controla el relé, que básicamente enciende (ON) y apaga (OFF) el dispositivo. En el otro lado del relé Songle, hay un simple interruptor que hemos conectado a la lámpara a través de la batería o la red eléctrica. Echa un vistazo al esquema de la Figura 1 para que te hagas una idea de cómo está montado todo el circuito. Como referencia técnica de los pines ODROID-C2, hemos utilizado el excelente Mapa de PIN proporcionado por Hardkernel en http://bit.ly/2aXAlmt. De acuerdo con este mapa, pin2 = 5V, pin6 = GND y pin7 = GPIOX.BIT21 (Pin de entrada/salida de aplicación general). Todas las conexiones se realizaron usando cables Dupon hembra-hembra, macho-macho o macho-hembra. Ahora que nuestro hardware está listo, veamos cómo compilar el software y ponerlo a funcionar todo.

Diseñando una simple página web

Usamos el editor gratuito CoffeeCup HTML para diseñar una simple página web HTML para controlar la lámpara. En esta página, añadiremos las imágenes de dos botones para poder controlar la lámpara, los botones de ENCENDIDO y APAGADO. Consulta la Figura 2 para ver esta página. Todo el proyecto se controla utilizando una IU web. Para lograr esto, hemos hipervinculados esos botones a los correspondientes scripts Python songleon.py y songleoff.py que controlan el ENCENDIDO y APAGADO de la lámpara. Las instrucciones sobre cómo escribir esos programas en Python están detalladas en una sección que se muestra más adelante.

Figure 2 - Web page
Figura 2 - Página web

Cuando finalmente diseñes tu sitio web, asegúrate de que tu página de inicio se llame index.php y no index.html, simplemente para hacer las cosas más uniformes. Sin embargo, solo vamos a usar dos scripts PHP, songleon.php y songleoff.php, para controlar la lámpara. El código Python y PHP que necesitamos escribir es muy simple y está muy bien documentado.

Instalando el servidor

Para utilizar el ODROID-C2 como servidor web en este proyecto, tenemos que instalar todos los componentes de software de servidor necesarios. Además, puesto que queremos un simple servidor HTML, instalaremos Apache con soporte PHP (lenguaje de programación del servidor) en el ODROID-C2. Los siguientes pasos se pueden realizar con PuTTY. El acceso al ODROID-C2 con este cliente SSH está bien documentado. Todo lo que necesitas saber es la dirección IP del ODROID-C2.

El servidor Apache es el servidor web más utilizado hoy día. Aquí tienes cómo instalar Apache con soporte PHP:

odroid@odroid:~# sudo apt-get install apache2 php libapache2-mod-php
Cuando se te solicite que continúes, introduce "y" para "sí". Luego, activa e inicia Apache:
odroid@odroid:~# systemctl enable apache2
 odroid@odroid:~# systemctl start apache2
 odroid@odroid:~# systemctl status apache2

Probando Apache

Abre tu navegador web y navega hasta http://localhost/ o http:///. Esta es la dirección de tu ODROID-C2 en tu red local. Puedes localizarla simplemente escribiendo:

odroid@odroid:~# ifconfig
Verás una página similar a la que se muestra en la Figura 3.

Figure 3 - Apache test
Figura 3 - Prueba de Apache

Probando PHP

Para probar PHP, crea un archivo testphp.php de muestra en la carpeta raíz de documento de Apache:

odroid@odroid:~# sudo nano /var/www/html/testphp.php
Agrega las siguientes líneas y guarda el archivo:

Reinicia el servicio Apache.
$ sudo systemctl restart apache2
Navega a http: //dirección-ip-servidor/testphp.php. Se mostrarán todos los detalles de PHP, como la versión, la fecha de compilación y los comandos, por nombrar algunos. Tal y como puede observar en la Figura 4.

Figure 4 - PHP information
Figura 4 - Información de PHP

Instalando FTP

Instala un servidor FTP como vsftpd usando el siguiente comando:

$ sudo apt-get install vsftpd
Edita el archivo de configuración FTP escribiendo:
$ sudo nano /etc/vsftpd.conf
y realiza los siguientes cambios:

  • Presiona ctrl+W y busca anonymous_enable=YES, cámbialo por anonymous_enable=NO
  • Elimina el signo # que hay delante de local_enable=YES
  • Elimina el signo # que hay delante de write_enable=YES
  • Vete al final del archivo y añade force_dot_files=YES
  • Presiona ctrl+X para salir, introduce “y” para guardar y presiona INTRO para confirmar

Luego, reinicia vsftpd:

$ sudo service vsftpd restart

Publicando en la web

De momento, deberías tener un sitio web con el que poder transferir datos al ODROID-C2. Una vez que hayas realizado todos los pasos anteriores y hayas comprobado que puedes ver tu sitio web en otro ordenador, podemos continuar para que la página web encienda nuestro foco utilizando el Módulo placa relé de 5V ARM AVR DSP PIC.

Dentro del directorio de tu sitio web, crea un nuevo archivo PHP llamado songleon.php que contenga el siguiente fragmento de código, luego guarda el archivo:


A continuación, crea una carpeta en el directorio del sitio web llamado "scripts", luego cree una subcarpeta dentro de ésta llamada "lights", y dentro crea un nuevo archivo llamado songleon.py. Este será el script python que encenderá nuestra lámpara. Dentro de este archivo añade el siguiente código y luego guarda el archivo:
import wiringpi2 as odroid
 odroid.wiringPiSetup()
 odroid.pinMode(7,1)
 odroid.digitalWrite(7,0)
Regresa a tu página web en modo de diseño/edición y asegúrate de que el hipervínculo para tu botón "ON" está vinculado con songleon.php. Ahora, cuando hagas clic en el botón, el script songleon.php ejecutará el script python songleon.py, lo que tendrá como resultado que la lámpara se encienda. Por último, haremos lo contrario, apagar la lámpara.

Dentro del directorio del sitio web, crea un nuevo archivo llamado songleoff.php. Dentro de este archivo, introduce el siguiente fragmento de código y guárdalo:

 <!--?php system("echo odroid | sudo -S python /var/www/html/scripts/lights/songleoff.py"); header( 'Location: 'index.php' ) ; ?-->
Nuevamente, asegúrate de que la ruta del archivo sea la misma, para que todo funcione. Además, configura tus reglas de redireccionamiento para redirigirlas a la página que quieres. Luego, crea un nuevo archivo en la carpeta scripts\lights\ llamado sognleoff.py. Dentro de este, introduce el siguiente código, después guarda el archivo:
import wiringpi2 as odroid
odroid.wiringPiSetup()
odroid.pinMode(7,1)
odroid.digitalWrite(7,1)
Añade un hipervínculo a songleoff.php para tu botón "OFF", el cual debería hacer que tu lámpara se apague. ¡Ahora tiene un sitio web con el que puedes controlar tus luces!

Transfiriendo archivos a Apache

Es muy fácil iniciar sesión en tu servidor web Apache ODROID-C2 con Filezilla tan simple como saber la dirección IP del ODROID-C2. Si ya ha iniciado sesión con SSH en tu ODROID-C2 con PuTTY, puedes localizarla escribiendo:

odroid@odroid:~# ifconfig
Debes introducir el nombre de usuario y contraseña "odroid" y "odroid". Serás redirigido inmediatamente al sistema de archivos raíz del ODROID-C2. Desde allí, dirigiere a la carpeta /var/www/html/, dentro de este directorio copia los archivos de tu disco local. Aquí tienes todos los archivos y carpetas que debes copiar desde ese directorio local:

  • index.php
  • songleon.php
  • songleoff.php y finalmente la carpeta /scripts/lights/ con
  • songleon.py y songleoff.py

Ahora has terminado con la parte principal del proyecto. Un consejo final: para hacer posible la ejecución de los scripts que controlan la lámpara (songleon.py y songleoff.py), debes cambiar los permisos/derechos de todos los archivos y carpetas que hemos mencionado anteriormente. Recomendamos para este proyecto en concreto proporcionarles acceso completo con privilegios de lectura, escritura y ejecución para root:

$ sudo chown 755 /var/www/html/index/php
Además, debes modificar el archivo sudoers con el editor nano:
$ sudo nano /etc/sudoers
Introduce tu contraseña para cualquier modificación y agrega la siguiente línea:
www-data ALL=(ALL) NOPASSWD ALL after this line: %sudo ALL=(ALL:ALL) ALL

Probando las aplicaciones

Veamos si todo funciona correctamente. Desde tu PC de escritorio, ordenador portátil o tablet, navega hasta la dirección IP de tu ODROID-C2 con el navegador y haz clic en el botón "ON". ¿La lámpara ilumina tu habitación? Ahora sitúate sobre el botón "OFF". Haz clic y verás como la lámpara se apaga. ¡Lo hemos conseguido!

Figure 5 - Hardware setup
Figura 5 - Instalación del Hardware

Notas finales

Podríamos continuar asesorándote sobre cómo controlar remotamente cualquier dispositivo eléctrico desde la oficina, durante un viaje o si te encuentra con una emergencia. Esta cuestión no es nada difícil ahora que tienes el circuito básico funcionando en su red local, pero ten en cuenta que dicho paso conlleva un cierto riesgo de seguridad. Los hackers pueden estar interesados en controlar tu servidor aprovechando una contraseña débil, un puerto que es usado con frecuencia o configuraciones del router incorrectas. Por esta razón, te recomendamos que hagas segura tu red e incluso cambies la contraseña del usuario ODROID-C2 a una más robusta. Ahora tienes los conocimientos que necesitas para crear algo innovador e interesante para ti y tus colegas.

Be the first to comment

Leave a Reply