Category Archives: Testimonios

Posibilidades con el pequeño Wheely

12 Ago , 2017,
Jose Nunez
No Comments

¿Recuerdan nuestro pequeño Robot de dos llantas?

Bien, le agregamos unos cuantos dispositivos más y veremos si lo podemos hacer un poco más listo.

  • Batería de Lítio-Polímero de 3.7V recargable. Para no gastar en baterías AA.
  • Regulador de 3V a 5V que nos permite usar la batería LIPO para alimentar una gama interesante de controladores y los motores a 5V.
  • Sparkfun Thing 8266: Este controlador nos da capacidades WIFI y además un mecanismo para cargar la batería LIPO usando un cable micro-USB convencional.
  • Arduino 101: Microcontrolador de gran capacidad que además trae acelerómetro y giroscópio en 6 ejes y comunicación Bluetooth BLE. Lo alimentamos a 5V, pero operan sus señales a 3.3V.
  • Sensor de proximidad para detectar obstáculos o mapear áreas que opera a 5V.
  • El ya conocido controlador S4A-EDU con puente H desconectabe. Nos permite controlar los motores en diferentes direcciones e incluye comunicación tx/rx que podemos usar para conectarlo a los otros micro-controladores mencioandos.

De momento no he programado mayor cosa con todo esto, salvo por este ejemplo; pero esperamos hacer algunas cosas interesantes con todas estas capacidades.

Fundamentos y Experimentación con Bluetooth Low Energy

1 Jul , 2017,
Rebeca Rodriguez Tencio
, , , , ,
No Comments

Resumen: En esta publicación, Rebeca Rodiguez nos da una importante lección sobre la importancia de profundizar un poco en los fundamentos de las tecnologías que usamos, y a su vez nos propone un experimento muy interesante para aplicar estos conocimientos en una aplicación que permite controlar una luz (LED) de manera remota desde un teléfono celular.

(!) Antes de seguir estas instrucciones asegúrese de entender las Condiciones de Uso de nuestro sitio.

¿Conocen lo que es el Bluetooth de Baja Energía?

Saber de una tecnología va más allá de solo leer artículos informativos acerca de ella, antes de empezar a experimentar con BLE pensé que se me facilitaría desarrollar con está herramienta, no obstante descubrí que los conocimientos con los que contaba eran mínimos, y necesitaba aprender más para poder trabajar en uno de los proyectos actuales del Centro de Innovación, por lo que con el apoyo de Jose Núñez, uno de los ingenieros y colaboradores del centro, empecé la aventura de investigar y experimentar el mundo del Bluetooth de Baja Energía.

En muchos casos es muy fácil poder hacer aplicaciones funcionales e interesantes porque ya alguien más se tomó la molestia de hacer frameworks, librerías y tutoriales que nos facilitan la complejidad que conlleva realizar algo desde cero; probablemente si te gusta el mundo maker o estudias algo relacionado a la tecnología te has encontrado con proyectos que incluyan bluetooth como parte de las aplicaciones, sin embargo ¿te has preguntado la historia o cómo funciona toda la comunicación que hay detrás de esa tecnología o solamente has seguido los pasos de un tutorial e instalado las librerías respectivas copiando y pegando código y nos conformamos con que funcione a la primera?

PD: no importa si agarramos código de internet o nos basamos en algo ya existente para realizar un proyecto o aprender, existe mucha información y hay que sacarle el mayor provecho, pero es importante entender cómo funciona lo que estamos programando, la historia que hay detrás de  la comunicación entre los dispositivos y los términos empleados.

Resultado de imagen para BLUETOOTH low energy

El BLE es la versión ligera y mejorada del Bluetooth 4.0 clásico, está diseñado para abordar las necesidades de eficiencia energética y la simplicidad en el diseño de los productos, convirtiendose en una solución inalámbrica ULP (Ultra Low Power, Ultra Bajo Consumo); esta tecnología opera en la banda mundial de 2.4GHz, cuenta con una banda de bits de capa física de 1Mbps en un rango de 15metros.

El Bluetooth de Baja Energía fue desarrollado por Nordic Semiconductor, fue uno de los primeros miembros de “Wibree Alliance” la organización que inicio el desarrollo estándar de la ULP (Ultra Low Power), sin embargo después fue adoptado por el SIG (Special Interest Group, Grupo con Especial Interés), que fue conformado por cinco compañías (Ericsson, Nokia, Toshiba, IBM e INTEL). Nordic ha jugado un papel importante en el desarrollo de BLE, y continua desempeñando un papel clave a través del trabajo realizado como miembro asociado de Bluetooth SIG.

