Archivo de la etiqueta: icaro

Conectar un shield Bluetooth a Ícaro

Arduino tiene dos shields de Bluetooth, el HC-05 y el HC-06. El HC-05 tiene la posibilidad de funcionar como unidad master o slave, mientras que el HC-06 solo puede funcionar como slave. En este caso me enfocaré al uso como slave, donde abrimos un canal de comunicación de la PC hacia la placa para enviar ordenes y recibir respuesta de estado de los sensores.

El HC-05 tiene 6 pines y el HC-06 tiene solo 4. Para este caso solo usaremos 4 pines, en cualquiera de los dispositivos. En el reverso del dispositivo están claramente indicados los pines RXD, TXD, GND y VCC

Por otra parte hay que ver el mapa de pines de la placa icaro para identificar en los puertos de servos cuales corresponden a señal, cuales a VCC ( corriente de +5VDC) y GND (Tierra). Igual pueden verse en la ilustración a continuación

Asignación
TXD – Pin de Señal K5 (pin más cerca del micro)
RXD – Pin de Señal K6
VCC – VCC K5 (pin del centro)
GND – GND K5 (pin más lejos del micro)

Luego de haber conectado el shield de Bluetooth a la placa procedemos a cargar el firmware de Bluetooth a la placa de Ícaro. Para ello conectamos la placa con un cable USB a la computadora, cargamos Ícaro bloques y buscamos el botón de icaroblue.

Este firmware se compila automáticamente y nos invita a resetear la placa Ícaro. Procedemos a oprimir el botón reset de la placa Ícaro esperamos por el mensaje de que la carga se realizó con éxito.

Podemos continuar usando el cable USB como fuente de energía, conectado a la PC o a un transformador. O bien pasamos a alimentar la placa desde una fuente externa, haciendo el cambio del jumper K1.

Para iniciar la comunicación debemos usar el administrador de dispositivos Bluetooth y hacer el emparejamiento con el dispositivo. Luego necesitamos hacer un clic derecho sobre dicho dispositivo para conectarlo como un puerto serial.

Una vez conectado como puerto serial podemos verificar la conexión usando un programa de comunicación serial como cutecom. Los parámetros de conexión que debemos configurar son:
Device: /dev/ttyrfcomm0
Baud rate: 9600bps

Le damos clic al botón Open device y debería establecerse la conexión.

Procedemos a escribir la letra “b” en la barra de input y damos enter.

Deberíamos ver en la pantalla una respuesta Icaro USB2.0 que es la respuesta al comando de estado.

Esto es suficiente para ver que esta funcionando. Mi siguiente reto es documentar los comandos seriales que pueden usarse con la placa ya sea por el cable USB o vía Bluetooth.

Conectar una pantalla LCD a Ícaro

Tengo esta pantalla de 16 caracteres por 2 lineas que deseaba conectar a la placa Ícaro. Esta pantalla es de las más comunes, pero ahora están tomando popularidad pantallas que incluyen un modulo I2C de comunicación. Esta pantalla no incluye dicho módulo. Espero hacer notas sobre trabajo con dispositivos I2C e Ícaro en el futuro.

Para conectar la pantalla LCD 2×16 vamos a ocupar 12 lineas de conexión. Pero lo más importante, antes de iniciar, es conocer nuestro Port B o P5 de la placa Ícaro.

El Port B es la salida del micro-controlador hacia el UNL2803. Si sostenemos placa con la barra de led hacia la derecha de forma que el micro controlador este arriba del integrado UNL2803, entonces en el Port B tendrás los pines de izquierda a derecha. El primer pin de la izquierda sera P0 y el ultimo hacia la derecha será P7.

Para conectar hay que seguir la siguiente asignación.

Pantalla – Placa Ícaro
VSS – Ground
VDD – +5VDC
V0 – Ground
RS – P4 Port B
RW – Ground
E – P5 Port B
D0
D1
D2
D3
D4 – P0 Port B
D5 – P1 Port B
D6 – P2 Port B
D7 – P3 Port B
A – +5VDC
K – Ground

Las lineas de +5VDC y Ground las conecte a los pines de VCC y Ground de los sensores analógicos. Igual podría conectarse a los pines respectivos en los puertos de servos.

Opcionalmente en la linea A se puede conectar una resistencia para variar el brillo o contraste de la pantalla, dado que A y K son los que alimentan la luz de la pantalla.

