Orange Pi Zero y control de ventilador

Orange Pi Zero y control de ventilador

Al igual que en el anterior post  que puse un ventilador controlado a una raspberry pi con libreelec, en este post voy a realizar lo mismo pero con una orange pi zero con el sistema operativo retropie adaptado –> retrorangepi basado en armbian.

Lo primero es instalar el software de control de las entrada/salida GPIO. Hay un proyecto  WiringOP que permitirá controlar por software la GPIO de la OrangePi y que se instala de la siguiente forma:

git clone https://github.com/zhaolei/WiringOP.git -b h3

cd WiringOP/

./build

A continuación ya se podrá leer el listado de los puertos GPIO de la OrangePi:

gpio readall

 

Los puertos a usar dependerá del tipo de ventilador, en mi caso el ventilador es un ENOKAY de tamaño 25x25x10 mm de 5V y 0.2 A.

Para una Orange Pi Zero  con módulo de expansión y carcasa …

 … se puede colocar el ventilador en la parte superior de la carcasa o en un lateral, para este caso lo he realizado en un lateral. Para ello hay que taladrar en el lado de la carcasa elegido para la disposición del ventilador. En mi caso he usado un minitaladro KKmon siguiente:

 

Quedando de la siguiente forma el ventilador:

Para este caso vamos a utilizar los puertos físicos 2(5V) 6 (0V)  3 (GPIO 8) y el 5 (GPIO 9)de control atendiendo al siguiente esquema:

He realizado la soldadura de solo los primeros pines de la siguiente forma:

 

Una implementación del circuito propuesto en placa protoboard de prueba se ve en el siguiente video, donde se ejecutan los comandos siguientes de prueba:

root@RetrOrangePi:~# gpio mode 8 out
root@RetrOrangePi:~# gpio mode 9 out

root@RetrOrangePi:~# gpio write 8 1
root@RetrOrangePi:~# gpio write 9 1
root@RetrOrangePi:~# gpio write 9 0
root@RetrOrangePi:~# gpio write 8 0

 

Se comprueba de esta forma el funcionamiento correcto del pineado y su control. Ejercicio didáctico que hay que ajustarlo a su foto final, le quitamos los leds, la placa protoboard y las resistencias, el conexionado GPIO9 y al final se nos queda en …

 

Se añade script de control:

root@RetrOrangePi:~/scripts# cat /root/scripts/fan-control.sh

#!/bin/bash

gpio mode 8 out

temperature=$(< /sys/devices/virtual/thermal/thermal_zone1/temp)

lineToLog=»FAN-«

if [ $temperature -gt 55 ]

then

    lineToLog+=»ON-«

    lineToLog+=»$temperature»

    echo $lineToLog $(date) >> /root/scripts/logfan.txt                                   

    gpio write 8 1

else

#    lineToLog+=»OFF-«

#    lineToLog+=»$temperature»

#    echo $lineToLog $(date) >> logfan.txt

    gpio write 8 0                                                          

fi

Y ejecución cada minuto desde cron con limpieza de log de forma semanal:

root@RetrOrangePi:~/scripts# crontab -l

# Edit this file to introduce tasks to be run by cron.

#

# Each task to run has to be defined through a single line

# indicating with different fields when the task will be run

# and what command to run for the task

#

# To define the time you can provide concrete values for

# minute (m), hour (h), day of month (dom), month (mon),

# and day of week (dow) or use ‘*’ in these fields (for ‘any’).#

# Notice that tasks will be started based on the cron’s system

# daemon’s notion of time and timezones.

#

# Output of the crontab jobs (including errors) is sent through

# email to the user the crontab file belongs to (unless redirected).

#

# For example, you can run a backup of all your user accounts

# at 5 a.m every week with:

# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/

#

# For more information see the manual pages of crontab(5) and cron(8)

#

# m h  dom mon dow   command

* * * * * /root/scripts/fan-control.sh

0 0 * * 0 > /root/scripts/logfan.txt

 

Un ventilador supone una bajada de temperatura de 15 grados, dejo un pantallazo de OPi-Monitor cuando desactivo el ventilador:

Y cuando se deja activo mediante cron/script:

