domingo, 29 de noviembre de 2015

Orange PI PC - Primeros pasos en una instalación.



Mirando por internet encontré una alternativa a la famosa Raspberry Pi, es más barata y rápida que las primeras versiones de dicha placa.
Existen varios tipos de placas, dependiendo si tienen conectores vga, wifi de serie, conectores sata, micrófono, o numero de usb.
Como no quería gasta mucho dinero, elegí la más barata, Orage PI PC, 15€.
Orage PI PC , no tiene wifi,vga, sata,  y solo tiene 3 usb.
Pero tiene todo lo necesario para que funcione:

CPU    H3 Quad-core Cortex-A7 H.265/HEVC 4K
GPU    ·Mali400MP2 GPU @600MHz . ·Supports OpenGL ES 2.0
Memory (SDRAM)    1GB DDR3 (shared with GPU)
10/100M Ethernet RJ45
Video Outputs        3.5 mm Jack and HDMI , Supports simultaneous output of HDMI and CVBS
Three USB 2.0 HOST, one USB 2.0 OTG


Si queréis emplear wifi, no penséis que sirve cualquier adaptador usb wifi como pasa con la raspberry, solo funcionan los 8188eu y 8192c, y en android solo el 8188eu. Por lo que si queréis wifi comprar  Orage PI PC 2.
La alimentación se toma de un conector de 5V (2A) ,no es usb, es difícil que lo tengáis, por lo que recomiendo que lo compréis, yo casualmente lo tenía.
Preguntas frecuentes

Primeros pasos.
Mi intención es instalar Debian para hacer las pruebas.
Visitamos la página: http://www.orangepi.org/downloadresources/ , y vamos a la sección de nuestra placa Orange Pi PC. Aquí  bajamos la imagen de Debian 8 with XFCE Desktop para instalarla.
La imagen es OrangePI_Jessie_Xfce.img.xz , esta imagen está comprimida, y tenemos dos opciones para instalarla en una SD en linux.
La fácil es utilizar el programa gnome-disks desde root.
La segunda opción es descomprimir la imagen.gz que no creará un archivo con extensión .img.
Ahora instalamos la imagen.img a la SD con la orden:
    dd if=OrangePI_Jessie_Xdfce.img of=/dev/sdx bs=1M oflag=direct
donde /dev/sdx es el lugar donde se encuentra la SD. Para saber donde se encuentra la SD se teclea  fdisk -l y nos mostrará los diferentes discos y su localización.
Todo esto lo debemos hacer siendo root, tener paciencia, tarda tiempo en escribir la SD dependiendo de la clase que sea (4) (10).
En esta página del foro se puede encontrar algo en español:
http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=33
En ingles:
http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=342

Una vez instalada la imagen en la SD nos creará dos particiones:
BOOT donde se instalan las imágenes uImage del kernel y los script.bin (configuraciones)
Linux donde se encuentra el propio sistema operativo.
Lo primero que debemos hace  para que funcione nuestra placa bien es seleccionar la configuración correspondiente para nuestra placa. Para la placa  Orage PI PC tenemos 4 opciones, yo he utilizado script.bin.OPI-2_1080p50 .
Esto se hace de la siguiente forma:
    cp script.bin.OPI-2_1080p50 script.bin
Yo personalmente utilizo el explorador de archivos, es bastante más fácil y rápido.

Todo preparado para el primer arranque, hdmi conectado a la Tv, SD con el sistema operativo instalado, teclado y raton conectado al USB ,y red conectada. Conectamos la alimentación y esperamos como salen los primeros caracteres de arranque de linux.
Nos encontramos ante la petición de usuario y contraseña. Existen dos usuarios ya creados.
orangepi    contraseña: orangepi
root        contraseña: orangepi

Entramos con el usuario orangepi y nos encontramos con un escritorio Xfce.


Lo primero es cambiar la configuración del teclado, entramos en Settings->Keyboard , cambiamos la localización del teclado.
Si queremos cambiar la configuración del teclado en los terminales gráficos, tecleamos como root, la orden:
dpkg-reconfigure locales

Ahora ya podemos cambiar la contraseña desde la consola con la orden: password  , donde nos pedirá la antigua contraseña y la nueva.
Si queremos crear un usuario nuevo o cambiar la contraseña graficamente vamos al menu Settings->Users and Groups


