Java en un Raspberry PI, desde cero

Resumimos cómo configurar un Raspberri PI para poder trabajar con java desde el momento en el que lo sacamos de la caja.
Contamos con un Raspberry Pi B 512K de memoria, ya nos hemos aproximado varias veces a micro placas:

https://unpocodejava.wordpress.com/?s=raspberry+pi

Y tenemos un avance de los esfuerzos por tener una distribución de Java en un Pi:

https://unpocodejava.wordpress.com/2012/05/30/java-corriendo-intentando-correr-sobre-raspberry-pi/
https://unpocodejava.wordpress.com/2012/08/14/corriendo-tomcat-7-en-un-raspberry-pi/

El objetivo es dar un “paso a paso” sencillo de opciones probadas, que nos permitan empezar a trabajar cuanto antes.

 

Escribir última versión del SO en la Targeta SD


Primero hay que elegir una imagen de sistema operativo que descargaremos de internet. En la web encontramos dos sistemas recomendados:

Descomprimimos la imagen del zip descargado (por ejemplo la imagen de Raspbian llamada 2013-05-25-wheezy-raspbian.img) y pasamos al siguiente paso.

Necesitamos un Lector de tarjetas

Una tarjeta SD(o microSD con adaptador) de 4 GB o mas.

Y utilizamos un software gratuito que permita escribir la imagen descargada anteriormente sobre la tarjeta. Uno que da buen resultados testeado en Windows7:

http://sourceforge.net/projects/win32diskimager/


 

Arranque y Configuración


Insertamos la tarjeta en la bahía correspondiente, enchufamos el cable HDMI a un monitor (o televisor), el adaptador mini-usb a la toma de corriente (5V), un cable Ethernet a la red, ratón y teclado usb2.0

Cuando lo conectamos a la corriente el Pi arranca e interactúa con los los dispositivos de entrada y salida muy satisfactoriamente. La primera vez mostrará automáticamente el menú de configuración:

Podemos volver al mismo menú más adelante cuando queramos mediante la orden >sudo raspi-config

  • expand_rootfs: Expande el espacio de la tarjeta SD
  • overscan: Para evitar que el Pi solo use una parte de la televisión.
  • configure_keyboard: Elegir compatible de una Lista de teclados.
  • change_pass: para cambiar la password del Usuario de sistema. La password por defecto es

    usuario: pi
    password: raspberry

  • change_locale: locale por defecto del sistema operativo.
  • change_timezone: franja horaria.
  • memory_split: balancea la memoria entre graficos y procesador.
  • Si planeamos instalar Java con opciones graficas (JavaFx) es recommendable aunmentar la memoria grafica a 128K.
  • ssh: Permite la comunicacion con un servidor ssh.
  • boot_behaviour: Si queremos arrancar por defecto en un escritorio con ventanas o en una consola.
  • update: intenta descargar la ultima version del raspi-config, necesario estar conectado a internet (como se comenta mas adelante)

Si todo ha ido bien, al reiniciar y tras logarnos encontraremos una pantalla semejante a esta:

En el escritorio contamos con el LXTerminal, una consola de comandos:

>sudo raspi-config

>sudo reboot

>sudo halt

Menu de configuraciones

Reiniciar el PI

Apagar el sistema

 

Configurar una red con router DHCP


Si hemos conectado el cable de red correctamente al router y al PI, los LEDs de la red deberían parpadear.

Si el router ofrece un servicio DHCP, no es necesario realizar más configuraciones. El Pi habrá recibido una ip que podemos consultar con:

>ifconfig

 

Configuracion WIFI

Es necesario un adaptador WIFI que soporte el chipset RTL8192cu. Ambas distribuciones Raspbian y Occidentalis son compatibles.

Lo conectamos a un puerto usb (y nos quedamos con un solo puerto, ahora seria recomendable tener un hub usb para ampliarlos). Si tenemos un SO Raspbian, para la configuracion podemos optar por una aplicación grafica:

Doble click en el icono del escritorio para lanzar el menu:

Hacemos click en el botón “scan” y aparecerán las redes al alcance.

Seleccionamos nuestra red local y se abre el menu:

Introducimos la clave wifi en el campo PSK y pulsamos “add”. La red y la ip apareceran configuradas en la pantalla principal.

Alternativamente se puede configurar el fichero:

>sudo nano /etc/network/interfaces

Busca las líneas de abajo y reemplaza el nombre ssid y password de la wifi (manteniendo las comillas):

wpa-ssid «ssid»
wpa-psk «password»

Despues reiniciar el sistema.

>sudo reboot

 

Usar SSH


Si tenemos el servicio ssh activado (en raspi-config) acceder desde un PC mediante ssh con putty es tan sencillo como escribir la IP:

Si al conectarnos encontramos un error connection reset by peer, podria haber un problema con las claves SSH. Se pueden resetear las claves mediante los siguientes comandos:

>sudo rm /etc/ssh/ssh_host_*

>sudo dpkg-reconfigure openssh-server

Borrar las viejas claves

Regenerarlas

 

Escritorio Remoto VNC


Instalaremos una versión ligera del famoso escritorio remoto tightvncserver. Trabajando en modo “terminal remota” ahorraremos la necesidad de los interfaces (teclado, raton, monitor) en el pi.

Para instalar el servidor escribimos en la consola:

>sudo apt-get update
>sudo apt-get install tightvncserver

Para arrancar el servidor escribir el comando:

>vncserver :puerto

en “puerto” escribimos el numero de puerto libre que nos apetezca. Por ejemplo:

>vncserver :1 -geometry 1440×900
(el parámetro geometry define el tamaño en pixels de la pantalla)

La primera vez nos pedirá una password (máximo 8 caracteres):

>raspberry

Aqui vemos el servicio en accion:

 

Configuracion Cliente VNC

Primero descargaremos en nuestro PC una versión de cliente VNC desdehttp://www.realvnc.com/

La pantalla de conexión no es como la siguiente:

Escribimos la ip:puerto del servicio vnc del Pi y pulsamos “connect”. La primera vez dara un aviso (por no tener el certificado) y pasara a la ventana de autenticación:

Y sin más problemas accederemos al escritorio.

 

Configurar el Servicio al arrancar el PI

Acceder al directorio

>cd /home/pi/.config

y crear un nuevo directorio

>mkdir autostart
>cd autostart

crear un nuevo fichero:

>nano tightvnc.desktopt

con el contenido:

[Desktop Entry]
Type=Application
Name=TightVNC
Exec=vncserver :1
StartupNotify=false

 

Transferir Ficheros sftp


Para transferir ficheros entre nuestro PC y el Pi valdrá cualquier aplicación que haga transferencias sftp. La aplicación winscp es gratuita y funciona correctamente http://winscp.net/download/winscp515setup.exe

La transferencia es sencilla e intuitiva, con ventanas tipo total comander:

 

El Conector GPIO


Aunque no es el propósito de este tutorial “primeros pasos”, conviene recordar por su importancia del conector GPIO (General Pourpose Input Output) que conecta el PI a dispositivos externos.


Podemos encontrar un buen tutorial de introducción al conector:
http://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup?view=all

Tutoriales GPIO phyton
http://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup?view=all

Como escribir en los puertos GPIO desde Java
https://blogs.oracle.com/hinkmond/entry/rpi_and_java_embedded_gpio3

 

JDK 8 (con JavaFX) para ARM


No es imprescindible, pero para poder hacer descargas http cómodamente recomendamos el chromium:

>sudo apt-get install chromium-browser

 

Recordar que desde el raspi-config balanceamos la memoria video-cpu a 128 para los graficos. Menos memoria causará fallos de memoria VRAM en JavaFX.

Es recomendable elegir en el raspi-config no arrancar el desktop, para ganar recursos adicionales.

Del fichero de configuración:

>sudo vi /boot/config.txt

Descomentar las lineas:

framebuffer_width=1280
framebuffer_height=720

Llegó el momento de descargar la distribucion de Java8 para procesador ARM desde http://jdk8.java.net/fxarmpreview

Descomprimimos la descarga en el direcotrio opt:

>sudo tar zxvf /home/pi/Downloads/jdk-8-ea-b36e-linux-arm-hflt-29_nov_2012.tar.gz -C /opt

Borramos el descargado

>rm /home/pi/Downloads/jdk-8-ea-b36e-linux-arm-hflt-29_nov_2012.tar.gz

Y listo. Aseguramos que java se ejecuta correctamente.

>sudo /opt/jdj1.8.0/bin/java –versión

 

Ejecutar un ejemplo Java


Podemos probar que la maquina virtual esta correctamente instalada con un ejemplo mínimo

>cd /home/pi

Editamos un fichero de código fuente:

>nano HelloPi.java

Compilamos a un class

>/opt/jdk1.8.0/bin/javac *.java

Y ejecutamos

>/opt/jdk1.8.0/bin/java HelloPi

 

Referencias


Tutorials de Adafruit:
http://learn.adafruit.com/category/learn-raspberry-pi

Respuestas

  1. Genial Miguel!!!
    Este post lo va a petar!!!

  2. ¡¡muy completo!!

  3. […] acaso a alguno de vosotros se os habría ocurrido correr Storm en una Raspberry! (Más allá de que siguiendo el post de Miguel del otro día es técnicamente posible (ver […]

  4. Exelente
    Amigo
    Le invito un café
    Si me apolla con su wuap
    Para comentarle un prollecto
    Gracias

Replica a Yuriel Cancelar la respuesta