Archive for Arduino

Arduino 017 en linux 64 bits

// Febrero 23rd, 2010 // No Comments » // Arduino, Electrónica, Gentoo

Actualizando mi instalación de arduino, armé unas versiones para protoboard con la tarjeta ft232 que se consigue aquí en Colombia en Sigma Electrónica, (más adelante postearé los esquemas e imágenes).

Siguiendo con la actualización bajé la última versión de arduino para la fecha la 0017, e hice la instalación normal para gentoo amd64 que normalmente realizaba, como lo describen en la página oficial. Y finalmente reemplazé el avrdude y el librxtxSerial.so que trae el arduino que son compilados para 32bits, por los instalados en mi sistema.

Pero aquí comenzaron los problemas, al iniciar arduino e intentar bajar el sketch a la board aparecía el error :

avrdude: stk500_recv():

El stk500 es un tipo de programador para avr, que es el que “imita”, por así decirlo, el arduino. Así que lo primero que intenté fué tomar el .hex generado y con avrdude tratar de bajarlo desde la consola, pero devolvió el mismo error.

Al averiguar encontré aquí una frase bastante diciente:

But in any ways, DON’T USE AVRDUDE FROM YOUR DISTRO! because the one provided with the Arduino tools is a patched version.

Ajá! el avrdude que trae arduino viene parchado, así que no puede ser reemplazado como antes, revisado el asunto procedo a dejar el avrdude original y pruebo el programa y para mi sorpresa funcionó.

Pero no todo son alegrías, seguí revisando aquella página y encontré que podía haber un error en la monitorización del serial, así que hago una prueba y efectivamente el programa se cerró, revisando en la consola el reporte que generó fué el siguiente:

A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f8385124803, pid=11115, tid=140202839185680
#
# JRE version: 6.0_17-b04
# Java VM: Java HotSpot(TM) 64-Bit Server VM (14.3-b01 mixed mode linux-amd64 )
# Problematic frame:
# C [librxtxSerial-2.1-7.so+0x8803] read_byte_array+0×43
#
# An error report file with more information is saved as:
# /opt/arduino-0017/hs_err_pid11115.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
./arduino: line 20: 11115 Abortado java -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel processing.app.Base

bueno pues finalmente la solución la postean en la misma fuente: Bajar el paquete rxtx-2.2pre2-bins, desempaquetarlo y copiar los archivos RXTXcomm.jar y x86_64-unknown-linux-gnu/librxtxSerial.so dentro del directorio /lib del arduino reemplazando los archivos ya existentes.

Arduino serial v2 PCB

// Mayo 1st, 2008 // 10 Comments » // Arduino, Electrónica

Alguna vez traté de soldar una baquelita del arduino serial del pcb de doble cara que está en la página oficial de arduino, pero no entiendo cómo lo logran, si hay elementos que habría que soldar por ambas caras para que el contacto quede bien, y no se pueden, como el zócalo del integrado, es imposible meterle el cautín y soldadura sin quemar el zócalo.

Leí las recomendaciones de la página oficial, pero la sorpresa que me llevé es que la soldan por una sola cara, lo intenté y naturalmente (era lo que yo esperaba) no funcionó, los contactos de la cara frontal no quedan bien si no se soldan. Bueno y la versión de una sola cara es un poco grande para mi gusto, se ve muy vacía, aunque ya hay una nueva versión que no he provado pero se ve mejor.

En fin les comparto la que yo diseñé de doble cara, en la que solo hay que soldar por ambas caras unos conectores que unen las caras pero no tienen componentes, de manera que es sencillo, y sólo queda 1cm más alta y 1cm más ancha que la versión original, además como lo hago de un modo muy casero traté de que los caminos no fueran muy delgados, solo hay un par que cuidar. Por otra parte se preguntarán porqué la serial?, pues porque todos los materiales para construirla se consiguen aquí en Colombia, y supongo que serán también los más fáciles de conseguir en cualquier parte.

Primero les aclaro que yo lo hize con el proceso de transfer, con papel transfer que se consigue en la novena (en Bogotá) donde venden todo lo de electrónica, o también he utilizado papel ilustración y funciona bien. Entonces imprimo en laser sobre el papel y luego lo plancho sobre la baquelita para fijarlo, y posteriormente al ácido, así que los dibujos de los caminos que muestro están invertidos, para que al plancharlos sobre la baquelita queden al derecho, entonces si vas a seguir otro método tenlo en cuenta.

Un buen tip que me ha funcionado, es correguir y/o repasar los caminos que se vean defectuosos cuando pasamos el transfer a la baquela, con un sharpie antes de ir al ácido.

La imagen está en png a 300dpi, asegúrate de imprimirla al 100% de su tamaño original.