Desde consola y como root podemos crear un usuario nuevo (seta) con la orden: addusers seta

Veremos que cuando entramos en la consola como root o orangepi , nos salda la opción de poder utilizar toda la SD para el sistema. Cuando se instala la imagen en la SD se crea una partición de solo 2 o 3 Gb, si tenemos una SD de 8Gb desaprovecharíamos 5Gb, con la orden sudo fs_resize ,se redimensiona la partición para utilizar toda la SD.

Para que inicie automáticamente un usuario, debemos configurar el gestor de arranque  lightdm .
Entramos en consola como root  y editamos el fichero de configuración con la orden:
pluma /etc/lightdm/lightdm.conf
y editamos las líneas siguientes:
autologin-user=seta
autologin-user-timeout=20
Donde seta es el usuario que se inicia automáticamente, y 20 son los segundos que tarda en iniciarse automáticamente.

Otra cosa que me gusta hacer es instalar un servidor de escritorios remotos. Con el instalador de aplicaciones Synaptic instalamos x11vnc. Ahora  desde consola indicamos la contraseña del servidor de escritorio remoto, x11vnc  -storepasswd .
Para lanzar el escritorio remoto desde consola , x11vnc -forever -usepw -display :0 -ultrafilexfer


Como quiero que el servidor se lance automáticamente al iniciar sesión lo añado a los programas que arranca automáticamente al inicio.
En el menú Settings->Session and Startup el programa x11vnc y con todas la opciones como se ve en la imagen.

Samba
Me gusta compartir ficheros entre los distintos tipos de ordenadores que tengo, por lo que suelo instalar samba. La configuración que tengo en todos mis ordenadores es la misma, no es la mejor ni la más segura pero funciona bien. Grupo de trabajo:SETARED  y directorio compartido para todo /aa  , este directorio hay que crearlo como root y darle los permisos de lectura y escritura.
El fichero /etc/samba/smb.conf es el siguiente:

[global]
    workgroup = SETARED
    server string = %h server
    security = SHARE
    map to guest = Bad User
    obey pam restrictions = Yes
    pam password change = Yes
    passwd program = /usr/bin/passwd %u
    passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
    unix password sync = Yes
    syslog = 0
    log file = /var/log/samba/log.%m
    max log size = 1000
    dns proxy = No
    usershare allow guests = Yes
    panic action = /usr/share/samba/panic-action %d
    idmap config * : range =
    idmap config * : backend = tdb
    hide dot files = yes
    unix extensions = yes

[homes]
    comment = Home Directories
    valid users = %S
    create mask = 0700
    directory mask = 0700

[aa]
    comment = aaHPservidor
    path = /aa
    read only = No
    guest ok = Yes
#    hide dot files = No

[printers]
    comment = El comentario que guste.
    path = /var/spool/samba
    guest ok = Yes
    printable = Yes
    print ok = Yes
    browseable = No


Resumen de pruebas en Debian 8
La impresión es bastante buena en general, la reproducción de sonido a través del hdmi es perfecta, la reproducción de películas se hace difícil al no poder redimensionar. El programa transmission de descarga de programas funciona perfectamente. En los programas que utilizan la librería SDL no he podido que funcione el sonido. Todo lo que no emplee aceleración 3D funciona bien. Aunque el chip soporte OpenGL ES 2.0 , no está implementado en linux.
Es una pena que esta placa pueda dar mucho, pero como no está implementada en Debian 8 se quede algo corta para multimedia. Espero que esto cambie a mejor

Android
La instalación  se debe hacer desde un programa bajo Windows, desde linux no es posible.
http://www.orangepi.org/Docs/SDcardinstallation.html#Install_Android_OS_image
Al arrancar nos encontramos un sistema android completo, con programas de reproducción multimedia que funcionan a las mil maravillas, varios emuladores (N64) que funcionan perfectamente, de lujo.

Yo personalmente creo que esta placa está creada para correr android y la han reconvertido para utilizarla con linux.
Espero que este pequeño artículo le sirva a alguien.

Saludos.
Juan Galaz

martes, 24 de noviembre de 2015

Marcador controlado por bluetooth. Display de 8 caracteres. MAX7219-Arduino

Página principal


Marcador controlado por bluetooth.
Display de 8 caracteres.
MAX7219
Arduino


xsetaseta@gmail.com