Lo interesante al usar BLE es que ha sido implementado en la gran mayoría de plataformas móviles modernas, sea iOS, Android, móviles con Windows, entre otros.

Hay conceptos indispensables con los que se van a encontrar siempre que empiecen a investigar acerca del BLE, por lo que conocer el significado o familiarizarse con los términos es importante.

Comenzamos hablando de perfiles y protocolos: el primer concepto es la subcategoría GAP (Generic Access Profile, Perfil de Acceso Genérico). El GAP es el encargado de permitir que el dispositivo sea público al exterior y por lo tanto define la forma de interacción entre los dispositivos. El GAP tiene dos roles importantes de conexión:  (1) los dispositivos centrales – de ahí el término BLE Central – (que corresponde a los móviles, tablet o dispositivos con capacidad de procesamiento mayor que inician la conexión con los periféricos) y (2) los periféricos (dispositivos pequeños de baja potencia y consumo) a los que se pueden conectar los dispositivos centrales.

Una vez que se establece la conexión entre los dispositivos centrales y los dispositivos periféricos entra al juego el GATT (Generic Attribute Profile, Perfil Genérico de Atributos) permitiendo la comunicación en ambas direcciones, a través del protocolo ATT que se usa para almacenar los servicios, los datos y las características propias de cada dispositivo utilizado; es importante destacar que un periférico BLE solo puede ser conectado a un dispositivo central a la vez, ya que tan pronto como el periférico es conectado al dispositivo central dejara de ser visible para otros dispositivos, sin embargo un dispositivo central (celulares, tablets…) si puede ser conectado a varios periféricos.

Al igual que en el GAP, el GATT también tiene roles de interacción que es importante conocer, como por ejemplo: el servidor que contiene las características de la búsqueda ATT asi como las definiciones del servicio y las características, el otro concepto es el cliente GATT que es el encargado de enviar las solicitudes. Todas las transacciones de comunicación entre los dispositivos son iniciadas por el GATT cliente (central) que recibe la respuesta del dispositivo esclavo, el GATT servidor (periférico).

Existen muchas aplicaciones para poder escanear periféricos BLE desde un dispositivo móvil, sin embargo hay una de ellas que me gustó mucho al momento de utilizarla. Se trata de nRF Connect for Mobile (Que antes se llamaba nRF Master Control Panel) es un app muy útil para experimentar y entender los conceptos de comunicación BLE.

Hay un ejemplo que encontré y quiero compartir porque está interesante ya que permite controlar un LED desde el celular, es decir podemos controlar un TinyTILE de Intel o una placa de Arduino 101 a través de un dispositivo central.

NOTA: Antes de iniciar el ejercicio es importante repasar qué es Intel Curie, esto para tener más claro el funcionamiento de los dispositvos perifericos utilizados, pueden guiarse con el siguiente enlace: https://costaricamakers.com/?s=curie

EJERCICIO PROPUESTO

Materiales:

  • 1LED
  • 1 Protoboard
  • Cable para prototipar
  • 1 tiny tile o placa arduino 101
  • 1 resistencia de 220Ω
  • Instalar el app de nRF Master Control Panel

Pasos a seguir:


PASO 1: Prototipar según la imagen del diagrama, que se obtuvo de: https://cdn.sparkfun.com/assets/learn_tutorials/4/9/2/Exp_1_Blink_bb.png

 

 

 

 

 

 

 


PASO 2: Conectar el periférico utilizado (Arduino 101 o TinyTILE), abrir el Arduino IDE y cargarle el código de ejemplo:

#include 
BLEPeripheral blePeripheral;
BLEService ledService("19B10000-E8F2-537E-4F6C-D104768A1214"); // BLE LED servicio app

