Fork me on GitHub

Posts in tag `Trabajos'

Minirobots finalista del concurso Premio a la Educación 2017

December 22, 2017

Con Minirobots nos presentamos al Concurso Premio a la Educación que organizan Clarín y Zurich, y sobre un total de 185 proyectos presentados, quedamos seleccionados entre los 10 primeros.

El proyecto que presentamos fue una propuesta para capacitar a los docentes de la Escuela Nacional Ernesto Sábato de Tandil. El objetivo final de este proyecto es generar contenido didáctico en formato libre para enseñar a los alumnos a programar un robot usando Python.

La entrega de premios fue el 21 de diciembre y, si bien no logramos ganar ninguno, fue un paso importante para nosotros porque valida el trabajo que venimos haciendo y nos motiva a continuar.

Minirobots Python Software Libre Trabajos

Minirobots gamepad

October 17, 2017

Tenía unos pulsadores tipo arcade y se me ocurrió experimentar haciendo un gamepad gigante para controlar el robot que estamos haciendo en Minirobots. La idea de esto es explorar posibles juegos para los más chiquitos.

El pad tiene un Arduino Nano con un código muy simple y se conecta a la notebook por usb. Ahí hay un pequeño servidor Flask que escucha lo que le llega por serie y le envía comandos vía bluetooth al robot.

Arduino Minirobots Python Software Libre Trabajos Video

Api genérica

July 17, 2017

Siempre ando necesitando una api para hacer pruebas, así que se me ocurrió hacer una genérica, donde no tengas que definir nada previamente, donde todo sea dinámico, tanto los endpoints como el formato de los documentos.

Surgió así generic-api, una api schemeless, que con Docker podés empezar a usarla con un simple comando:

$ docker run -d --name generic-api -p 5000:5000 lvidarte/generic-api:latest

La api persiste los datos usando shelve. Si te interesa conservar los datos por fuera del container simplemente agregá esto a la línea de docker:

-v `pwd`/data:/app/data

Los métodos que soporta son GET, POST y DELETE.

Veamos un ejemplo guardando autores y libros. Primero creamos el endpoint /authors simplemente agregando un autor:

$ curl localhost:5000/authors -d '{"name": "Asimov"}'
{
  "_id": "1", 
  "name": "Asimov"
}

La api devuelve 201 y el documento insertado junto con su _id. Notar que no es necesario usar el header "Content-Type: application/json" ya que la api asume que le enviaremos jsons.

Ahora uso el id generado para referencialo y agregarle libros:

$ curl localhost:5000/authors/1/books -d '{"title": "Nemesis", "year": 1988}'
{
  "_id": "1", 
  "title": "Nemesis", 
  "year": 1988
}

$ curl localhost:5000/authors/1/books -d '{"title": "Foundation and Earth", "year": 1987}'
{
  "_id": "2", 
  "title": "Foundation and Earth", 
  "year": 1987
}

Si ahora pido /authors/1 veo el doc completo:

$ curl localhost:5000/authors/1
{
  "_id": "1", 
  "books": {
    "1": {
      "_id": "1", 
      "title": "Nemesis", 
      "year": 1988
    }, 
    "2": {
      "_id": "2", 
      "title": "Foundation and Earth", 
      "year": 1987
    }
  }, 
  "name": "Asimov"
}

También puedo acceder a cualquier nivel del doc simplemente escribiendo el path:

$ curl localhost:5000/authors/1/books/2/title
"Foundation and Earth"

$ curl localhost:5000/authors/1/books/2/year
1987

Y lo puedo modificar usando POST:

$ curl localhost:5000/authors/1/books/2/year -d '1986'
1986

$ curl localhost:5000/authors/1/books/2
{
  "_id": "2", 
  "title": "Foundation and Earth", 
  "year": 1986
}

Finalmente puedo borrar cualquier path:

$ curl -XDELETE localhost:5000/authors/1/books/2

$ curl localhost:5000/authors/1/books/2
{
  "error": "2 not in authors/1/books"
}

Python Trabajos

Librería para motores de paso 28byj-48

July 17, 2017

Simple-Stepper es un pequeña lib para manejar steppers 28byj-48 que hice luego de mirar este video, donde se muestra el funcionamiento del motor. La lib es compatible con esp8266 y maneja tres tipos de secuencias: Wake Drive, Full Step y Half Step. No maneja aceleración, para eso está AccelStepper.

Aquí un ejemplo con un motor, haciendo un giro completo en sentido horario.

#include <SimpleStepper.h>

SimpleStepper stepper(SimpleStepper::FULLSTEP, D5, D6, D7, D8)

void loop ()
{
  stepper.steps(stepper.getFullRotationSteps());

  while ( ! stepper.ready())
  {
    stepper.step();
    delay(3);
    yield();
  }
}

La lib funciona con varios motores en simultáneo, en github se puede ver un ejemplo con dos motores.

Arduino Minirobots Trabajos esp8266

Minirobots

July 14, 2017

Hace más de un año arranqué con el proyecto minirobots cuyo fin es ayudar a los más chicos en sus primeros pasos con la programación. A finales del año pasado logré reunir un grupo de entusiastas para llevar esta aventura a un próximo nivel. Fue así que nos presentamos en el Fondo Semilla con este video y mucho papeleo extra. Finalmente resultamos ganadores y ahora nos encontramos en pleno desarrollo de un modelo que sea apto para llegar a los hogares.

El equipo está formado por seis personas

  • Arturo Gasca - Diseñador visual
  • Luciano Fortain - Diseñador de interfaces
  • Juan Caivano (pulpo) - DevOps
  • Emilce Bartoli - Análisis del impacto social
  • Juan Ignacio Alterio - Programación UI
  • Leo Vidarte - Programación firmware y backend

El prototipo con el que nos presentamos es un robotito que se programa visualmente en Logo, un lenguaje que fue creado para enseñar los conceptos básicos de la programación y con el cual se pueden repasar y reforzar conceptos de geometría, ya que se trata de programar la tortuga (así se llama el cursor que dibuja en Logo) para dibuje distintas figuras geométricas. En el siguiente video se puede ver cómo dibuja una estrella.

Más info en

Minirobots Software Libre Trabajos Video

Controlando mi ESP-Car con Python

March 4, 2017

Compré en Pimoroni este Zumo Kit y un par de motorcitos, y lo completé con un NodeMCU y este motor shield. He aquí el resultado

ESP8266 car

El código que hice para el micro lo borré por accidente pero es bastante sencillo, similar a este, sólo que le agregué un servidor http con una mini api para manejar los movimientos básicos.

Para manejarlo remotamente hice con Python un pequeño cliente que expone una shell y tiene una función demo() que es la que se muestra en el video

Además hice una app para Android usando App Inventor 2, me quedó así

Python Trabajos Video esp8266

MicroPython - Lámpara RGB

August 26, 2016

Continuando las pruebas con MicroPython me puse a hacer una lámpara RGB controlable por wifi. Quería probar también eso de levantar mi propio access point y que los clientes se conectaran a él. Encontré que es bastante sencillo de hacer, simplemente puse lo siguiente en boot.py

# boot.py
import network

ap_if = network.WLAN(network.AP_IF)
ap_if.config(essid="RGBLamp", password="12345678")

while not ap_if.active():
    pass

Esto levanta una red wifi RGBLamp y pone a NodeMCU como gateway en el 192.168.4.1 :)

También metí en este archivo las dos líneas necesarias para levantar webrepl ya que desde la interfaz web es muy sencillo subir los archivos a NodeMCU.

import webrepl
webrepl.start()

boot.py es el primer archivo que lee MicroPython e inmediatamente después busca main.py para la ejecución del programa principal. El código me quedó así

La interfaz web quedó así, sencilla, en principio porque apunté a algo mini pero también porque me encontré con algunos problemas de falta de memoria al querer procesar un template más grande, lo que me hizo incluso tener que minimizar el template antes de subirlo a NodeMCU.

Como mencioné antes un par de veces tuve que darle vueltas al código para evitar el memory allocation failed dado que esp12e tiene algo así como 36 KB de RAM. Estuve leyendo un poco al respecto y encontré (nunca falta quien...) a alguien que dejó de usarlo por esto.

MicroPython Python Trabajos esp8266

Alarma con Raspberry Pi

June 27, 2016

En la MagPi salió un suplemento, Beginner's Electronic Raspberry Pi, que tiene varios tutoriales usando la nueva lib de Python gpiozero. Me gustó especialmente el que muestra cómo hacer una alarma usando un sensor de movimiento, es realmente simple con gpiozero.

El código está sacado del ejemplo, simplemente cambié los pines del sensor y el buzzer para que me quedara más cómodo en mi diagrama.

El esquema de conexiones lo hice con Fritzing

Python Raspberry Trabajos

Lámpara RGB con NodeMCU

June 18, 2016

Siguiendo con las pruebas con NodeMCU armé un pequeño script que cambia aleatoriamente los valores de un led rgb cada cierto tiempo. Para setear los valores del led usé el módulo pwm. Salvo el pin 0 el resto de los pines soporta pwm. Acá el esquema de conexiones

Para generar los valores aleatorios usé math.random de la librería estándar y para el timer el módulo tmr. Metí todo en funciones y quedó así

Quería probar el upload del archivo y entonces encontré luatool, escrito en Python :) Se pueden subir n archivos y uno de ellos debe ser init.lua, que será el que se ejecute durante el start.

luatool  --port /dev/ttyUSB0 --src rgb.lua --dest init.lua --verbose

Eso es todo :)

Lua Trabajos esp8266

Older | Newer →