Ir al contenido principal

GPIO en Raspberry Pi Zero

Aunque antes ya había estado "jugando" con la Raspberry, hacía tiempo que quería probar este modelo en concreto: se trata de la Raspberry Pi Zero. Lo cierto es que este modelo sorprende por concentrar potencia y versatilidad en una placa realmente pequeña. Es prácticamente un ordenador en miniatura capaz de correr Linux o Windows 10 (obviamente versiones adaptadas) y con una buena cantidad de pines de entrada/salida (GPIO) a nuestra disposición, y todo por 5$.

Raspberry Pi Zero

Las características de la Raspberry Pi Zero son las siguientes.

  • CPU: Broadcom BCM2835, velocidad de reloj hasta 1GHz.
  • RAM: 512MB
  • Alimentación: 5V, a través del puerto micro USB (160mA).
  • Dimensiones: 65mm x 30mm x 5mm
  • Video & Audio: Vídeo a 1080P HD y salida de audio a través de puerto mini-HDMI.
  • Almacenamiento: MicroSD.
  • Otras entradas/salidas: Puerto micro USB (otro además del de alimentación), GPIO del 40 pines.
  • Sistemas operativos: Linux (varios sabores), Windows 10, RISC OS.

A diferencia de otros modelos de Raspberry, la Zero no lleva los pines GPIO soldados, así que lo primero es lo primero: soldador, buen pulso y paciencia para soldar los 40 pines. Para sostener los pines antes de soldarlos he usado unas pinzas de cocodrilo, pero si no tienes, puedes usar una protoboard para fijar la Raspberry boca abajo sin que se muevan los pines.

Soldando GPIO a raspberry pi zero

Una vez soldados se puede usar una caja especial para la Raspberry Pi Zero que deja accesibles los pines del GPIO. Yo he usado la Pibow Zero, que además de bonita es cómoda de montar y de usar. El único pero que le pongo a la caja es que no permite sacar y meter la tarjeta micro SD, ya que no dispone de ninguna ranura para ello, es decir, que hay que desmontar parcialmente la caja. No es es un problema muy grande ya que no es normal andar cambiando mucho la tarjeta, y en todo caso el desmontaje es sencillo. Así queda la Zero con los pines soldados y montada en la caja.

Raspberry Pi Zero en caja Pibow

Ahora sólo falta probar que todo funciona, así que vamos a hacer un montaje sencillo para probar los GPIOs. La distribución de los pines es la siguiente.

Raspberry Pi Zero pinout

Como ejemplo, voy a hacer un pequeño montaje en una protoboard para ir tomando contacto con la Zero. Las tres resistencias son de 10K.

Protoboard

Por último, nos queda programar el microprocesador. Aunque hay varias opciones, el lenguaje más extendido y sencillo para empezar a "jugar" con la raspberry es Python. Aunque puede usarse C, Ensamblador (ARM) o incluso Scratch. La idea es ir iluminando los tres leds secuencialmente con un intervalo de un segundo. Este sencillo código de encarga de ello.

from gpiozero import LED
from time import sleep

led1 = LED(16) led2 = LED(20) led3 = LED(21)

while True: led1.on() led2.off() led3.off() sleep(1) led1.off() led2.on() led3.off() sleep(1) led1.off() led2.off() led3.on() sleep(1)

Tras crear el archivo flashing_leds.py con el código anterior, sólo resta ejecutarlo desde una shell con:

python ./flashing_leds.py

Comentarios

Entradas populares de este blog

Scripts en NMAP

Cuando pensamos en NMAP, pensamos en el escaneo de puertos de un host objetivo al que estamos relizando una prueba de intrusión, pero gracias a las posibilidades que nos ofrecen su Scripting Engine , NMAP es mucho más que eso. Antes de continuar, un aviso: algunas de posibilidades que nos ofrecen los scripts de NMAP son bastante intrusivas, por lo que recomiendo hacerlas contra hosts propios, máquinas virtuales como las de Metasploitable, o contrato de pentesting mediante. Para este artículo voy a usar las máquinas de Metasploitable3 . No voy a entrar en los detalles sobre el uso básico de NMAP, ya que hay miles de tutoriales en Internet que hablan sobre ello. Lo cierto es que NMAP tiene algunas opciones que permiten obtener información extra, además de qué puertos están abiertos y cuales no. Por ejemplo, la opción -sV trata de obtener el servicio concreto, e incluso la versión del servicio que está corriendo en cada puerto. Otro ejemplo es la opción -O, que intenta averiguar el ...

Manejo de grafos con NetworkX en Python

El aprendizaje computacional es un área de investigación que en los últimos años ha tenido un auge importante, sobre todo gracias al aprendizaje profundo (Deep Learning). Pero no todo son redes neuronales. Paralelamente a estas técnicas, más bien basadas en el aprendizaje de patrones, también hay un auge de otras técnicas, digamos, más basadas en el aprendizaje simbólico. Si echamos la vista algunos años atrás, podemos considerar que quizá, la promesa de la web semántica como gran base de conocimiento ha fracasado, pero no es tan así. Ha ido transmutándose y evolucionando hacia bases de conocimiento basadas en ontologías a partir de las cuales es posible obtener nuevo conocimiento. Es lo que llamamos razonamiento automático y empresas como Google ya lo utilizan para ofrecerte información adicional sobre tus búsquedas. Ellos lo llaman Grafos de Conocimiento o Knowledge Graphs . Gracias a estos grafos de conocimiento, Google puede ofrecerte información adicional sobre tu búsqueda, ad...

Creando firmas de virus para ClamAV

ClamAv es un antivirus opensource y multiplataforma creado por Tomasz Kojm muy utilizado en los servidores de correo Linux. Este antivirus es desarrollado por la comunidad, y su utilidad práctica depende de que su base de datos de firmas sea lo suficientemente grande y actualizado. Para ello es necesario que voluntarios contribuyan activamente aportando firmas. El presente artículo pretende describir de manera sencilla cómo crear firmas de virus para ClamAV y contribuir con ellas a la comunidad.