Raspberry Pi Cero conectada a pantalla de información


Raspberry Pi Zero es un nuevo dispositivo que entra fuerte en el terreno de los dispositivos conectados y a la Internet de las Cosas. Gracias a su reducido tamaño y consumo podemos darle un montón de posibilidades en casa, como por ejemplo la automatización de determinadas tareas o simplemente mostrar información en un espacio ínfimo. Especialmente si la complementamos con unpequeño display OLED como éste, comercializado por Adafruit.

Frederic Vandenbosch ha creado un interesante proyecto con la Raspberry Pi Zero, usando un  display de Adafruit anteriormente mencionado y un par de pulsadores soldados en los terminales GPIO de la Raspberry Pi.

Para conectar la Zero a internet, Frederic ha utilizado  una extensión wifi de la que ya hablamos en este blog   y que permite agregar conectividad Wi-Fi a la menor de las Raspberry Pi soldándolo directamente a la placa. Como podéis ver en el vídeo que acompaña la imagen, los dos pulsadores son programables y en los ejemplos propuestos permiten navegar por una serie de opciones, como por ejemplo mostrar la dirección IP o forzar la reconexión de la Raspberry Pi Zero a internet.

 

 

Hardware

El hardware consiste en los siguientes componentes:

  • Raspberry Pi Cero
  • Adafruit 128 × 64 SSD1306 OLED
  • Edimax wifi dongle
  • 2 grandes pulsadores

El cableado del OLED y botones es bastante sencillo, como se ilustra a continuación:

adafrut

El dongle wifi se conecta de la misma manera como lo hice anteriormente con el hub USB:

  • Pi Zero PP1 a dongle 5V
  • Pi Cero PP6 al dongle GND
  • Pi Cero PP22 para dongle D +
  • Pi Cero PP23 para dongle D-

Por último, para mantener todo en su lugar, he diseñado una caja sencilla lo suficientemente grande para encajar todo. Un panel trasero se atornilla en el lugar para mantener todos los componentes en el interior, dejando al descubierto el puerto microUSB entrada de energía en el lado.

 

Un poco de cinta kapton evita contactos expuesto a tocarse y mantiene el cableado en su lugar. El dongle wifi se coloca en la parte superior para una mejor conectividad. Su LED azul brillante brilla a través del recinto, dando una clara indicación de su estado y la actividad.

Los archivos para el recinto de impresión 3D se pueden encontrar en Thingiverse: http://www.thingiverse.com/thing:1193350

Software

Por el lado del software del proyecto, se necesita la creación de la tarjeta microSD con la última imagen Raspbian Jessie disponible.Arrancando  desde el combo hub Pi Cero / USB con el teclado y wifi dongle conectado  porque el puerto USB de este proyecto Pi Cero se ha cableado a un dongle wifi y un teclado ya no se puede conectar .

Se configura el wifi añadiendo el SSID y la frase de contraseña correcta en el archivo / etc / network / interfaces. Después de probar la conectividad wifi, poner la tarjeta microSD de vuelta en el Pi correcta. Con la conectividad de red, es posible iniciar sesión con SSH y trabajar en el guión para mostrar la información deseada.

Uso de la Biblioteca de Python Adafruit OLED SSD1306 y algo de código Python personalizada, en el ejemplo se programan  tres pantallas diferentes:

  • Hora y fecha
  • Configuración de la red
  • Los medios sociales suscriptores / seguidores

El botón izquierdo a través de las diferentes pantallas, mientras que el botón derecho desencadena una acción personalizada por pantalla.

En el caso de la visualización de la hora y la fecha, el botón, cambia entre las 12h y las 24h representación. Para la configuración de red, obliga al wifi de volver a conectar mediante un descenso de la interfaz y obligando de nuevo. Por último, para evitar el tráfico excesivo, información de medios sociales solamente se recupera cada cinco minutos, al pulsar el botón de fuerza a la recuperación de la información.

Por supuesto, esto es sólo un subconjunto de lo que podría ser mostrado. Podría recuperar la información del tiempo, el correo electrónico, últimos tweets, etc … Usted también podría tener que desplazarse por pantallas diferentes sin necesidad de pulsar un botón. Todo es posible.

El código actual se puede encontrar a continuación. Está lejos de ser perfecto, pero hace el trabajo.