La observación de la temperatura durante el tiempo se mantiene constante en los 54/56 grados con este sistema:

Los dos picos que aparece se refieren a pequeños intervalos donde se ha desconectado el ventilador.

 

Fuentes:

Para el esquema del circuito del ventilador:

https://www.hackster.io/erhan9049/orange-pi-zero-fan-controller-f39e52

Para GPIO:

https://github.com/zhaolei/WiringOP

Para profundizar:

GPIO en C: Control automático de ventilador según temperatura

Ventilador automático según temperatura en «OpenELEC/LibreELEC»

Libreelec con ventilador ruidoso

Libreelec con ventilador ruidoso

Se trata de un post para control del ventilador de la Raspberry Pi con la distribución Libreelec. En mi caso la raspberry está siempre encendida porque tiene instalada un servidor Bittorrent (Transmission) funcionando todo el día. Es una solución fantástica pero en el verano necesita del ventilador ya que se calienta mucho, lo malo es que genera un pequeño ruido después de estar un tiempo encendida, así que después de revisar lo que hay al respecto  por internet, he encontrado una solución ideal que describo a continuación.

  •  Instalar Add-ons Raspberry Pi Tools, disponible desde los repositorios por defecto por lo que en una simple búsqueda aparecerá. Este add-on contiene las funciones de control en Python RPi.GPIO que permite controlar el pineado GPIO de la raspberry.

Raspberry Tools Add-ons

  • Añadir script en python de control que activará/desactivará ventilador según temperatura con nombre autoexec.py y en la ubicación /storage/.kodi/userdata/autoexec.py:

#!/usr/bin/env python
# Original Author: Edoardo Paolo Scalafiotti <edoardo849@gmail.com>
# Modified to work on libreElec by Gary Beldon

import os
import time
import signal
import sys
sys.path.append(‘/storage/.kodi/addons/virtual.rpi-tools/lib’)
import RPi.GPIO as GPIO
import subprocess

maxTemp = 55 # The temperature in Celsius after which we trigger the fan
minTemp = 45 # Temp when we turn the fan off
sleepTime = 10 # Read the temperature every n sec, increase or decrease this limit if you want

logfile = «/storage/.kodi/temp/power.log»
pin = 18 # The pin ID, edit here to change it
fanRunning = False

def setup():
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin, GPIO.OUT)
logging(«Initializing.»)
return()

def getCPUtemperature():
temp = subprocess.check_output([‘vcgencmd’, ‘measure_temp’])[5:-3]
return temp
def fanON():
GPIO.output(pin, True)
return()
def fanOFF():
GPIO.output(pin, False)
return()
def checkTemp():
global fanRunning
CPUtemp = float(getCPUtemperature())
if fanRunning==False and CPUtemp>maxTemp:
fanRunning = True
fanON()
logging(«Temp=» + str(CPUtemp) + «C. Switching fan On.»)
if fanRunning==True and CPUtemp<minTemp:
fanRunning = False
fanOFF()
logging(«Temp=» + str(CPUtemp) + «C. Switching fan Off.»)
return()
def logging(message):
logfilehandle=open(logfile,’a’)
logfilehandle.write(time.strftime(«%c») + » :- » + message + «\n»)
logfilehandle.close()
return();

try:
setup()
while True:
checkTemp()
time.sleep(sleepTime)

except KeyboardInterrupt: # trap a CTRL+C keyboard interrupt
logging(«Terminating.»)
GPIO.cleanup() # resets all GPIO ports used by this program

  • Añadir un transistor S8050 conectado al ventilador.  Se puede conseguir por Amazon por unos 2 euros y que dejo a continuación con mi enlace de afiliado:

amazon_transistor  10X Transistor S8050 40V 1,5A 1500mA TO-92

El conexionado del transistor con el ventilador sería el siguiente:

conexionado_raspberry_fan
En mi caso he reciclado un cable de audio interno de los antiguos CDROM de PC, quedando para las pruebas de la siguiente forma:

Una vez montado solo queda ver que funciona, para ello se puede monitorizar las entradas del log configurado en el script:

frambu2:~ # tail -f /storage/.kodi/temp/power.log

Wed Jun 27 15:43:49 2018 :- Temp=55.3C. Switching fan On.

