Fork me on GitHub

Posts in tag `Arduino'

Blink en Arduino con Cylon.js

January 10, 2015

Quería ver qué tal era instalar cylon.js y hacer al menos un blink con él. La instalación con npm es simple

$ npm install cylon cylon-gpio cylon-i2c cylon-firmata

Cylon se comunica con Arduino vía serial usando el protocolo firmata. Lo instalamos usando el IDE de Arduino o podemos usar gort.io, que es una herramienta en Go hecha por los mismos de cylon y que es muy parecida a inotool. Lamentablemente gort no funciona con Arduino Nano así que tuve que usar un Uno.

$ gort scan serial
$ gort arduino install
$ gort arduino upload firmata [port]

Finalmente el código en JS queda así

Arduino Javascript Trabajos

Mini servo controlado por Bluetooth

December 26, 2014

Motor servo sg90 con una rotación de casi 180° y un torque de 1.8Kg/cm. Pesa sólo 9g.

Controlado con Python vía Bluetooth usando un módulo JY-MCU

>>> conn = Serial('/dev/rfcomm0', baudrate=57600)
>>> while True:
...   for i in range(0, 181, 20):
...     conn.write(chr(i))
...     time.sleep(.5)

Arduino Trabajos Video

Multiplo

December 25, 2014

Multiplo es un sistema argentino para construir robots que nació en KickStarter y que forma parte de la empresa RobotGroup Argentina. Es muy versátil porque cuenta con una gran variedad de piezas y, como es un proyecto Open Source, si tenés impresora 3D podés bajarte los planos de las piezas e imprimirlas vos mismo. RobotGroup tiene varios kits muy interesantes como el N8. Si querés conocer más mirá alguna de sus guías de montaje paso a paso. Aquí dejo una muy completa

Arduino

Servo de rotación continua

December 25, 2014

Motor Servo DS04-NFC de rotación continua de 360° con un torque de 5.5Kg/cm.

Este tipo de servos giran hacia ambos lados en forma continua y pueden hacerlo a distintas velocidades según el valor seteado en el pin PWD. Para esto hay que usar la funcion ServoWriteMicroseconds. Los valores posibles van entre 1000μs y 2000μs, siendo 1500μs el punto medio o reposo (stop). En mi caso fue 1000-1900μs y el stop en 1.5 ms. La velocidad aumenta a medida que te alejás del punto medio, alcanzando la máx en los extremos.

Arduino Trabajos

Blink vía Bluetooth con Arduino

December 17, 2014

Me había comprado uno de estos y finalmente pude probarlo haciendo un simple blink con python. El código de Arduino aquí.

Para hacer funcionar el módulo Bluetooth seguí esta guía. Al principio no entendí que corriendo ese código estaba cambiando el firmware del módulo y me quedó con esos settings que no pude cambiar más tarde. Leyendo por ahí encontré que hay que usar un cable usb to tty y hacer el cambio directamente sobre el módulo, sin pasar por Arduino.

Arduino Trabajos Video

Arduino Snake

December 4, 2014

Estuve haciendo dos proyectos en Arduino: Arduino Matrix RGB y Arduino Gamepad. Los dos tienen la característica de que se comunican por serial. En el caso de la matriz el sketch está permanentemente escuchando el puerto serial y cuando recibe un comando ejecuta alguna instrucción simple. En el gamepad es al revés, cada vez que se detecta un cambio, ya sea porque se mueve el joystick o se presiona un botón, se envía por serial el evento. De esa forma puedo controlar ambos desde un mismo programa. Para los clientes elegí Python.

Para combinar ambos se me ocurrió hacer un juego sencillo, el clásico Snake. La matrix funciona sobre un Arduino UNO y el gamepad sobre un Nano, ambos conectados a una Raspberry Pi B+

gamepad = Gamepad(Serial('/dev/ttyACM0', 9600))
matrix = Matrix(Serial('/dev/ttyUSB0', 9600))
snake = Snake(gamepad, matrix)

Arduino Juegos Python Raspberry Trabajos Video

Lector de RSS con Arduino y Raspberry Pi

July 30, 2013

Luego de un par de meses de darle vueltas finalmente llegué a una versión usable de este lector de RSS. El display del lector está hecho con un Arduino UNO y una matriz de LEDs A-5570E que está soldada sobre un proto shield. Los mensajes los recibe por serial. Esto se hace desde la Raspberry Pi, que tiene un servidor hecho con Tornado y el cual tiene una interfaz web desde la que cualquier usuario puede encolar sus propios mensajes y ver los mensajes del resto mediante WebSockets. Esto es, mientras no haya mensajes de usuarios se lee algún feed. Así que el display siempre está mostrando algo.

Arduino and Raspberry Pi

El servidor está permanentemente leyendo el serial. Si el display le envía un 1 significa que está listo para recibir un nuevo mensaje. El servidor revisa la cola de mensajes de usuario primero y la cola de RSS después así que es posible intercalar un mensaje en cualquier momento.

Aquí los programas que se ejecutan de uno y otro lado: sketch.ino y server.py. Aquí la interfaz web con WebSockets: publisher.html

El display

La matriz de LEDs usa una técnica llamada clarlieplexing de la cual ya escribí algo acá y acá. El diagrama de conexiones es el siguiente

Read more »

Arduino Python Raspberry Trabajos Video

Mi primer robot con Arduino

July 23, 2013

Continuando el post anterior acá van mis avances con el robotito. Finalmente pude terminar la primera versión que simplemente hace lo siguiente:

  • Toma la distancia al objeto delante
  • Si la distancia es > 40 cm se mueve hacia adelante
  • Sino
    • Al azar puede retroceder o no una distancia corta también al azar
    • Gira hacia algún lado al azar
Arduino simple robot

Acá se lo puede ver funcionando.

Me divertí bastante con el sensor de proximidad porque devuelve el tiempo en microsegundos que tarda en regresar el sonido emitido, entonces para averiguar la distancia a la que está el objeto que produjo el rebote tenés que tener en cuenta la velocidad del sonido. Algo así:

La velocidad del sonido (en el aire y a 20°C) es aprox 343,5 m/s. Si convertimos esto en cm/ųs tenemos:

c = 343.5 * 100 / 1000000 = 0.03435 cm/ųs

Ahora calcular la distancia es fácil. Supongamos que el sensor devuelve 750ų:

d = (750ųs / 2) * 0.03435 cm/ųs = 12.8 cm

La función que lee el sensor quedaría así

long get_distance()
{
    long duration, distance;
    digitalWrite(TRIG_PIN, HIGH);
    delayMicroseconds(2000);
    digitalWrite(TRIG_PIN, LOW);
    duration = pulseIn(ECHO_PIN, HIGH);
    distance = (duration/2) * 0.03435;
    return distance;
}

El código completo está acá.

Read more »

Arduino Trabajos Video

Relé por control remoto con Arduino

July 22, 2013

Me compré un relé (acá) porque hacía tiempo que tenía ganas de probar prender algo a 220 desde la compu. Es muy fácil de usar y el programa en Arduino es muy sencillo, basta con poner un pin en HIGH o LOW. Para hacerlo más divertido le agregué un control remoto que compré en dealextreme.

Arduino relay IR controller

El código es simple, lo principal es

if (results.value == 0xffa25d) { // On/Off button
    actual_state = (actual_state == LOW) ? HIGH : LOW;
    digitalWrite(relay_pin, actual_state);
}

Arduino Trabajos Video

Older | Newer