Archivo etiqueta arduino

Acelerómetro / Giróscopo con Arduino

Hola a todos!
Les cuento que hemos adquirido un kit de sensores y accesorios para Arduino. Hay de los más variados: leds RGB, emisores láser, sensores de temperatura y humedad, de presencia, emisor y receptor de infrarrojo, encoders, acelerómetro, etc.
Uno de los más interesantes es el acelerómetro. Lo probamos con una Arduino Nano y un código que nos devuelve el Yaw, Pitch y Roll.
3axis1

El sensor al que nos referimos se lo conoce como IMU (Inertial Measurement Unit). Consta de un acelerómetro y un giróscopo. Estos miden la fuerza ejercida por la gravedad y la velocidad.
En este caso, el MPU-6050 es una IMU de 6DOF (“6 Degrees Of Freedom“). Esto significa que lleva un acelerómetro y un giroscopio, ambos de 3 ejes (3+3 = 6DOF).

La conexión con Arduino, se realiza de la siguiente manera:
ConexiónArduino

El MPU-6050 utiliza el protocolo de comunicación I2C, por lo que vamos a requerir descargar la siguiente librería:
https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050
(Si no saben cómo instalar una librería adicional para Arduino, pueden consultarlo en http://www.arduino.cc/en/pmwiki.php?n=Guide/Libraries)

Les paso el código utilizado, que fué extraído de http://playground.arduino.cc/Main/I2cScanner%EF%BB%BF

Finalmente, una captura del sistema funcionando:
Acelerómetro y Arduino

Espero que les haya sido de utilidad. Éxitos!
Saludos,

, , ,

3 Comentarios

SLAM: Preparando el ER1

Hola a todos!
Anteriormente “Tera” les había contado sobre el proyecto de su tesis doctoral, que tratará sobre SLAM (Leer aquí).
Pensando en ello, estamos preparando lo que va a ser el robot base del proyecto: el ER1 (que alguna vez nos donó Microsoft). El mismo estaba sin uso hace un largo tiempo porque se había roto la placa controladora, así que tuvimos que diseñar una nueva.

Por lo tanto solo usaremos el chasis y los motores del robot original.
ER1

El manejo de los motores no fue fácil, ya que son unos paso a paso que funcionan a solo 2,4V, pero con un consumo alto de 2,8A, lo que producía demasiada temperatura para los controladores de motores que solíamos utilizar, y se ponían tan calientes que no había disipador/cooler que lo enfriara debidamente.
En consecuencia, tuvimos que implementar un regulador de voltaje que maneja mayor corriente que un simple LM7805; se trata del LM338 que soporta hasta 5A de consumo.
El control de los motores lo haremos con una placa Arduino Uno (aunque tal vez mas adelante la reemplacemos por nuestra propia “Mendieta“)

En la parte superior del chasis del ER1 fijaremos el Kinect, para lo cual hemos diseñado en SketchUp e impreso en nuestra impresora 3D, la pieza adaptadora, la que podrán observar en las siguientes entradas del tema.

Con estos avances apuntamos a cumplir la primera parte del proyecto, que tiene como objetivo específico: “Desarrollar la estructura, mecánica, electrónica y suministro de energía de un robot que transporte una notebook, un sensor de profundidad por infrarrojo y una cámara (kinect).

Muy pronto les seguiremos contando los avances del proyecto, así que estén atentos.
Saludos,

Gabriel

, ,

No hay Comentarios

Physical Etoys tips – Time handling (part 1)

Hi everybody, today I’m going to start a new section here in our blog that I decided to call “Physical Etoys tips”. The idea is to share a couple of tips I’ve learned over the years. Our first tip is about handling the passing of time inside Etoys. So let’s get started!

As we all know, Etoys objects are alive, they interact with the user and with each other and we can teach them new ways of interaction by building scripts. These scripts are not simply executed, they run inside an implicit loop (kind of like a videogame). This execution model forces the user to split complex behaviours into steps that each object will perform on every tick, without needing to specify how the iteration will be performed. Thus, Etoys doesn’t have any “forever” or “repeat until” structure (although it does have a “repeat times” structure, which is convenient but arguably unnecessary).

This ticking model does not only reinforce the idea of objects being alive but it also makes concurrency fairly simple. As in reality, where a lot of things are happening simultaneously, in Etoys all scripts are virtually running at the same time. This is a very powerful metaphor, but it has a disadvantage: it makes some time dependent tasks (such as performing an action for an amount of time or waiting a couple of seconds before doing something) a lot more difficult. Unlike other visual programming languages (such as Scratch) there is no “wait” tile in Etoys.

Instead, we have several other mechanisms to deal with time:

  1. We can represent the passing of time visually and use the “Test” tile to react to it.
  2. We can use the playfield’s “timer” slot and measure how much time has passed since it was last reset.
  3. We can use the Digital Clock special slots: “hours”, “minutes”, and “seconds”.
  4. Or we can use the Timer object (introduced in Physical Etoys 2.1).

Today, we are going to talk about the first mechanism, visually representing the passing of time. And to do it we’ll build a simple device controlled by time: a traffic light.

We’ll need:

  • An arduino.
  • A breadboard.
  • 3 leds (red, yellow, and green. Duh).
  • 3 resistors (between 200 ohm and 2 kohm are probably ok).
  • Some wires.

We’ll start by building the following circuit.

Hola a todos, hoy voy a inaugurar una nueva sección aquí en nuestro blog que he decidido llamar “Physical Etoys tips”. La idea es compartir algunos tips que fui aprendiendo en estos años. Nuestro primer tip se trata del manejo del paso del tiempo dentro de Etoys. Así que manos a la obra!

Como todos sabemos, los objetos de Etoys están vivos, interactúan entre sí y con el usuario, y podemos enseñarles nuevas formas de interacción armando guiones. Estos guiones no se ejecutan como cualquier script sino que corren en un ciclo implícito (casi como en un videojuego) donde cada ejecución es denominada “latido”. Este modelo de ejecución obliga al usuario a dividir comportamientos complejos en pasos concretos que cada objeto debe realizar en cada latido, sin tener que especificar cómo la iteración se llevará a cabo. Por esta misma razón, Etoys no tiene ninguna estructura de control “por siempre” o “repetir hasta que” (aunque sí tiene una estructura “repetir # veces”, que es conveniente pero cuya necesidad es discutible).

Este modelo de “latidos” no solo refuerza la idea de los objetos como entidades vivas sino que también hace muy fácil el pensar el comportamiento de forma concurrente. Como en la vida real, donde muchas cosas están pasando simultáneamente, en Etoys todos los guiones están virtualmente latiendo al mismo tiempo. Esta metáfora es muy poderosa pero tiene una desventaja: dificulta algunas tareas dependientes del paso del tiempo (por ejemplo, ejecutar una acción durante un tiempo determinado o esperar unos segundos antes de hacer algo). A diferencia de otros lenguajes de programación visuales (como Scratch) no hay ninguna instrucción “esperar”.

En su lugar tenemos otros mecanismos para lidiar con el tiempo:

  1. Podemos representar el paso del tiempo visualmente.
  2. Podemos usar la variable “cronómetro” del Campo de Juegos y medir cuánto tiempo pasó desde la última vez que fue reiniciado.
  3. Podemos usar las variables del Reloj Digital: “horas”, “minutos”, y “segundos”.
  4. O podemos usar el objeto Timer (introducido en Physical Etoys 2.1).

Hoy vamos a hablar del primer mecanismo, la representación visual del paso del tiempo. Y para hacerlo vamos a construir un dispositivo sencillo controlado por el tiempo: un semáforo.

Vamos a necesitar:

  • Un arduino.
  • Un protoboard.
  • 3 leds (rojo, amarillo y verde).
  • 3 resistencias (entre 200 ohm and 2 kohm deberían andar bien).
  • Unos cuantos cables.

Empezamos armando el siguiente circuito.

Traffic light_bb.3

Back in Physical Etoys, we’ll get an Arduino board from the bottom tab and we’ll connect the 3 leds. Changing the led colors and giving them proper names will allow us to identify them easily.
De vuelta en Physical Etoys, vamos a sacar un Arduino board de la pestaña inferior y le vamos a conectar 3 leds. Cambiamos los colores de los leds y les ponemos nombres para poder identificarlos rápidamente.

trafficlight-pe

leds

Now we’ll draw an object that will give us some notion of time passing, it can be almost any object but I’ll draw a small line with a blue tip on one side (this is an important detail, as we’ll see later).
Ahora vamos a dibujar un objeto que nos de alguna noción del paso del tiempo, puede ser casi cualquier objeto pero yo voy a dibujar una pequeña línea con una punta azul en uno de sus extremos (este detalle es importante, como veremos más adelante).

marker

By changing its rotation center and making a very simple script we can make our line rotate.
Cambiando su centro de rotación y con un sencillo guión podemos hacer que nuestra línea gire.

marker.3

Now we’ll use the blue tip as a marker. By testing which color is underneath the blue marker we can know which led to turn on.

For this we need an object that uses color to represent the different states of a traffic light. My drawing skills are very limited so in my case I used a couple of Sector objects (that you can find in the object catalog) to make this:

Vamos a usar la punta azul de nuestro objeto para testear qué color está debajo y así saber qué led prender.

Para esto necesitamos un objeto que use colores para representar los diferentes estados de un semáforo. Mis habilidades artísticas son bastantes limitadas por lo que, en mi caso, use varios objetos Sector, que pueden encontrar en el Catálogo de objetos.

traffic-light

As we can see, each section of the circle represents a different state of the traffic light:
Como podemos ver, cada sección del círculo representa un estado diferente del semáforo:

traffic-light.states

Then we can put our marker in the center of the object so that the blue tip can touch all the different states:
Luego ponemos nuestra línea en el centro del objeto de forma que en su giro completo pase por todos los diferentes estados.

marker.7

 

And now the only thing left is to detect which color is underneath the blue tip and turn on the appropriate led, which is as simple as this:
Y ahora lo único que falta es detectar qué color está debajo de la punta azul y prender el led correspondiente, que es tan simple como esto:

Script Editor

The result: El resultado final: http://youtu.be/5aaxMj3dPyI

And that’s all! :)

If you’re too lazy to do it yourself, you can download the full project here: http://tecnodacta.com.ar/gira/examples/TrafficLight.002.pe. And if you use a different mechanism to perform waiting in Etoys, please let me know in the comments.

And, as always, have fun!

¡Y eso es todo! :)

