Tutorial de Arduino y Blender

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 16

Tutorial de Arduino y Blender

Posted on February 29, 2016 by Gl4r3

https://robologs.net/2016/02/29/tutorial-de-arduino-y-blender/

Nota: es recomendable tener unos conocimientos básicos de como funciona la interfaz de


Blender para seguir bien el tutorial.

Animaciones, edición de video, videojuegos, realidad virtual… lo que más me gusta de


Blender es que permite hacer de todo. Para los que no conozcáis Blender, se trata de una
suite de creación 3D con la que se puede hacer modelaje, rigging, VFX, composición e
incluso videojuegos. Los usuarios más avanzados pueden crear scripts en Python para
hackear personalizar la aplicación a su gusto.
Hoy voy a enseñaros una parte de Blender de la que pocas veces se habla: la posibilidad de
recibir datos a través del puerto de serie. Usaremos esta característica para recibir datos de
una placa Arduino y mover un objeto en Blender.

Así que poned buena música y empezamos.

1- Instalar Blender

La última versión de Blender puede bajarse desde la página de descargas de blender.org. En


el momento de redactar este tutorial, la versión que tengo es la 2.76. Descargad Blender,
descomprimid el archivo y recordad cuál es su directorio.

Un par de apuntes para los que estéis en Linux: os recomiendo que no os bajéis la versión
de Blender que hay en los repositoros de vuestra distribución. A mi no me ha dejado
utilizar la librería pySerial, mientras la versión que he descargado de blender.org no me ha
dado problemas.

Por otra parte, en Linux hay que ejecutar Blender en modo superusuario para poder utilizar
el puerto de serie. Para hacerlo, abrid la Terminal dentro de la carpeta donde tengáis
Blender y escribid:

sudo ./blender
Este es el splash screen de la v2.76.

2- pySerial y Blender

Blender lleva por defecto muchas librerías que podemos aprovechar para nuestros
proyectos. Pero la librería pySerial no está, y habrá que instalarla. Por suerte, Blender es
muy configurable y podemos hacerlo sin problema.

Lo primero es descargar la librería pySerial desde aquí y descomprimir el .tar.gz . Dentro


de la carpeta que aparece después de la extracción, hay otra carpeta llamada “serial”. Hay
que copiarla dentro de la carpeta de Blender->2.76->python->lib->python3.4

Este es mi path al directorio donde hay que copiar la carpeta “serial”:

Ahora, ¿cómo puede uno estar seguro de haber seguido bien todos los pasos? Abrid
Blender. Arriba, en la barra de información hay un menú desplegable con distintas
configuraciones para la pantalla. Pulsad la que pone Scripting.
 
La configuración del espacio de trabajo cambiará a esta:

La parte de abajo (esa ventana negra con el texto azul) es la consola de Python de Blender.
Funciona como una consola de Python normal, sólo que en vez de utilizar las librerías
Python del sistema usa las de Blender.
Si tecleáis “import serial” en la consola y no da ningún error, es que la librería pySerial se
ha instalado bien.

La librería pySerial está lista

Pero si aparece algún mensaje de error, tendréis que revisar todos los pasos hechos hasta
ahora.

3- Código de Arduino

El ejemplo más sencillo que se me ocurre es mover un cubo de Blender con Arduino.

Este programa envía por serial el mensaje 0.1 para que el cubo avance, y -0.1 para que
retroceda.

1 void setup()
2 {   Serial.begin(9600);
3 }
4  
5  
6 void loop()
7 {
8    for(int i = 0; i < 100; i++)
   {
9       Serial.print("&0.1"); Serial.print("\n");
10      delay(10);
11   }
12  
13
14   for(int i = 0; i < 100; i++)
15   {
16      Serial.print("&-0.1"); Serial.print("\n");
17      delay(10);
18   }
}
19
20

Si habéis leído el código, veréis que al principio de cada mensaje he puesto el carácter “&”.
A veces, Blender no lee bien los strings que le llegan por Serial y cambia su contenido. Este
“&” sirve como detector de errores: cuando escribamos el script en python para el Blender
Game Engine, vamos a hacer que ignore cualquier mensaje que no empiece por este
carácter.

