Manejo de puertos en la RaspBerry Pi


GPIO (General Purpose Input/Output) es un puerto accesible por un conector  de 26  pines que sirve a la Raspberry Pi para comunicarse con dispositivos externos. Del puerto GPIO  algunos pines se pueden configurar como entradas o como salidas digitales.

Como el lector habrá comprobado , en efecto ,Raspberry  NO  Pi incluye ningun puerto analógico tanto  de entrada o de salida   como suelen disponer otras placas como Arduino  o Netduino

También incorpora pins de masa y alimentación de 5V y 3,3V, y pins de comunicación Serial, I2C y SPI pre-configurados.

Estos pins trabajan a un voltaje de 3,3V y, al contrario que un Arduino, los pins GPIO de la Raspberry Pi no tienen ninguna protección de circuitería, por lo que hay que ir con muchisimo  cuidado a la hora de conectar dispositivos a estos pins.
Lo que haremos a continuación será controlar un led que estará conectado a un pin del puerto GPIO de la Raspberry Pi de tres maneras distintas: a través del terminal, a través de un script Python y a través de la librería WiringPi.

Hay 2 sistemas de numeración de los 26   pines del GPIO: BCM y BOARD:

  • El sistema BCM usa el número de pin GPIO correspondiente. En nuestro caso usamos el GPIO4, por lo tanto ponemos el número 4.
  • El sistema BOARD la numeración se basa en el orden de los pins de arriba a abajo de la placa. En esta imagen se aprecia mejor la diferencia entre los dos sistemas:

Conectaremos un led con una resistencia de 220 ohms en serie entre el pin 4 y una masa del puerto GPIO. El esquema de conexión es  bastante simple  (  incluso se puede obviar la resistencia) bastando conectar entre el pin GPIO4 y  cualquier masa  un led

Controlar GPIO a través del terminal

Primero, vamos a controlar el puerto GPIO desde un terminal directamente a través de directorios. Consiste en exportar los pins de los directorios del puerto GPIO y controlarlos a través de comandos. Para esto nos tendremos que identificar como usuario root a través del siguiente comando:

sudo -i

Seguidamente, tenemos que exportar el pin que queremos controlar (en nuestro caso el número 4):

echo 4 > /sys/class/gpio/export

Indicamos si queremos que sea un pin de entrada (in) o salida (out):

echo out > /sys/class/gpio/gpio4/direction          

Finalmente, ponemos la salida a nivel alto para encender el led:

echo 1 > /sys/class/gpio/gpio4/value

Para volver a apagar el led, ponemos la salida del pin a nivel bajo:

echo 0 > /sys/class/gpio/gpio4/value

Una vez hemos terminado, tenemos que eliminar la conexión con el pin GPIO:

echo 4 > /sys/class/gpio/unexport

 

Controlar GPIO a través de un script Python

Para poder controlar el puerto GPIO a través de Python, primero tendremos que descargarnos una librería para Python con este comando:

sudo apt-get install python-dev

Luego, instalamos el modulo RPi.GPIO con el siguiente comando:

sudo apt-get install python-rpi.gpio

Después, creamos un archivo Python:

sudo nano led.py

Y escribimos el siguiente código para hacer parpadear el led:

import RPi.GPIO as GPIO #Libreria Python GPIO
import time #Libreria Time
GPIO.setmode(GPIO.BCM) #Establecemos el sisetma de numeracion de pins BCM
GPIO.setup(4, GPIO.OUT) #Ponemos el Pin GPIO4 como salida
while True:
    print"ON"
    GPIO.output(4, GPIO.HIGH)
    time.sleep(1)
    print"OFF"
    GPIO.output(4, GPIO.LOW)
    time.sleep(1)
GPIO.cleanup() #Reiniciar configuracion pins GPIO

 

 

 

Para guardar el script, pulsamos CTRL+X, luego S e INTRO. Finalmente ejecutamos el script Python escribiendo este comando:

sudo python led.py

El led irá parpadeando y en el terminal indicará el estado del led ON/OFF. Para salir del programa, pulsamos CTRL+C.

 

Controlar GPIO a través de la librería WiringPi

WiringPi es una librería para la Raspberry Pi creada por Gordon Henderson para acceder y usar el puerto GPIO a través de lenguaje C. De esta manera, programar los pins GPIO es muy parecido a programar un Arduino.  Esta librería soporta lectura y escritura analógica a través de módulos externos (recordemos que los pins GPIO no tienen entradas analógicas).  Esta librería tiene su propia numeración de los pins GPIO:

En su página web se encuentra más información sobre la librería.

http://wiringpi.com/

Para instalar la librería en la Raspberry Pi se debe descargar a través de GIT. Si aún no tenemos instalado GIT en la Raspberry Pi, escribimos el siguiente comando:

sudo apt-get install git-core

Ahora, decargamos WiringPi:

git clone git://git.drogon.net/wiringPi

I luego: 

cd wiringPi

git pull origin

E instalamos:

cd wiringPi

./build

Una vez instalada la librería, creamos un archivo:

sudo nano led.c

Escribimos el siguiente código:

#include //Importamos la libreria WiringPi
int main()
{
    wiringPiSetup () ;
    pinMode (7, OUTPUT); //GPIO4 corresponde al pin 7 de WiringPi
    for (;;)
    {
        digitalWrite (7, HIGH);
        delay (500);
        digitalWrite (7,  LOW);
        delay (500);
    }
}

 

Para guardar pulsamos CTRL+X, luego S e INTRO. Ahora tenemos que compilar el código:

gcc -Wall -o led led.c -lwiringPi

I lo ejecutamos:

sudo ./led

Para salir del programa, pulsamos CTRL+C.

Sin duda  manejar los puertos digitales nos servirá para futuros proyectos donde queramos conectar dispositivos externos en la Raspberry Pi, pero usar  cshell para controlar nuestra Raspberry P nos puede servir para comprobar funcionalidades, pero  hay un método mucho mas potente  y flexible que además nos permite  controlar esta placa desde Internet  desde una app sin tener que instalar nada de forma manual en la RP,  si le interesa probar  mire este otro post  donde veremos el potente entorno de Cayenne  

 

 

Cónstruyase un despertador inteligente por menos de 2€


Estamos todo el día hablando del hogar inteligente y a veces se echan en falta que los fabricantes inviertan en cosas tan básicas como el dormir.

Los despertadores de toda la vida han acabado por convertirse en objetos odiosos. A nadie le gusta esa sensación de ruptura abrupta del sueño que producen los despertadores cuando llega la hora convenida,  así como también la tediosa  tarea de todos lo días de estar conectándolo o conectándolo  en función del día de la semana que sea para que nos despierte según nuestras necesidades   con el riesgo posible de que nos olvidemos de conectarlo. Es obvio que el paso necesario es hacia el despertador inteligente, aquel que sea más amable al sacarnos de nuestros sueños y por supuesto no haya que estar pendiente de conectarlo o desconectarlo  en función de nuestras necesidades personales

Uno podría pensar que en el mundo de los despertadores ya está todo inventado, pero con la llegada de los smartphones parece que el asunto no ha hecho más que empezar. Estamos en pleno siglo XXI ¿no? así que este siglo  tecnológico uno no puede esperar a despertarse con un clásico reloj   digital de display de leds  de los 70/’s o un  lcd  a pilas , por muy  bonitos que sean …

Si  dispone de un viejo terminal Android   que  no use porque quizás se haya quedado obsoleto  , existe un sinfín de posibilidades  de darle  una segunda vida , entre ellas la que proponemos es este post: convertirlo en un reloj-despertador inteligente:

 

IMG_20160415_184339

En el caso de Android (aunque también es posible encontrar opciones para  Symbian y windows phone ) encontramos muchas aplicaciones de  despertadores que, como poco, son muy originales y lo cierto es que le sorprenden no ya por el sonido que emiten para despertarte, sino por el sistema que utilizan para hacerlo y las características que puede encontrar.

Antes  de personalizar nuestro viejo smartphone  ,  tendremos que dotarle de un soporte estable  para que el teléfono  sea visible y este estable

Existen en el mercado  multitud de soportes  que sin  duda   harán de sobra su cometido , pero si no dispone de este, existe una opción muy económica :  los  organizadores con abrazadera de suspensión recogecables los cuales básicamente son base adhesiva de goma con una apertura para hacer pasar cables.

Estos soportes se pueden comprar por muy poco dinero (unos 2€) en  establecimientos especializados y también en Amazon :Cable Organizador Abrazadera de Suspensión Recogecables Fijador Holder Cargador

2016-04-16_09h29_31

 

Para utilizarlos como soporte simplemente ,usaremos dos de ellos, le quitaremos el auto-adhesivo  y  haremos pasar  los dos extremos del teléfono por las canaladuras  de los  soportes procurando que no  haga presión por la parte del sensor táctil:

IMG_20160415_184258

