zum-pot-destacada

pot-zum-1
En esta entrada vamos a aprender a enlazar el mundo físico con el virtual.  Controlaremos la rotación de un toro en Freecad usando un potenciómetro conectado a la placa bq zum. Es un ejemplo muy sencillo pero muy potente, que nos abre las puertas a hacer cosas como crear nuestros propios joysticks para mover los diseños,  programar los robots virtuales mediante el posicionamiento de robots reales (programación gestual), hacer que nuestras piezas cambien de color con la luz… ¡El límite es la imaginación!

El esquema de funcionamiento es el siguiente. En la placa zum se ejecuta un firmware que lee el valor del potenciómetro y lo envía al PC a través del puerto serie. En el PC se ejecuta un script en python desde Freecad, que a través de la biblioteca pyserial lee las muestras. Estos valores se interpretan, se convierten a ángulos y se usan para rotar el toro.

Firmware en la placa ZUM

En la placa zum conectamos un potenciómetro en la entrada analógica A0 y subimos el siguiente código (Está en el fichero pot-server.zip):

Este programa configura el puerto serie a la velocidad de 19200 y se queda esperando a recibir caracteres.  En cuanto llega uno (da igual cuál sea), se lee la entrada analógica donde está conectado el potenciómetro y se envía su valor de vuelta. De esta forma es el PC el que controla el flujo de la lectura del potenciómetro.

zum-pot-1

Comunicaciones serie: Python-serial

Es necesario instalar la biblioteca de python pyserial. Esto depende del Sistema operativo que tengamos instalado en nuestro ordenador. En el caso detener Ubuntu/Linux basta con ejecutar esta línea:

Para máquinas Windows bajar el instalador desde este enlace. Para el resto de sistemas operativos seguid estas instrucciones

Freecad

Abrimos freecad. Nos vamos a la opción preferencias / General. En la pestaña Ventana de salida (Output window) marcamos las dos opciones inferiores: “Redirigir la salida de Python interna…”  (Redirect internal Python output…). De esta manera podremos ver los mensajes en la ventana de informes cuando ejecutemos el script.

zum-pot-2

Activamos la vista de informes en la opción Ver / Vistas / Vista de informe (View / Views / Report view). Abrimos el script torus-pot.py  (Opción del menú Archivo / Abrir):

zum-pot-3

En la linea 30, donde pone SERIAL_NAME debemos escribir el nombre del puerto serie donde tenemos conectada la zum. Para el caso de linux es el /dev/ttyUSB0.

Por último ejecutamos el script, pinchando en el icono triangular verde superior (o dándole a Cntrl-F6). Se nos abrirá una ventana nueva con un toro y al cabo de 2 segundos se establecerá la conexión con la zum. Al mover el potenciómetro el toro rotará. IMPORTANTE: Cuando el potenciómetro está en su tope máximo anti-horario (0 voltios) el programa terminará y aparecerá en la vista de informe el mensaje: FINISHED!.

zum-pot-4

 

Siente el poder de controlar objetos virtuales…

8 comentarios

  1. Pingback: Zona OFab Friki | Obradoiro de Fabricación Digital

  2. Sería posible que lo subierais a GitHub??

    Muy Bueno!!

  3. que devo poner en la perte de (serial name)si estoy en un Windows

    1. Alvaro Ferrán Cifuentes

      Como bien dice Jose en Windows los puertos son del estilo COMX.

      Otra manera de saber qué puerto es sería abrir la IDE de Arduino sin la placa conectada y ver qué puertos aparecen. Conectamos la placa otra vez y el puerto que aparezca nuevo será el de la placa.

      Un saludo!

  4. Si no recuerdo mal en Windows sería:
    SERIAL_NAME = “COMX”

    Donde X es un número tal que 1, 2, 3,… dependiendo de la cantidad de puertos serie que tenga tu máquina.
    Si arrancas el IDE de Arduino (por ejemplo la versión 1.0.6) con tu Arduino conectado en la parte inferior derecha te indica el puerto.

  5. tengo ese error:
    File “C: …torus-pot.py”, line 24, in
    import serial
    : No module named serial

    cómo puedo corregirlo?

    1. Enrique Heredia

      Hola,
      ¿Qué sistema operativo utilizas? ¿Has instalado correctamente la biblioteca pyserial? ¿Te has asegurado de escribir correctamente el nombre del puerto serie donde tienes conectada la placa?
      Necesitamos más información para poder ayudarte.
      Un saludo

Los comentarios están cerrados.