April 21, 2017 | Author: Héctor Bustos Gutiérrez | Category: N/A
Tutorial Raspberry Pi Rev. 1.0 MCI-MA-01192
INGENIERÍA 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
Atención: Cambios y modificaciones hechas en el dispositivo, no autorizados expresamente por MCI, anularán su garantía.
Código Manual: MCI – MA -01192
Manual Usuario de [NOMBRE DE EQUIPO]
Página 3 de 38
INTRODUCCIÓN ............................................................................................................... 5 CARACTERÍSTICAS GENERALES ................................................................................... 6 INTERFAZ DE USUARIO .................................................................................................. 6 CONFIGURACIÓN DEL DISPOSITIVO ............................................................................ 8 1.1
Instalación 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
Configuración inicial........................................................................................... 12
1.4
Configuración 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 ejecución automática de una tarea ............................................... 17
1.9
Escritorio remoto ............................................................................................... 19
1.10
Instalación de los ejemplos ................................................................................ 20
1.11
Escritura de programas ..................................................................................... 20
1.12
Programación en C ............................................................................................ 21
1.13
Programación en Java ....................................................................................... 22
1.14
Control de puertos GPIO ................................................................................... 22
1.15
MOD-GSM ......................................................................................................... 24
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 4 de 38
1.15.1
Conexionado .............................................................................................. 24
1.15.2
Configuración 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
Comunicación GPRS ........................................................................... 27
1.15.5
1.16
Ejemplos..................................................................................................... 28
1.15.5.1
Ejemplo de llamada ............................................................................. 28
1.15.5.2
Ejemplo de envío de SMS ................................................................... 28
1.15.5.3
Ejemplo de apertura de un socket ....................................................... 29
Instalación de Lighttpd + PHP............................................................................ 29
1.16.1
Configuración ............................................................................................. 29
1.17
Servidor telefónico ............................................................................................. 31
1.18
Control de puertos GPIO mediante una página WEB ........................................ 32
1.19
Módulo RTC ...................................................................................................... 32
SOLUCIÓN 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
Pérdida de archivos al reiniciar la placa o desconectar la fuente de alimentación 37
HISTORIA DEL DOCUMENTO ........................................................................................ 38
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 5 de 38
INTRODUCCIÓN 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 través de comunicación 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 documentación oficial presente en la wiki http://elinux.org/RPi_Hub. Se muestran algunas configuraciones iniciales que podrían ser útiles para el funcionamiento correcto del dispositivo, ejemplos de uso tales como: manejo de puertos GPIO, i²C, UART con un módulo MOD-GSM, instalación de un servidor HTTP y solución de algunos problemas que podrían surgir. Algunas convenciones utilizadas en este documento: Todos los comandos a ejecutar serán 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é después de un símbolo # en un comando es un comentario, por lo que no es necesario transcribirlo.
Ejemplo: uname -a # este comando le mostrará la versión del kernel de Linux que está ejecutando, la fecha en la cual fue compilado, y la arquitectura del sistema.
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 6 de 38
CARACTERÍSTICAS GENERALES Listado de características: 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 micrófono USB Almacenamiento: Ranura compatible con SD / MMC / SDIO Ethernet: 10/100 wired Ethernet RJ45 Periféricos de bajo nivel: General Purpose Input/Output (GPIO) pins, Serial Peripheral Interface Bus (SPI), I²C, I²S[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 través 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 través de UART o Ethernet. Las siguientes imágenes muestran estas interfaces:
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 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]
Página 8 de 38
CONFIGURACIÓN DEL DISPOSITIVO
1.1 Instalación 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 fundación 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 recién 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 dañar su sistema anfitrión si se equivoca de dispositivo. En caso de duda, solicitar ayuda a un experto. Este comando puede tardar varios minutos.
Para mayor información visite la página 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 método escogido, deberá ingresar con la cuenta de usuario: Usuario: pi Contraseña: raspberry
NOTA: Es altamente recomendable que cambie la contraseña para evitar posibles problemas de seguridad, para ello utilice el comando: passwd
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO] 1.2.1
Página 9 de 38
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 cómo debe conectar la tarjeta a un FTDI.
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO] 1.2.2
Página 10 de 38
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 conexión al televisor sea por HDMI ya que de este modo, la resolución será mayor.
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO] 1.2.3
Página 11 de 38
Acceso mediante Ethernet
Este método podría 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 aplicación de consola ssh: ssh
[email protected] tarjeta.
#reemplazar xxx.xxx.xxx.xxx por la IP asignada a la
Para conocer la IP asignada por DHCP, tiene dos opciones. La primera opción es revisar en su router el último host que se agrego por DHCP. La segunda es acceder por cualquiera de los dos métodos 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.
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 12 de 38
1.3 Configuración inicial La primera vez que encienda su RPI, el modo gráfico 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 contraseña anteriormente mencionados y, dependiendo del modo de acceso, puede que se ejecute automáticamente el programa de configuración inicial de su RPI. Si no es el caso, ejecútelo usted con: sudo raspi-config
La aplicación iniciada debería ser similar a la mostrada por la siguiente imagen:
La siguiente tabla, describe para que sirve cada una de las opciones:
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 13 de 38
Opción info expand_rootfs
Descripción Muestra información acerca de la herramienta Expande la partición principal de la tarjeta SD para llenarla. Si su memoria es de 4GB o mas, utilice esta opción 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 disposición de las teclas. change_pass Para cambiar la contraseña del usuario root. change_locale Cambia las configuraciones regionales acerca del idioma del sistema, país, 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 operación 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 través 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 versión nueva de esta herramienta de configuración y la instala.
Recomendamos modificar las opciones expand_rootfs, configure_keyboard, change_pass, change_locale y boot_behavior. Cambie el parámetro overscan solo si tiene problemas con su monitor o televisor.
Si necesita más información, vea la página: http://elinux.org/RPi_raspi-config#expand_rootfs_-_Expand_root_partition_to_fill_SD_card
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 14 de 38
1.4 Configuración de la fecha y de la hora En algunos proyectos es necesario contar con información vital como la fecha y la hora. Estas pueden ser obtenidas utilizando: date
Si usted desea establecer la fecha (formato año, mes y día), 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á automáticamente mediante el protocolo NTP. Si no, puede utilizar un módulo RTC (Real Time Clock). Vea “Módulo RTC” en el capitulo “Uso”.
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 15 de 38
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 básicos 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
También puede utilizar el comando “man” para ver el manual de ayuda: man nombre_del_comando
Dentro del programa “man”, utilice los botones arriba, abajo, RePág y AvPág para desplazarse sobre el contenido, y la letra ‘q’ para salir. Recuerde que en GNU/Linux los nombres de archivos son sensibles a las mayúsculas, por lo que ejemplo.txt y EJEMPLO.TXT serían 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 instrucción, utilice: sudo comando_a_ejecutar
Si quiere ejecutar más 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
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 16 de 38
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
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 17 de 38
1.8 Programar la ejecución automática de una tarea Usted querrá que ciertas tareas se ejecuten periódicamente. Para ello, el sistema operativo presente en su Raspberry cuenta con un comando llamado crontab, el cual permite programar la ejecución de alguna tarea (análogo 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 condición, 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 m h dom mon dow cmd
Parámetro Minutes Hour Day of month Month Day of week command
Descripción Minuto/s en el cual se ejecutará la tarea Hora/s en la que se ejecutará la tarea Día/s del mes en que se ejecutará la tarea Mes/es Día de la semana Tarea a ejecutar
Cada campo puede contener más de un valor, por ejemplo, si en el campo dom, dice 2,10,25,31 quiere decir que la tarea se ejecutará solo los días 2, 10, 25, 31 del mes. Puede utilizar el símbolo * 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 días de la semana.
Algunos ejemplos: 16 20 * * * /root/enviarDatos.sh
Todos los días a las 20:16 hrs se ejecutará el programa /root/enviarDatos.sh.
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 18 de 38
30 7 20 11 * /home/usuario/scripts/actualizar.sh
El día 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 días 1, 15 y 30 de cada mes se enviarán los datos recopilados.
Si necesita más información y/o ejemplos, vea la siguiente página: 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.
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 19 de 38
1.9 Escritorio remoto Puede configurar la Raspberry Pi de modo que sea controlada en modo gráfico en forma remota a través de Internet o LAN. Para ello, debe instalar un servidor VNC en su tarjeta. Ejecute: sudo apt-get update
#actualizamos la información de los respositorios
sudo apt-get install x11vnc
#instalamos x11vnc
x11vnc -storepasswd
#creamos una contraseña 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
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 20 de 38
1.10 Instalación de los ejemplos Descargue los ejemplos que están en la página: http://www.olimex.cl/product_info.php?products_id=1192&product__name=Raspberry_Pi_ Model_B Luego, descomprímalos en la carpeta /home/pi/examples de la microSD. Estos ejemplos serán 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 algún otro instalado por usted) en el modo gráfico, y por último, usar algún 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 código 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.
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 21 de 38
1.12 Programación en C Raspbian viene con el compilador GCC incorporado. En la /home/pi/examples/hello_world existe un “Hello World” listo para ser compilado.
carpeta
cd /home/pi/examples/hello_world
Si desea examinar el código 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 librería estándar, usted puede consultar la sección 3 de “man”, de la siguiente manera: man 3 stdio
Del mismo modo, puede obtener información acerca de alguna función con: man 3 printf
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 22 de 38
1.13 Programación 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 dirección y escribir o leer su estado. NOTA: todos los comandos en esta sección deben ser ejecutados como superusuario. Conviértase en él utilizando el método descrito en la sección “1.5 Convertirse en usuario administrador”.
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 23 de 38
NOTA: los número de pines GPIO del conector son distintos al número de los pines GPIO real del microprocesador. Para mayor información puede ver la siguiente página: http://elinux.org/RPi_Lowlevel_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 número del pin valido
Esto, creará los archivos /sys/class/gpio/gpioXX/direction y /sys/class/gpio/gpioXX/value. Defina su dirección 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 código con el siguiente comando: sudo sh /home/pi/examples/led_blink
El LED comenzará a parpadear con un período de 2 segundos. Presione CTRL+C para terminar el proceso.
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 24 de 38
1.15 MOD-GSM En el siguiente ejemplo, utilizaremos un módulo MOD-GSM que puede ser utilizado, entre otras cosas, para realizar llamadas, enviar mensajes SMS y abrir sockets TCP.
1.15.1 Conexionado El módulo debe ser cableado al puerto GPIO (solo los pines TX, RX, y GND) de su RPI. El puerto UART para controlar el módulo está representado por el dispositivo /dev/ttyAMA0. La siguiente imagen muestra un ejemplo del cableado:
1.15.2 Configuración 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 línea del archivo /etc/inittab. Finalmente reinicie. Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 25 de 38
1.15.3 Minicom Utilizaremos “minicom”, un controlador de modem basado en texto para enviarle comandos AT al módulo. La documentación del módulo y una lista de comandos AT para controlar el dispositivo pueden ser encontrados en: https://www.olimex.com/Products/Modules/RF/MOD-GSM/resources/MODGSM_rev_D.pdf https://www.olimex.com/Products/Modules/RF/MODGSM/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 intérprete 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 sección deben ser ingresados en “minicom”.
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 26 de 38
1.15.4.1 Hacer una llamada Realizar una llamada: ATDnúmero_telefónico;
Ejemplos de llamadas a distintos números: ATD103; ATD91234567; ATD+56987654321;
Colgar un llamado: ATH
1.15.4.2 Enviar un SMS Envío de un SMS: AT+CMGF=1 AT+CSMP? AT+CMGS=”número_telefónico”
El módem responderá: >
Luego de esto, escribir el mensaje a enviar y presionar CTRL-Z (código 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!
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 27 de 38
> +CMGS: 5 OK
1.15.4.3 Comunicación GPRS Configuración de un APN: AT+CSTT=”APN”,”USUARIO”,”CONTRASEÑA”
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 comunicación es iniciada en segundo plano. Envíe y reciba datos utilizando los comandos AT+CIPSEND y AT+CIPRECV respectivamente: AT+CIPMODE=0
Para iniciar un socket en modo transparente. La comunicación 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
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 28 de 38
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 continuación. Acceda a dicha carpeta utilizando: cd /home/pi/examples/mod-gsm
Si quiere ver el código fuente de algún 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 número que usted especifique como argumento. Luego de 15 segundos cortará automáticamente. Ejecútelo del siguiente modo: sudo sh llamar.sh 912345678
1.15.5.2 Ejemplo de envío de SMS El programa enviarSMS.sh enviará un mensaje al número indicado. El texto a enviar debe estar entrecomillas. Ejemplo: sudo sh enviarSMS.sh 912345678 “hola mundo!”
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 29 de 38
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 Instalación de Lighttpd + PHP En este apartado se instalará “lighttpd”, un servidor http que le permitirá mostrar html estático en un navegador de páginas web, y PHP, para mostrar contenido dinámico. Más adelante, utilizando estas herramientas veremos dos ejemplos que nos permitirán utilizar un módulo GSM y los puertos GPIO en forma remota. Instalación del servidor y de PHP: sudo /etc/init.d/lighttpd start
1.16.1 Configuración Al final del archivo /etc/lighttpd/lighttpd.conf agregar la siguiente línea: 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” )
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 30 de 38
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 través del servidor, por lo que debe dejar ahí sus páginas web. El dueño 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
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 31 de 38
En el equipo anfitrión, 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 algún error, quiere decir que hubo algún problema. Revisar que se hayan realizado correctamente los pasos anteriores.
1.17 Servidor telefónico En el siguiente ejemplo, se utilizará el servidor HTTP + PHP recién instalado, para poder controlar remotamente el módulo MOD-GSM. Para ello, se creó un servidor telefónico en una página 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 anfitrión, vaya a http://xxx.xxx.xxx.xxx/servidorTelefonico.php. Ahí, puede realizar llamadas y enviar mensajes de texto en forma remota.
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 32 de 38
1.18 Control de puertos GPIO mediante una página WEB El propósito de este ejemplo, es mostrar como es posible activar o desactivar dispositivos conectados a la RPI a través de una página 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 sección “1.7 Ejecutar un programa al encender la RPI”
Copie la carpeta de la página 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 anfitrión, 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 imágenes muestran la página web que controla los puertos GPIO y un ejemplo del cableado.
1.19 Módulo 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 módulo RTC, usted puede agregarle esta característica. Este módulo está basado en el circuito integrado DS1307. Como mínimo usted debe saber que funciona con comunicación i2c, su dirección de esclavo es 1101000 (0x68 en hexadecimal), y que cuenta con 64 bytes de memoria, distribuidos de la siguiente forma: Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 33 de 38
Los primeros 7 bytes deben ser escritos en código BCD y representan la hora y la fecha. Si el módulo 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 información mirando su http://www.sparkfun.com/datasheets/Components/DS1307.pdf.
datasheet
aquí:
Conecte los pines SDA y SCL del módulo RTC en los pines correspondientes del conector P1 de su RPI. Además deberá conectar los pines GND y 5v. El pin SQW déjelo sin conectar.
Cargue los drivers en el kernel ejecutando los siguientes comandos: sudo modprobe i2c-dev sudo modprobe i2c-bcm2708
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 34 de 38
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 serán explicados a continuación: Volcado de toda la memoria Leer el valor del registro XX Escribir la hora HH:MM:SS Escribir la fecha: día de la semana AA, día del mes DD, mes MM, año YY
sudo i2cdump -y -r 0-63 1 0x68 sudo i2cget -y 1 0x68 0xXX sudo i2cset -y 1 0x68 0x00 0xSS 0xMM 0xHH i sudo i2cset -y 1 0x68 0x03 0xAA 0xDD 0xMM 0xYY i
Ejemplos: Para escribir la hora 14:56:10 en el módulo utilice: sudo i2cset -y 1 0x68 0x00 0x10 0x56 0x14 i
Para escribir la fecha jueves 10 de enero del 2013, día de la semana 4 –jueves-, día del mes 10, mes 1, año 13, use: sudo i2cset -y 1 0x68 0x03 0x04 0x10 0x01 0x13 i
Con estos dos últimos comandos, usted debe configurar el módulo con la fecha y la hora actual. Luego, para sincronizar la fecha y la hora del módulo 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//"`
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 35 de 38
date +%Y%m%D -s "20$ano$mes$dia" date +%T -s "$horas:$minutos:$segundos"
Básicamente, lo que hace este programa es obtener mediante i2c la hora y la fecha desde la memoria RAM del módulo 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 ejecución ejecutando el comando: sudo chmod +x /root/sincronizarRTC.sh
Con la siguiente instrucción, 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 sección “0
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 36 de 38
Programar la ejecución automática de una tarea”
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 37 de 38
SOLUCIÓN 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 podría dañar 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 automáticamente se sincronizará la fecha. Si esta no es una posibilidad para usted, otra forma de recuperar la hora podría ser utilizando un modulo RTC. Vea la sección “1.19 Módulo RTC” en el capitulo “Uso”.
1.22 Pérdida de archivos al reiniciar la placa o desconectar la fuente de alimentación 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 información lea el manual del comando sync: man sync
Es buena idea utilizar sync antes de quitar la fuente de poder o reiniciar utilizando el botón RESET. Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl
Manual Usuario de [NOMBRE DE EQUIPO]
Página 38 de 38
HISTORIA DEL DOCUMENTO
Revisión 1.0
Fecha enero de 2013
Editado por Descripción/Cambios Matías Castillo Versión inicial del Felmer documento
Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪
[email protected]
www.olimex.cl