Para probar que todo esta bien solo hace falta abrir un script del menú Archivo, seleccionar Ejemplos, ahí navegar a la carpeta LCD y cargar el archivo llamado hola mundo. Como siempre, compilar el script y luego cargar al micro-controlador.

Al ver el script podemos identificar que se envían 0 y 0 antes de enviar los caracteres “hola”. El primer cero corresponde a la Columna y el siguiente corresponde a la Fila. Esto la posiciona en la primera columna de la primera fila. Como vemos “mundo” recibe de previo 0 y 1, es decir primera columna, segunda fila.

La pausa al final es importante, es lo que mantiene los caracteres en pantalla antes de reiniciar el bucle infinito del script. Sin la pausa, o con un valor muy pequeño, no podríamos ver el mensaje. Por otro lado las pausas son importante antes de borrar la pantalla o asignarle un nuevo valor. Sin pausa, el nuevo valor se mostrara en pantalla antes de que podamos haberlo leído.

Ahora lo que resta en experimentar y aprender.

Usar funciones en Icaro Bloques

Usar funciones al programar nos permite reutilizar código. En particular al tratar con bloques, nos evita atiborrar la pantalla, pero también nos evita errores de conexión entre bloques al repetir varias veces lo mismo.

Lo primero es crear una rutina que será nuestra función. Un ejemplo sencillo, hacer parpadear un led. Esta rutina la salvamos como un archivo de icaro.

Luego la salvamos como una función con el mismo nombre.

En el ejemplo siguiente mostramos como hacer la llamda de la función. Usamos un bloque de carga_func para llamar a la funcion y luego un bloque de acción con la función.

Para que esto funcione debemos salvar la rutina como un archivo de icaro y luego darle compilar. Todos los archivos deben estar en la misma carpeta, de esta manera Ícaro Bloques encuentra el código a usar de los archivos.

Si nos vamos a la pestaña de código fuente y damos click en el boton recargar, podremos ver el código con la declaración de la función y el llamado a la misma en lenguaje C.

 

Flisol 2016 Managua

Usualmente Flisol se celebra en Abril, pero por diversas razones, se decidió postergar para celebrase el 14 de Mayo de 2016. Para este evento, por parte de Fedora tuvimos la oportunidad de tener presencia en tres espacios.  En instalaciones, las mesas y las charlas.

 

Samuel estuvo ayudando en el área de instalaciones. Como siempre es un apoyo general, pero es importante que colaboradores que tienen experiencia en Fedora esten disponibles. Les brindan seguridad a los usuarios. Además estuvieron copiando las imagenes ISO del sistema operativo.

En la mesa nos turnamos varios. William, Naima, Fernando, Eduardo y yo recibimos a las personas, les comentamos sobre Fedora y contestamos sus preguntas. Gracias al patrocinio del Proyecto Fedora teniamos calcomanías para distribuir. De parte de la comunidad habiamos colectado para tener algunos discos.

Algo que llamó la atención fue la presencia de los robots del proyecto icaro. Robots hechos 100% con Fedora, tanto hardware como software.  Teniamos una araña con una placa NP-05 y un auto evasor de obstaculos con una placa NP-07 funcionando. En proceso de construcción tenemos un brazo robot. EezyBotArm es un diseño para ser replicado en impresoras 3D. Con una placa Icaro NP-06 estabamos controlando 4 servos usando potenciometros para controlarlos. Aun nos faltan ajustes, pero da idea de la variedad de aplicaciones de Icaro y como las placas han ido evolucionando. También teniamos una laptop para mostar el uso de Icaro bloques, aunque la mayor parte del tiempo se uso para preguntas de Fedora.

Recibimos publico en general, pero en particular podemos destacar la visita de estudiantes de Cyber-Periodismo que hicieron sus prácticas de entrevistas con distintos expositores. Una de las entrevistas salio publicada en El Nuevo Diario. También nos visitaron dos tropas de Scouts.

Omar presentó una charla sobre virtualizar sistemas android. Por mi parte estuve hablando sobre robótica educativa. (Descarga aqui la presentación)

Aura Lila apoyo al evento y tomó muchas fotos. Gracias a ella puedo ilustrar mi reporte sobre este evento.

Un agradecimiento especial a la comunidad de Mozilla Nicaragua por organizar este evento donde todos pudimos divulgar distintas facetas del software libre.

Curso de Robótica Educativa con Icaro

Estamos emocionados y con algo de pánico al anunciar que vamos a hacer un Curso de Robótica Educativa con Icaro. Bueno, en realidad son dos cursos.

