lunes, 30 de marzo de 2015

Como facer un forno de barro

Construindo un forno de arxila


Despois de facer un curso de biocostrucción sobre barro nas corcedizas e que nos deran unha pedra de esquina que utilicei como base, plantexeime construir un forno como primeira experiencia coa arxila.

O certo que o curso non tiña moito que ver coa construcción do forno, pero a pedra, que en principio estaba pensada para utilizar como barbacoa, inspiroume a posibilidade de construir sobre ela o forno. Despois só quedaba internetear un pouco e encontrei este enlace: http://blogdelaelena.blogspot.com.es/2013/02/como-hacer-un-horno-de-barro-casero.html

O problema foi que coa información que nese blogue se daba, avalanceime inconscientemente a construir o forno. Esto levoume a un erro desastroso nas proporcións area-arxila, confundido a proporción para unha construcción dunha casa a da do interior do forno. No caso do núcleo do forno ten unha proporción 3 a 1 area-arxila, e dicir, a area é a que soporta o choque térmico e acumula a enerxía e a arxila é o ligante. Ata dúas veces repetín a construcción ata que me dín conta do erro.



Pero buscando buscando encontrei pistas de como facer as mezclas e como teñen que quedar as masas para a correcta construcción. A continuación deixo uns enlaces onde se pode apreciar o proceso de construcción e o resultado:

https://www.youtube.com/watch?v=182WKOiZcno
https://www.youtube.com/watch?v=qnMkHCDqk1I
https://www.youtube.com/watch?v=ZNyHYvVFuTU
https://www.youtube.com/watch?feature=player_embedded&v=prz7275UzRs
https://www.youtube.com/watch?v=2YdW8JFhjLk

Agora só queda fornear!

lunes, 2 de marzo de 2015

Conexións remotas a Raspberry Pi


Usar a Raspberry Pi sen teclado e pantalla


Conectarse mediante SSH


Para traballar coa Raspberry Pi, como en calquera outro equipo, se pode acceder remotamente a ela. No caso da Raspberry, non é necesario tela conectada nunha lan, con portos abertos redireccionados, co firewall aberto ou conectado nunha DMZ. Xa que co seu pequeno tamaño se pode levar no peto e conectala o noso ordenador a través do porto ethernet ou con algo de hardware a través do USB.  Tamén é posible conectala ao conmutador da nosa lan.

 Se pode usar a Raspberry Pi sin conectala en unha pantalla e teclado, para executar un programa ou script. Isto é posible usando "Putty" en windows ou a consola de linux, por medio de SSH para acceder al terminal da Raspberry PI.

SSH (Secure Shell) é un protocolo de rede usado para transferir datos nun sentido e outro, para executar comandos remotamente en outra máquina, a través da rede utilizando un enlace serie.

Independentemente da conexión usada (seleccionada coa IP ou porto serie), Putty ou un programa similar pode usase para conectarse a Raspberry Pi e executar a maioría dos programas que normalmente se poden executar co terminal.

Para activar (ou desactivar) o servidor SSH pódese acceder o programa de configuración da Raspberry (tecleando na consola "
sudo raspi-config”) e seleccionar SSH no menú (pode estar activada nalgunhas distros por defecto).

Entón se pode introducir a dirección Ip da túa Raspberry Pi (si te conectas a través da rede), o cal ti podes coñecer tecleando
hostname -I”.

Unha vez configurado o servidor de SSH, e previamente configurada a rede se pode acceder mediante unha consola do equipo que utilicemos como cliente (ou putty en windows) da seguinte forma:


 manuel@portatil:~$ ssh ken@10.0.5.150
 
O que abrira unha sesión remota na Raspberry que nos permitirá teclear comandos como si estiveramos fisicamente trallando con ela. Este enlace resume o proceso para conectarse por medio da rede da rede. http://learn.adafruit.com/adafruits-raspberry-pi-lesson-6-using-ssh

 

Unha alternativa: Escritorio Remoto


Outra alternativa para aplicacións que precisan usar o interface gráfico e conectarse mediante un escritorio remoto. Para iso unha alternativa é usar VNC.

VNC é un sistema de acceso a un escritorio remoto que permite o control del interface do escritorio de un ordenador en outro. VNC transmite os eventos do teclado e rato o controlador e recibe actualización da pantalla a través da rede do equipo remoto.

Isto permite ver o escritorio da Rasberry Pi dentro dunha fiestra no noso computador. Permitindo o control como se ti estiveras traballando sobre a mesma Raspberry Pi. 


Para instalar o servidor VNC (neste caso instalaremos TightVNC) hai abrir un terminal e teclear: 