Si son demasiado vagos para hacerlo ustedes mismos, pueden descargar el proyecto completo aquí: http://tecnodacta.com.ar/gira/examples/TrafficLight.002.pe. Y si usan un mecanismo diferente, por favor háganmelo saber en los comentarios.

Y, como siempre, ¡que se diviertan!

 

, , ,

No hay Comentarios

Physical Etoys 2.1.2

Para todos aquellos que usan tanto S4A como Physical Etoys hoy les tengo una sorpresa. Acabamos de publicar una nueva versión de Physical Etoys con un pequeño pero importante añadido: un objeto nuevo que permite comunicarse con la placa Arduino usando el firmware de S4A.
De este modo, ya no hace falta ese incómodo paso de la instalación del firmware cada vez que cambiamos de entorno. Y además nos beneficiamos del excelente trabajo de nuestros amigos de Citilab, a quienes les mandamos un fuerte abrazo y nuestro profundo agradecimiento :)

Pueden encontrar el objeto nuevo en la pestaña inferior junto al resto de los objetos de Physical Etoys:

http://tecnodacta.com.ar/gira/projects/physical-etoys/

¡Que se diviertan!
Richo

, ,

No hay Comentarios

Physical Etoys on Raspberry Pi

Hello everybody, we want to tell you we’re writing this post on our new Raspberry Pi!