Por supuesto no necesitara ninguna tarjeta SIM , y una vez que instalemos el sw, tampoco será necesaria una  conexiona wifi ( en función de las utilidades que desee usar ) ,pudiéndolo  dejar «en modo avión» para que no emita ningún tipo de señal de RF

Como el gasto de energía sera mínimo ,  basta conectarle  un cargador USB  que tengamos que ya no usemos  quizás por su baja corriente de salida

Ahora  que tenemos todos los componentes , veamos las aplicaciones Android que nos van a  dar vida a nuestro   viejo smartphone convirtiéndolo en un fantástico  despertador del siglo XXI:

 

Timely es uno de los mas novedosos relojes despertadores para Android, con una novedosa  experiencia de usuario gracias  a  la  integración con la nube para copias de seguridad y sincronización de tus alarmas con múltiples dispositivos.

Configurar una alarma nunca ha sido tan fácil  desde la que podemos fijar una alarma con solo hacer swipe desde el lateral de la pantalla y deslizando una barra hasta la hora que queramos, es decir basta con  deslizar el dedo desde el borde de la pantalla y establecer la hora deseada arrastrando la barra  y presionar para hacer ajustes de 5 minutos.

Listo, así habremos activado la alarma básica, pero también se puede personalizar y configurar con distintos parámetros con sólo pulsar sobre ella, entre ellos fijar los días de repetición(lo  cual es  una de carestericticas mas diferenciadoras respecto a los despertadores convencionales ), el tono, vibración

Incluso para los más duros  de despertar  como otras apps  hay puzles y retos para desactivar la alarma.Puede usar desafíos con sus alarmas para asegurarse de que se ha levantado realmente cuando apaga una alarma.Y si  presionar botones no es suficiente lujo puede dar la vuelta a su teléfono para callarlo. Además, Timely reconoce cuando se  levanta el teléfono y reduce la intensidad de la alarma bajando el volumen.

También dispone de la función Smart Rise que esta basada en la teoría de los ciclos de sueño, activando una melodía suave durante los 30 minutos previos a la alarma para despertarnos del sueño profundo sin sobresaltarnos.

Otra característica es la personalización  permitiendo escoger entre temas de color que coincida con su propio estilo o bine usando la  herramienta de diseño para crear una apariencia completamente nueva. Incluso tiene  relojes de diseño hechos a mano para  adaptarse a su estilo.

La aplicación también tiene un sistema de sincronización de alarmas entre dispositivos así, si descartamos o creamos una en el teléfono, también lo hará en la tablet y además tiene multitud de temas de diferentes colores y estilos para todos los gustos, e incluso puedes crear el suyo exclusivo.

Gracias a la conectividad  permite gestionat, descarta y pausar alarmas en todos sus dispositivos a la vez. La sincronización en la nube permite pues una experiencia transparente entre teléfonos y tabletas (adicionalmente, todo se respalda).

 

 

Despertador  gratis  es una  aplicación  veterana  mucho mas sencilla que la anterior ,la cual como su nombre indica  esta libre de pagos. Existen infinidad de aplicaciones similares  incluso con funciones  mas avanzadas pero esta cumple  con su función

2015-10-04_23h45_27

 

Algunas de  las funciones básicas de esta aplicación:

★ Reloj ★

  •  Fabulosa pantalla verde LCD
  • Vista horizontal y vertical.
  • Formato horario de 12 o 24 horas
  • Mostrar/ Ocultar el secundero
  • Autobloqueo del tiempo personalizable

★ Alarma ★

  •   Super big Snooze/Stop Alarm buttons
  • Botones de Snooze/ Stop Alarma super grandes
  • Multiple alarms supported
  • Soporta Multiples alarmas
  • 11 sonidos de alarma integrados: Ascendiente, Pájaros, Clásico, Cuco, Digital, Electrónico, Tono Alto, Mbira, Reloj Antiguo, Gallo, Timbre de Escuela
  • Sonido ON/OFF (Encendido / Apagado)
  • Volumen ajustable de Sonido
  • Snooze ON/OFF ( Encendido/ Apagado)
  • Snooze time personalizable
  • Vibración ON/OFF
  • Aparición Gradual de Sonido: despiertate cómodamente por la mañana.
  • La Alarma funciona incluso cuando la pantalla está bloqueada o el Android está en modo silencioso

 

 

 

El resultado es bastante «profesional» teniendo en cuenta  que hemos usado componentes que ya no necesitábamos:

IMG_20160415_184245

 

¿Cual es su aplicación favorita para despertar? No dude compartirla con toda la comunidad de este blog