La idea es aprovechar a Valentin Basel, iniciador del Proyecto Icaro, a Niacaragua. El fin más importante detras del curso es la documentación que vamos a generar con el proceso de preguntas y respuestas a lo largo del curso.

Pero la parte más especial es que el curso implica construir un robot que el participante se va a llevar a su casa para seguir experimentando y aprendiendo. Quien no quiere un robot?

Carro Robot detector de obstaculos

El costo del curso es $95, que  prácticamente el costo de los componentes para ensamblar la palca de control Icaro, más los accesorios para armar el robot. En la documentación pueden ver los anexos 1 y 2. La lista es algo larga y la estamos entregando al participante.

Las fechas tentativas son del Lunes 20 al Viernes 24 de Junio de 2016 en Mansión Teodolinda, Bolonia, Managua. MAPA

Pero porque dos cursos?

Curso para Docentes: Iniciamos desde cero y vamos despacio. Eso significa que solo cubrimos Icaro Bloques, la interfase para niños. Pero el docente tendra suficiente pasa seguir aprendiendo. Horario 3:00pm a 5:30pm. Ver la docuemtación del curso AQUI

Curso para Experimentadores: Suponemos que el participante usa linux, puede distinguir una resistencia de un led y además puede soldarlos. Pasamos Icaro Bloques rápido para entrar a lenguaje C y Python. Horario de 6:00pm a 8:30pm. Ver la documentación AQUI.

Solo vamos a ofrecer 15 cupos para cada curso. Hemos hecho gestiones para ver si conseguimos que algunas instituciones nos patrocinen el cupo de algunas personas. Si eso sucede, estaremos avisando por la lista de la Comunidad de Software Libre de Nicaragua.

Para incribirse o si tienen dudas puede escribir a:

correo de neville

La idea es que posterior al curso vamos a tener componentes para seguir pomocionando la robótica, de forma que esto no sea un esfuerzo aislado, sino que de alguna manera tenga continuidad.

Sensores Analógicos y Digitales con la placa Icaro

Los sensores digitales son los más simples. Un interruptor es un sensor digtal. Simple: Apagado o encendido. Un interruptor de paro o un botón de pulso es lo mismo.

Tomamos un interruptor y conectamos sus extremos a la bornera sn_d1 justo al lado del boton de reset en la placa NP-06.
interuptor de paro
Hacemos unos bloques simples a como se muestra a continuacion:
sensor-digital
El resultado será que cuando se cierra el circuito, es decir el interruptor esta encendido el led primero se encenderá. Cuando el interruptor se apague, el led hara lo mismo.

Los sensores analógicos son un poco más complicados. Su respuesta es un valor que varia segund determinadas condiciones. Para ilustrar esto usaremos un potenciometro. La forma más simple de potenciometros son los controles de volumen. Es bien fácil comprar uno o rescatar uno de un aparato que ya no sirve.
potenciometro
Vamos a encontrar clasicamente tres patitas. La primera es tierra (GND) , la segunda es la salida del sensor (sens_analog) y la tercera es voltaje (VCC). Realmente es una resistencia variable. Si invertimos el orden, no será un problema. Siempre tendremos un voltaje que varia en el centro en relación al voltaje existente entre la alimentación y tierra.

Lo que hay que hacer es conectar los cables en los puertos que se encuentran al lado del led rojo en la placa NP-06. Los tres primeros pines, los mas cerca al extremo de la barra de leds corresponden al primer sensor analógico. En la placa NP-06 estan claramente identificados.
sensor analogico
Ahora hacemos unos bloques a como se muestran a continuación.
sensor_analogico
El resultado es que al mover el valor del control de volumen, la barra de led incrementara o reducirá el valor binario representado por los leds.

Conexión serial a la placa Icaro

La placa Icaro nos ofrece una gran cantidad de beneficios como una placa autónoma. Pero también podemos sacar provecho de su conexión serial. Tortucaro es la herramienta que nos permite esto.

Para ello debemos ubicar el icono de tortucaro en la ventana de icaro y hacer click en él. Luego hacemos click en compilar. Finalmente hacemos click en Cargar. Oprimimos el botón de reset en la placa y nos debe decir que la carga fue exitosa. En la versión de desarrollo, todo esto es más breve, varios pasos redundante se eliminan, pero la lógica es la misma.
botones_icaro
Si este es el primer intento usando tortucaro, podemos querer hacer algunas pruebas. El primer paso es confirmar que existe la conexión con la placa. Desde la terminal usamos el comando ls /dev/ttyA* nosotros esperamos que la respuesta incluya que dentro de los dispositivos existe /dev/ttyACM0

