viernes, 2 de enero de 2015

GPIO Xmas tree Raspi


This post is about an add-on for the Raspberry pi that i found on kickstater.
You can see here were it started for me: https://www.kickstarter.com/projects/1937541932/gpio-xmas-tree-kit-for-the-raspberry-pi

All the information and where to purchase it, i think for next year xmas, is here, www.pocketmoneytronics.co.uk, btw, thanks Andrew!!

I wanted to share what i did and how I configured it for. As is my first experience with raspberry pi GPIO and I am not very versed on electronics and coding, I think this could be a good guide for someone who get stuck on some issues.

Well all the information on how to start, the way to solder and how the leds and all the stuff works is available on the page above.

I am going to focus on what i did and paste here my code.
My tree came up with a bicolour led  which i put on top. so i started with the example_bicolour.py and modified it.


 import tree

# some constants to identify each LED
L1 = 2
L2 = 4
L3 = 8
L4 = 16
L5 = 32
L6 = 64
AMBER = 1 # LED 0 = amber
RED = 128 # LED 0 = red
GREEN = 256 # LED 0 = green
NO_LEDS = 0
BOTTOM6 = 2+4+8+16+32+64 # the 6 standard red LEDs

# note that we must tell setup() that we have a bicolour LED
tree.setup() # you must always call setup() first!

# All the red LEDs will be permanently illuminated and we rotate
# between the various colours for the bicolour LED at the top.
for i in range(7): # repeat 7 times
  tree.leds_on_and_wait(BOTTOM6, 0.8) # top LED off
  tree.leds_on_and_wait(BOTTOM6 + GREEN, 0.8) # top LED green
  tree.leds_on_and_wait(BOTTOM6 + RED,   0.8) # top LED red
  tree.leds_on_and_wait(BOTTOM6 + AMBER, 0.8) # top LED amber
 
  tree.leds_on_and_wait(NO_LEDS, 0.8) # all LEDs off
  tree.leds_on_and_wait(GREEN, 0.8) # top LED green
  tree.leds_on_and_wait(RED,   0.8) # top LED red
  tree.leds_on_and_wait(AMBER, 0.8) # top LED amber
 
tree.all_leds_off() # extinguish all LEDs

# All done!
tree.cleanup() # call cleanup() at the end


As you can see leds are represented with bits, you can see the tree.py for a description on how it works, so I created my own groups of leds and made a list with all of them.

i used the random function on python in order to pick the elements of my list, it will make them to blink randomly the time specifies and by groups I choosed.

Here is my code:

import tree
import random
import time

# some constants to identify each LED
L1 = 2
L2 = 4
L3 = 8
L4 = 16
L5 = 32
L6 = 64
AMBER = 1 # LED 0 = amber
RED = 128 # LED 0 = red
GREEN = 256 # LED 0 = green
NO_LEDS = 0
BOTTOM6 = 2+4+8+16+32+64 # the 6 standard red LEDs
PARES = 4+16+64
IMPARES = 2+8+32
CENTRO =8+16+34
PERIFERIA = 2+16+64


lista = [L1, L2, L3, L4, L5, L6, AMBER, RED, GREEN, NO_LEDS, BOTTOM6,  BOTTOM6 + GREEN, BOTTOM6 + RED, BOTTOM6 + AMBER, PARES, IMPARES, CENTRO, PERIFERIA]; #This is the list with all groups of leds


t = time.strftime ('%H') #here i pick up the hour and pass it to t


# note that we must tell setup() that we have a bicolour LED
 

tree.setup() # you must always call setup() first!
 

print (t) # only to know if all was going ok

while (t >='18') and (t < '24'): # start loop between 18 and midnight
  tree.leds_on_and_wait(random.choice(lista), 0.8) # randomly pick one of the list
  tree.all_leds_off() # extinguish all LEDs
 

 t = time.strftime ('%H') #need to know wich time after ech loop in order to exit it

 The last part of the code will pick the time of the system, only the hours, for triggering the loop between chosen times.

Next part of the code will pass to the tree.leds_on_and_wait function one element of the list chosen randomly by the random.choice function.


After that it is time to tell the raspberry to launch it. At first i told raspberry to check for the hour at o'clock each hour a day, but this way the process was launched each hour in the interval we chosen so i saw three processed at same time when i noticed something went wrong.

The way I managed to make it work was by making a very little script that checked if the process was executing and launching in it in case it wasn't. If you have more than one python process executing it won't work.
Here is the script:

#! /bin/bash

if pgrep python >/dev/null 2>&1
then
  exit 1
else
  sudo  python /path/to/ledprogram.py
fi


