domingo, 6 de noviembre de 2016

Conector GPIO, principios básicos

Con este post voy a iniciar una serie dedicada a los conectores GPIO y el uso que podemos darles todos los post de programación y GPIO los encontraréis en el apartado Programación/GPIO del blog. Pero antes de empezar a usarlos es importante tener claros unos conceptos clave para no estropear vuestra RaspberryPi.

1. Conceptos generales

Para los no iniciados, los conectores GPIO (General-purpose input/putput) presentes en la RaspberryPi nos permiten conectar dispositivos electrónicos y controlarlos desde la RaspberryPi. Estos conectores son conexiones digitales que se pueden usar como entradas (input) o salidas (output) y que funcionan a 3,3 V. 

Los puertos GPIO al igual que la RaspberryPi han evolucionado, en los primeros modelos disponíamos de 26 conectores que posteriormente pasaron a 40. Cada uno de estos conectores se identifica mediante un número, cada uno de ellos tiene asignada una función predeterminada como por ejemplo los puertos TXD y RXD que se utilizan para conectar la RaspberryPi a otro PC mediante un cable de consola y poder acceder de forma remota.
Es importante saber el modelo de RaspberryPi que tenemos ya que algunos puertos tienen funciones diferentes y es muy importante no equivocarse ya que hay puertos con 3,3 V otros con 5 V a veces un error podría acabar con nuestro dispositivo.

1.1 Distribución puertos GPIO

Aquí tenéis unas imágenes de la distribución de los GPIO de algunos modelos. Fijaos que en las imágenes tenemos los pines numerados del 1 al 26 o del 1 al 40 según el modelo esta es la numeración BOARD de los pines (numeración que depende de la posición en la que están fijados en la placa). Pero además en los laterales tenemos unas etiquetas, estas corresponden al sistema BCM, en este caso no todos los pines tienen números, esta identificación es en base a la función por defecto que tiene cada pin GPIO.

RaspberryPi 1 Modelo B revisión 1.0


miércoles, 26 de octubre de 2016

Dirty Cow vulnerabilidad del kernel Linux

Hola a todos, desde ayer 25 de octubre de 2016, sabemos que se ha detectado un bug en el kernel de linux al que han llamado Dirty COW. La vulnerabilidad afecta al 'Copy-On-Write' del sistema también popularmente llamado COW.

Esta vulnerabilidad podría utilizarse para tomar el control de un dispositivo que ejecute dicha versión de Linux (Android, ordenadores, servidores y también nuestra RaspberryPi).
La solución a esta vulnerabilidad ha sido solucionada y la podemos obtener actualizando el Kernel de nuestra Raspberry.

Para solucionar la vulnerabilidad Dirty-COW tenemos que abrir un terminal (pantalla de línea de comandos) y introducid las siguientes órdenes:

sudo apt-get update

y presionamos Intro en el teclado (esto va a tardar un poco, paciencia...), una vez haya acabado introducimos la segunda orden

sudo apt-get install raspberrypi-kernel

luego presionamos Intro en el teclado (esto también va a tardar un poquito más que la anterior). Una vez finalizado reiniciad la RaspberryPi. Ya estáis fuera de peligro.

Has ta pronto.

viernes, 21 de octubre de 2016

RaspberryPi, Raspbian Jessie with Pixel, revisión 4

Hola, desde el día 28 de Septiembre disponemos de una revisión de la versión Raspbian, llamada Raspbian With Pixel con algunas mejoras y novedades que os detallo. He tardado un poco en publicar el post porque he tenido bastantes problemas para instalar RealVNC, así que he escrito otro post para que no perdáis horas como yo.

En la zona de descargas de la web oficial de raspberrypi.org, si accedemos al apartado Raspbian continuamos encontrando dos opciones Raspbian Jessie With Pixel y Raspbian Jessie Lite, que como ya expliqué es una versión reducida sin software añadido como Scratch, Wolfram, LibreOffice... es posible que encontréis a faltar algun programa y lo tengáis que descargar. En la versión anterior se detectó un problema para usar el paquete wicd (para configurar la conexión del dispositivo) si el problema permanece hay que eliminar el paquete dhcpcd5 con la línea de comandos, usando la orden

sudo apt-get remove dhcpcd5

después ya podéis usar wicd para configurar la conexión del dispositivo.

Dejando de lado la versión Lite las novedades son estas

1. Novedades


1.1 Entorno Pixel

La principal novedad de esta versión es el nuevo entorno de escritorio, llamado PIXEL, que son las siglas de (Pi Improved Xwindows Environment Lightweight) y esto conlleva una nueva imagen. 

1.1.1 Pantalla de presentación

Si actualizáis o flasheais una imagen al arrancar la Raspberry ya veremos el primer cambio, ya no aparecen las líneas de carga sino una imagen de presentación con la versión de Raspbian en la parte inferior derecha



Raspberry Pi with Pixel, cambiar el navegador predeterminado. Primeros pasos con Raspbian (XI)