Continuando con los anteriores montajes  Marcador controlado por bluetooth y Marcador controlado por bluetooth - 4 caracteres , ahora hago lo mismo, pero con un display de 8 caracteres utilizando un módulo que emplea el MAX7219.

El MAX7219 incorpora todo lo necesario para manejar 8 displays, comunicándose con el arduino mediante el interface SPI.
Para el manejo del MAX7219 mediante el arduino existe una librería bastante buena llamada LedControl que se puede emplear fácilmente.
Como siempre, yo me complico un poco, y prefiero realizar mis propias rutinas de manejo de circuitos, de esta forma entiendo mejor el funcionamiento de los mismos.
He realizado una serie de rutinas para el manejo del MAX7219 que se incorporan en el propio programa arduino, no hace falta ninguna librería añadida. Debo de decir que partes de mis rutinas las he sacado de la librería LedControl, pero cambiándolas mucho.


Para la introducción de textos se emplea la consola del arduino o un terminal serie, o el convertidos serie-bluetooth el cual se puede manejar a distancia. el HC05 es un simple modulo que emplea la comunicación serie (Tx/Rx), en nuestro caso utilizaremos un puerto serie por software mediante los pins A0 y A1 del arduino. En el módulo original HC05 viene a una velocidad de 9600 y con la contraseña 1234.
Para poder cambiar el nombre y contraseña debemos entrar en modo de comandos AT.  Para usar los comandos AT el módulo Bluetooth no debe estar vinculado a ningún dispositivo (led rojo del módulo parpadeando). En mi caso que tengo botón, pulso el botón y entro en modo configuración.
Para comprobar que todo está bien, prueba a escribir AT+
Debes recibir un “OK” .
Cambiar el nombre del dispositivo: AT+NAME:nuevoNombre
Cambiar contraseña a 5555: AT+PSWD:5555 Ver la versión: AT+VERSION
Para salir del modo AT después de configurar todo, quito la alimentación y la vuelvo poner, ahora está con la nueva configuración.
Como existe diferente tipo de módulos, he mantenido las dos resistencias que adaptan los niveles TTL de 5V a los de 3.3V, aunque en muchos módulos no hacen falta.

Esquema del circuito





Circuito montado

Para el control mediante un teléfono android recomiendo ver mi anterior montaje Marcador controlado por bluetooth.

PROGRAMAS

Saludos.
JUAN GALAZ

Bibliografía:

http://www.cecilioruiz.com/bluetooth-arduino/
http://diymakers.es/arduino-bluetooth/
http://www.martyncurrey.com/arduino-bluetooth-control/
http://www.martyncurrey.com/hc-05-fc-114-and-hc-06-fc-114-part-3-master-mode-and-auto-connect/
http://www.seta43.hol.es/arduan1.html
http://diymakers.es/arduino-bluetooth/
http://english.cxem.net/arduino/arduino4.php
http://www.instructables.com/id/Andruino-A-Simple-2-Way-Bluetooth-based-Android-C/step1/How-to-use-ArduDroid/
http://www.instructables.com/id/Cheap-2-Way-Bluetooth-Connection-Between-Arduino-a/?ALLSTEPS
http://mcuoneclipse.com/2013/06/19/using-the-hc-06-bluetooth-module/
http://www.basic4ppc.com/
http://www.extremadura-web.es/Blog/2012/10/29/comunicacion-bluetooth-serie-arduino-y-basic4android/
http://iesromerovargas.es/recursos/elec/sol/basic4android.htm

miércoles, 18 de noviembre de 2015

Grabador de datos gps XM37-1612 en SD. Tracker Arduino Pro Micro

Página principal


Grabador de datos gps XM37-1612 en SD.
Tracker Arduino Pro Micro


xsetaseta@gmail.com

Continuando con el montaje Grabador de datos gps , ahora utilizo el Arduino Pro Micro para hacer todo el circuito mas compacto. Además alimento todo el circuito con una batería recargable de 3,7V. De esta forma se puede meter todo en una caja eléctrica de plástico estanca.
Debemos tener cuidado ahora en la alimentación, las SD funcionan con voltajes de entre 3V a 3,7V ,no aguanta los 5V. Antes de programar el micro, debemos quitar la SD para que no se estropee.

Esquema del circuito.


Todos los componentes del circuito.

Los componentes conectados.

Vista superior

Vista inferior