At last how we make this script run when we want. We will use cron, http://en.wikipedia.org/wiki/Cron there are several guides to configure the job we want, i will not explain here, the only thing i will explain is that you have to find crontab which in the raspberry case running raspbian and for root user, is in /etc/crontab and in guides in google it wasn't obvious for me.

in my case for executing the script each hour a day i used:

@hourly "user" script.sh

Then a video for watching the result.




I hope this has been useful in any way. I assume there are lots of better and smarter codes which they make better and beautiful things.

Next year I will improve a little with the priceless help of all those people on the web that share their jobs.

Thanks to all.

domingo, 21 de octubre de 2012

Aspiradoras Daewoo vacuum cleaner fix

Si eres un privilegiado poseedor de una aspiradora Daewoo (no se el modelo exactamente, se que la mía lo hacia) de estas que se apagan a los 5 min de encenderla en invierno y a los 2 min en verano, este es tu brico.
Tengo entendido que esta falla se producía en algunos aspiradores, deben ser varios pues cuando me puse a mirar si alguien había dado con la solución del problema me pareció entender que eran diferentes modelos.
Al lío.
Como no encontraba soluciones en la red, me puse ver que podía hacer. Esta es la solución rápida. Como una aspiradora no me parece un elemento cuyo diseño sea susceptible de permanecer intacto porque no es algo que vayamos a enseñar para cuidar nuestra vanidad, me decidí por arreglar el problema de la forma siguiente.

El principal problema que nos encontramos, es como ya adelanté, la corta duración de la aspiradora, en principio causado por el calentamiento de esta a juzgar por su comportamiento. Al cabo de un rato dejándola reposar, esta volvía a estar operativa.

Para ello procedí al desmontaje de la misma. (es posible realizar la operación sin desmontar, aunque no recomendable por si pudiéramos estropear algo que no debiéramos.

La aspiradora en concreto es esta:

Su desmontaje es sencillo. Lo primero que haremos será desmontar los paneles laterales, esto se hace girando en el sentido anti horario el embelleceros rojo que les otorga ese look de rueda:


El siguiente paso consiste en desmontar la tapa que aloja los botones de encendido y control de potencia. Habrá que tener cuidado ya que la ruleta de control de potencia tiene un eje de plástico (circulo azul en la foto) que habrá que intentar no romperlo. Para desmontar introduciremos una punta fina en la junta (círculos rojos en la imagen) y apalancaremos con cuidado hasta que las pestañas se liberen. Después levantaremos con cuidado hasta liberar el eje de su alojamiento y debería salir inmediatamente.


Procederemos a quitar los tornillos que nos permitirán quitar la tapa, no olvidar el que se encuentra en la parte trasera y que esta señalado. Se encuentra debajo del asa negra, algo mas atrás. Los tornillos son de cabeza de estrella y tendremos que conseguir un destornillador  cuyo largo y grosor nos permita acceder a ellos, lo digo por que el trasero es un poco jodio. Antes de quitar la tapa quitaremos el tornillo que sujeta el potenciómetro  y desconectaremos la clema azul de la tensión. No levantar con impetu.



Levantar tirando del asa o como podáis pero siempre con cuidado. 
Lo que tenemos a continuación es la placa de control. Lo que ocurre en la aspiradora, es que un componente se encarga de desconectarla cuando llega a una temperatura. Conseguí identificar el componente. Se trata de un interruptor de temperatura bimetal. Supongo que se trata de un interruptor que cierra el circuito hasta alcanzar una temperatura, en este caso de 70 a 80 grados. Al calentarse la dilatación del metal hace que este se mueva abriendo el circuito y cortando la chicha. 



El problema que hay aquí es que los lumbreras de daewoo ponen ese componente, que supongo que estará bien puesto, el caso es que cuando pones la tapa todo el calor generado por el motor y el aire que que expulsa como resultado de la succión, va a para directamente por la zona o bien no lo han dirigido como deben. Que seguramente sea a través del filtro que tiene abajo, pero en cuanto se ensucia un poco olvídate, a parte de que en verano ni filtro limpio ni leches. Como no voy a estar cambiando de filtro cada dos por tres, pues la solución pasa por practicarle un par de agujeros a la carcasa. Lo justo para que el calor no se concentre en ese punto. 
Así quedo mi carcasa:

y así la aspiradora montada.
Seria quizás mas fino comprar un switch como el montado pero con algo mas de rangode temperatura. Pero que queréis que os diga esto es mas rápido, algo mas sucio por el posible polvo que pueda salir hacia arriba, pero bueno yo no he notado mucho.

Espero que os sea de ayuda. No olvidéis compartir para hacer un mundo mejor. 
Saludos.