Si disponéis de la última versión de Raspbian con el escritorio Pixel, ya sabréis que una de las nuevas incorporaciones es el navegador Chromium como navegador por defecto, en sustitución de Epiphany. El nuevo navegador lleva mejoras para poder ver vídeos correctamente en YouTube y un bloqueador de anuncios, si embargo en los modelos de Raspberry más modestos como el mío (RaspberryPi B+) funciona extremadamente lento.

La buena noticia es que el antiguo navegador epiphany continua instalado, si no os funcina bien Chromium y queréis usar Epiphany podéis cambiar el navegador por defecto. Aquí van los pasos

1. Cambiar el navegador por defecto en Raspbian

Abrid una ventana de terminal (línea de comandos) de Raspbian, primero vamos a ver los navegadores instalados que tenemos, usaremos la orden

update-alternatives --list x-www-browser

haced Intro en el teclado y se mostrará por pantalla algo parecido a esto

Raspberry Pi with Pixel, control remoto con RealVNC. Primeros pasos con Raspbian (X) parte4.


Si disponéis de la última versión de Raspbian con el escritorio Pixel, ya sabréis que una de las nuevas incorporaciones es el software RealVNC para conexión remota. Hasta ahora Raspbian no incluía ningún paquete para ello y normalmente recurríamos a TightVnc, tal y como muestro en otro post anterior

https://frambuesa-pi.blogspot.com.es/2015/10/raspberry-pi-primeros-pasos-con_21.html

sin embargo los chicos de Raspbian han decidido "facilitarnos" las cosas, incluyendo RealVnc por defecto en Raspbian. Pues bien de entrada os aviso que yo he flasheado la nueva versión (descargada de la web oficial) en una tarjeta, y RealVnc no funciona, o funciona de manera parcial (esto ya se ha solucionado en la actual versión disponible en la web de oficial de raspberrypi.org). 
Pero de todas formas he decidido crear este tutorial para que no perdáis las mismas horas que he perdido yo en el caso de que os encontréis con problemas. 
Yo tengo una Rapsberry Pi 3, con este modelo después de actualizar los paquetes de RealVNC me ha funcionado correctamente pero con el modelo de RaspberryPi B+, he tenido que crear de forma manual un fichero de arranque del VNC que genera un escritorio virtual al que me puedo conectar con RealVNC. 
Más abajo están todas las explicaciones para conectaros con una RaspberryPi B+ o una RaspberryPi 3.
Si no habéis leído el post anterior de actualización de versión, os recomiendo leerlo antes de continuar, en el apartado de Raspbian Primeros Pasos

jueves, 29 de septiembre de 2016

Programación Python XVI (ejecutar python desde la línea de comandos)

Este es otro post dedicado a programación en Python, encontraréis todos los posts de este tipo juntos en el apartado Programación del blog. Y si queréis aprender más podéis visitar la web oficial de www.python.org

En este post vamos a ver como ejecutar un programa en python desde la línea de comandos. En el primer post de python vimos como se podían ejecutar programas de python desde la línea de comandos Programación Python para RaspberryPi, Sin embargo hoy vamos a ver como crear un pequeño programa al que le pasaremos unos parámetros y lo ejecutaremos desde la línea de comandos de Raspbian




1 Crear un programa en Python

En los anteriores posts ya hemos visto muchos ejemplos de código así que vamos a crear un programa y guardarlo en un archivo para luego ejecutarlo. En primer lugar abrid el IDLE de python y luego abrid un nuevo archivo (tal y como vimos en el primer post Programación Python para RaspberryPi) añadiremos el siguiente código

# importamos el modulo sys
import sys
# creamos bucle para mostrar los argumentos enviados
for (i,value) in enumerate (sys.argv):
    print("arg: %d %s " % (i,value))
click aquí para descargar el código

ahora guardaremos el fichero en una ubicación conocida por ejemplo con el nombre programa_argumentos.py.

jueves, 15 de septiembre de 2016

Programación Python XV (clases)

Este es otro post dedicado a programación en Python, encontraréis todos los posts de este tipo juntos en el apartado Programación del blog. Y si queréis aprender más podéis visitar la web oficial de www.python.org

En este post vamos a ver como usar clases con python. Para pequeños programas generalmente no es necesario el uso de clases, pero si queréis desarrollar un programa algo más complejo las clases ayudan a organizar y simplificar el código.




1.1 Qué es una clase 

En los programas de cierta envergadura lo mas normal para trabajar en un lenguaje de programación es el uso de clases. Una clase nos sirve para crear un objeto con un conjunto de propiedades y/o funciones para trabajar con estas propiedades, con el objetivo de simplificar y ahorrar tiempo de programación, ya que podremos crear un objeto de la clase en cualquier momento y llamar a sus funciones sin tener que repetir código cada vez. Las clases se pueden guardar como un archivo python y pueden ser importados de la misma forma que importamos los módulos, tal y como vimos en un post anterior, Python X (módulos o bibliotecas), es recomendable que si creamos un archivo para cada clase que generamos lo guardemos con el mismo nombre de la clase de esta forma es muy fácil transformar una clase en un módulo.
En los siguientes ejemplos os mostraré como crear una clase para una agenda de clientes.