Wed Jun 27 15:48:02 2018 :- Temp=44.5C. Switching fan Off.

Wed Jun 27 15:55:36 2018 :- Temp=55.3C. Switching fan On.

Wed Jun 27 15:59:49 2018 :- Temp=44.5C. Switching fan Off.

Wed Jun 27 16:06:53 2018 :- Temp=55.3C. Switching fan On.

Wed Jun 27 16:10:56 2018 :- Temp=44.5C. Switching fan Off.

Wed Jun 27 16:17:10 2018 :- Temp=55.3C. Switching fan On.

Wed Jun 27 16:20:42 2018 :- Temp=44.5C. Switching fan Off.

Wed Jun 27 16:28:26 2018 :- Temp=55.3C. Switching fan On.

Wed Jun 27 16:32:39 2018 :- Temp=44.5C. Switching fan Off.

Wed Jun 27 16:40:03 2018 :- Temp=55.3C. Switching fan On.

Wed Jun 27 16:45:06 2018 :- Temp=44.5C. Switching fan Off.

Con unas bridas pequeñas y silicona caliente se quedó al final así:

raspberrypi-control-fan-final

Fuentes:

Para instalar las RPi.GPIO y script en python se explica en foro de proyecto Libreelec:

https://forum.libreelec.tv/thread/9472-cooling-fan-control-raspberry-pi-libreelec/

Para el conexionado del transistor y ventilador:

https://github.com/KyleRoss/rpi-fan-controller

Para comprar el transistor S8050 por Amazon:

https://www.amazon.es/gp/product/B01M9CJ4CL/ref=as_li_tl?ie=UTF8&camp=3638&creative=24630&creativeASIN=B01M9CJ4CL&linkCode=as2&tag=ventanasolead-21&linkId=cea12262ce9864c330768f325049d993

Linux Apesta (Linux Sucks)

Por curiosidad me he encontrado un vídeo en youtube que explica de forma sencilla y cómica el absurdo de los FORKs en el mundo de las distribuciones de Linux y Software Libre en general. Por ejemplo el escritorio CINNAMON (fork de GNOME) en la distro de Linux Mint o el proyecto LibreSSL (fork de OpenSSL). Son unos 45 minutos donde Bryan Lunduke de forma divertida hace críticas de como se gestionan los proyectos de Fedora y Ubuntu, el motivo de porqué se eternizan proyectos como el nuevo servidor X Wayland, … temas que en Linux apestan 🙂 …

Router de Jazztel con OpenWrt

Al cambiar de domicilio, he tenido que dar de baja la línea de Jazztel y darme alta en el nuevo domicilio con un nuevo número de teléfono. En el alta me han proporcionado un nuevo router y como el antiguo se quedó sin uso le he instalado una versión de OpenWrt. El modelo de Router es Comtrend AR-5387un y el firmware junto con los detalles de la instalación lo podéis ver en el siguiente hilo del foro de la comunidad SeguridadWireless:

http://foro.seguridadwireless.net/openwrt/openwrt-en-comtrend-ar5387un/

La versión que he instalado ha sido:

Firmware Openwrt
luci + kmod-brcmsmac + wpad-mini + kmod-usb-ohci + kmod-usb2 + kmod-usb-storage + kmod-fs-ext4 + kmod-ath9k-htc + kmod-brcmfmac + kmod-carl9170 + kmod-libertas-usb + kmod-net-zd1201 + kmod-p54-usb + kmod-rt2500-usb + kmod-rt2800-usb + kmod-rt73-usb + kmod-rtl8187 + kmod-rtl8192cu + kmod-zd1211rw
r38342

Lo que más me ha gustado una vez instalada es su facilidad para configurarla como WDS y sus gráficas de red en tiempo real 😛

Luci-test-velocidad

test-de-velocidad3

Como el router tiene un puerto USB hay versiones de OpenWrt con cliente Bittorrent …

http://wiki.openwrt.org/doc/uci/transmission

Así que creo que voy a tener juguete para entretenerme durante un rato 🙂

Backup Academy Certified Professional – Pon a prueba tus conocimientos de backup en entornos virtuales