sudo apt-get install tightvncserve
 
A continuación executamos o servidor TightVNC o cal nos pedira introducir un contrasinal e un contrasinal para so lectura opcional.


tightvncserver

Arrincamos o servidor VNC dende o terminal. Por exemplo, arrincamos unha sesión sobre o VNC no dispositivo 0 con resolución en alta definición:

 

vncserver :0 -geometry 1920x1080 -depth 24

Despois, sobre o noso ordenador instalamos  e executamos o cliente VNC:
  •  Sobre unha máquina linux instalamos o paquete xtightvncviewer: sudo apt-get install xtightvncviewer 
  • En calquera outro caso, TightVNC se pode descargar dende tightvnc.com
 Finalmente xa estamos en disposición de conectarnos a Raspberry Pi a través do noso cliente por medio do  VNC.
 

sábado, 12 de abril de 2014

Instalación de Octoprint sobre Raspberry Pi.

Servidor de impresión para impresoras 3D

Octoprint é un proxecto que permite implementar un servidor de impresión, con case todas as funcionalidades dos programas para manexar as impresoras 3D (como Cura, Printum, etc), de forma remota.



O tempo, é unha das variables que é máis importante a hora de imprimir as nosas pezas. E nese tempo precisamos dun equipo que controle a impresora durante ese período. Tamén é necesario realizar unha supervisión do proceso impresión. E o fin é preciso realizar o apagado da impresora, cama quente, etc.

Como non sempre é posible estar a espera de que o proceso de impresión 3D remate a solución é poder seguir, controlar, e accionar a impresora a distancia. Octoprint permite realizar o control e seguimento da impresora sen que estar directamente presente no lugar onde está situada. Permite cargar dende calquera equipo os arquivos que queremos imprimir, lanzar a orde de impresión, seguir a evolución da impresión (incluso visualmente mediante webcam), cambiar os parámetros (incluso durante a impresión) e por último apagar remotamente cama, ventiladores e incluso impresora.


Para obter unha imaxe de Raspibian co Octoprint instalado, podemos baixar a imaxe do seguinte servidor
. Unha vez xa temos o arquivo, o descomprimimos e copiamos a imaxe na tarxeta SD (podedes consultar o proceso aquí).


Unha vez preparada a imaxe e copiada na tarxeta, o arrincar hai que configurar as opcións do Raspibian.Isto se pode facer nada mais arrincar por primeira vez ou mediante o comando raspi-config.


Para poder executar Octoprint, precisase instalar os paquetes de python. Estos están especificados no documento de texto requirements.txt. Mediante a utilidade pip instalamos os paquetes, mediante o comando sudo pip install -r requirements.txt.


O arrinque do servidor se fai mediante o script run, situado no directorio de Octoprint. É necesario especificar a dirección ip e o porto por onde se van a atender as peticións. O comando quedaría asi:  ./run --host=0.0.0.0 --port=5000. Neste caso a dirección 0.0.0.0 especifica calquera interface.

E a imprimir!



Creando obxectos parametrizables en Openscad e outras funcións

Openscad permite a posibilidade de crear obxectos de distintas características utilizando unha única definición.
Para poder facer isto precisamos definir módulos (funcións) os cales se lle pasan os parámetros. Estes parámetros diferencian as características dos obxectos.
A definición dun módulo se realiza mediante a palabra clave module. Para exemplarizar isto imos crear unha estrela de oito puntas. En primeiro lugar creamos o módulo marco, que crea un cadrado hueco.
 
//Marco cadrado

module marco( ){

difference (){

cube([40, 40, 10], center= true);

cube([25, 25, 14], center= true);

}

}

A limitación que ten o código anterior é que o marco que crea o módulo sempre ten a mesma dimensión 40 por 40 mm. Podemos definir parámetros para esa función, de maneira que dependendo do valor que lle pasemos na chamada a esa función, podamos variar as características do noso marco. No exemplo imos definir dous parámetros un se vai chamar dimensión é se refire o tamaño externo do cubo e outro altura que define a altura do marco. 

//Marco cadrado con parámetros

module marco(dimension, altura ){

difference (){

cube([dimension, dimension, altura], center= true);

cube([25, 25, 14], center= true);

}

}
Para utilizar este módulo temos que chamalo, como unha función máis do Openscad, especificando entre os parentesis os parámetros.

marco (40, 10); 

Se poden chamar os módulos dende outros módulos permitindo a creación de figuras máis complexas a partir de figuras máis simples.

