Raspberry

download Raspberry

of 38

Transcript of Raspberry

  • Tutorial Raspberry Pi

    Rev. 1.0

    MCI-MA-01192

    INGENIERA MCI LTDA.

    www.olimex.cl

    Luis Thayer Ojeda 0115. Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

  • MCI Ltda. Luis Thayer Ojeda 0115. Oficina 1105 Santiago, Chile www.olimex.cl Tel: +56 2 23339579 Fax: +56 2 23350589

    MCI Ltda. 2013

    Atencin: Cambios y modificaciones hechas en el dispositivo, no autorizados

    expresamente por MCI, anularn su garanta.

    Cdigo Manual: MCI MA -01192

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 3 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    INTRODUCCIN ............................................................................................................... 5

    CARACTERSTICAS GENERALES ................................................................................... 6

    INTERFAZ DE USUARIO .................................................................................................. 6

    CONFIGURACIN DEL DISPOSITIVO ............................................................................ 8

    1.1 Instalacin del sistema operativo ......................................................................... 8

    1.2 Puesta en marcha................................................................................................ 8

    1.2.1 Acceso mediante UART ............................................................................... 9

    1.2.2 Acceso mediante TV ................................................................................... 10

    1.2.3 Acceso mediante Ethernet .......................................................................... 11

    1.3 Configuracin inicial ........................................................................................... 12

    1.4 Configuracin de la fecha y de la hora ............................................................... 14

    USO ................................................................................................................................. 15

    1.5 Convertirse en usuario administrador ................................................................ 15

    1.6 Instalar un programa .......................................................................................... 16

    1.7 Ejecutar un programa al encender la RPI .......................................................... 16

    1.8 Programar la ejecucin automtica de una tarea ............................................... 17

    1.9 Escritorio remoto ............................................................................................... 19

    1.10 Instalacin de los ejemplos ................................................................................ 20

    1.11 Escritura de programas ..................................................................................... 20

    1.12 Programacin en C ............................................................................................ 21

    1.13 Programacin en Java ....................................................................................... 22

    1.14 Control de puertos GPIO ................................................................................... 22

    1.15 MOD-GSM ......................................................................................................... 24

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 4 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    1.15.1 Conexionado .............................................................................................. 24

    1.15.2 Configuracin previa ................................................................................... 24

    1.15.3 Minicom ...................................................................................................... 25

    1.15.4 Comandos AT ............................................................................................. 25

    1.15.4.1 Hacer una llamada .............................................................................. 26

    1.15.4.2 Enviar un SMS ..................................................................................... 26

    1.15.4.3 Comunicacin GPRS ........................................................................... 27

    1.15.5 Ejemplos ..................................................................................................... 28

    1.15.5.1 Ejemplo de llamada ............................................................................. 28

    1.15.5.2 Ejemplo de envo de SMS ................................................................... 28

    1.15.5.3 Ejemplo de apertura de un socket ....................................................... 29

    1.16 Instalacin de Lighttpd + PHP ............................................................................ 29

    1.16.1 Configuracin ............................................................................................. 29

    1.17 Servidor telefnico ............................................................................................. 31

    1.18 Control de puertos GPIO mediante una pgina WEB ........................................ 32

    1.19 Mdulo RTC ...................................................................................................... 32

    SOLUCIN DE PROBLEMAS ......................................................................................... 37

    1.20 Error permiso denegado .................................................................................... 37

    1.21 La fecha y la hora se pierden al reiniciar la RPI ................................................. 37

    1.22 Prdida de archivos al reiniciar la placa o desconectar la fuente de alimentacin

    37

    HISTORIA DEL DOCUMENTO ........................................................................................ 38

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 5 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    INTRODUCCIN

    La Raspberry Pi rev. B es una tarjeta de grado industrial que viene en un formato

    compacto. Est basada en GNU/Linux con un microprocesador iMX233 ARM926J

    @454MHz y 512Mb de RAM. Puede ser programada mediante una gran variedad de

    lenguajes a travs de comunicacin serial, SSH o bien un teclado y un televisor. La RPI

    es un verdadero mini computador, en ella, puede ver videos, navegar por internet, editar

    documentos, etc. En cuanto a software, es altamente extensible mediante paquetes

    descargables.

    Este documento pretende ser complementario a la documentacin oficial presente en la

    wiki http://elinux.org/RPi_Hub. Se muestran algunas configuraciones iniciales que podran

    ser tiles para el funcionamiento correcto del dispositivo, ejemplos de uso tales como:

    manejo de puertos GPIO, iC, UART con un mdulo MOD-GSM, instalacin de un servidor

    HTTP y solucin de algunos problemas que podran surgir.

    Algunas convenciones utilizadas en este documento:

    Todos los comandos a ejecutar sern mostrados en negrita y, a menos que se diga lo

    contrario, deben ser escritos y ejecutados en su tarjeta Raspberry Pi, ya sea mediante

    acceso remoto por SSH, por puerto serial, o directamente en un teclado USB conectado a

    la placa.

    Ejemplo:

    uname -a

    Todo texto que est despus de un smbolo # en un comando es un comentario, por lo

    que no es necesario transcribirlo.

    Ejemplo:

    uname -a # este comando le mostrar la versin del kernel de Linux que est

    ejecutando, la fecha en la cual fue compilado, y la arquitectura del sistema.

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 6 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    CARACTERSTICAS GENERALES

    Listado de caractersticas:

    System-on-a-chip (SoC): Broadcom BCM2835 (CPU + GPU. La SDRAM est

    separada en un apilado encima)

    CPU: 700 MHz ARM11 ARM1176JZF-S core

    GPU: Broadcom VideoCore IV,OpenGL ES 2.0,OpenVG 1080p30 H.264

    high-profile encode/decode

    Memoria 512 MiB

    Puertos USB 2.0: 2 (mediante un hub USB integrado)

    Salida de video: Video compuesto (RCA), HDMI (no al mismo tiempo)

    Salida de audio: 3.5 mm jack, HDMI

    Entrada de audio: ninguna, pero puede ser agregada con una tarjeta de sonido o un

    micrfono USB

    Almacenamiento: Ranura compatible con SD / MMC / SDIO

    Ethernet: 10/100 wired Ethernet RJ45

    Perifricos de bajo nivel: General Purpose Input/Output (GPIO) pins, Serial Peripheral

    Interface Bus (SPI), IC, IS[2], Universal asynchronous receiver/transmitter (UART)

    Fuente de poder: 5 V (DC), 700 mA (3.5 W) mediante Micro USB tipo B o en los pines

    GPIO

    INTERFAZ DE USUARIO

    Esta placa tiene dos interfaces de usuario utilizables. Una de ellas es el entorno de

    escritorio LXDE, con el cual podr interactuar a travs de un mouse, teclado y un

    televisor. La otra, es un interprete de comandos manejado por la shell BASH accesible de

    igual manera o a travs de UART o Ethernet.

    Las siguientes imgenes muestran estas interfaces:

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 7 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 8 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    CONFIGURACIN DEL DISPOSITIVO

    1.1 Instalacin del sistema operativo

    Para poder utilizar su Raspberry, usted necesitar una tarjeta microSD de al menos 2GB

    (se recomiendan 4GB). Existen cuatro sistemas operativos disponibles en forma de

    imagen en http://www.raspberrypi.org/downloads, de los cuales, tres son basados en

    GNU/Linux. La fundacin Raspberry Pi, recomienda el uso de "Raspbian Wheezy", por lo

    que en este manual nosotros utilizaremos este sistema, el cual es similar a Debian

    Wheezy, pero optimizada para su placa.

    En un computador con sistema operativo GNU/Linux descomprima el archivo

    recin descargado e inserte la tarjeta microSD. Grabe la nueva imagen utilizando el

    siguiente comando en una consola del sistema:

    dd if=nombre_del_archivo_descomprimido of=/dev/XXX #reemplazar XXX por el

    nombre del dispositivo que representa la microSD. Este comando puede daar su

    sistema anfitrin si se equivoca de dispositivo. En caso de duda, solicitar ayuda a un

    experto. Este comando puede tardar varios minutos.

    Para mayor informacin visite la pgina http://elinux.org/RPi_Easy_SD_Card_Setup.

    1.2 Puesta en marcha

    Raspberry Pi tarda alrededor de 40 segundos en arrancar. Transcurrido este tiempo,

    puede ser accedida utilizando las tres formas antes descritas. Cualquiera sea el mtodo

    escogido, deber ingresar con la cuenta de usuario:

    Usuario: pi

    Contrasea: raspberry

    NOTA: Es altamente recomendable que cambie la contrasea para evitar posibles

    problemas de seguridad, para ello utilice el comando:

    passwd

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 9 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    1.2.1 Acceso mediante UART

    Utilice un cable serial para conectar la RPI (pines 6, 7 y 8 del header GPIO) a un

    computador (Si este ltimo no cuenta con un puerto COM real, es necesario utilizar un

    FTDI) y conecte la fuente de poder. Puede utilizar cualquier software que le permita enviar

    y recibir datos mediante la puerta serial, como Minicom si se encuentra en GNU/Linux, o

    bien PUTTY o Hercules si est en Windows. Configur el puerto para funcionar a 115200

    8n1 sin control de flujo.

    En la siguiente imagen se muestra un ejemplo de cmo debe conectar la tarjeta a un

    FTDI.

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 10 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    1.2.2 Acceso mediante TV

    Conecte un televisor que tenga entrada de video compuesta o HDMI, un teclado y un

    mouse USB a su Raspberry. Se recomienda que la conexin al televisor sea por HDMI ya

    que de este modo, la resolucin ser mayor.

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 11 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    1.2.3 Acceso mediante Ethernet

    Este mtodo podra permitirle controlar su Raspberry desde un lugar remoto en Internet.

    Conecte un cable de red y la fuente de poder. Por defecto, la RPI tiene un servidor SSH

    funcionando en el puerto 22. Bajo el entorno Windows, utilice PUTTY, y desde

    GNU/Linux, use la aplicacin de consola ssh:

    ssh [email protected] #reemplazar xxx.xxx.xxx.xxx por la IP asignada a la

    tarjeta.

    Para conocer la IP asignada por DHCP, tiene dos opciones. La primera opcin es revisar

    en su router el ltimo host que se agrego por DHCP. La segunda es acceder por

    cualquiera de los dos mtodos anteriores y ejecutar ifconfig, cuyo resultado ser similar

    al siguiente:

    ifconfig

    eth0 Link encap:Ethernet HWaddr b8:27:eb:c7:3c:43

    inet addr:xxx.xxx.xxx.xxx Bcast:192.168.1.255 Mask:255.255.255.0

    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

    En rojo se marc el lugar donde puede ver que IP se le asign a la tarjeta.

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 12 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    1.3 Configuracin inicial

    La primera vez que encienda su RPI, el modo grfico estar desactivado, por lo que se le

    presentar el siguiente texto:

    Debian GNU/Linux wheezy/sid raspberrypi ttyAMA0

    raspberrypi login:

    Debe ingresar el usuario y la contrasea anteriormente mencionados y, dependiendo del

    modo de acceso, puede que se ejecute automticamente el programa de configuracin

    inicial de su RPI. Si no es el caso, ejectelo usted con:

    sudo raspi-config

    La aplicacin iniciada debera ser similar a la mostrada por la siguiente imagen:

    La siguiente tabla, describe para que sirve cada una de las opciones:

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 13 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    Opcin Descripcin

    info Muestra informacin acerca de la herramienta

    expand_rootfs Expande la particin principal de la tarjeta SD para llenarla. Si su memoria es de 4GB o mas, utilice esta opcin para que pueda ser usada en su totalidad. De lo contrario, solo podr acceder a 2GB.

    overscan Agrega un borde negro necesario para algunos monitores. Esto es til si en su pantalla el texto o la imagen est cortada en los extremos horizontales y verticales.

    configure_keyboard Permite configurar la disposicin de las teclas.

    change_pass Para cambiar la contrasea del usuario root.

    change_locale Cambia las configuraciones regionales acerca del idioma del sistema, pas, juego de caracteres, etc.

    change_timezone Cambia la zona horaria del sistema.

    memory_split Aumenta la memoria RAM disponible para la GPU.

    overclock Permite aumentar la frecuencia de operacin del microprocesador. Recomendamos no modificar este valor.

    ssh Iniciar el demonio ssh al bootear, el cual es til si quiere acceder en forma remota, ya sea a travs de la LAN o desde Internet a su RPI.

    boot_behavior Permite configurar si se debe iniciar el entorno grafico al bootear.

    update Verifica si hay alguna versin nueva de esta herramienta de configuracin y la instala.

    Recomendamos modificar las opciones expand_rootfs, configure_keyboard,

    change_pass, change_locale y boot_behavior. Cambie el parmetro overscan solo si tiene

    problemas con su monitor o televisor.

    Si necesita ms informacin, vea la pgina:

    http://elinux.org/RPi_raspi-config#expand_rootfs_-_Expand_root_partition_to_fill_SD_card

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 14 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    1.4 Configuracin de la fecha y de la hora

    En algunos proyectos es necesario contar con informacin vital como la fecha y la hora.

    Estas pueden ser obtenidas utilizando:

    date

    Si usted desea establecer la fecha (formato ao, mes y da), ejecute:

    sudo date +%Y%m%D -s 20130109

    y para la hora use (formato hora, minutos, segundos):

    sudo date +%T -s 11:27:00

    NOTA: al apagar la Raspberry Pi, la fecha y la hora se pierden. Si tiene su tarjeta

    conectada a Internet, esta se sincronizar automticamente mediante el protocolo NTP. Si

    no, puede utilizar un mdulo RTC (Real Time Clock). Vea Mdulo RTC en el capitulo

    Uso.

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 15 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    USO

    En Rasbian (el S.O), para trabajar puede hacer uso de la consola o del entorno grafico

    para trabajar. No es necesario que usted sea experto en el manejo de GNU/Linux, pero si

    va a utilizar el primer modo, se requiere un cierto grado de conocimiento de algunos

    programas bsicos como: cd, ls, mkdir, rm, cp, mv, chmod, vi o nano, echo y cat. Para

    ver una lista de los argumentos que un comando espera:

    nombre_del_comando -h

    nombre_del_comando --help

    Tambin puede utilizar el comando man para ver el manual de ayuda:

    man nombre_del_comando

    Dentro del programa man, utilice los botones arriba, abajo, RePg y AvPg para

    desplazarse sobre el contenido, y la letra q para salir.

    Recuerde que en GNU/Linux los nombres de archivos son sensibles a las maysculas,

    por lo que ejemplo.txt y EJEMPLO.TXT seran archivos distintos.

    1.5 Convertirse en usuario administrador

    Algunos comandos y archivos necesitan los privilegios del usuario administrador para ser

    ejecutados o modificados. Si solo desea ejecutar una instruccin, utilice:

    sudo comando_a_ejecutar

    Si quiere ejecutar ms de un comando, considere transformarse en el usuario root

    usando sudo su. Al finalizar, use exit para volver a ser el usuario pi. Ejemplo:

    sudo su

    Comando1

    Comando2

    Exit

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 16 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    1.6 Instalar un programa

    Como Raspbian est basado en Debian, usted puede utilizar apt-get para instalar una

    gran cantidad de software. De los siguientes comandos, el primero actualizar la lista de

    paquetes disponibles y el segundo, instalar el programa deseado.

    sudo apt-get update

    sudo apt-get install nombre_del_programa

    1.7 Ejecutar un programa al encender la RPI

    Algunas veces usted necesitar que un programa se ejecute al energizar la RPI. Para

    hacer esto, debe crear un archivo nuevo con nombre /etc/init.d/nombre_del_servicio, con

    el siguiente contenido:

    #! /bin/sh

    start-stop-daemon --start --quiet --oknodo --pidfile

    /var/run/nombre_del_servicio.pid --exec /directorio/programa_a_ejecutar &

    exit 0

    Finalmente, ejecute estos dos comandos:

    sudo chmod +x nombre /etc/init.d/nombre_del_servicio

    sudo update-rc.d nombre_del_servicio defaults

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 17 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    1.8 Programar la ejecucin automtica de una tarea

    Usted querr que ciertas tareas se ejecuten peridicamente. Para ello, el sistema

    operativo presente en su Raspberry cuenta con un comando llamado crontab, el cual

    permite programar la ejecucin de alguna tarea (anlogo al programador de tareas de

    Windows).

    Crontab maneja un archivo de texto que guarda una lista de comandos a ejecutar en un

    tiempo especificado por el usuario. Crontab verificar la fecha y hora en que se debe

    iniciar cada script y si se cumple la condicin, lo har en segundo plano.

    Cada entrada est definida de la siguiente forma:

    m h dom mon dow cmd

    La siguiente tabla describe cada campo de una entrada:

    Abreviatura Parmetro Descripcin

    m Minutes Minuto/s en el cual se ejecutar la tarea

    h Hour Hora/s en la que se ejecutar la tarea

    dom Day of month Da/s del mes en que se ejecutar la tarea

    mon Month Mes/es

    dow Day of week Da de la semana

    cmd command Tarea a ejecutar

    Cada campo puede contener ms de un valor, por ejemplo, si en el campo dom, dice

    2,10,25,31 quiere decir que la tarea se ejecutar solo los das 2, 10, 25, 31 del mes.

    Puede utilizar el smbolo * para indicar que debe ser ejecutado en todas las opciones

    posibles, por ejemplo, un * en el campo dow, indicar que la tarea debe ser ejecutada

    todos los das de la semana.

    Algunos ejemplos:

    16 20 * * * /root/enviarDatos.sh

    Todos los das a las 20:16 hrs se ejecutar el programa /root/enviarDatos.sh.

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 18 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    30 7 20 11 * /home/usuario/scripts/actualizar.sh

    El da 20 de noviembre a las 7:30 correr el script actualizar.sh.

    0 18 1,15,30 * * /root/enviarDatos.sh

    A las 18 horas, todos los das 1, 15 y 30 de cada mes se enviarn los datos

    recopilados.

    Si necesita ms informacin y/o ejemplos, vea la siguiente pgina:

    https://help.ubuntu.com/community/CronHowto

    Para agregar o borrar tareas, ejecute el siguiente comando y modifique las entradas:

    crontab e

    Para guardar los cambios presione CTRL+O, y para cerrar el editor, CTRL+X.

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 19 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    1.9 Escritorio remoto

    Puede configurar la Raspberry Pi de modo que sea controlada en modo grfico en forma

    remota a travs de Internet o LAN. Para ello, debe instalar un servidor VNC en su tarjeta.

    Ejecute:

    sudo apt-get update #actualizamos la informacin de los respositorios

    sudo apt-get install x11vnc #instalamos x11vnc

    x11vnc -storepasswd #creamos una contrasea para el servicio

    mkdir ~/.config/autostart

    Cree el archivo ~/.config/autostart/x11vnc.desktop con el siguiente contenido:

    [Desktop Entry]

    Encoding=UTF-8

    Type=Application

    Name=X11VNC

    Comment=

    Exec=x11vnc -forever -usepw -display :0 -ultrafilexfer

    StartupNotify=false

    Terminal=false

    Hidden=false

    Reinicie su RPI utilizando:

    sudo reboot

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 20 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    1.10 Instalacin de los ejemplos

    Descargue los ejemplos que estn en la pgina:

    http://www.olimex.cl/product_info.php?products_id=1192&product__name=Raspberry_Pi_

    Model_B

    Luego, descomprmalos en la carpeta /home/pi/examples de la microSD. Estos ejemplos

    sern utilizados a lo largo de este manual.

    1.11 Escritura de programas

    Para editar archivos o programas, tiene una multitud de opciones: utilizar los editores de

    texto en consola ya nombrados, usar el editor leafpad (o algn otro instalado por usted) en

    el modo grfico, y por ltimo, usar algn software en su computador, por ejemplo Eclipse

    o Netbeans,. En este ltimo caso, estos programas deben ser usados solo como editores,

    y luego se debe copiar el cdigo fuente a su Raspberry para compilar ah.

    Para pasar archivos desde su computador a su RPI utilice el programa scp de la

    siguiente forma:

    scp archivo_o_carpeta_a_copiar [email protected]:/directorio_en_su_olinuxino

    Cambie xxx.xxx.xxx.xxx por la IP de su placa.

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 21 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    1.12 Programacin en C

    Raspbian viene con el compilador GCC incorporado. En la carpeta

    /home/pi/examples/hello_world existe un Hello World listo para ser compilado.

    cd /home/pi/examples/hello_world

    Si desea examinar el cdigo fuente digite:

    cat hello_world.c

    Para compilarlo utilice:

    gcc hello_world.c o hello_world

    Finalmente para ejecutarlo escriba:

    ./hello_world

    Para obtener ayuda acerca de alguna librera estndar, usted puede consultar la seccin

    3 de man, de la siguiente manera:

    man 3 stdio

    Del mismo modo, puede obtener informacin acerca de alguna funcin con:

    man 3 printf

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 22 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    1.13 Programacin en Java

    Para programar en java deber instalar openJDK7:

    Sudo aptitude install openjdk-7-jdk

    NOTA: necesita al menos 121Mb de espacio disponible en su microSD

    Cree el archivo HelloWorld.java con nano:

    nano HelloWorld.java

    y escriba el siguiente contenido:

    public class HelloWorld {

    public static void main(String[] args) {

    System.out.println("Hello, World");

    }

    }

    Compile y ejecute el programa del siguiente modo:

    javac HelloWorld.java

    java HelloWorld

    1.14 Control de puertos GPIO

    Para utilizar un pin GPIO debe habilitarlo, definir su direccin y escribir o leer su estado.

    NOTA: todos los comandos en esta seccin deben ser ejecutados como superusuario.

    Convirtase en l utilizando el mtodo descrito en la seccin 1.5 Convertirse en usuario

    administrador.

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 23 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    NOTA: los nmero de pines GPIO del conector son distintos al nmero de los pines GPIO

    real del microprocesador. Para mayor informacin puede ver la siguiente pgina:

    http://elinux.org/RPi_Low-

    level_peripherals#Referring_to_pins_on_the_Expansion_header.

    Habilite el pin deseado usando el comando /sys/class/gpio/export. Por ejemplo, para usar

    el pin GPIO numero XX, escriba en la consola:

    echo "XX" > /sys/class/gpio/export #reemplaze XX con un nmero del pin valido

    Esto, crear los archivos /sys/class/gpio/gpioXX/direction y /sys/class/gpio/gpioXX/value.

    Defina su direccin en el archivo /sys/class/gpio/gpioXX/direction. Esta puede ser out

    para salida e in para entrada.

    echo out > /sys/class/gpio/gpioXX/direction

    echo in > /sys/class/gpio/gpioXX/direction

    El archivo /sys/class/gpio/gpioXX/value permite conocer la entrada o establecer la salida.

    Un 0 (cero) significa estado bajo, y un 1 (uno) el estado alto.

    echo 0 > /sys/class/gpio/gpioXX/value #establece en estado bajo la salida

    echo 1 > /sys/class/gpio/gpioXX/value #establece en estado alto la salida

    cat /sys/class/gpio/gpioXX/value #leer el estado de la entrada

    En los ejemplos descargados anteriormente, existe un Hola Mundo. En el pin 11 del

    conector P1 (pin GPIO 17), ponga un led y una resistencia en serie a GND y ejecute el

    cdigo con el siguiente comando:

    sudo sh /home/pi/examples/led_blink

    El LED comenzar a parpadear con un perodo de 2 segundos. Presione CTRL+C para

    terminar el proceso.

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 24 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    1.15 MOD-GSM

    En el siguiente ejemplo, utilizaremos un mdulo MOD-GSM que puede ser utilizado, entre

    otras cosas, para realizar llamadas, enviar mensajes SMS y abrir sockets TCP.

    1.15.1 Conexionado

    El mdulo debe ser cableado al puerto GPIO (solo los pines TX, RX, y GND) de su RPI. El

    puerto UART para controlar el mdulo est representado por el dispositivo /dev/ttyAMA0.

    La siguiente imagen muestra un ejemplo del cableado:

    1.15.2 Configuracin previa

    Para el correcto funcionamiento de este ejemplo, debe realizar dos cosas antes. La

    primera es cambiar el permiso de lectura y escritura del archivo /dev/ttyAMA0. Ejecute el

    siguiente comando:

    chmod o+rw /dev/ttyAMA0

    NOTA: Puede obviar el comando anterior, pero deber trabajar con la cuenta de

    administrador. Si prefiere ejecutarlo, deber hacerlo cada vez que reinicie la placa.

    La segunda, es desactivar la consola que est presente en el puerto UART. Para ello

    comente la ltima lnea del archivo /etc/inittab. Finalmente reinicie.

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 25 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    1.15.3 Minicom

    Utilizaremos minicom, un controlador de modem basado en texto para enviarle

    comandos AT al mdulo.

    La documentacin del mdulo y una lista de comandos AT para controlar el dispositivo

    pueden ser encontrados en:

    https://www.olimex.com/Products/Modules/RF/MOD-GSM/resources/MOD-

    GSM_rev_D.pdf

    https://www.olimex.com/Products/Modules/RF/MOD-

    GSM/resources/SIM340DZ_ATC_V1.00.pdf

    Para instalar minicom escriba:

    sudo apt-get install Minicom

    Para ejecutarlo use:

    sudo minicom D /dev/ttyAMA0

    Para cerrarlo presione Ctrl+A, luego la letra q y volver al intrprete de comandos BASH.

    A modo de ejemplo, aprenderemos a realizar una llamada, enviar un mensaje SMS y abrir

    un socket TCP. El chip que utilizar debe estar habilitado y con saldo disponible para los

    servicios a utilizar.

    1.15.4 Comandos AT

    Los comandos de esta seccin deben ser ingresados en minicom.

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 26 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    1.15.4.1 Hacer una llamada

    Realizar una llamada:

    ATDnmero_telefnico;

    Ejemplos de llamadas a distintos nmeros:

    ATD103;

    ATD91234567;

    ATD+56987654321;

    Colgar un llamado:

    ATH

    1.15.4.2 Enviar un SMS

    Envo de un SMS:

    AT+CMGF=1

    AT+CSMP?

    AT+CMGS=nmero_telefnico

    El mdem responder:

    >

    Luego de esto, escribir el mensaje a enviar y presionar CTRL-Z (cdigo ASCII 0x1A) y el

    mensaje ser enviado. Puede tardar unos cuantos segundos en ser recibido.

    Ejemplo:

    AT+CMGF=1

    AT+CSMP?

    AT+CMGS=+56991234567

    > Hola Mundo!

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 27 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    >

    +CMGS: 5

    OK

    1.15.4.3 Comunicacin GPRS

    Configuracin de un APN:

    AT+CSTT=APN,USUARIO,CONTRASEA

    Ejemplo para movistar:

    AT+CSTT=web.tmovil.cl,web,web

    Para registrarse en la red GPRS

    AT+CIICR

    Para iniciar un socket en modo normal. La comunicacin es iniciada en segundo plano.

    Enve y reciba datos utilizando los comandos AT+CIPSEND y AT+CIPRECV

    respectivamente:

    AT+CIPMODE=0

    Para iniciar un socket en modo transparente. La comunicacin es iniciada en primer plano

    Los datos son enviados directamente a medida que son escritos en el puerto serial

    (activado por defecto).

    AT+CIPMODE=1

    Para conocer la IP que le fue asignada a su dispositivo:

    AT+CIFSR

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 28 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    Para abrir un socket hacia una IP y un puerto:

    AT+CIPSTART=TCP,IP,PUERTO

    Ejemplo:

    AT+CIPSTART=TCP,190.154.23.22,2020

    1.15.5 Ejemplos

    En la carpeta /home/pi/examples/mod-gsm encontrar los ejemplos que utilizaremos a

    continuacin. Acceda a dicha carpeta utilizando:

    cd /home/pi/examples/mod-gsm

    Si quiere ver el cdigo fuente de algn script o programa ejecute:

    cat nombre_del_programa

    1.15.5.1 Ejemplo de llamada

    El script /home/pi/examples/mod-gsm/llamar.sh har una llamada al nmero que usted

    especifique como argumento. Luego de 15 segundos cortar automticamente. Ejectelo

    del siguiente modo:

    sudo sh llamar.sh 912345678

    1.15.5.2 Ejemplo de envo de SMS

    El programa enviarSMS.sh enviar un mensaje al nmero indicado. El texto a enviar debe

    estar entrecomillas.

    Ejemplo:

    sudo sh enviarSMS.sh 912345678 hola mundo!

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 29 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    1.15.5.3 Ejemplo de apertura de un socket

    El programa socket.sh abre un socket a la IP y al puerto indicado. Este programa enviar

    por el socket la fecha y la temperatura de un sensor ficticio (datos aleatorios).

    Ejemplo:

    sudo sh socket.sh 190.132.12.55 2020

    Para lograr hacer funcionar este ltimo ejemplo, es necesario que en el equipo de la IP

    que usted especific exista otro programa que haya abierto un socket en modo escucha

    para que reciba los datos. Puede utilizar el programa netcat para abrir un socket en

    dicho modo.

    1.16 Instalacin de Lighttpd + PHP

    En este apartado se instalar lighttpd, un servidor http que le permitir mostrar html

    esttico en un navegador de pginas web, y PHP, para mostrar contenido dinmico. Ms

    adelante, utilizando estas herramientas veremos dos ejemplos que nos permitirn utilizar

    un mdulo GSM y los puertos GPIO en forma remota.

    Instalacin del servidor y de PHP:

    sudo /etc/init.d/lighttpd start

    1.16.1 Configuracin

    Al final del archivo /etc/lighttpd/lighttpd.conf agregar la siguiente lnea:

    include "/etc/lighttpd/fastcgi.conf"

    Crear el archivo /etc/init.d/lighttpd con el siguiente contenido:

    server.modules += ( mod_fastcgi )

    #server.indexfiles += ( index.php ) #this is deprecated

    index-file.names += ( index.php )

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 30 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    fastcgi.server = (

    .php => (

    localhost => (

    bin-path => /usr/bin/php-cgi,

    socket => /run/lighttpd/php-fastcgi.sock,

    max-procs => 4, # default value

    bin-environment => (

    PHP_FCGI_CHILDREN => 1, # default value

    ),

    broken-scriptfilename => enable

    ))

    )

    Para iniciar el servidor:

    /etc/init.d/lighttpd start

    Para detener el servidor:

    /etc/init.d/lighttpd stop

    La carpeta /var/www es el directorio que ser compartido a travs del servidor, por lo que

    debe dejar ah sus pginas web. El dueo de esta carpeta es root y lighttpd corre bajo

    un usuario nuevo llamado www-data. Los archivos contenidos en este directorio deben

    tener el permiso de lectura para otros usuarios activado (utilice chmod para cambiar el

    permiso). Para comprobar que todo est funcionando correctamente, cree un archivo de

    nombre holaMundo.php en la carpeta compartida con el siguiente contenido:

    Ejemplo PHP

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 31 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    En el equipo anfitrin, acceder a http://xxx.xxx.xxx.xxx/holaMundo.php, reemplace

    xxx.xxx.xxx.xxx por la IP de la tarjeta. Si el navegador muestra Hola Mundo, significa

    que el servidor HTTP + PHP est funcionando correctamente. Por el contrario, si muestra:

    o algn error, quiere decir que hubo algn problema. Revisar que se hayan realizado

    correctamente los pasos anteriores.

    1.17 Servidor telefnico

    En el siguiente ejemplo, se utilizar el servidor HTTP + PHP recin instalado, para poder

    controlar remotamente el mdulo MOD-GSM. Para ello, se cre un servidor telefnico en

    una pgina web para realizar llamadas y enviar mensajes de texto.

    Copie la carpeta /home/pi/examples/mod-gsm a /var/www

    sudo cp /home/pi/examples/mod-gsm/* /var/www/

    En un navegador de su computador anfitrin, vaya a

    http://xxx.xxx.xxx.xxx/servidorTelefonico.php. Ah, puede realizar llamadas y enviar

    mensajes de texto en forma remota.

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 32 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    1.18 Control de puertos GPIO mediante una pgina WEB

    El propsito de este ejemplo, es mostrar como es posible activar o desactivar dispositivos

    conectados a la RPI a travs de una pgina web.

    Copie el archivo /home/pi/examples/webio/olinuxino-web-io/init/gpio en /etc/init.d/gpio

    sudo cp /home/pi/examples/webio/olinuxino-web-io/init/gpio /etc/init.d/gpio

    Cambie el permiso del archivo /etc/init.d/gpio para dejarlo como ejecutable

    sudo chmod +x /etc/init.d/gpio

    Ejecute el servicio

    sudo /etc/init.d/gpio start #si desea que se ejecute con cada inicio vea la seccin

    1.7 Ejecutar un programa al encender la RPI

    Copie la carpeta de la pgina web a la carpeta del servidor http

    cp -R /home/pi/examples/webio/olinuxino-web-io/web/ /var/www/

    En un navegador de su computador anfitrin, vaya a

    http://xxx.xxx.xxx.xxx/web/io/content.html (cambie xxx.xxx.xxx.xxx por la IP de su

    OLinuXino). Presione sobre las circunferencias para cambiar las salidas de los pines. Las

    siguientes imgenes muestran la pgina web que controla los puertos GPIO y un ejemplo

    del cableado.

    1.19 Mdulo RTC

    Como vimos anteriormente, la tarjeta Raspberry Pi no posee un reloj de tiempo real, por lo

    que pierde la fecha y la hora en cada reinicio. Mediante el uso del mdulo RTC, usted

    puede agregarle esta caracterstica. Este mdulo est basado en el circuito integrado

    DS1307. Como mnimo usted debe saber que funciona con comunicacin i2c, su direccin

    de esclavo es 1101000 (0x68 en hexadecimal), y que cuenta con 64 bytes de memoria,

    distribuidos de la siguiente forma:

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 33 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    Los primeros 7 bytes deben ser escritos en cdigo BCD y representan la hora y la fecha.

    Si el mdulo es nuevo, el bit 7 del byte 0 estar en 1, indicando que el oscilador est

    desactivado. Usted debe cambiarlo a 0 para que el oscilador comience a funcionar. Para

    ello basta con que configure los segundos.

    Puede obtener mayor informacin mirando su datasheet aqu:

    http://www.sparkfun.com/datasheets/Components/DS1307.pdf.

    Conecte los pines SDA y SCL del mdulo RTC en los pines correspondientes del conector

    P1 de su RPI. Adems deber conectar los pines GND y 5v. El pin SQW djelo sin

    conectar.

    Cargue los drivers en el kernel ejecutando los siguientes comandos:

    sudo modprobe i2c-dev

    sudo modprobe i2c-bcm2708

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 34 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    Necesitar instalar el paquete i2c-tools. Para ello escriba:

    sudo apt-get install i2c-tools

    Dentro de este paquete existen varios comandos que permiten el manejo del puerto i2c,

    los cuales sern explicados a continuacin:

    Volcado de toda la memoria sudo i2cdump -y -r 0-63 1 0x68

    Leer el valor del registro XX sudo i2cget -y 1 0x68 0xXX

    Escribir la hora HH:MM:SS sudo i2cset -y 1 0x68 0x00 0xSS 0xMM 0xHH i

    Escribir la fecha: da de la semana AA, da del mes DD, mes MM, ao YY

    sudo i2cset -y 1 0x68 0x03 0xAA 0xDD 0xMM 0xYY i

    Ejemplos:

    Para escribir la hora 14:56:10 en el mdulo utilice:

    sudo i2cset -y 1 0x68 0x00 0x10 0x56 0x14 i

    Para escribir la fecha jueves 10 de enero del 2013, da de la semana 4 jueves-, da del

    mes 10, mes 1, ao 13, use:

    sudo i2cset -y 1 0x68 0x03 0x04 0x10 0x01 0x13 i

    Con estos dos ltimos comandos, usted debe configurar el mdulo con la fecha y la hora

    actual.

    Luego, para sincronizar la fecha y la hora del mdulo RTC a su tarjeta RPI, siendo el

    super usuario, cree el archivo /root/sincronizarRTC.sh con el siguiente contenido:

    segundos=`i2cget -y 1 0x68 0x00 | sed "s/^0x//"`

    minutos=`i2cget -y 1 0x68 0x01 | sed "s/^0x//"`

    horas=`i2cget -y 1 0x68 0x02 | sed "s/^0x//"`

    diaDeLaSemana=`i2cget -y 1 0x68 0x03 | sed "s/^0x//"`

    dia=`i2cget -y 1 0x68 0x04 | sed "s/^0x//"`

    mes=`i2cget -y 1 0x68 0x05 | sed "s/^0x//"`

    ano=`i2cget -y 1 0x68 0x06 | sed "s/^0x//"`

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 35 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    date +%Y%m%D -s "20$ano$mes$dia"

    date +%T -s "$horas:$minutos:$segundos"

    Bsicamente, lo que hace este programa es obtener mediante i2c la hora y la fecha desde

    la memoria RAM del mdulo y guardarla en el sistema operativo.

    Para actualizarla en cada reinicio, deber transformar el archivo en ejecutable, para ello

    realice los dos siguientes pasos:

    Cambie el permiso de ejecucin ejecutando el comando:

    sudo chmod +x /root/sincronizarRTC.sh

    Con la siguiente instruccin, sincronizar la hora del RTC a su Raspberry:

    sudo sh /root/sincronizarRTC.sh &

    Si desea que se ejecute al inicio debe realizar el procedimiento visto en la seccin 0

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 36 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    Programar la ejecucin automtica de una tarea

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 37 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    SOLUCIN DE PROBLEMAS

    1.20 Error permiso denegado

    Al ejecutar algunos programas, ver que el sistema le responde con un error:

    -bash: /sys/class/gpio/gpio14/direction: Permiso denegado

    Este error se debe a que la RPI trabaja con un usuario que tiene pocos privilegios.

    Anteponga sudo a su comando a ejecutar y este correr bajo el super usuario (root).

    NOTA: tenga cuidado con los comandos que ejecuta, puesto que podra daar el sistema

    operativo, la microSD u otro hardware.

    1.21 La fecha y la hora se pierden al reiniciar la RPI

    Para resolver este inconveniente, puede usar un servidor NTP. Solo necesita conectar su

    RPI a una red que tenga salida a Internet y automticamente se sincronizar la fecha. Si

    esta no es una posibilidad para usted, otra forma de recuperar la hora podra ser

    utilizando un modulo RTC. Vea la seccin 1.19 Mdulo RTC en el capitulo Uso.

    1.22 Prdida de archivos al reiniciar la placa o desconectar la fuente

    de alimentacin

    Linux mantiene datos en la memoria para evitar hacer lecturas y escrituras de disco

    (relativamente lentas). Esto mejora el rendimiento pero, si la placa falla, es posible que

    se pierdan datos. El programa sync asegura que cualquier cosa que haya en memoria

    sea escrita en disco. Para mayor informacin lea el manual del comando sync:

    man sync

    Es buena idea utilizar sync antes de quitar la fuente de poder o reiniciar utilizando el botn

    RESET.

  • Manual Usuario de [NOMBRE DE EQUIPO] Pgina 38 de 38

    Luis Thayer Ojeda 0115 Of. 1105 Santiago, Chile Tel. +56 2 23339579 [email protected]

    www.olimex.cl

    HISTORIA DEL DOCUMENTO

    Revisin Fecha Editado por Descripcin/Cambios

    1.0 enero de 2013 Matas Castillo Felmer

    Versin inicial del documento