Backup Academy se trata de un proyecto de comunidad soportado por expertos en almacenamiento y virtualización con un portal en el siguiente enlace http://www.backupacademy.com y dedicado a profesionales IT en especial de almacenamiento. Proporcionan material educacional en backups para entornos virtuales y cloud junto con una certificación gratuita que se consigue tras un examen tipo test basado en sus contenidos.

Lo más interesante que pretende ser neutral a vendedores y productos y a través de su certificación te ponen a prueba para refrescar tus conocimientos y apoyarte en su material multimedia.

Certificaciones en Sistemas de Almacenamiento y salarios

En los últimos años cada vez mas común la especialización en el área de sistemas en almacenamiento y backup. Lo que eran tareas comunes para un administrador UNIX tales como la provisión de almacenamiento o sus copias de seguridad, en grandes entornos de sistemas tienen a sus especialistas con tareas específicas dedicadas exclusivamente al dato y la administración de su ciclo de vida.

Al igual que  un especialista en redes suele tener una certificación que demuestra su competencia en CISCO, tipo CCNA o CCNP, en almacenamiento, redes de almacenamiento y backup hay interesantes y valoradas certificaciones que se han convertido en el estándar de su área. Además destacaría que son muy pocos profesionales los que las poseen, proporcionando al poseedor gran credibilidad a la hora de optar a un empleo de alta cualificación y especialización. Destacaría para los interesados certificaciones de la SNIA que son libre de fabricantes, o específicas de un fabricante como Brocade, Hitachi o EMC.

Si el mercado demanda de perfiles de especialistas junto a que hay pocos certificados, hace que una certificación en cualquier área del ciclo de vida del dato tenga gran valor … y tanto ! Sólo hay que ver el salario medio para un administrador de almacenamiento en EEUU por tera administrado:

salarios2012

O salario por certificación según fabricante.

EMC

salariosEMC

Fuentes:

http://searchstorage.techtarget.com/

ZFS en Linux nativo

Después de que Markus me comentara que hay un proyecto de ZFS nativo en linux, no he podido resistirme y lo he instalado en una distribución Zentyal que tenía de pruebas. Dejo el link del proyecto

Y unos ejemplos de lo que he visto hoy … ;=)

root@zentyal:/home/urr# uname -a

Linux zentyal 2.6.32-24-server #43-Ubuntu SMP Thu Sep 16 16:05:42 UTC 2010 x86_64 GNU/Linux

root@zentyal:/home/urr# zpool create larepera raidz /dev/sdb /dev/sdc /dev/sde /dev/sdf

root@zentyal:/home/uti# zfs create larepera/om

root@zentyal:/home/urr# zfs list

NAME          USED  AVAIL  REFER  MOUNTPOINT

larepera      138K  5,84G  29,9K /larepera

/lareperalarepera/om  29,9K  5,84G  29,9K  /larepera/om

root@zentyal:/larepera# lsmod|grep zfs

lzfs                   31243  2zfs                   797269  1 lzfs

zcommon                32028  1 zfs

znvpair                45460  2 zfs,zcommon

zavl                    6891  1 zfs

zlib_deflate           21834  1 zfs

zunicode              323374  1 zfs

spl                   111243  6 lzfs,zfs,zcommon,znvpair,zavl,zunicode

Un ZFS sin FUSE como módulo del kernel de Linux … ¡suena bien!

Una iniciativa esperanzadora – Multimillonarios americanos donando sus fortunas

Multimillonarios, los hombres más ricos del globo,  donando parte de sus fortunas a causas benéficas, un compromiso bajo juramento por el bien de las nuevas generaciones …

¿Quien podría imaginar una iniciativa de tal magnitud?

Se ha especulado sobre la Iglesia Católica, institución inmensamente rica en tesoros culturales y propiedades, que ablandados por exigencias de sus fieles y haciendo justicia a su evangelio cristiano se liberen de ese capital que no necesitan y sea repartido entre los que lo necesitan. Algo así nos podría parecer coherente con el origen,  historia y reivindicaciones desde dentro y fuera de su comunidad.

Pero sin embargo, una inciativa similar procedente de los grandes capitales americanos, sabiendo que todas ellos se alimentan de una tradición que se basa en  monopolios, manipulaciones políticas o guerras encubiertas donde el fin justifica los medios, sin escrúpulos y una avaricia sin fondo …  es tan difícil de creer …  ¿ no opinais igual?