//Estrela de oito puntas a partir de dous marcos rotados
module estrela (dimension, altura){
              marco (dimension, altura);
  rotate ([0,0,45])
  marco (dimension, altura);

 

Se isto se garda nun arquivo chamado estrela.scad se pode utilizar en calquera outro deseño importando o arquivo, e chamando o módulo dentro do código.
Utilizando a instrución include se pode facer referencia o arquivo onde se encontra a nosa estrela.

include <estrela.scad>

Para utilizar a función só se ten que facer a chamada, da mesma maneira que si estivera codificado no mesmo ficheiro.


martes, 4 de marzo de 2014

Galiñeiro Móbil

Como nos agasallaron cunhas galiñas de Mos, construín un galiñeiro móbil. O galiñeiro está pensado para 5-6 galiñas.

A verdade que o plan non era quedarse coas galiñas, llas ofrecín a miña nai,  a nosa provedora de ovos. Pero como os maiores non teñen paciencia, mentres o avicultor (Ricardo) as criou, ela xa mercou galiñas para substituír as súas.  Polo que cando Ricardo nos deu as galiñas non nos quedou máis remedio que deseñalo e construilo.

Utilizamos a rede para buscar modelos para poder deseñar o noso galiñeiro. Hai un monte de propostas distintas, pero eu me inspirei nos seguintes enlaces. Neste primeiro enlace, gustoume como resolveu o corral, e me pareceu boa proposta o das portas que lle deixou na parte superior. No foro tamén comenta o exceso de peso do conxunto, que e inevitable o utilizar madeira maciza e tegola canadense no tellado. Como se comenta no foro, hai que ter un detalle en conta que os niños o estar no dormitorio se ensucian o defecar as galiñas dentro.

Deste segundo modelo, no que se inspirou o autor do anterior galiñeiro, collín o modelo de tela metálica, introducida nunha canle feita na propia madeira. Queda moi ben, pero é bastante difícil de montar o ter que meter a tela no momento de colar os travesas, o cal levou o seu tempo.


A maior diferenza con respecto os anteriores modelos foi a elevación do dormitorio, para poder ter un espazo seco onde poder poñer o comedeiro, similar o proposto neste outro modelo. O certo é que neste modelo hai mais ideas interesantes para implementar, como a automatización do desprazamento, o pastor eléctrico antialimañas, o bebedeiro, comedeiro. Pero o deixaremos para unha segunda fase.

Para facilitar a mobilidade, instaleille unhas rodas, dos rodíns das bicicletas. Axuda a movelo en superficies duras, pero o movelo sobre terra afunden polo peso. Polo que é necesario cambialas por outras rodas con máis superficie de contacto sobre a superficie.

O custe do galiñeiro está sobre uns 100 € en materiais. En madeira gastei 35 €, tendo en conta que reciclei dúas caixas de embalaxe de pezas de automoción e algúns recortes que tiña por casa. A madeira é de piñeiro tratada en autoclave de 40X30 mm. O máis caro foi a tela metálica, sobre uns 40 € (seguro que é posible mercala a mellor prezo). A tellado o cubrín cunhas pranchas, que normalmente se poñen embaixo do tellado que custaron 25 €. Non conto colas, parafusos, etc, o ser a parte do proxecto menos custosa.

domingo, 16 de febrero de 2014

Introducción a Openscad

A forma de traballar con OpenSCAD é a de construír sólidos mediante o modelado de formas básicas como son os cubos, esferas ou cilindros e operacións básicas. Comecemos polas formas básicas, o cubo:

//Este é o código para debuxar un cubo de 10 mm no eixo X
// 20 mm no eixo Y e 30 no eixo Z 
// A variable center permite centrar o obxecto nos eixos
cube ([10,20,30], center = false);


O obxecto que permite debuxar un cilindro ou un cono é:

/* Onde temos que definir o radio (r), altura (h), si está centrado e a resolución ($fn, número de rectángulos para renderizar o cilindro). Para os conos temos que definir r1 (radio da base) e r2 (radio do tope) */
cylinder (r=5, h= 20, center= true, $fn=20);



O obxecto que debuxa a esfera é:

//O parámetro é o radio (r) ou diámetro (d) //e resolución ($fn)
sphere(10);



As operacións, que nomeamos antes, en OpenSCAD se chaman transformacións. A traslación permite desprazar o orixe da figura as coordenadas especificadas, como expresamos no exemplo:

//Debuxamos unha esfera de radio 10
//Trasladamos un cilindro, 15 mm no eixo X, 15 mm no eixo Y e -10 no Z
 sphere(10);
     translate([15,15,-10])
          cylinder(h=20, r=5);





Outra transformación interesante é a que nos permite unir obxectos como é union(). Mostramos un exemplo a continuación, onde se unen (ou combinan) o cilindro e esfera anterior:
union(){
     sphere(10); cylinder(h=20, r=5, center= true); 
 }

Si queremos facer a diferencia de dous obxectos, podemos facelo coa función difference(). Neste caso mostramos o cilindro restado sobre a a esfera:
difference(){ 
      sphere(10);      
      cylinder(h=20, r=5, center= true);





Tamén temos a intersección: 

intersection(){ 
      sphere(10); 
      cylinder(h=20, r=5, center= true); 
}

lunes, 13 de mayo de 2013

Raspberry e a utilización da Gpio


No anterior artigo comentaba como compilar un sistema operativo en tempo real para utilizar para automatización de procesos.  No meu caso a necesidade é para un proxecto de robótica sinxelo. A idea era estudar as posibilidades que ofrecía, neste caso Freertos.

Despois da compilación facer chiscar un led a través da Gpio non é nada complicado, e o exemplo ofrece un código para facelo moi sixelo. O problema é que ven desnudo, non ten nada máis que esas funcións necesarias para a saída de sinais mediante a Gpio.

Non hai posibilidade de ler sinais, non trae ningún exemplo de eso. Si se quere facer hai que escribir o código en c.  Isto require práctica de programación en c e coñecementos de harware da Raspberry.

Como conclusión Freertos ofrece a plataforma (o sistema operativo) para comezar, pero nada máis. No meu caso, que teño poucos coñecementos non me vale para empezar, magoa.  Quedará como unha futura liña de investigación.

Como o proxecto é sinxelo, si utilizo un sistema operativo de propósito xeral con multitarefa que non este moi cargado de servizos e aplicacións, podería cumprir o obxectivo. Polo que decidín utilizar un linux sen entorno gráfico. O máis rápido foi un archlinux. Rápido, rápido non, hai que pelexarse coa configuración de rede para conectarse a el mediante ssh, instalar as aplicacións básicas, etc.

Eu configurei o ssh, instalei o compilador, a utilidade git e as librerías necesarias para programar a gpio.

Que librerías preciso? Estudando como utilizar a Gpio, cheguei a este enlace (http://elinux.org/RPi_Low-level_peripherals) onde ademais de describir como están conectados os pines, expón varios exemplos de librerías para varios linguaxes de programación.

Como o comezo do proxecto foi automatizando mediante a plataforma Arduino a elección pareceume clara, a biblioteca wiringPi. A biblioteca está completa e ten tódalas funcións que podes precisar para utilizar a Gpio e outros recursos da Raspberry.

Si programastes coa plataforma Arduino é igual de fácil, coa diferenza que non temos o coñecido IDE de Arduino detrás.  Neste caso temos que aprender a utilizar algún editor de texto en liña de comandos de linux. Isto pode ser un camiño máis árido, xa que hai editores difíciles de usar, pero a súa vez máis potente que o sinxelo IDE de Arduino.

Se programa en C pero coas funcións que tiñamos co arduino (este utiliza a biblioteca wiring). Os que programáchedes en Arduino notaredes que non hai a función setup e loop. Isto se resolve na función main inicializando os recursos o principio da función e despois para substituír a función loop un bucle for infinito. 

A librería wiringPi é fácil de instalar. Esta mantida mediante a plataforma GIT, polo que hai que utilizar a utilidade git clone:

git clone git://git.drogon.net/wiringPi

Unha vez o temos na nosa Raspberry só temos que actualizar a librería mediante

cd wiringPi
git pull origin

E finalmente compilar lanzando o scrip:

./build

Non poño exemplos de como probar a librería, xa que igual que Arduino, wirinPi trae moitos exemplos de utilización das funcións. 


En resumo poderíamos dicir que utilizar wirinPi con a Raspberry fronte a Arduino ten a seguintes vantaxes e desvantaxes

Vantaxes:
  • A potencia do procesador da Raspberry frente o Arduino.
  • Podes ter algo máis de información por pantalla para depurar (no Arduino tiñas que enviala polo porto serie). 

Desvantaxes:
  • O entorno de desenvolvemento
  • E un pouco máis complicado de conectar. Hai que ter en conta que a Gpio da Raspberry traballa a 3,3.
  • Non ten conversores AD.
  • As saídas que poden utilizarse como PWM son moi limitadas na Raspberry. 
  • Tes un sistema operativo, coa sobrecarga da planificación e outros servizos do mesmo, que retardan o tempo de proceso do programa a executar.
  • Hai que utilizar editores de texto e compilar na liña de comandos.
  • Precisas coñecementos de linux.