He aumentado el tiempo entre tomas a 10 segundos, de esta forma se reduce bastante el tamaño del archivo.
También he añadido un tercer led que indica si la SD está bien conectada.
Además he hecho que parpadee el led de REC cuando se graba un dato.
Como vemos en la imagen he utilizado una batería recargable de 500mAh. Si el circuito consume 45mA , con esta batería tenemos una autonomía de 11 horas.
Se necesita el programa en Gambas (VB de linux) para tratar los datos y convertirlos en un fichero con formato kml, este se encuentra en el anterior montaje Grabador de datos gps .


PROGRAMA ARDUINO


Saludos.
Juan Galaz


Bibliografía:
http://www.gpsinformation.org/dale/nmea.htm
rards.html
gamgps.html

lunes, 16 de noviembre de 2015

Grabador de datos gps XM37-1612 en SD. Tracker Arduino

Página principal


Grabador de datos gps XM37-1612 en SD.
Tracker Arduino


xsetaseta@gmail.com


En mis anteriores montajes había utilizado el XM37-1612 para visualizar los datos del gps en un PC y en un LCD Nokia. Ahora en este montaje he realizado un grabador de datos de gps, almacenando los datos en una SD para su posterior tratamiento.
También he realizado un programa en Gambas (VB de linux) para tratar los datos y convertirlos en un fichero con formato kml. Este formato kml se puede importar desde Google Maps y de esta forma visualizarlos en un mapa.


Prototipo en una placas board


Conexión de la SD al arduino.

Caja donde se encuentra metido todo el circuito.



El gps con la alimentación

La caja utilizada es una caja estanca de electricidad, es barata y además se pueden hacer agujeros facilmente.
La alimentación del circuito se toma de un alimentador para móviles, que suele proporcionar unos 2000mA.
Sabiendo que el circuito consume unos 55mA, tendremos una autonomía de 36 horas.
El primer led parpadea hasta que pilla señal de gps, luego se queda fijo.
El segundo led se encuentra apagado, cuando se pulsa el boton de grabar se enciende.
Si se vuelve a pulsar el boton, el led se apaga y se para la grabación.


Programa en gambas para convertir a formato kml


Ruta importada de nuestro gps.


Otra ruta importada de nuestro gps.

En el programa arduino se toman todos los datos que proporciona el gps y se graban los datos en la SD con el siguiente formato:

4200.8979,N,00431.5688,W,799.8,133357,101115,0,1325
4200.8978,N,00431.5690,W,799.3,133358,101115,0,1326
4200.8977,N,00431.5694,W,799.1,133359,101115,0,1327

El gps nos proporciona la longitud y latitud en grados y minutos con decimales, pero el formato kml requiere grados con decimales, por lo que el programa en basic hace la conversión y coloca las cabeceras. Como el gps proporciona datos cada segundo, y los datos son de 52 bytes, cada minuto ocupa 3120 bytes, es una cantidad bastante elevada. Para reducir el numero de datos que se le proporcionan al Google Maps, se puede indicar el numero de segundos entre toma.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Document>
<Folder>
<Folder>
<name><![CDATA[RUTA]]></name>
<Placemark>
<LineString><extrude>1</extrude><altitudeMode>clampToGround</altitudeMode>
<coordinates>
-4.5261567,+42.0149617,799
-4.5261933,+42.0151600,796
-4.5265000,+42.0152850,788
-4.5266867,+42.0152883,785
-4.5268100,+42.0152450,782
-4.5267600,+42.0151033,780
-4.5268350,+42.0148733,780
-4.5268250,+42.0149117,778
</coordinates>
</LineString>
</Placemark>
</Folder>
</Folder>
</Document>
</kml>

Formato kml, este formato se puede importar con Google Maps.

El programa de arduino se puede mejorar bastante, como introducir el numero de segundos entre tomas.
También se puede trocear los ficheros para que no sean muy grandes.
En este programa me pasó de todo, desde alimentar mal durante unos segundos el gps, conectores que no hacen bien contacto, hasta borrarse parte de código de arduino y tener que escribirlo de nuevo.
En la alimentación invertida al gps creo que me cargue algo, pues ahora tarda algo mas en recibir señal.
Mi intención en un próximo montaje, es que se incorpore la batería dentro de la propia caja del gps.

PROGRAMAS

Saludos.
Juan Galaz


Bibliografía:
http://www.gpsinformation.org/dale/nmea.htm
rards.html
gamgps.html