Posiblemente el programa de comunicación serial más simple de usar es cutecom. Lo mas seguro es que no lo tengan instalado, asi que pueden usar la interfaz gráfica o un comando como
su -c “yum install cutecom”

Al iniciar cutecom enviará un aviso que no logro conectar con el puerto /dev/ttyS0, lo cual es lógico porque seguramente no tienen nada conectado a un puerto serial o incluso no tiene puerto seriales en la computadora. Asi que en la parte superior debemos configurar dispositivo o device a /dev/ttyACM0 y luego hacer click en el botón abrir dispositivo o open device. Si no hay malas noticias, son buenas noticias.
cutecom
El programa tiene tres áreas de texto, de arriba hacia abajo, respuesta del dispositivo, historico de comandos enviados al dispositivo y entrada o input. Nos colocamos en input y escribimos “b” y damos enter. En la ventana de respuesta dirá “icaro USB 02”

Si tenemos un servo podemos usar comando como m1! (mover servo del puerto uno al valor ascii 33) o bien puede escribir m1Ñ (mover servo del puerto uno al valor ascii 126) Puede buscar una guia de valores ascii

Ahora que ya saben como es el asunto de la comunicación serial y han comprobado que funciona, pueden hacer algunas cosas más intersantes. Por ejemplo les comparto un pequeño programa de python escrito por Valentin Basel

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# servo.py
#
# Copyright 2014 valentin basel
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA.
#
#

import apicaro
import time
icaro=apicaro.puerto()

icaro.iniciar()
for a in range(3):
icaro.activar_servo(1,1)
time.sleep(1)
icaro.activar_servo(1,255)
time.sleep(1)

Icaro y la version devel

Cuando estamos probando las ultimas cosas de un programa puede ser que tengamos deseo de ir al paso del desarrollo de ese programa. La versión en desarrollo o devel es un espacio para experimentar, encontrar que cosas no están funcionando y hacer sugerencias. Icaro tiene esta versión y quiero compartir como echarla a andar. No estoy siendo muy explicito, porque si están buscando la versión de desarrollo, supongo que ya tienen alguna experiencia en Fedora

Lo primero a saber, es que el repositorio nos va a presentar la versión estable. Nosotros tenemos que navegar en busca de la versión de desarrollo.

La pueden encontrar aqui: https://github.com/valentinbasel/icaro/tree/devel

Eso les dará acceso a hacer una descarga de un archivo zip. Deben descomprimirlo manteniendo la estructura interna de directorios. Usualmente yo descomprimo en la misma carpeta de Descargas y obtengo una carpeta llamada icaro-devel. Luego muevo esta carpeta hacia mi directorio Home. Lo hago así porque un error de descomprimir cosas en Home, puede ser algo tedioso de limpiar, mientras que si ocurre en Descargas no será la gran cosa.

Voy a usar la palabra USUARIO que ustedes deberan cambiar por el nombre de su propio usuario. Hasta el momento tenemos /home/USUARIO/icaro-devel/ y posiblemente han usado los beneficios de las herramientas gráficas.

Si no han instalado la version estable, ustedes deben hacer algunas configuraciones, las cuales las realicé desde la terminal

su -c “group add microchip”
su -c “usermod -a -G microchip USUARIO”
su -c “usermod -a -G dialout USUARIO”

Lo siguiente es poner algunos archivos en su sitio, lo mismo esto lo hago desde la terminal

mkdir ~/.icaro
cp -r ~/icaro-devel/hardware/icaro/micro/firmware ~/.icaro/
cp -r ~/icaro-devel/hardware/icaro/micro/conf ~/.icaro/
su -c “mkdir /usr/share/icaro”
su -c “cp -r ~/icarodevel/hardware /usr/share/icaro/”

Para correr la version de desarrollo la ejecutan desde la terminal ubicandose en el directorio de desarrollo:

cd ~/icaro-devel
python lanzador.py

Correr el programa desde la terminal nos permite ver los comentarios que va generando y en caso de error nos puede dar idea de que se trata ese error.

I have found my place within Fedora Project

As a Fedora Ambassador I should help people find a place to collaborate with the Fedora Project. I have been around for long time doing different things in Fedora Project. I feel that I have failed myself because I did find my place before. I have been doing for so long events, recruiting collaborators and helping people. I failed my self to help me doing things that I really enjoy doing for the project.