We were very happy to find squeak already installed on it, so we were just one step away from having Physical Etoys running there as well :)

Pics or it didn’t happen!

Hola a todos, queremos contarles que estamos escribiendo este post en nuestra recién comprada Raspberry Pi!

Nos alegró mucho encontrar squeak ya instalado, así que estábamos a sólo un paso de tener corriendo Physical Etoys también :)

, ,

3 Comentarios

Pharo and Arduino

Hi, if you happen to be a Pharo developer and a proud owner of an Arduino board, this might be of interest to you.
Given the recent mails related to Arduino in the Pharo mailing list, I decided to make a Metacello configuration to help the poor souls in need. So here it is, now you can load the Arduino project by evaluating the following:

Gofer it
    squeaksource: 'MetacelloRepository';
    package: 'ConfigurationOfArduino';
    load.
(Smalltalk at: #ConfigurationOfArduino) load.

This will load two things:

  • the Arduino-Core package, which contains a very simple model that lets you communicate with your Arduino via SerialPort using a firmware like Firmata (or a simple firmware made by us).
  • the Arduino-Compiler package, a very rudimentary Smalltalk-to-C translator that lets you program your Arduino board without leaving Smalltalk. It’s pretty cool, but believe me, the translator is currently very limited, it doesn’t support any of the things that make Smalltalk fun. In fact, you’ll be writing ugly C code in a Smalltalk disguise.

Note that in order to upload your programs to the board, we need FFI to communicate with avr-gcc/avrdude. None of the Windows VMs I found on the Pharo website worked with FFI, I’m sure this will be fixed soon but for now I’m using a CogVM from Elliot’s website.

Once you install all the packages you’ll have to install several extra files the Arduino-Compiler package needs to work (the avr binaries, the arduino libraries, our firmware, and a couple more). Luckily for you, I’ve compiled them in a single file you can find below:

You must extract the contents of this file in the same directory where you have your Pharo image. If you’re using Windows now you’re ready to start playing. In case you’re using Linux, you will also need to install gcc-avr and avr-libc (follow the instructions for your platform here).

Now that everything is installed I suggest you try one of these examples I prepared:

Arduino ledExample.
Arduino buttonExample.
Arduino potentiometerExample.

I also encourage you to take a look at the Arduino class comment, it has some very useful code snippets.

Have fun!
Richo

,

4 Comentarios

Smalltalks 09 y Physical Etoys

We have good news. Last month we went to the Smalltalks 2009 event which took place at the Universidad de Buenos Aires and was organized by the FAST. The talks were excellent and pretty varied. In addition, there were distinguished guest: Dan Ingalls, Alex Warth and Stéphane Ducasse. We particularly enjoyed Dan’s talk which showed that academic matters are more pleasant when the motor that motivates us is fun =)