Por último, para conseguir que se inicie automáticamente al arrancar el sistema, cree un script lanzador (por ejemplo, «launcher.sh«) que contiene la ruta de acceso a la secuencia de comandos, así:

  #! / bin / sh
 cd / home / pi
 sudo python info_display.py y

Y por último, añadir el cronjob con el comando «sudo crontab -e«:

  reboot sh /home/pi/launcher.sh

Cada vez que el Pi se inicia, se pondrá en marcha el script.

#!/usr/bin/env python
import time
import Adafruit_SSD1306
import RPi.GPIO as GPIO
import Image
import ImageFont
import ImageDraw
import os
def display_time():
# Collect current time and date
if(time_format):
current_time = time.strftime(«%I:%M«)
else:
current_time = time.strftime(«%H:%M«)
current_date = time.strftime(«%d/%m/%Y«)
# Clear image buffer by drawing a black filled box
draw.rectangle((0,0,width,height), outline=0, fill=0)
# Set font type and size
font = ImageFont.truetype(Minecraftia.ttf, 35)
# Position time
x_pos = (disp.width/2)/2)
y_pos = 2 + (disp.height48)/2 (35/2)
# Draw time
draw.text((x_pos, y_pos), current_time, font=font, fill=255)
# Set font type and size
font = ImageFont.truetype(Minecraftia.ttf, 8)
# Position date
x_pos = (disp.width/2)(string_width(font,current_date)/2)
y_pos = disp.height10
# Draw date
draw.text((x_pos, y_pos), current_date, font=font, fill=255)
# Draw the image buffer
disp.image(image)
disp.display()
def display_social():
# Collect social media subscribers/followers/… by parsing webpages
twitter = os.popen(«curl https://twitter.com/f_vdbosch?lang=en | grep ‘data-nav=followers‘ | grep -o ‘[0-9]\+’«).read()
youtube = os.popen(«curl https://www.youtube.com/c/FrederickVandenbosch | grep -o ‘[0-9]\+ subscribers’ | grep -o ‘[0-9]\+’«).read()
facebook = «0«
instagram = os.popen(«curl https://www.instagram.com/f_vdbosch/ | grep -o ‘followed_by:{count:[0-9]\+}’ | grep -o ‘[0-9]\+’«).read()
googleplus = «0«
# Put data in lists that can be iterated over
channels = [«YouTube«, «Twitter«, «Facebook«, «Instagram«, «Google+«]
subscribers = [youtube, twitter, facebook, instagram, googleplus]
# Clear image buffer by drawing a black filled box
draw.rectangle((0,0,width,height), outline=0, fill=0)
# Set font type and size
font = ImageFont.truetype(Minecraftia.ttf, 8)
# Iterate over lists
for i in range(0, 5):
# Position channel name
x_pos = 2
y_pos = 2 + (((disp.height4)/5)*i)
# Draw channel name
draw.text((x_pos, y_pos), channels[i], font=font, fill=255)
# Position subcribers/followers/…
x_pos = disp.width 2 string_width(font, subscribers[i])
y_pos = 2 + (((disp.height4)/5)*i)
# Draw subcribers/followers/…
draw.text((x_pos, y_pos), subscribers[i], font=font, fill=255)
# Draw the image buffer
disp.image(image)
disp.display()
def display_network():
# Collect network information by parsing command line outputs
ipaddress = os.popen(«ifconfig wlan0 | grep ‘inet addr’ | awk -F: ‘{print $2}’ | awk ‘{print $1}’«).read()
netmask = os.popen(«ifconfig wlan0 | grep ‘Mask’ | awk -F: ‘{print $4}’«).read()
gateway = os.popen(«route -n | grep ‘^0.0.0.0’ | awk ‘{print $2}’«).read()
ssid = os.popen(«iwconfig wlan0 | grep ‘ESSID’ | awk ‘{print $4}’ | awk -F\\ ‘{print $2}’«).read()
# Clear image buffer by drawing a black filled box
draw.rectangle((0,0,width,height), outline=0, fill=0)
# Set font type and size
font = ImageFont.truetype(Minecraftia.ttf, 12)
# Position SSID
x_pos = 2
y_pos = 2
# Draw SSID
draw.text((x_pos, y_pos), ssid, font=font, fill=255)
# Set font type and size
font = ImageFont.truetype(Minecraftia.ttf, 8)
# Position IP
y_pos += 12 + 10
# Draw IP
draw.text((x_pos, y_pos), «IP: «+ipaddress, font=font, fill=255)
# Position NM
y_pos += 10
# Draw NM
draw.text((x_pos, y_pos), «NM: «+netmask, font=font, fill=255)
# Position GW
y_pos += 10
# Draw GW
draw.text((x_pos, y_pos), «GW: «+gateway, font=font, fill=255)
# Draw the image buffer
disp.image(image)
disp.display()
def display_custom(text):
# Clear image buffer by drawing a black filled box
draw.rectangle((0,0,width,height), outline=0, fill=0)
# Set font type and size
font = ImageFont.truetype(Minecraftia.ttf, 8)
# Position SSID
x_pos = (width/2) (string_width(font,text)/2)
y_pos = (height/2) (8/2)
# Draw SSID
draw.text((x_pos, y_pos), text, font=font, fill=255)
# Draw the image buffer
disp.image(image)
disp.display()
def string_width(fontType,string):
string_width = 0
for i, c in enumerate(string):
char_width, char_height = draw.textsize(c, font=fontType)
string_width += char_width
return string_width
# Set up GPIO with internal pull-up
GPIO.setmode(GPIO.BCM)
GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_UP)
# 128×64 display with hardware I2C
disp = Adafruit_SSD1306.SSD1306_128_64(rst=24)
# Initialize library
disp.begin()
# Get display width and height
width = disp.width
height = disp.height
# Clear display
disp.clear()
disp.display()
# Create image buffer with mode ‘1’ for 1-bit color
image = Image.new(1, (width, height))
# Load default font
font = ImageFont.load_default()
# Create drawing object
draw = ImageDraw.Draw(image)
prev_millis = 0
prev_social = 0
display = 0
time_format = True
while True:
millis = int(round(time.time() * 1000))
# Software debouncing
if((millis prev_millis) > 250):
# Cycle through different displays
if(not GPIO.input(12)):
display += 1
if(display > 2):
display = 0
prev_millis = int(round(time.time() * 1000))
# Trigger action based on current display
elif(not GPIO.input(16)):
if(display == 0):
# Toggle between 12/24h format
time_format = not time_format
time.sleep(0.01)
elif(display == 1):
# Reconnect to network
display_custom(«reconnecting wifi …«)
os.popen(«sudo ifdown wlan0; sleep 5; sudo ifup –force wlan0«)
time.sleep(0.01)
elif(display == 2):
# Refresh social media now
display_custom(«fetching data …«)
display_social()
time.sleep(0.01)
prev_millis = int(round(time.time() * 1000))
if(display == 0):
display_time()
prev_social = 0
elif(display == 1):
display_network()
prev_social = 0
elif(display == 2):
# Only fetch social media data every 5 minutes when active
if((millis prev_social) > 300000):
display_custom(«fetching data …«)
display_social()
prev_social = millis
time.sleep(0.1)

 

El uso de una pantalla OLED Adafruit, dos pulsadores, un dongle wifi y un pi Cero, permite como vemos  una pantalla de información conectada a internet. La información podría ser cualquier cosa: fecha y hora, el clima, el estado de las redes sociales, etc … Los dos botones se utilizan para desplazarse por los datos y desencadenar ciertas acciones.
Sin duda el abanico de posibilidades es inmenso..

Muy pronto placas con procesadores de 64bits


Hoy en día, sorprendentemente, se puede comprar un mini-ordenador  por $ 8 o menos. Son grandes placas  de 32 bits  muy flexibles  y sencillas de usar , pero si necesita un soporte de 64 bits ,muy pronto sólo con un extra de diez dólares podrá comprarlo gracias  a   PINE64 . Con esta propuesta no solo hablamos de un mini-pc , pues es un ordenador quad-core de alto rendimiento de 64 bits con 512 megabytes de RAM  con la capacidad de calculo  similar a  un ordenador de 250 vatios, pero que sólo consume  2,5 vatios y que cuesta solamente 15 dólares .

Este  modelo ampliable ,tiene el aspecto de una   sola tarjeta (SBC) y aspira a ser  uno de los más impresionantes opciones de bajo costo para todos aquellos que buscan implementar vídeo de alta resolución en su proyecto  haciendo un claro   guiño  a la Plataforma Raspberry Pi .

Es una pequeña computadora   versátil y ampliable que puede  ejecutar  casi cualquier distribución moderna de GNU / Linux, como Ubuntu, así como el sistema operativo móvil Android 5.1, OpenWrt y OpenHub  contando ademas con especificaciones impresionantes que eclipsan a productos comparables por un margen considerable . No sólo el Pine A64 tiene una velocidad de reloj más alta, también tiene una arquitectura más avanzada que consume menos energía y logra un mayor rendimiento. !La A64 Pine aspira a ser el ordenador de escitorio de  64 bits  más asequible del  mercado!.

Como era de esperar,  ha  sido lanzada por Kickstarter   y alcanzado ya el objetivo inicial de financiación ,  en unas semanas  muy pronto se podrá comprar

 

 

La versión básica (512 megabytes, Ethernet 10/100) tiene un precio de apenas 15 dólares,  será capaz de ejecutar una variedad de diferentes sistemas operativos como Android 5.1, Ubuntu Linux, y otros, y, pero hay más: La edición Plus del PINE64 añade accesibilidad para paneles táctiles, cámara y pantalla LCD, junto a un puerto Gigabit y 1 GB de RAM por 19 dólares, y quien desee llevar la memoria a 2GB sólo debe agregar diez dólares extra. Las entregas se llevarán a cabo entre febrero y abril

Si usted es un profesional de TI, aficionado a la electrónica, estudiante, profesor, pirata informático, inventor, o simplemente alguien que quiere tener más flexibilidad para aumentar su productividad en el trabajo, esta nueva placa puede  serle muy útil pues  PINE4 Pine es un ordenador de a bordo hecho para todo el mundo. Disfrute de más diversión y el entretenimiento en casa con un sinfín de posibilidades.

El   tamaño  como era  de esperar  es muy similar a otras placas de IoT   y  no se diferencia  sustancialmente respecto  a otras placas  .En la imagen  podemos  verla junto al iPhone 6S para la comparación de tamaño:

Pine A64 tablas Junto al iPhone 6S Para La comparacion de Tamano

¿Cómo se enfrenta al Raspberry Pi? ¿Acaso se mejoran las especificaciones, o el precio? Las mentes detrás del proyectoPINE64 decidieron abordar ambos puntos, y aunque sigue siendo más costoso que un Pi Zero, lo que entregan a cambio es impresionante: El PINE64 CPU es un ARM A53 procesador quad-core de 64 bits que funciona a 1.2GHz.

La GPU en la A64 Pine es un dual-core MALI-400 MP2 y corre a 500MHz, capaz de 1,1 Gpixel / s rendimiento. Esto significa que las capacidades gráficas son un poco más alto que el nivel de desempeño del X-Box originales.

En la siguientes tablas podemos  ver a Pine A64 comparado con la Raspberry, Arduino y Next Thing C.H.I.P  ofreciendo hasta 20 a 30% más de rendimiento que otros homólogos de código abierto 32 bits.

Pine A64 en comparacion con el Raspberry Pi
PINE A64 en comparación con el Raspberry Pi

Pine A64 en comparacion con CHIP y Arduino
Pine A64 en comparación con CHIP y Arduino

Es posible añadir diferentes interfaces de hardware a un A64 Pine  . Dependiendo de si tiene que elegir el Pine A64 o A64 + Pine, las placas  A64 Pine por  defecto incluyen dos puertos USB, salida HDMI, de 3,5 mm de audio / salida de micrófono, puerto Ethernet y dos buses de expansión de E / S.

En la A64 Pine más avanzado , recibirá tres puertos adicionales para agregar accesorios opcionales tales como: módulo de la cámara, el módulo de panel táctil, y el puerto del panel LCD.

Se pude añadir un teclado y ratón de modo que  Pine A64 se convertiría en una computadora completa Android 5.1 para funcionar navegador Chrome, Microsoft Word, Excel, Powerpoint, o incluso ver sus programas favoritos en YouTube.

También  es posible cargar versiones especiales de Android 5.1 y lanzar reproductores multimedia para convertir en un  producto Android como de televisión avanzada(de hecho  A64 Pine apoya miracast.)

Se software con la Muestra de Medios Android

Asimismo es posible instalar un módulo de pantalla táctil y elegir entre cientos de miles de juegos de la tienda de Android para construir su propia galería.

Una opción  que los diseñadores   proponen es también construir una caja personalizada para utilizar el PINE64 en su próximo proyecto innovador  ,   aunque como en otras plataformas no se olvidan de los típicos emplazamientos  con piezas de Lego , sport de acrílico   o  muchos  más!.

 

Sistema operativo

Debido A64 Pine es una plataforma de código abierto, puede cargar todo lo que quiera, pero  recomiendan  emparejar A64 Pine con Ubuntu, Android o openHAB IoT. Al alinear la A64 Pine para ser compatible con estos sistemas operativos, se obtiene básicamente acceso a más de 1.7 millones de aplicaciones Android(Android App Store)  en el mercado hoy en día, a partir de las utilidades, juegos y aplicaciones de medios.

Compatibles Sistemas Operativos

A diferencia de muchos otros consejos y computadoras, A64 Pine almacena su disco de arranque en una tarjeta MicroSD extraíble (como en la Raspberry Pi)  ,siendo  capaz de soportar hasta 256 GB. Esto permite a los usuarios simplemente actualicen, vuelvan  a instalar, o incluso intercambiar sistemas operativos por la simple eliminación de una tarjeta y la inserción de una nueva. Almacenamiento adicional si es necesario se puede agregar mediante la conexión de una unidad flash USB o disco duro externo.

Pine A64 es un equipo asequible que cabe en la palma de su mano y se conecta a un televisor o monitor de ordenador con un teclado y un ratón estándar. Con el apoyo de Ubuntu OS y Android Lollipop, permiten  al usuario explorar el mundo de la informática y la programación ( Python, JSON, HTML y JAVA.)  desde principiantes hasta expertos con facilidad  sin olvidar de que  con esta placa  se puede navegar  por Internet y jugar 4K videos de alta definición.

Ordenadores de escritorio típico o servidor  puede consumir  entre 75 a 300 vatios. La placa  Pine A64 ofrece el mismo poder de computación de escritorio en un mero consumo de  2,5 a 3,5 vatios. Con sólo aprovechar la eficiencia energética obtenida con una placa Pine A64 es capaz de ahorrar mucho sin sacrificar nada en el rendimiento. El PINE64 funciona con alimentación de 5V a través de microUSB o la batería de 3,7 V a través de la administración de energía de a bordo.

Empate 5V 0.5A Potencia
Vemos  aquí el consumo de  CC de 5V es  de unos sólo  0.5A 
El A64 Pine es compatible con diferentes tipos de adaptadores y accesorios disponibles. Accesorios interesantes pueden ser el adaptador bluetooth, adaptador Zwave, el contacto me seco / S analógica, cámara, sensores, 802.11bgn wifi, y más. Al cargar el sistema operativo en una tarjeta microSD externa, es fácil para usted para actualizar y cargar nuevos archivos.
Sólo ALGUNOS accesorios Opcionales Que Funcionan con Pine 64
Sólo algunos accesorios opcionales  funcionan con Pine 64
Para terminar no solo ofrecen la opción de duplicar la RAM por unos 4$ y 10$ para cuadricarla ( 2GB) , también desde su propia tienda ofrecen    un abanico  de  complementos  gracias a su   alianza   con el fabricante Backerkit
Muchos de los componentes  se pueden vender por separado en el sitio web PINE64 después de Kickstarter. Estos componentes incluyen teclados Bluetooth ,ratón, wifi, pantalla, bluetooth ,z-wave, pantalla táctil ,baterias y diferentes recintos que  beta testers han ido creando con impresoras 3D( y que  se pueden descargar archivos de impresión 3D,)
A  modo de kits proponen 5 opciones desde los 15$ hasta los 89$  variando el numero de «complementos» conforme  aumenta el precio:

Puede del: Añadir complementos Como wifi, Pantalla, Caso, a la carta, Gracias a Backerkit Despues de su promesa. Todos los kits con A64 + pueden Actualizar un 2GB por $ 10.

Pine A64 no es sólo un reproductor de medios, es una  plataforma Linux,una  herramienta de aprendizaje, o un dispositivo de juego. Es un supe-ordenador  en tarjeta  de 64 bits completo, 4K capaz, totalmente ampliable .Al ser tan asequible en $ 15, Pine A64 ahora abre las puertas a nuevas oportunidades para todos.   ! Utilícela para construir simplemente casi cualquier cosa.!