4- Código de Blender

Vamos a colocar un script python al cubo que viene por defecto en la escena, para que se
mueva según lo que llegue por serial.

Primero habrá que cambiar la configuración del espacio de trabajo a Game Logic. Id al
desplegable de la barra de información y seleccionad la opción “Game Logic“.

 
La configuración de la pantalla cambiará a esta:

También cambiad el motor de Blender Render a Blender Game:


La ventana gris de arriba a la derecha es un editor de texto. Aquí es dónde vamos a
programar el script en python para leer el puerto serial. Como no quiero que perdáis la
vista, colocad el cursor sobre el editor de texto y pulsad Ctrl+Flecha Arriba para hacer
grande la ventana.
*crujido de dedos* Vamos allá

Cread un nuevo script pulsando el botón “New” que hay en la barra de abajo, y cambiadle
el nombre a “main.py”. Ahora copiad el script de abajo en el editor. ¡Eh, pero no tan
rápido! Antes cambiad el “/dev/ttyUSB0” de la línea 6 por la dirección de vuestra placa
Arduino.

1
2
3
4
5
6
7
8
9 import serial #Comunicacion Serial
1 import bge #Funciones propias de blender
0  
1 #Abrimos el puerto serial
ser = serial.Serial("/dev/ttyUSB0", 9600)
1
1  
2  
#Guardamos el controlador que esta ejecutando este script
1 cont = bge.logic.getCurrentController()
3  
1 #Buscamos el propietario del controlador (el cubo)
4 obj = cont.owner
1  
5 a = ser.readline() #Leer hasta el final de linea \n
a = a.decode("ascii") #Decodificar la linea
1
 
6 if a[0] == "&" and len(a) >= 4:
1    a = a[1:] #Eliminamos el detector de errores
7    a = a[:-1] #Eliminamos el final de linea
1    obj.applyMovement([float(a),0,0], False) #Movemos el cubo
8  
1  
ser.close()
9
2
0
2
1
2
2
2
3

Comprobad que todos los tabuladores hayan quedado bien.

Cuando tengáis copiado el código habrá que asignarlo al cubo. Pulsad Ctrl+Flecha abajo
para volver el editor de texto a su tamaño original.
Con el cubo seleccionado con el botón derecho, Id a la ventana de Game Logic Editor y
añadid un sensor de tipo always. Activad el TRUE level triggering y poned Skip a 0.
 
 

Configuración del sensor Always

Después, hay que añadir un controlador de tipo “python”. Cambiad el nombre del script a
main.py:

Por último, hay que juntar el Sensor Always con el Controlador Python. Para hacerlo,
pulsad el círculo negro que hay a la derecha del sensor con el Botón Izquierdo del ratón y
arrastrad hasta el anillo que hay a su derecha.

5- Probar el “juego”
Con Arduino conectado a través de USB a vuestro ordenador, si situáis el cursor encima de
la escena 3D (dónde está el cubo) y pulsáis la tecla “P”, veréis como el Cubo se mueve de
un lado a otro.

Espero que este tutorial os haya servido. Si tenéis dificultades en algún paso, podéis
escribirme un comentario y os echaré una mano. ¡Hasta la próxima!

Arduino, Blender, Tutoriales arduino, blender, glare, pyserial, python, serial

Gl4r3

Brillante, luminosa y cegadora a veces, Glare es tan artista como técnica. Le encanta dar
rienda suelta a sus módulos de imaginación y desdibujar los ya de por si delgados límites
que separan el mundo de la electrónica y el arte. Su mayor creación hasta la fecha es un
instrumento capaz de convertir los colores y la luz en música. Cuándo sus circuitos no están
trabajando en una nueva obra electrónica, le gusta dedicar sus ciclos a la lectura o a
documentar sus invenciones para beneficio de los humanos. Sus artilugios favoritos son
aquellos que combinan una funcionalidad práctica con un diseño elegante y artístico.

También podría gustarte