14 de septiembre de 2014
Configurando I2C en Raspberry Pi
I2C: Es un bus de comunicaciones en serie, muy usado en dispositivos embebidos, solo utiliza tres lineas, SDA=datos,SCL=reloj y GND=Tierra.
Para habilitar el I2C se requieren cargar dos modulos i2c-bcm2708 y i2c-dev, pasos:
Paso 1: Ingresar por SSH (putty) al raspberry pi
Paso 2: Editar el archivo modules
pi@raspberrypi ~ $ sudo nano /etc/modules
Paso 3: Agregar dos lineas al archivo
i2c-bcm2708
i2c-dev
Paso 4: Guardamos y reiniciamos.
pi@raspberrypi ~ $ sudo reboot
Por defecto estos módulos vienen deshabilitados se procede a habilitarlos.
Paso 5: Editar raspi-blacklist.conf, comentamos las lineas con #
pi@raspberrypi ~ $ sudo nano /etc/modprobe.d/raspi-blacklist.conf
Paso 6: Guardamos y reiniciamos
pi@raspberrypi ~ $ sudo reboot
Paso 7: Si tenemos un dispositivos conectado al I2C lo veremos con el siguiente comando
pi@raspberrypi ~ $ sudo i2cdetect -y 1
Usar port 0 cuando es un raspberry pi con 256 Mb de Ram. Versiones viejas.
Nota: Pasos aplicados a a versión SO: 2014-06-20-wheezy-raspbian, Raspberry Pi Model B+
13 de septiembre de 2014
Instalacion Java ME Embedded
Java Micro Edition Embedded
La instalación de Java ME Embedded se hace en dos partes, la primera es la plataforma de desarrollo, la segunda es el ambiente de ejecución, que para este caso es en el Raspberry PI.
Nota: El ambiente de Desarrollo SDK para JME solo esta disponible para Windows.
Instalación del Ambiente de Desarrollo
Ambiente Base , JDK y Netbeans
- Java SE 8 (JDK) Seguir el Wizard del instalador.
- Netbeans 8 Descargar versión completa, si instalan el servidor web hacerlo en el directorio raíz (C:/). En las ultimas versiones de netbeans, este no incluye los plugins para JME.
Ambiente para Java ME Emebedded (pagina principal: Java ME Embedded)
Cuando se ingresa a la pagina principal hay que seleccionar la descarga de SDK.
De la pagina de descarga del SDK, se encuentra el instalador para JME y el plugin que se requiere para Netbeans.
Paso 1: El jmesdk, se debe instalar en la unidad raíz(C:/).
Paso 2: Descomprimir el plugin de netbeans, luego en netbenas, en el menú Tools -> Plugins, en la ventana nueva, seleccionar la pestaña "Downloaded" y dar click en el botón "Add Plugin", en la ventana de abrir archivos, buscar la carpeta donde descomprimio el plugin, seleccionar todos los archivos y dar click en el botón "Install".
Hasta este punto se ha instalado el ambiente de desarrollo.
El SDK de JME permite emular un dispositivo y todos sus accesos (GPIO, SPI, I2C, PWM), sin la necesidad de tener un dispositivo físico.
Instalación Ambiente de Ejecución en Raspberry PI
Ambiente de ejecución de JMEE:
En la pagina también se encuentra el instalador para otros dispositivos.
El instalador es solo un archivo comprimido con los ejecutables.
Se descarga el archivo "oracle-jmee-8-0-rr-raspberrypi-linux-bin.zip", se procede a enviarlo al raspberry pi, usando FileZilla (para transferencias ftp, sftp). Nos conectamos al raspberry pi mediant SSH con putty.
Después de tener el archivo en el dispositivos hacemos lo siguiente:
Paso 1: Crear un directorio:
pi@raspberrypi ~ $ mkdir jmee8.0
Paso 2: descomprimir el archivo en el directorio:
pi@raspberrypi ~ $ unzip oracle-jmee-8-0-rr-raspberrypi-linux-bin.zip -d jmee8.0/
Paso 3: movemos la carpeta jmee8.0 a /opt/
pi@raspberrypi ~ $ sudo mv jmee8.0 /opt/
Paso 4: ingresamos al directorio:
pi@raspberrypi ~ $ cd /opt/jmee8.0/
Paso 5: se dan permisos a dos directorios:
pi@raspberrypi /opt/jmee8.0 $ sudo chmod -R 755 appdb bin
Instalación completada; A este punto ya se tiene instalado el ambiente necesario para crear y ejecutar aplicaciones Java ME Embedded.
Ejemplo:
Para probar la instalación haremos el clásico Hola Mundo!!
Abrimos Netbeans y creamos el proyecto, se selecciona Java ME Embedded.
El proyecto se va ha llamar JavaMEHolaMundo.
Escribimos el código en la clase que nos creo por defecto.
Ejecutamos, y para ver la consola damos click en el botón "Output", el mensaje "Hasta pronto..." solo se muestra cuando damos click en el botón "stop".
Ahora ejecutaremos el código en el Raspberry PI, pero pimero haremos unos pasos adicionales.
Ingresamos a la consola y ejecutamos los siguiente comandos:
pi@raspberrypi ~ $ cd /opt/jmee8.0/bin/
pi@raspberrypi /opt/jmee8.0/bin $ sudo ./usertest.sh
Java is starting. Press Ctrl-C to exit
Este comando es el modo de desarrollo, que permite ejecutar el app sin tener que estar deplegando en el dispositivo de forma manual.
Se procede a conectar el SDK con el dispositivo.
En los iconos, vemos que esta el "demonio" del sdk de jmee, damos click y nos aparece una ventana, en esta agregamos la conexion al dispositivo.
Después de estar conectado, desde el netbeans, vamos a observar a que estamos conectados:
Ahora configuramos el proyecto para que se ejecute de forma remota en el rasbperry pi., en propiedades del proyectos cambiemos el "Device".
Y procedemos a ejecutarlo y detenerlo, el resultado es que en la pantalla de putty se observa lo siguiente:
FIN ;-)
Nota: En este mini-manual, se necesita haber instalado el SO en el Raspberry PI, tener acceso por SSH y haber manejado putty, filezilla, netbeans y conocer de programacion en java.
Cualquier dudad sera atendida en los comentarios de esta entrada.
Raspberry Pi is a trademark of the Raspberry Pi Foundation, http://www.raspberrypi.org
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners. http://www.oracle.com
7 de septiembre de 2014
JME GPIO
Java Embedded Micro Edition
Al trabajar con Java ME para dispositivod embebidos, especialmente Raspberry PI, se puede encontrar con este error:
java.lang.UnsupportedOperationException: Incompatible direction
- com/oracle/deviceaccess/gpio/impl/GPIOPinImpl.setDirection(), bci=96
- org/andrexweb/Main.startApp(Main.java:60)
- javax/microedition/midlet/MIDletTunnelImpl.callStartApp(), bci=1
- com/sun/midp/midlet/MIDletPeer.startApp(), bci=5
- com/sun/midp/midlet/MIDletStateHandler.startSuite(), bci=264
- com/sun/midp/main/AbstractMIDletSuiteLoader.startSuite(), bci=38
- com/sun/midp/main/CldcMIDletSuiteLoader.startSuite(), bci=5
- com/sun/midp/main/AbstractMIDletSuiteLoader.runMIDletSuite(), bci=132
- com/sun/midp/main/AppIsolateMIDletSuiteLoader.main(), bci=26
GPIOPinConfig gPIOPinConfig4 = new GPIOPinConfig(0, 4, GPIOPinConfig.DIR_OUTPUT_ONLY, GPIOPinConfig.MODE_OUTPUT_PUSH_PULL, GPIOPinConfig.TRIGGER_BOTH_EDGES, false);
GPIOPin gpio4 = (GPIOPin) DeviceManager.open(gPIOPinConfig4);
gpio4.setDirection(GPIOPin.OUTPUT);
De esta forma configuramos el GPIO, como se requiere.
Al trabajar con Java ME para dispositivod embebidos, especialmente Raspberry PI, se puede encontrar con este error:
java.lang.UnsupportedOperationException: Incompatible direction
- com/oracle/deviceaccess/gpio/impl/GPIOPinImpl.setDirection(), bci=96
- org/andrexweb/Main.startApp(Main.java:60)
- javax/microedition/midlet/MIDletTunnelImpl.callStartApp(), bci=1
- com/sun/midp/midlet/MIDletPeer.startApp(), bci=5
- com/sun/midp/midlet/MIDletStateHandler.startSuite(), bci=264
- com/sun/midp/main/AbstractMIDletSuiteLoader.startSuite(), bci=38
- com/sun/midp/main/CldcMIDletSuiteLoader.startSuite(), bci=5
- com/sun/midp/main/AbstractMIDletSuiteLoader.runMIDletSuite(), bci=132
- com/sun/midp/main/AppIsolateMIDletSuiteLoader.main(), bci=26
Este error resulta de aplicar la propiedad "gpio4.setDirection(GPIOPin.OUTPUT);" a un GPIO, Java ME trae preconfigurado los GPIO (ver: Device I/O Preconfigured list), ejemplo el GPIO 4, trae como direccion INPUT, es decir que es solo entrada, pero lo vamos a usar para OUPUT salida, entonces tenemos que hacer lo siguiente:
GPIOPinConfig gPIOPinConfig4 = new GPIOPinConfig(0, 4, GPIOPinConfig.DIR_OUTPUT_ONLY, GPIOPinConfig.MODE_OUTPUT_PUSH_PULL, GPIOPinConfig.TRIGGER_BOTH_EDGES, false);
GPIOPin gpio4 = (GPIOPin) DeviceManager.open(gPIOPinConfig4);
gpio4.setDirection(GPIOPin.OUTPUT);
De esta forma configuramos el GPIO, como se requiere.
Suscribirse a:
Entradas (Atom)


















