Puerto GPIO para Raspberry Pi 3

La Raspberry tiene un conector para poder expandirse. Dicho conector posee los siguientes buses y puertos.

  • Bus I2C
  • Puerto Serie
  • Puerto MISO-MOSI
  • Puerto CE0N – CE1N
  • 8 salidas / entradas
  • Masa
  • +3.3v
  • +5v

 

 

Puerto GPIO para Raspberry Pi 2

  • Bus I2C
  • Puerto Serie
  • Puerto MISO-MOSI
  • Puerto CE0N – CE1N
  • 8 salidas / entradas
  • Masa
  • +3.3v
  • +5v

He diseñado un conector para poder utilizar los puertos mediante conectores específicos. En el caso del puerto Serie, se puede seleccionar la tensión de alimentación del conversor TTL +5V ó +3.3V

Escritorio Remoto

Para ello actualizamos el software:

Instalamos la aplicación tightvncserver

Ejecutamos la aplicación para establecer la contraseña de entrada.

Pedira la contraseña y la comprobación de contraseña, así como una contraseña para solo ver.

Hay que tener encienta que la longitud maxima de la contraseña es de 8 caracteres.

Para que se arranque cuando se encienda la Raspberry, se edita el fichero /etc/rc.local, añadiéndole la siguiente linea:

Hay que ponerla antes de «exit 0».

Tendremos que abrir el puerto 5901 en el router.

Si tenemos una IP Dinámica hay que instalar alguna programa que redireccione las llamadas.

Suelo utilizar NO-IP para ello. Podéis ver como configurarlo en el siguiente enlace No-IP para Raspberry

NO-IP para Raspberry

Con el servidor de DNS “NO-IP” siempre tendremos una direccion fija para poder acceder a la Raspberry.

En primer lugar accedemos a la pagina www.noip.com y creamos una cuenta. Completamos todos los datos, eligiendo el nombre del hostname y una contraseña para acceder.

Nos enviaran un email de confirmacion y ya podremos acceder desde fuera de la red local.

Cada 30 dias no-ip mandara un correo para que actualice, sino, lo dan de baja.

 Se instala el cliente en la Raspberry, para ello teclearemos los siguientes comandos.

 Descargamos el paquete:

 Lo descomprimimos:

 Durante la instalacion pedira:

  • el correo
  • la contraseña con la que nos hemos registrado,
  • el periodo de actualización, se deja en 30
  • a la pregunta le ponemos que no:

Auto configuration for Linux client of no-ip.com.

 

Please enter the login/email string for no-ip.com xxxxxx@xxxxxx.com

Please enter the password for user ‘xxxxxx@xxxxxx.com‘ *******

Please enter an update interval:[30] 30

Do you wish to run something at successful update?[N] (y/N) n

New configuration file ‘/tmp/no-ip2.conf’ created.

Ahora configuramos no-ip para que se auto-inicie con la Raspberry. Para elllo, se crea el siguiente fichero:

 Y copiamos el siguiente texto:

### BEGIN INIT INFO

# Provides: proveedor de DNS

# Required-Start: $syslog

# Required-Stop: $syslog

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Short-Description: Para acceder a la Raspberry desde Internet

# Description:

#

### END INIT INFO

Ctrl+X y guardamos. Y le damos permisos de ejecución :

 Y lo ponemos en la cola de ejecuccion.

 Para iniciar si no lo esta ejecutando:

En el router se deben abrir los puertos que queramos utilizar, por defecto el puerto de ssh (22) y el puerto de la pagina web (8000). Si se quiere el escritorio remoto el (3350), etc…

Camara Raspberry


Hay que habilitar el modulo cámara en la configuración de Raspberry Pi.

Para abrir el menú de configuración de Raspberry usaremos el siguiente comando:

Tendrá que aparecer el menú de configuraciones de Raspberry Pi.

En la opción para habilitar y deshabilitar el soporte para la cámara.

Seleccionamos esa opción y presionamos Enter.

Seleccionaremos <Enable> y pulsamos Enter para habilitar la cámara.

 

Se nos preguntará que si queremos reiniciar el sistema, seleccionaremos <Si> para que los cambios surjan efecto.

A partir de este momento ya podemos capturar fotografias y videos.

DS18B20, mediante WebIOPi

Instalamos el sensor según la siguiente imagen:

 Comprobamos que el sistema detecta el sensor, con la orden

Si no indica nada, debemos poner las siguientes ordenes:

 editamos el fichero /boot/config.txt, añadiendo la linea

 se resetea el dispositivo: 

Volvemos a comprobar de nuevo

Apareciendo el dispositivo.

Total 0

lrwxrwxrwx1 root root 0 may 15 09:37 28-00043b4adeff-> ../../../devices/w1_bus_master1/28-00043b4adeff

lrwxrwxrwx 1 root root 0 may 15 09:37 w1_bus_master1-> ../../../devices/w1_bus_master1