We showed the last project we are working on: Physical Etoys. For the ones who do not know, this project consists of virtualizing different physical objects (preferably robots) in order to control them easily from Etoys. Although the project is not finished, we showed at the conference how to program robots to perform different tasks in a short time such as reacting to sounds or controlling it with the Wii’s Joystick. Also we presented different Arduino programming examples with Etoys and the XO (the OLPC laptop) associated with motors, LED’s, Photoresistors and push buttons.


Tenemos buenas noticias. Les comentamos que fuimos al evento Smalltalks 2009 que tuvo lugar en la Universidad de Buenos Aires y fue organizado por la FAST. Las charlas estuvieron excelentes y muy variadas. También hubo invitados de honor destacados como Dan Ingalls, Alex Warth y Stéphane Ducasse. Destacamos la charla de Dan quien nos dejo en claro que todo lo académico siempre es más ameno cuando el motor que nos motiva es la diversión =)

Por nuestra parte mostramos lo último en lo que estamos trabajando: Physical Etoys. Para los que no lo saben, este proyecto consiste en virtualizar distintos objetos físicos (preferentemente robóticos) para poder controlarlos fácilmente desde Etoys. Si bien todavía no está terminado, en la conferencia mostramos en muy poco tiempo cómo programar robots para que haga tareas sencillas: reaccionar a ruidos o controlarlo con el joystick de la Wii. También mostramos cómo controlar la placa Arduino asociada a motores, LED’s fotorresitores y pulsadores con Etoys desde la XO (la laptop del programa OLPC).



, , , , , , ,

No hay Comentarios

Squeak Etoys + Arduino ¡Primera versión!

Estamos orgullosos de anunciar nuestra primer versión de la interfaz de Squeak Etoys con Arduino.

Pueden bajarlo desde aquí: http://tecnodacta.com.ar/gira/Arduino/

Funciona tanto en Windows como en Linux (lean el archivo README.txt para más información sobre los procesos de instalación y uso en ambas plataformas).

Les advierto que no está del todo terminado y todavía tiene algunos bugs que no he podido eliminar. Sin embargo, ya se encuentra en un estado relativamente estable.

En fin, muchas gracias a todos los que han demostrado interés por el proyecto. Espero saber pronto de ustedes y sus proyectos con Arduino y Squeak.

Les dejo algunas screenshots:

,

3 Comentarios

Controlando Arduino con Squeak Etoys

El control de Arduino desde Etoys ya está casi terminado, por lo cual hemos filmado un pequeño video mostrando algunas cosas básicas que se pueden hacer.

Antes de publicarlo nos falta arreglar algún que otro bug y terminar los Etoys de componentes básicos de electrónica (léase led, LDR, potenciómetro, distintos tipos de motores, etc.).

Esperamos poder publicarlo en esta semana. Saludos!

ACTUALIZACIÓN: Hemos publicado las primeras versiones del proyecto y pueden bajárselo desde acá:

http://tecnodacta.com.ar/gira/projects/physical-etoys/arduino/

,

2 Comentarios

Proximamente…

Hola! El objetivo de este post es mostrar que estamos desarrollando un Etoy para la famosa placa Arduino. Va todo viento en popa y esperamos que corra tanto en Windows como en Linux. Estamos utilizando el protocolo Firmata y lo único que nos falta por ahora es el control de los servos. Cuando esté terminado subiremos un video…

,

No hay Comentarios