//BLE caracteristicas asigandas
BLEUnsignedCharCharacteristic switchCharacteristic("19B10001-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite);

const int ledPin = 13; // pin asignado al LED

void setup() {
    pinMode(ledPin, OUTPUT);

    blePeripheral.setLocalName("TINYTILE BLE"); //Nombre que se le asigna al periferico para ser encontrado
    blePeripheral.setAdvertisedServiceUuid(ledService.uuid());

    blePeripheral.addAttribute(ledService); //caracteristicas del servicio
    blePeripheral.addAttribute(switchCharacteristic);

    switchCharacteristic.setValue(0);

    blePeripheral.begin();
}

void loop() {
    // Escucha los perifericos BLE para conectarse:
    BLECentral central = blePeripheral.central();

    // Si el central es conectado al periferico:
    if (central) {
        // Mientras la central siga conectada al periferico:
        while (central.connected()) {
            // Si el dispositivo remoto escribió a la característica,
            // usar un valor para encender el LED
            if (switchCharacteristic.written()) {
                // Cualquier valor a diferencia de 0 encendera el LED
                if (switchCharacteristic.value()) {
                    digitalWrite(ledPin, HIGH);
                }
                else {
                    digitalWrite(ledPin, LOW);
                }
            }
        }
    }
}

PASO 3: Abrir el app y hacer escaner de los dispositivos periféricos, conectar en este caso con el “TINYTILE BLE” como se muestra en la siguiente imagen. Una vez que se selecciona la opción de “CONNECT”, hay que hacer click en “Unknown Service” van aparecer unas flechas, haga click en la  flecha que tiene direción hacia abajo.

 


PASO 4: Se abrirá una pantalla o cuadro de dialogo, donde debemos seleccionar la opción de “UNIT 8” e introducir un número distinto de 0 para encencer el LED y haga click en enviar o “SEND”.

¡El LED debe encenderse! para volver apagarlo, debe abrir el mismo cuadro de diálogo e ingresar el número 0 y hacer nuevamente click en enviar y el LED debe apagarse.

Gracias por leer este artículo. Nos será de mucho valor que nos digas en comentarios si te fue de utilidad, si trataste de hacer el experimento y si realizaste cambios al mismo.

Introducción al ESP8266

31 May , 2017,
Jose Nunez
, , , , ,
one comments

Aquí resumo algunas cosas que he ido descubriendo del ESP8266 esta semana:

#1 – El ESP8266 viene programado de manera nativa con un firmware que responde a comandos AT para realizar conexiones y comunicación WiFi. Una referencia útil al set de comandos se puede encontrar acá.

#2 – El ESP8266 puede ser programado mediante el IDE de ARDUINO. Para esto es necesario instalar la definición de placa usando la opción de Tools > Board Manager; pero antes de esto es necesario configurar la siguiente URL para definición de tarjetas adicionales usando la opción File > Preferences > Additional Boards Manager URLs.

URL:  http://arduino.esp8266.com/stable/package_esp8266com_index.json

Es necesario cerrar el IDE y volverlo a cargar para poder utilizar el board que aparece en la lista abajo como “Generic ESP8266 Module“. (!) Importante: Una vez re-programado el módulo se pierde el firmware que habilita los comandos AT. Para re-habilitarlos será necesario seguir alguno de los procedimientos disponibles para cargar el firmware

#3 – Se puede conectar el módulo directamente a la PC usando un convertidor USB-Serial FOCA 2.2 con las siguientes conexiones; pero antes se debe configurar el FOCA 2.2 para operar a 3.3V, caso contrario se daña el ESP8266:

esp8266_pinoutFOCAV2.2        ESP8266
   VCCIO -----> VCC (3.3V)
     TXD -----> RXD
     RXD <----- TXD
     GND <----- GND
   VCCIO -----> CH_PD

 Opcionalmente se enciende el dispositivo con el GPIO0 conectado a tierra (GND) para habilitar la descarga de sketches de ARDUINO en el módulo; y luego se desconecta de GND para operar con el Sketch descargado.
FTDI Cable             ESP8266
 VCCIO (red)    -----> VCC (3.3V) 
   TXD (orange) -----> RXD 
   RXD (yellow) <----- TXD
   GND (black)  <----- GND
 VCCIO (red)    -----> CH_PD

#4 – La definición de placa del ESP8266 de ARDUINO (“Generic ESP8266 Module“) incluye una cantidad importante de ejemplos muy básicos para la operación del módulo, ya sea como Cliente HTTP, o cliente WiFi, o Access point, e incluso la creación de redes tipo Mesh usando WiFi.

#5 – El módulo ESP8266 no tiene capacidad para comunicarse con servicios de Internet por canales seguros de tipo HTTPS, lo cual representa una limitante sobre el tipo de aplicación que se pueda implementar. Como medida mínima es recomendable conectar el ESP8266 a un IoT Gateway con capacidad de comunicación HTTPS hacia la nube y no usarlo en aplicaciones suceptibles en caso de ser “hackeadas” ya que es relativamente facil para un hacker poder interceptar los datos provenientes del ESP8266 (no cifrados) interpretarlos e incluso suplantarlos.

#6 – El ESP8266 se puede conseguir en Costa Rica en CR Cibernetica. Nótese que al momento de escribir este artículo el precio estaba en $7.95, solamente $1 por debajo del SONOFF que aparte de traer uno de estos módulos tiene el hardware necesario para manejar corriente AC y un programa predeterminado para poder operarlo mediante un App de teléfono.

#7 – En Amazon se puede conseguir hasta por $15 cuatro módulos ($3.75 cada uno!). En Wish.com se pueden conseguir incluso a $2. Aunque para ser sinceros la comodidad de comprarlos en CR Cibernética y que me los traigan a domicilio el día siguiente es inigualable.

 #8 – Volviendo a los comandos AT, se puede acceder a estos mediante una terminal como Putty usando el puerto serial del FOCA V2.2 a una velocidad de 115200 bauds, pero es necesario (al menos en el caso de Putty) utilizar [ENTER] y [CTRL]+[ J ] para enviar los comandos al módulo y obtener una respuesta. Una conexión parecida se puede usar desde un ARDUINO 101 (que opera a 3.3V) usando la librería SoftwareSerial para operar el ESP8266 usando comandos AT enviados desde el ARDUINO. También se puede operar el ESP8266 desde un arduino usando los GPIO del ESP8266 como indicativos de qué hacer y que un Sketch de ARDUINO en el ESP8266 tome decisiones y realice comunicaciones WiFi basadas en esas señales.

#9 –  Finalmente cabe mencionar que el módulo tiene la capacidad de almacenar información en estado apagado. Lo cual permite, por ejemplo, recordar cual fue el último SSID/Passphrase que se usó y reconectar al encender, tanto para aplicaciones basadas en comandos AT como para aplicaciones basadas en sketch de Arduino ejecutados en el módulo ESP8266.

Tips para Impresión 3D con Printbot

4 Mar , 2017,
Jose Nunez
, , , , ,
No Comments

Hace unos meses adquirimos unos Printbot Simplemetal de CRCibernetica.

El servicio que nos brindaron fue realmente excepcional. Parte de el servicio fueron unos tipos que nos enviaron por email, que me han resultado utiles al tratar de imprimir en 3D. Así que he decidido transcribirlos acá.

Aunque es probable que algunas instrucciones no apliquen para las versiones más recientes de Cura o de Printbot, espero que sea de utilidad a muchas otras personas.


Materiales requeridos:

  1. 3M Blue Masking Tape
  2. Alcohol de Fricción
  3. Algodón para aplicar el alcohol

Instrucciones Básicas

  1. Usar la version 15.04 de Cura (NO USAR LA ULTIMA VERSION):
    https://ultimaker.com/en/cura-software/list
  2. Seguir el setup Wizard seleccionando su impresora (Printrbot Metal Simple)
  3. Bajar el Profile “Getting Started.ini” de Printrbot:
    https://printrbot.zendesk.com/hc/en-us/articles/203814574-Getting-Started-Profile
  4. En Cura: File–>Open Profile y seleccionar el archivo “Getting Started.ini”
  5. En Preferences cambiar Printing Window type de “Basic” a “Pronterface UI”
  6. Cambiar Printing temperature(C) de 210 a 195. (Importante)

Cuando imprime, la impresora va a hacer los siguientes pasos:

  1. El “hot end” va a calentar al 195. (dura 1 minuto)
  2. Se va a mover a “Home” usando los switches de limite.
  3. Se va a iniciar el proceso de “Auto-Nivel” y mapear tres puntos en la cama.
  4. Va a empezar a imprimir.
  5. Cuando termina de imprimir se va a mover a “Home”.

Para crear sus propios modelos recomendamos tinkercad.com. Es gratuito y fácil de aprender. También sirve para “sanar” modelos de otras aplicaciones.

El sitio thingiverse.com tiene modelos 3D que se puede bajar.  Yo siempre busco alli antes de crear algo desde cero.

El spool holder que yo estoy utilizando es este:
https://www.youmagine.com/designs/printrbot-simple-filament-spool-holder-no-aluminum-handle

Impresión por SD Card

Si quiere imprimir directamente de un SD Card:

  1. Asegura que su impresora no esta conectada a su PC.
  2. Insierte un sd card en su PC
  3. En Cura, notar que el icono que normalmente apreta para imprimir ahora dice “SD”.
  4. Apreta este boton para copiar el GCode directamente al SD Card.
  5. Cambiar el nombre del archivo en el SD card a “auto0.g”. Asegura que NO tiene la extensión .gcode
  6. Con la impresora apagada insierte el SD Card.
  7. Prende la impresora.
  8. Tarda varios minutos en calentar y comenzar a imprimir. Puede tardar hasta 10 minutos.

El slot del SD Card no esta posicionado muy bien.  Para no tener que usar un alicate yo uso este holder que se puede imprimir usando la impresora: http://www.thingiverse.com/thing:416217

SimpleCV Hello World ++ en otros 5 minutos (Linux MINT 18)

Mar , 2017,
Jose Nunez
, , , , , ,
No Comments

Siguiendo nuestra serie sobre SimpleCV y como una motivación personal para aprender Python. Acá les presento un par de scripts basados en el ejemplo “Hello World” de SimpleCV.

El primero toma constantemente  una foto de una cámara y la “binariza”; es decir, la convierte cada pixel de la foto en negro o blanco dependiendo de su “posición estadística” respecto de los demás pixeles y muestra el resultado en pantalla.

El segundo toma la fotografía original, sin ser “binarizada” y la muestra en pantalla.

Al correr los scripts de manera simultánea podemos apreciar de mejor manera este filtro de binarización de la imagen.


PASO 1 – simplecv_helloworld.py

Usando un editor de texto como “xed” copiamos el siguiente programa y guardamos el archivo como “simplecv_helloworld.py”

from SimpleCV import Camera
# Initialize the camera
cam = Camera()
# Loop to continuously get images
while True:
    # Get Image from camera
    img = cam.getImage()
    img.save('/home/toruk-makto/imageport.jpg')
    # Make image black and white
    img = img.binarize()
    # Draw the text "Hello World" on image
    img.drawText("Hello World!")
    # Show the image
    img.show()

PASO 2 – simplecv_helloworld2.py

De nuevo, mediante el editor de texto copiamos el siguiente programa y guardamos el archivo como “simplecv_helloworld2.py”

from SimpleCV import Image

# Loop to continuously get images
while True:
    # Get Image from camera
    try:
        img = Image('/home/toruk-makto/imageport.jpg')
        # Draw the text "Hello World" on image
        img.drawText("Hello World!")
        # Show the image
        img.show()
    except:
        print "skip!"

PASO 3 – Ejecutar ambos scripts

En una terminal ejecutemos los siguientes dos commandos:



python simplecv_helloworld.py &

python simplecv_helloworld2.py &


Vemos como se muestran ambas imágenes “en tiempo real”

Para detener los scripts podemos digitar el comando fg(que trae el comando al “foreground de ejecución”) y luego usar las teclas CTRL C; o ejecutamos el comando sudo kill #### donde “####” corresponde al número del proceso que queremos detener; o simplemente cerramos la terminal.

 

 

Iniciemos con SimpleCV en 5 minutos en Linux MINT 18 (Ubuntu 16.04)

Mar , 2017,
Jose Nunez
, , , ,
No Comments

Como les mencioné en mi publicación anterior, estamos investigando un poco sobre Vision Computarizada, y en eso nos tropezamos con SimpleCV como una propuesta práctica para adentrarnos en este mundo.

Me tomó cerca de 30 minutos (quizas por culpa de mi propio déficit atencional) instalar SimpleCV, así que aquí va un resumen para echar a andar esto en 5 minutos:


PASO 1 – Instalar dependencias de Python Support

wget http://launchpadlibrarian.net/109052632/python-support_1.0.15_all.deb
sudo dpkg -i python-support_1.0.15_all.deb

(tomado de http://askubuntu.com/questions/766169/why-no-more-python-support-in-16-04)


PASO 2 – Descargar SimpleCV de SourceForge.net

  1. Página Principal en SourceForge: http://simplecv.sourceforge.net/
  2. Página oficial: http://simplecv.org/
  3. Paquete que yo descargué: Paquete SimpleCV-1.3.deb (versión 1.3-1)

PASO 3 – Instalación

  1. Puede usar el comando sudo dpkg -i ~/Downloads/SimpleCV-1.3.deb
  2. También puede instalarse mediante la interfaz gráfica, haciendo clic derecho sobre el archivo SimpleCV-1.3.deb ubicado en la carpeta de descargas (Downloads), selecciona “Open with GDebi package installer” y hacer clic en el botón “Install Package

PASO 4 – Algo antes del Hello World…

  1. En la terminal, ejecutar el comando simplecv. Esto abre una consola simplecv
  2. En la consola simplecv, ejecute los siguientes comandos uno por uno:
    cam = Camera() #Esto genera una instancia de la cámara principal en una variable llamada cam
    img = cam.getImage() #Esto captura una foto de la cámara accesible desde la variable img
    d = img.show() #Esto abre una ventana que muestra la foto de la variable img. La variable d se usa para maniuplar esa ventana.
    d.quit() #Esto cierra la ventana de visualización.
    

Listo… para más información hay tutoriales en la página oficial. También la consola simplecv tiene tutoriales que uno puede llevar digitando el comando tutorial dentro de la consola simplecv. En mi caso, los tutoriales fallaban en algunas tareas. Pero si me sirvieron para obtener una idea de por dónde empezar.

 

Intel Realsense Robotic Kit con Upboard + ROS

17 Feb , 2017,
Jose Nunez
, , , , ,
No Comments

IMG_20170216_190038Recientemente publicamos un primer artículo sobre el kit de robótica de Intel que trae una cámara Real Sense y un Upboard.

Aunque esta segunda entrega es bastante corta, esperamos que abra las perspectivas de nuestros lectores sobre lo que se puede llegar a hacer con uno de estos kits y los sistemas de robótica ROS y las facilidades que tiene para el manejo de cámaras Real Sense.

Paso 1 (30 min)

Comenzaremos diciendo que instalar Ubuntu y ROS en el Upboard es una tarea súperfacil siguiendo las instrucciones en este enlace:

https://software.intel.com/realsense/robotic-devkit-quickstart

Esto incluye

  1. Una revisión de materiales incluidos en el kit
    (!) Van a necesitar un cable HDMI estándar para conectar el video del UP Board a un monitor, un teclado, un ratón y un adaptador WIFI USB.
  2. La descarga de Ubuntu 16.04.1 LTS
    (!) Hoy (FEB18) gracias a las pruebas que está haciendo el profesor Tomás de Camino, vimos que ya la versión de Ubuntu 16.04.1 no está disponible en el enlace oficial que trae la guía de quick start de Intel, sino que fue reemplazada por la 16.04.2. Aunque en la buena teoría deben funcionar igual, en caso de experimientar algun problema con el setup acá les dejamos el enlace oficial a esa versión: 
    http://old-releases.ubuntu.com/releases/xenial/ubuntu-16.04.1-desktop-amd64.iso
  3. La creación de un USB Stick de instalación
  4. La instalación del Ubuntu en el UP Board
  5. La actualización del sistema operativo incluyendo el KERNEL de linux optimizado para el Upboard
    (!) En este paso puede que se necesite configurar los servidores APT de Ubuntu para que use los servidores en Estados Unidos (no en Costa Rica) ya que en CR no están los paquetes de ROS. Para esto se abre el menú de búsqueda de Ubuntu y se digita “Software Updates” y en la casilla “Download From” se selecciona “Server from United States”image
  6. La actualización del software de Real Sense
  7. La instalación del sistema ROS en su versión Kinetic
    (!) ROS es un “meta-sistema operativo” de código abierto para robots, desarrollado por la fundación de robótica de código abierto. Para aprender más sobre ROS pueden seguir este enlace http://wiki.ros.org/ROS/Introduction
  8. Ejecución de un “Nodelet” de ROS para la cámara Realsense R200
  9. La ejecución del programa “RVIZ” para visualización 3D
  10. ¡a celebrar carajo!

Si, eso es todo por ahora.

Intel UPBoard y el kit de robótica Real Sense

16 Feb , 2017,
Jose Nunez
, , , , , ,
No Comments

69c570f4-7821-42da-a8b7-c0d23bf1b202Esta semana nuestra investigación dio un giro inesperado al encontrarnos por primera vez con una pequeña maravilla que desconocíamos: el kit de robótica Real Sense de Intel, que está basado en un dispositivo (diríamos “compentencia” del Raspberry PI) denominado UP Board.

[Actualización 2/20/2017] El UP Board es un dispositivo fabricado por la empresa AAEON que usa tecnología Intel y está optimizado para las cámaras Real Sense de Intel.

Afortunadamente pudimos conseguir uno de estos kits en la tienda de Intel antes de que se agotaran. Esperamos que pronto estén de vuelta.

El kit que se vende por aprox. $350 más gastos de envío e impuestos, contiene una tarjeta Up Board que prácitcamente del mismo tamaño que una Raspberry PI 3, con 32GB de storage eMMC, 4 GB de memoria RAM de alta velocidad y un procesador Intel Atom de 4 núcleos 1.92 GHz y GPIO de 40 pines y fuente de poder (5V 4A). (Especificación completa)

Siendo que la cámara Real Sense se consigue por $170, la tarjeta UP Board con 4GB RAM, 32GB Storage, nos sale costando aproximadamente $180, más un dongle wifi que necesitamos para conectarlo a Internet ($20)

Pero no nos confundamos; pusimos “competencia” entre comillas por que ¡esta cosa realmente vuela! Pienso que el precio está justificado por el desempeño que presenta y la facilidad con que lo pudimos poner en operación.

Viene optimizado y preparado para correr Ubuntu Linux (tal cual se descarga del sitio de Cannonical), trae un USB3.0  optimizado para la cámara Real Sense R200  que conforma el kit y otros cuatro puertos USB 2.0 más.

Mi experiencia echando a andar este pequeño monstruo fue realmente placentera. Fue cuestión de preparar un USB Stick con una imagen de Ubuntu, bootearlo en el dispositivo e instalar.

Luego de eso instalamos algunas librerías muy interesantes que estaremos detallando pronto en nuestra siguiente entrega, tales como ROS (robot operating system), OpenCV Apps, Optimizaciones del Kernel de Linux para el upboard, etc.

A este punto pudimos instalar todas las librerías necesarias, e incluso instalar y correr Netbeans 8.2 sin ningun impacto en el desempeño del dispositivo.

 

 

Intel Edison – Análisis de Datos con Lenguaje “R” mediante UBILINUX (nota rápida)

21 Ene , 2017,
Jose Nunez
, , , , , , , , , , , ,
No Comments

IMG_20170120_183547Durante 2016 hicimos varios proyectos interesantes con Intel Edison.

Uno de ellos fue un proyecto de colaboración con nuestros colegas de UNED en la investigación de sonido ambiente mediante tecnologías IoT.

Una de las cosas más interesantes que pudimos experimentar fue esta idea de hacer análisis de grabaciones de sonido mediante la plataforma Intel Edison y el lenguaje de “Machine Learning” llamado “R”

Esperamos detallar más aun el proceso en próximas entregas. Por lo pronto les dejamos con un tutorial de Sparkfun sobre cómo instalar UBULINUX, una versión de LINUX para IoT basada en DEBIAN en el Edison. La ventaja de esto es que se puede usar el sistema de paquetes APT-GET para instalar el lenguaje “R”

https://learn.sparkfun.com/tutorials/loading-debian-ubilinux-on-the-edison

Pese a que los desarrolladores de UBILINUX se lamentan de no tener soporte suficiente para esta herramienta; creo que vale la pena probar y ayudar un poco a generar ese ecosistema.

Intel Joule – Primeros Pasos

20 Ene , 2017,
Jose Nunez
, , ,
No Comments

___fadd2efe-349e-4ec3-b03e-b6fbd6b6ebfe-imageId=0a6ed59a-7a19-4839-b801-9691e0c0ae4a (1)En nuestra publicación anterior hicimos un breve recorrido sobre las especificaciones del Joule de Intel, una tarjeta de desarrollo pensada para adentrarnos en el mundo de las aplicaciones de alta demanda computacional en dispositivos pequeños, ya sea vestibles o de tamaño reducido; especialmente sistemas de análisis de imágenes 3D de cámaras Intel Real Sense.

En esta ocasión iremos paso a paso por los tutoriales de Intel sobre cómo empezar a desarrollar soluciones en esta magnífica plataforma.

Para esto nos basaremos en la guía de usuario suministrada por el fabricante mientras tratamos de resumir y enfocarnos en los aspectos más importantes.


1 Materiales Requeridos

Comencemos por los diferentes materiales que serán necesarios para nuestro primera incursión funcional.

  1. Una Plataforma de Desarrollo Intel Joule 570x (enlace)
  2. Un disipador de calor (suministrado con la plataforma)
  3. Fuente de poder 12V, 3A (En este tutorial nosotros usamos una de 12V, 2A) conector de barril de 5mm con centro positivo de 2.1mm
  4. Cable micro-USB tipo B para la comunicación serial con el dispositivo (cable no incluido en el kit). Es el tipo de cable con que actualmente cargamos los telefonos Andriod.
  5. Teclado USB. Nosotros utilizamos un teclado inalámbrico con ratón marca Microsoft sin mayor problema.
  6. Cable HDMI macho estándar a macho conector micro
  7. USB Hub: Opcionalmente un concentrador USB (hub) con suministro eléctrico independiente (en caso de querer conectar dispositivos que demanden más de 900mA)
  8. Bluetooth: Opcionalmente también se pueden conectar dispositivos de teclado y ratón vía Bluetooth.
  9. Computador Anfitrión: Se necesitará un computador para programar el Joule.
    • Para actualizar el BIOS del Joule será necesario un computador anfitrión con sistema operativo Windows 8, 8.1 o Windows 10.
    • El sistema operativo que se vaya a utilizar en el Joule introduce algunas dependencias en el computador anfitrión que se use para programarlo. Así, si se utiliza LINUX de referencia que provee Intel o si se utiliza Ubuntu para IoT, se puede usar un computador anfitrión con sistema operativo Windows, Linux o Mac. Pero si el sistema operativo del Joule es Windows IoT, el computador anfitrión deberá estar equipado con sistema operativo Windows 10 y demás especificaciones de Microsoft descritas acá.

2 Ambientes de Desarrollo de Intel

El Intel Joule se puede programar de muy diversas formas. Intel recomienda usar alguno de los siguientes sistemas para programara la plataforma:

  1. Intel System Studio IoT Edition para Windows, Mac, o Linux en  caso de querer programar la plataforma mediante lenguajes como C/C++ o Java. Nótese Intel System Studio para Linux requiere Ubuntu 16.04 LTS como sistema operativo anfitrión en 64bit.
  2. Intel XDK tambien para Windows, Mac o Linux, en caso de querer programar la plataforma con NodeJS

(!) En esta publicación utilizaremos Intel XDK tanto en un anfitrión Linux (Mint 18) como en Windows 10.


3 Requisitos para Instalación del Sistema Operativo del Joule

La plataforma Intel Joule trae de fábrica una versión optimizada del sistema operativo LINUX. Se recomienda actualizarla ya sea a la imagen más reciente o a alguna versión de Ubuntu Desktop o de Windows for IoT.

Dicha actualización requiere:

  1. Flash Drive de tipo USB 3.0 con 16GB de capacidad conectado a un USB HUB con alimentación independiente. Puede ser USB 2.0 pero la transferecia de datos tendrá una tardanza notoria.
  2. Tarjeta MicroSD de 16GB (puede usarse un Flash Drive adicional si se trata del LINUX de referencia)
  3. El computador anfitrión deberá tener capacidad de leer la tarjeta del punto #2 anterior.
  4. Instrucciones (En inglés) para la actualización del sistema operativo

4 Ensamblando la Plataforma de Desarrollo

Este enlace provee instrucciones muy completas y sencillas sobre cómo preparar / ensamblar los diferentes elementos de la plataforma desarrollo. Se incluyen en dicho enlace pasos importantes como:

  1. Instalación del disipador de calor
  2. Antenas
  3. Instalación de espaciadores

5 Sobre el sistema operativo de la plataforma

En este enlace se describe en detalle las principales opciones de sistema operativo las cuales incluyen:

  1. Ubuntu Desktop 16.04 LTS
  2. Ubuntu Core 16.04 LTS
  3. Windows 10 IoT Edition
  4. Linux de referencia para IoT

6. Actualizando el BIOS

Un primer paso importante en el uso de Joule consiste en actualizar el BIOS. Es el software que orquesta ya carga del sistema operativo y otras funciones de entrada/salida.

El procedimiento es realmente sencillo, nos ha tomado unos 20 minutos en realizarlo. Se describe en este enlace:

https://software.intel.com/en-us/flashing-the-bios-on-joule


7. ¿Qué sigue?

En nuestra siguiente entrega estaremos explorando la instalación de Windows 10 for IoT en el Joule.