FUDCon Managua 2014 was a major challenge and at some points I was considering quit. People like Lila, Cristhian, Samuel and Fernando keep me going. At the same time, Fedora Council was taking shape and FamSCo was starting to change. Probably I was involved in to many things.

Some time ago I was asked if I will keep up with marketing activities. I accepted to be dismiss from Marketing Team. I am not doing anything, it is fair to step aside. It felt right, I can be back any time when I want. Later on I unsubscribe myself from the marketing mailing list as it was no longer related to marketing, but to Fedora Magazine.

I quit to freemedia, I was dealing with membership management which I stepped aside long ago, and recently I quit completely as I haven’t sent media in months. Again, it felt right as I can came back anytime.

The transition from Fedora Board to Fedora Council made me take a choice. Did I wanted to keep in that level of commitment? I honestly I was not following the mailing list and not following the trac. Much of this was because of FUDCon, but also I lack energy.

I really wanted to FAmSCo to change, when that become a reality, then I felt that I did not need to keep involved. Againg I lack energy, motivation or both. So I quit.

Even I have organize 9 Fedora Release Parties in a row. I got a hotdog cart to release Beefy Miracle. I also helped to organize release party in El Salvador, Guatemala and Costa Rica. I am not doing it now. Lila has said to do it, and I am glad to someone else take charge of that.

I came to Fedora because I wanted to have a stable platform for Amateur Radio. I like electronics and experimenting. I needed to ask help and end up helping people. It was a great ride, but it was a side track.

So what I am going to do? I want to thanks Valentin and Icaro Project for helping me find my place in Fedora. I love the electronic experimenting. It is a wonderful project aiming to education, but you can get on board and keep growing and learning with it.

This is what I was looking for. A place to collaborate with something that challenge me to learn things that I want. A thing to talk about and do presentation about things that I am passionate about.

Don’t get me wrong, I love Fedora Project. But I am not passionate about talking about features that I am not using and most of the time I am not fully understand. I did it because I fell it was something to be done.

Since I get in touch with Icaro I am thinking how I going to use Icaro boards with Amateur Radio. Switching equipment, satellite tracking, too many possibilities.

Since FUDCon Managua 2014 I was been asked about robotics. From the science committee of the vice presidency office, from RUPAP degree in system, there is a department of research and development of RUPAP that also asked about, the ministry of education also asked about. I event got a request for a pilot experience with a school. My answer has been, Icaro project will happen in Nicaragua, you can be part of it or just watch it happen.

I have found my place within Fedora.

rpm source rebuild de icaro paso a paso

Icaro es un proyecto de robótica educativa, basado en una placa muy básica de hardware la cual es controlada vía software. Aquí vamos a ver como instalar el software.

En fedoraforum.org por allá de Enero de 2008, leigh123linux me dijo que

“to be honest you appear clueless to the process of rebuilding source rpms so I have written a quick guide for you”

Traducido …Para ser honesto tu pareces despistado en relación al proceso de reconstruir fuentes de rpm, asi que he escrito una guia rápida para ti.

El estaba realmente en lo cierto cuando decia que yo estaba clueless. Su guía me ha servido mucho.

Ahora me enfrento con Icaro y al menos ahora identifico que es un fuente de rpm y debo reconstruirlo, asi que usando la guia que me brindaronhace algun tiempo, aqui pongo como fue que lo hice.

1.- Instalar soporte para compilar software

su
yum groupinstall “Bibliotecas de desarrollo” “Herramientas de desarrollo”
yum install rpmdevtools
exit

Nota: si su sistema esta en ingles deberá usar los grupos “Development Libraries” “Development Tools”

2.- Crear el entorno de trabajo

rpmdev-setuptree

3.- Conseguir el paquete rpm source y crear el paquete

cd ~/Descargas/
wget http://lletelier.fedorapeople.org/icaro/icaro-0.6.2-1.290311.fc15.src.rpm
rpmbuild –rebuild icaro-0.6.2-1.290311.fc15.src.rpm

Nota: hay que agradecer a Larry Letelier de Chile por crear el rpm source.

4.- Instalar el paquete

cd rpmbuild/RPMS/x86_64/
su
yum install icaro-0.6.2-1.290311.fc15.x86_64.rpm
exit

Nota: ustedes pueden tener sus paquetes en otra rura, por ejemplo sustituyendo x86_64 por i686. MI sistema es de 64 bits.

A final este es solu un paso intermedio de un camino por andar en la robótica educativa. Le agradezco infinitamente a Valentin por haberme incentivado a participar y el apoyo constante que me ha brindado