Mi corazón  de Fuentes Libres se me ha puesto blando y llenado de esperanzas cuando he leido la carta de Bill Gates sobre esta iniciativa, givingpledge o «su juramento de dar» …  dejo a continuación una traducción en castellano  …. FASCINANTE:

Los padres de todo el mundo hacen lo posible para dar a sus hijos grandes oportunidades. Trabajan para darles todas las oportunidades para perseguir sus propios sueños.

Sin embargo, para muchos padres,los sueños de dar a sus familias una mejor vida se desvanecen. En los Estados Unidos, sus hijos no reciben la educación que necesitan para tener éxito en la vida. En el mundo subdesarrollado, sus hijos sucumben a las enfermedades que  hace tiempo se erradicaron en los países ricos.

Hace años, cuando empezamos a aprender sobre la salud en el mundo, nos quedamos impresionados en especial  sobre una enfermedad que puede prevenirse – rotavirus – que estaba matando a medio millón de niños cada año. Un avión que se estrella siempre es una noticia de primera página, sin embargo, incluido aquí donde mueren medio millón de niños cada año, y más gente, no se le  pone nombre  y mucho menos poner fin a la misma.

Hemos comprometido  la gran mayoría de nuestro capital a la Fundación Bill & Melinda Gates  para ayudar a evitar esas muertes prevenibles, y derribar otras barreras para la salud y la educación que impiden sacar el máximo partido de sus vidas. Nuestro principio vital es que todas las vidas tienen igual valor. Dicho de otra manera, significa que creemos que cada niño merece la oportunidad de crecer, soñar y hacer grandes cosas.

Hemos sido bendecidos con una buena fortuna más allá de nuestras expectativas más optimistas, y estamos profundamente agradecidos. Pero así como estos dones son grandes, nos sentimos con la gran responsabilidad de usarlos bien. Por eso estamos tan contentos de unirnos al «Juramento a dar» haciendo un compromiso explícito.

La idea de la donación salió de las discusiones que tuvimos con otros donantes sobre lo que estaban haciendo, sobre lo que habían trabajado en la filantropía y lo que no había funcionado. Todos compartieron cómo dar había hecho sus vidas más ricas. Todo los que asistieron se inspiraron  escuchando la pasión  de los demás y se  animaron a hacer mucho más.

Para dos de nosotros, que vemos  el increible progreso además del trabajo que queda por hacer, nos sentimos honrados de ser parte de este juramento de esfuerzo.

Por ejemplo, para nosotros, las vacunas son milagros, pequeños tubos de esperanza y promesa. El mundo ha hecho progresos en la vacunación de millones de niños. Pero todavía hay mas millones que mueren de enfermedades prevenibles.

Así que queremos asegurarnos de que las vacunas salvadoras lleguen a todos los que las necesitan, y que el mundo desarrolle nuevas vacunas.

Un progreso similar hemos observado en el sistema educativo de Estados Unidos. Hemos visitado  escuelas que están rompiendo antiguas barreras y  preparando a todos los niños para la universidad y la vida. Éstas son las  grandes escuelas, pero no son suficientes. Ahora la tarea es asegurarse de que cada estudiante recibe la misma oportunidad de triunfar en la universidad y en la vida.

Los dos tuvimos la suerte de crecer con padres que nos enseñaron algunos valores tremendamente importantes. Trabaja duro. Mostrar respeto. Tener  sentido del humor. Y si la vida te sonrie  con talento o dinero, tener la responsabilidad de usar esos dones,  sabiamente como te sea posible. Ahora esperamos pasar este ejemplo a nuestros propios hijos.

Nos sentimos muy afortunados de  haber crecido con padres que nos trasmitieron unos valores tan importantes.  Uniéndonos al «Juramento de dar», estamos seguros que nuestra donación será más efectiva por el tiempo que dedicaremos a este grupo. Esperamos poder compartir lo que ha sido para nosotros una experiencia maravillosa y aprender de la experiencia de los demás.

Mis mejores deseos,

Bill y Melinda Gates