El numero 28-00043b4adeff es la dirección del sensor de temperatura. Siendo único para cada sensor.

Con la orden

Muestra los siguientes datos

fd 01 55 00 7f ff 0c 10 93 : crc=93 YES

fd 01 55 00 7f ff 0c 10 93 t=31812

En la segunda linea nos da la temperatura. Que es mil veces el valor de la temperatura en grados Centigrados.

31812/1000= 31,812

 Después hay que modificar unas lineas en le fichero /etc/webiopi/config

 Hay que decomentar (quitar #) de las lineas:

Temp3 = DS18B20 slave:28-00043b4adeff

 cambiando el numero de serie que tiene por el que tenga nuestro dispositivo.

y la linea:

 decomentarla y cambiarla por:

 Se resetea el dispositivo y ya podemos conectarnos a la pagina del webiopi, para ver la temperatura del sensor.

Arrancar Webiopi

Cambio del Password

Seguimos las introducciones, nos pedirá el usuario y el password de Webiopi

Resetear Webiopi

Para respetar el dispositivo, usaremos el comando.

 

Torrent Transmission

 Instalamos el programa con el siguiente comando.

 Estaremos pendiente de que aparezca la siguiente linea:

[ ok ] Starting bittorrent daemon: transmission-daemon.

Esto nos habrá iniciado el cliente. Después hay que configurarlo a nuestro gusto. Para ello vdetendremos el programa con el siguiente comando

Estaremos pendiente de que aparezca la siguiente linea:

[ ok ] Starting bittorrent daemon: transmission-daemon.

 Esto nos habrá iniciado el cliente. Después hay que configurarlo a nuestro gusto. Para ello detendremos el programa con el siguiente comando:

 Carpetas de almacenamiento

 
Debemos utilizar el dispositivo de almacenamiento externo que hayamos instalado, nunca en la tarjeta SD. Así que vamos a crear las carpetas oportunas dentro de nuestro pendrive.
En mi caso lo tengo montado en /media/almacen , añadiremos una carpeta que se llame torrent y  dentro de esta las carpetas finish y temp. También hay que darle todos los permisos para que el  cliente torrent pueda acceder a ellas.
Los comandos son los siguientes:
 

 
De esta forma hemos creado los ficheros de almacenamiento del torrent
 

Configuración Torrent

Editaremos el archivo de configuración con el comando:
 

 
Este es el directorio donde se guardaran los archivos descargados.
 
Cambiamos:

 
por:
 

 
Si lo ponemos verdadero le indicamos que guarde las partes de los torrents descargados en una  carpeta diferente a los archivos finalizados.
“incomplete-dir-enabled”: true
 
Directorio donde se guardaran las partes de los torrents
“incomplete-dir”: “/media/almacen/torrent/temp”
 
Habilita el RPC, es decir el que aplicaciones puedan conectarse al servicio, como la propia pagina web.
“rpc-enabled”: true
 
Por defecto viene a 127.0.0.1 si lo ponemos a 0.0.0.0 indicamos que cualquiera puede conectarse.
“rpc-bind-address”: “0.0.0.0′′
 
Aqui pondremos el usuario que queramos utilizar para hacer login en la pagina WEB de gestión.
“rpc-username”: “transmission”,
 
Esta es la password del usuario por defecto que es “transmission” igual que el usuario, la contraseña esta cifrada.
“rpc-password”: “{ac385a17c99c16caa7a3f218ae7955af61bb33f2moBazqG.”
 
Esto habilita una lista de direcciones que pueden acceder mediante RPC por ejemplo la web.
“rpc-whitelist-enabled”: false,
 
Ahora salimos y guardamos con CTRL+X. A continuacción arrancamos de nuevo el programa con :
sudo /etc/init.d/transmission-daemon start
 

Acceso web

Ahora en cualquier navegador de otro ordenador introducimos la dirección ip de la raspberry :9091
en mi caso 192.168.1.50:9091
 
Nos pedira el usuario y la contraseña, en caso de tenerlos por defecto son transmission y transmission.
 
Ahora solo nos queda añadir torrent, bien sea mediante la dirección url o mediante el archivo  torrent. Una vez descargados podemos sacar el pendrive de la raspberry y pasarlo al PC o podemos copiar el archivo de la raspberry al PC mediante la red LAN.

 

Cambiar la dirección IP

En esta versión de Raspbian, se realiza de la siguiente forma:

Ahora hay un demonio llamado dhcpcd, .

Editamos el fichero /etc/dhcpcd.conf

y añadiendo al final:

Reiniciamos y listo.

 

Versiones anteriores a Jessie

Desde la Raspberry

Editamos el fichero interfaces, ubicado en /etc/network

Antes de modificar nada hacemos una copia de seguridad del fichero.

Editamos el fichero con «nano»:


Borramos las lineas:

Añadimos las lineas:

Grabamos Ctrl + O
Salimos Ctrl + X

Reiniciamos para que se tomen los nuevos valores.

Probamos que tenemos acceso a internet, mediante un ping a un servidor, por ejemplo google.

ping google.es

Si obtenemos respuesta afirmativa a nuestros ping, esta todo correcto. En caso contrario, debemos modificar el servidor DNS.

 Servidor DNS:

Se debe modificar en el fichero /etc/resolv.conf, la direccion del servidor de DNS.
Si no lo hacemos, no se podra conectar a internet.

Cambiar:

por

Reiniciamos y comprobamos que todo esta correcto.

 

 Modificando la tarjeta SD

Por defecto al grabar la tarjeta SD con la imagen de Raspbian, la configura para que este como DHCP.
En mi caso, no esta en funcionamiento el servidor de DHCP. Por lo que no puedo acceder al Raspberry.

Accediendo al lector de tarjetas de SD y configuro la red de la tarjeta.

En la figura anterior vemos dos figuras de Pendrive.

  • boot
  • Sistema de archivos de 2,9 GB

Abrimos la pantalla de terminal y accedemos al directorio «media».
En el vemos los dispositivos que se han montado. En mi caso

 ls /media

Vemos los dispositivos reconocidos, en nuestro caso es el 548da502-ebde-45c0-9ab2-de5e2431ee0b

548da502-ebde-45c0-9ab2-de5e2431ee0b  boot  Despacho

Accedemos a dicho directorio.

cd /media/548da502-ebde-45c0-9ab2-de5e2431ee0b/

editamos el fichero interfaces que esta en /etc/networks

sudo nano /media/548da502-ebde-45c0-9ab2-de5e2431ee0b/etc/network/interfaces

 

A partir de este cuento, lo hacemos igual que en el punto anterior «Desde la Raspberry»

Grabar Tarjeta SD en Linux


Sin conectar la tarjeta, saldra una pantalla parecida a esta:

Colocamos la tarjeta SD y repetimos el comando.

Vemos que apararece un dispositivo nuevo, /dev/sdc1. Esta es la tarjeta SD

Ahora desmontamos la SD (hacedlo con todas las particiones de esta):

copiamos la imagen con el comando:

no hay que poner el numero de la partición.

Este comando no muestra ninguna salida, parece que está ‘congelado’. Hay que esperar ya que puede tardar unos minutos.

Lighttpd con php

Instalación del servidor Web (lighttpd) 

Para la instalación ejecutaremos

Por defecto, las paginas están en /var/www/html, para cambiarlo a /var/www.

Editamos en el fichero /etc/lighttpd/lighttpd.conf con:

server.document-root        = “/var/www/html»

por

server.document-root        = “/var/www»

Para cambiarlo al puerto 8080

 

server.pot=8080

server.socket = “[::]:8080′′

En este caso pusimos en escucha el puerto 8080.

Después hay que reiniciar el servicio con:

Instalación/configuración de PHP

Para su instalación ejecutamos:

Una vez instalado PHP, hemos de efectuar alguna configuración adicional para que el servidor reconozca los scripts PHP, por ello habilitamos el módulo fastcgi-php mediante

y, a continuación, reiniciamos el servicio ya actualizado mediante

Para comprobar que el servidor web está ejecutándose miramos que el puerto 80 esté en modo Listen

Ahora podemos ir a un navegador y poner en la dirección lo siguiente: http://IP_Raspberry

 

Activar y desactivar el servicio manualmente

Si hace falta parar el servidor web la orden es:

Para volver a ponerlo en marcha:

Para reiniciarlo:

Ver los Logs

Para ver el log de acceso a la pagina, este fichero es  /var/log/lighttpd/access.log

Modificamos el fichero:

server.modules = (

«mod_access»,

«mod_alias»,

«mod_compress»,

«mod_accesslog»,

«mod_redirect»,

# «mod_rewrite»,

)

server.document-root = «/var/www»

server.upload-dirs = ( «/var/cache/lighttpd/uploads» )

server.errorlog = «/var/log/lighttpd/error.log»

accesslog.filename = «/var/log/lighttpd/access.log» — creas el archivo access.log

server.pid-file = «/var/run/lighttpd.pid»

server.username = «www-data»

server.groupname = «www-data»

server.port = 80

index-file.names = ( «index.php», «index.html», «index.lighttpd.html» )

url.access-deny = ( «~», «.inc» )

static-file.exclude-extensions = ( «.php», «.pl», «.fcgi» )

compress.cache-dir = «/var/cache/lighttpd/compress/»

compress.filetype = ( «application/javascript», «text/css», «text/html», «text/plain» )

# default listening port for IPv6 falls back to the IPv4 port

include_shell «/usr/share/lighttpd/use-ipv6.pl » + server.port

include_shell «/usr/share/lighttpd/create-mime.assign.pl»

include_shell «/usr/share/lighttpd/include-conf-enabled.pl»

reiniciamos el servicio de lighttpd

Ya con esto, ya se genera el archivo access.log, se nos guardara los accesos a la web