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  

 

 

Ganar dinero con Raspberry Pi 2


Bitcoin es una moneda virtual creada en 2009, habiendo crecido en popularidad en los últimos años convirtiéndose en un muy popular método para pagar los servicios a través de Internet . El valor se ha disparado recientemente gracias a la gran cobertura en los medios de comunicación , tanto por razones positivas y negativas.

Hay dos maneras de obtener Bitcoin :

  • Comprar Bitcoins  por medio de un  intercambio : este  normalmente  es el proceso de conversión de la moneda local a Bitcoin .
  • Minería de  bitcoins : el proceso de verificación de las transacciones en el blockchain .

Como se descentraliza el conjunto del sistema de Bitcoin , cada transacción es públicamente visible dentro de lo que se llama el blockchain . Este blockchain contiene cada bitcoin intercambiados entre los usuarios menos, ya que no hay servidor central , que tiene que ser uno mismo rige . Este es el trabajo de los mineros y del que vamos a  resumir muy bravamente  en este post , pero centrándonos en  el modo de hacerlo con una  Raspberry Pi 2

 

Los elementos hardware que necesitaremos para hacer minería de Bitcoins  son los siguientes:

  •  Raspberry Pi 2
  • Un hub (concentrador )  USB con auto-alimentación (Concentrador USB debe ser capaz de suministrar  de 1,5-2,0 amperios.)
  • Antminer U1 / U2 / U3
  • Ventilador USB
  • Disipador para la Raspberry Pi con ventilador.

 

Elementos  Hardware:

Raspberrry Pi 2:

El Raspberry Pi 2 Modelo B es la segunda generación de Raspberry Pi. En comparación con el Raspberry Pi 1 tiene un procesador ARM Cortex-A7 Quad-Core a 900 MHz con 1 GB de RAM. Gracias al procesador ARMv7, el puede funcionar con toda la gama de distribución ARM GNU / Linux, incluyendo Snappy Ubuntu Core y Microsoft Windows 10.    Se  puede conseguir directamente  en la tienda online  de Rasberry o si lo prefiere  en Amazon : Raspberry Pi 2 Model B – Placa base (ARM Quad-Core 900 MHz, 1 GB RAM, 4 x USB, HDMI, RJ-45).

Rasberry Pi 2 es ideal para la minería por su bajo precio ( unos 40€ en Amazon)  ,bajisimo consumo eléctrico  y  potente cpu.

 

Ventilador :

Como se supone que debe mantenerse encendida la Raspberry  Pi 2 de forma  permanente es necesario dotarla de la refrigeración necesaria añadiendo simplemente un pequeño ventilador a la caja para proteger a la placa donde se albergue la Rasberry

ventilador

Afortunadamente no son muy caros ( menos de 5€)  y se pueden conseguir en Amazon:DC 5V 0.2A Ventilador para Raspberry Pi Modelo B y Frambuesa Pi 2

 

Hub  de 4  puertos: 

Este ladrón USB 3.0 con 4 puertos downstream permite conectar sus dispositivos USB 3.0, USB 2.0 y USB 1.1. Además incluye un adaptador de corriente de 5 V/2,5 A. Es un dispositivo tan ligero y compacto que podrás llevarlo siempre junto con tu ordenador portátil o colocarlo en tu escritorio sin que ocupe mucho espacio. Permite tener acceso a todos los dispositivos USB prácticamente en cualquier sitio.

Ladrón USB 3.0 con 4 puertos de AmazonBasics

Los cables y ladrones USB tienen números de versiones diferentes (2.0 y 3.0) que indican su velocidad de transferencia de datos. Cuanto más alto es el número, más rápida es la transferencia. Sin embargo, para lograr el máximo rendimiento , tanto el dispositivo como el host deben tener la misma versión. Si no, la versión USB más baja de la combinación es la que controla la velocidad. Por ejemplo, si su cable y tu teléfono tienen la versión 3.0, pero tu ordenador es de 2.0, la velocidad máxima será de 2.0. Si los tres dispositivos (ordenador, cable y teléfono) son 3.0, entonces la velocidad será de 3.0. El ladrón USB 3.0 con siete puertos es compatible con las versiones anteriores 2.0 y 1.1.

Este hub por cierto puede   conseguirse en Amazon  : AmazonBasics – Hub USB 3.0 de 4 puertos (enchufe europeo)

Antminer : 

Un producto interesante para aprender del mundo de las criptomonedas y bitcoin. Fácil de configurar, ocupa poco y consume poco. Pero que nadie se lleve a engaño y lo compre como inversión, ya que hace unos meses que no es eficiente ni  tan rentable «minar» con este tipo de productos usb y se debe invertir en productos caros y bastante más avanzados para conseguir algo de rentabilidad.  Quizás por este motivo sea interesante adquirirlo de segunda mano   por unos 30€  aquí:  Bitmain Antminer U 1 (1,6 GH/s) – USB Asicminer

antminer

 

Ventilador para los  Antminer

Los Antminer necesitan disipar su energía gracias  a un potente  ventilador .Muchas  personas usan ventiladores  de 17cm de alto contando la altura de las aspas para refrigerarlos  conectándolos al hub ,(la base cabe en la palma de la mano), con este tamaño sirve para su cometido. La ventaja de tenerlo pequeño es que es muy portátil, lo puede llevar a donde quiera. Lo ideal es que  incluyan un  regulador de velocidad que apague  el ventilador en un extremo, y en el otro pone máxima potencia.  El «tallo» metálico  es interesante que sea flexible, pero a la vez rígido y con un cable  suficientemente largo  para que pueda refrigerar a varios antminer   .El modelo Artic Breeze  es una buena propuesta  :el ruido que hace es nulo, súper silencioso.

Se  puede comprar por unos 5€  aquí: Arctic Breeze – Ventilador de escritorio con USB

 

artic

Notas :

  • Para la puesta en funcionamiento del minero bitcoin USB, siempre se debe hacer con un  concentrador USB con alimentación con ventilador.
  • También el Rpi debe usar disipador y ventilador ( sobre todo si está haciendo  overclocking el RPI para la capacidad máxima de la minería y la planificación para mantener el pi frambuesa hasta 24/7 sin quemar el procesador central).

 

Software:

  • Instale Raspian en su tarjeta SD con un mínimo de 8 GB .
  • Instale el software de putty en su pc    para  conectarse  por terminal
  • Conectese a  la Rasberry por ssh  (necesitara saber cual es la ip  de la rasberry y por supuesto estar conectado a la misma red ).
  • Como para todas las máquinas Linux , actualizar y mejorar, veamos como  instalar  el  software de mineria :  sudo apt-get install libusb-1.0-0-dev libusb-1.0-0 libcurl4-openssl-dev libncurses5-dev libudev-dev screen libtool automake pkg-config libjansson-dev screen
  • Utilizar el siguiente código utilizar para instalar independencias :
  1. git clone https://github.com/bitmaintech/cgminer
  2. cd cgminer
  3. sudo ./autogen.sh export LIBCURL_CFLAGS=’-I/usr/include/curl’ sudo ./configure --enable-bmsc sudo make
  4. sudo ./cgminer --bmsc-options 115200:0.57 -o POOL -u USERNAME -p PASSWORD --bmsc-voltage 0800 --bmsc-freq 1286
  • Necesitara por ultimo un sw de minería : se  recomienda Bitminter DEBIDO pues tiene una  fácil Interfaz gráfica de usuario .