instalando arduino serial en gentoo amd64

// Diciembre 26th, 2007 // No Comments » // Arduino, Electrónica, Gentoo, Software

Para empezar las instrucciones de la página oficial van muy bien.

Ahora echémosle un vistazo:

primero instalar las dependencias necesarias: blackdown-jre, crossdev, jikes, uisp, rxtx.

Entonces la máquina virtual libre (blackdown-jre) para la interfaz del software del arduino, crossdev nos ayudará a compilar el paquete avr para travajar con los chips Atmega, jikes es el compilador de java libre, uisp es la utilidad de programación de Atmel y rxtx administra los puertos serial.

Lo primero es agregar el paquete uisp enmascarado por ~amd64 al package.keywords para poder instalarlo

#echo dev-embedded/uisp ~amd64 >> /etc/portage/package.keywords

Proceder a instalar las dependencias

#emerge -av –noreplace blackdown-jre crossdev jikes uisp rxtx

Una vez finalizado agregar el o los usuarios al grupo uucp, para que tengan acceso al puerto serial, si ya a trabajado con piKdev u otra interfaz de programación de chips por puerto serial o paralelo esto no será necesario

#usermod -aG uucp nombreUsuario

o bien editar el archivo /etc/group y agregar los usuarios correspondientes al grupo uucp.

Segundo compilar el paquete avr

#crossdev -t avr -s4

Este es un proceso lento que actualiza ciertos paquetes desenmascarándolos (puedes revisar el package.keywords después de esto), puedes tomar unas onces mientras termina.

Y tercero hacer los links simbólicos

Ahora si, bajar el programa, descomprimirlo y hacer los links simbólicos a las dependencias que acabamos de instalar.

como siempre recomiendo poner el paquete descomprimido en /usr/local, una vez ahi crear los links

#ln -s /usr/lib/binutils/avr/2.XX/ldscripts/ /usr/local/arduino-XXX/ldscripts

la carpeta ldscripts dentro de arduino no debe existir.

Los siguientes pasos son para usar el conversor USB a serial, que en mi caso no uso ya que tengo puerto serial, y la explicación del arduino USB, pero tampoco lo voy a explicar ya que uso el serial v2. Pero es importante aclarar que el kernel debe tener soporte para estos puertos, yo siempre activo el soporte tanto de serial como de paralelo.

Hasta quí las instrucciones de la página oficial, pero si lo intentas ejecutar ahora te darás cuenta que no corre y vota
Exception in thread “main” java.lang.NoClassDefFoundError: processing/app/Base

Pues vamos a solucionar esto con mas links simbólicos.
Primero borra el archivo /usr/local/arduino_XXX/tools/uisp y reemplázalo por un link simbólico a /usr/bin/uisp

#rm /usr/local/arduino_XXX/tools/uisp
#ln -s /usr/bin/uisp /usr/local/arduino_XXX/tools/

lo mismo para la librería rxtx

#rm /usr/local/arduino_XXX/lib/librxtxSerial.so
#ln -s /usr/lib64/rxtx-2/librxtxSerial.so /usr/local/arduino_XXX/lib/

Ahora el paquete rxtx y java. Modifique el script de arranque /usr/local/arduino_XXX/arduino, ingresándole los paths de los archivos jikes y RXTXcomm.jar, librerías rxtx y librerias y ejecutables de la máquina virtual que esté ejecutándo, le debería quedar más o manos así:

#!/bin/sh
CLASSPATH=/opt/blackdown-jdk-1.4.2.03/jre/bin:/opt/blackdown-jdk-1.4.2.03/jre/lib/rt.jar:
java/lib/rt.jar:lib:lib/build:lib/pde.jar:lib/core.jar:lib/antlr.jar:lib/oro.jar:
lib/registry.jar:lib/mrj.jar:lib/RXTXcomm.jar:usr/lib/arduino
export CLASSPATH

# put the directory where this file lives in the front of the path, because
# that directory also contains jikes, which we will need at runtime.
PATH=`pwd`/tools:/usr/bin:${PATH}
export PATH

# put the directory with the native RXTX libs in the library path
LD_LIBRARY_PATH=`pwd`/lib:/usr/share/rxtx-2/lib:/usr/lib64/rxtx-2:${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH

export DIRAVR=/usr/bin

java processing.app.Base

Lo que está en negrita es lo que le agregé. Para ejecutar arduino es de aclarar que no se puede ejecutar de la siguiente manera
$ /usr/local/arduino-XXX/arduino
sino
$ cd /usr/local/arduino_XXX && ./arduino

téngalo presente a la hora e agregarlo al menú o elaborar un sript de arranque.

Nota: Esto fué provado con arduino-0007, espero funcione para las demás versiones.