Hazte tu propio router con WRTNode – Controlando diodos led mediante el puerto GPIO

En anteriores artículos sobre WRTNode aprendimos entre otras cosas, como añadir cuatro puertos LAN y un puerto WAN a este pequeño router orientado al desarrollo de proyectos relacionados con el Internet de las cosas y la robótica.

Hoy aprenderemos lo básico sobre el puerto GPIO de este dispositivo haciendo parpadear un led bicolor, o en su defecto dos leds de colores distintos a modo de “Hello World” para ir familiarizándonos con esta plataforma de desarrollo.

Lo primero que debemos hacer es conectar el led bicolor, o los leds de dos colores distintos en los pins GPIO0 y GPIO2 igual que en la siguiente tabla y el posterior esquema de conexionado; hay que recalcar que no será necesario utilizar resistencias debido a los bajos voltajes en los que trabaja WRTNode.

WRTNode Diodo LED
GPIO0 (GPIO BOARD 57)
Ánodo verde
GPIO2 (GPIO BOARD 58)
Ánodo rojo
GND (GPIO BOARD 55)
Cátodo común

Si utilizas dos leds en lugar de uno bicolor, debes hacer un puente entre los cátodos de ambos; por otro lado, los led bicolor disponen de uno compartido por sus dos ánodos lo que reduce cableado necesario para esta práctica.

Esquema de conexión entre el led bicolor y WRTNode

Ahora ya podemos alimentar nuestro WRTNode, y conectarnos a la consola de administración de OpenWRT mediante el puerto serie como aprendimos en este anterior artículo, para exportar el GPIO2, configurarlo como salida, y asignarle un valor positivo “1“; finalmente le reasignaremos un valor bajo “0” para apagar el led.

#Encendemos el led rojo
root@OpenWrt:~# echo 2 > /sys/class/gpio/export
root@OpenWrt:~# echo out > /sys/class/gpio/gpio2/direction
root@OpenWrt:~# echo 1 > /sys/class/gpio/gpio2/value

#Apagamos el led rojo
root@OpenWrt:~# echo 0 > /sys/class/gpio/gpio2/value

Llegados a este punto repetiremos el anterior paso, esta vez con el GPIO0 para probar el segundo diodo de nuestro led bicolor y verificar en su totalidad el circuito.

#Encendemos el led verde
root@OpenWrt:~# echo 0 > /sys/class/gpio/export
root@OpenWrt:~# echo out > /sys/class/gpio/gpio0/direction
root@OpenWrt:~# echo 1 > /sys/class/gpio/gpio0/value

#Apagamos el led verde
root@OpenWrt:~# echo 0 > /sys/class/gpio/gpio0/value

Una vez comprobado su correcto funcionamiento, plasmaremos el código de los dos anteriores pasos en un script, para lo que utilizaremos el editor de textos predeterminado que en este caso es vi, y pegaremos el siguiente código en nuestro archivo llamado blinkleds; cabe recalcar que el intérprete de órdenes por defecto en OpenWRT es “ash“, muy similar a “bash” pero con ciertas limitaciones.

#!/bin/ash
#blinkleds

#Exportamos los GPIO
echo 0 > /sys/class/gpio/export
echo 2 > /sys/class/gpio/export

#Los definimos como salidas
echo out > /sys/class/gpio/gpio0/direction
echo out > /sys/class/gpio/gpio2/direction

#Los hacemos parpadear
while true; do
  echo 1 > /sys/class/gpio/gpio0/value
  sleep 1
  echo 0 > /sys/class/gpio/gpio0/value
  sleep 1
  echo 1 > /sys/class/gpio/gpio2/value
  sleep 1
  echo 0 > /sys/class/gpio/gpio2/value
  sleep 1
done

Ya sólo falta dar permisos de ejecución al script para finalmente ejecutarlo, ahora el led parpadeará cambiando de color hasta que interrumpamos el programa pulsando la combinación de teclas “Ctrl+C“.

root@OpenWrt:~# chmod +x leds 
root@OpenWrt:~# ./leds

En este vídeo podéis ver el funcionamiento del montaje realizado; si os gusta no olvidéis seguirme en Youtube para no perderos ninguno de los vídeos inéditos que voy publicando, independientemente de los artículos que escribo.

En el siguiente tutorial aprenderemos a desarrollar un pequeño programa que nos permitirá asignar cada led a un servicio, y generar avisos visuales asociados a los eventos que definamos.

Si te ha gustado puedes seguirme en Twitter, Facebook, Google+, Linkedin, o compartirlo con los botones ubicados debajo de esta publicación, si tienes cualquier pregunta o sugerencia no dudes en comentar.

Ayudanos a llegar a más lectores Share on LinkedIn
Linkedin
Share on Facebook
Facebook
Tweet about this on Twitter
Twitter
Share on Google+
Google+
Email this to someone
email

Leave a Reply

Your email address will not be published. Required fields are marked *

*