Placa clon de la Raspberry Pi:la Orange Pi


Desde 2012 la Raspberry Pi ha ido  creciendo  de  gran popularidad, estando  hoy en día  posicionada como una de las placas de desarrollo de referencia. Uno de sus rivales clásicos en los últimos tiempos están siendo las Orange Pi, una placa con un diseño similar pero  basado  en  procesadores de Allwinne

Shenzhen Xunlong dispone de la  placa SBC  muy similar a la Raspberry Pi a falta de 1 conector  USB , pero con un coste   bastante inferior  en Aliexpres. Es ademas abierta y hackeable. La placa de desarrollo low cost compite abiertamente   con  otras tantas existentes  donde  la mas destacable es tambien la Banana Pi  ,  pretendiendo todas  ellas  competir  con la Raspberry Pi.

Hablando de esta versión, la Orange Pi ,se vende en dos versiones, una básica de bajo coste  y otra denominada Orange Pi Plus.

orangepi

La Orange Pi normal  cuesta menos de 15$ y se basa en un SoC Allwinner A20 ARM, mientras que la Orange Pi Plus más cara sube a los 52$ a cambio  de integrar una versión más potente del chip Allwinner, concretamente una A31S En el resto de hardware, ambas placas SBC son muy similares y parejas en cuanto a prestaciones.

Las dos integran una CPU basada en ARM Cortex A7 Dualcore y Quadcore (en la versión más potente), una GPU Mali compatible con OpenGL y 1GB DDR3 RAM, posibilidad de direccionar hasta 64GB de almacenamiento mediante tarjetas o por un puerto SATA, conexiones para audio, conector CSI para cámara, HDMI, VGA, USB OTG, USB 2.0, alimentación, GPIOs, IR, etc.

El tamaño de ambas placas de  es de 85 × 55 milímetros y su peso se queda en 38 gramos. En estas dimensiones a sus desarrolladores les han cabido puertos HDMI y AV, receptor de infrarrojos, Ethernet RJ45 10/100M, tres puertos USB 2.0, uno microUSB OTG, un micrófono, un interfaz CSI para cámara y un encabezado de 40 pines compatible con Raspberry Pi ( y en la version Plus soporte para SATA ,8GB de  EMMC   y   WiFi

 

orange_pi

En cuanto a los sistemas operativos soportados, se encuentran Raspbian, Ubuntu, Debian, Android 4.4 y otras versiones del sistema de Google  descargable desde la pagia oficial .. Todos ellos pueden ser movidos por los chips de Allwinner y el hardware que entregan estas placas SBC (Single Board Computer).

Sobre el resto de características son  las siguientes:

 

Especificación de hardware

CPU H3 Quad-Core Cortex-A7 H.265/HEVC 4 K
GPU
· Mali400MP2 GPU @ 600 MHz
· Compatible con OpenGL ES 2.0
Memoria (SDRAM) 1 GB DDR3 (compartido con GPU)
Almacenamiento a bordo Tarjeta del TF (máximo 64 GB)/MMC ranura para tarjeta
Red de a bordo 10/100 Ethernet RJ45
Entrada de vídeo Un conector de entrada CSI cámara:

Soporta 8-bit YUV422 interfaz de sensor CMOS

Soporta CCIR656 protocolo para NTSC y PAL

   Soporta SM píxeles sensor de la cámara

Soporta captura de vídeo solución hasta P @ 30fps

Entrada de audio MIC
Salidas de vídeo

Soporta salida HDMI con HDCP

Soporta HDMI CEC

Soporta HDMI 30 funciones

Integrado CVBS

Soporta una salida simultánea de HDMI y CVBS

Salida de audio 3.5mm Jack y HDMI
Fuente de alimentación
  Entrada de CC, entrada USB OTG no suministra alimentación
USB 2.0 puertos Tres USB 2.0 Host, un puerto USB 2.0 OTG
Botones Botón de encendido:
Periféricos de bajo nivel
40 encabezado pines, compatible con Raspberry Pi B +
GPIO (1×3) pin UART, suelo.
LED Energía LED y LED de estado
Clave IR de entrada, potencia
Sistemas operativos soportados Android lubuntu, debian, Rasberry Pi imagen

Definición de interfaz

Tamaño del producto 85mm × 55mm
Peso 38g
Naranja Pi™ es una marca comercial de Shenzhen xunlong software co., Limitada

 

Si la  versión económica  le parece poco   , Shenzhen Xunlong  también ha puesto a disposición del público, por menos de 52$, la versión  Orange Pi Plus, una versión más potente con un procesador SoC Allwinner H3 de cuatro núcleos a 1.6Ghz , con soporte para SATA ,8GB de  EMMC   y  sobre todo integracion de  WiFi.

 

bananaplus

hardware.jpg

Por cierto,  ambas  placas son compatibles con los pines de expansión de la Pi original…

Sobre diferencias respecto  al original,ciertamente casi todas las placas SBC son bastante similares orientándose para ser clones  mas baratos  de  la Raspberry Pi. Es cuestión de gustos o necesidades, pues  como hemos visto no se pueden alegar diferencias sustanciales, excepto porque se basan en arquitecturas diferentes a la ARM (como las basadas en x86) de la cual se comenta tienden a calentarse mucho precisando normalmente de un radiador pasivo o si es posible mejor  activo (equipado con un miniventilador).

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