Archive for Hardware

Siguiendo con los post de programación sobre arduino, hoy voy a explicar como programar arduino desde la linea de comandos.
El IDE de arduino es bastante básico y en algunos casos los editores de texto que usamos, ya puede ser VIM, Textmate o similares, son mejores a la hora de programar.

Para escribir este artículo, me he basado en el que escribió Syvic que explicaba cómo usar arduino desde un sistema linux. Prácticamente es lo mismo, lo único que cambia es la manera de instalar los programas que necesitamos.

Requisitos

1. pyserial
Módulo que añade comunicaciones con el puerto serie para python. Para instalarlo, lo descargamos nos vamos al directorio donde lo hayamos descomprimido y desde consola ejecutamos

sudo python setup.py install

2. scons
Son unas herramientas para compilar programas. Para instalarlo actuamos igual que con pyserial. Descargamos, descomprimimos y desde el directorio en el terminal ejecutamos

sudo python setup.py install

3. arcsons
Para terminar nos tendremos que descargar el fichero SConstruct. Este fichero lo tendremos que tener siempre a mano. Es necesario que lo pongamos siempre en el directorio donde tengamos el fichero .pde del programa.
Este fichero necesitamos editarlo para indicarle qué arduino tenemos. Para ello lo abrimos y en la linea 62

ARDUINO_BOARD = ARGUMENTS.get(‘ARDUINO_BOARD’, ‘atmega328′)

le indicaremos que placa tenemos, escribiendo alguno de los siguientes modelos: pro328 mini pro5v328 mega atmega328 bt328 atmega8 atmega168 pro diecimila lilypad pro5v lilypad328 uno bt fio y mega2560

Creando el proyecto
Una vez que tengamos los programas instalados, es hora de crear el primer proyecto. Para ello creamos el directorio donde guardaremos el fichero .pde y el SConstruct.

$mkdir Blink

y creamos el fichero PDE dentro de ese directorio. Es necesario que la carpeta y el fichero pde se llamen de igual forma.

$mate Blink/blink.pde

NOTA: yo uso textmate si usas otro editor como por ejemplo vim, en el comando anterior se sustituye ‘mate’ por ‘vim’ o el comando que uses habitualmente.

Escribimos en el fichero el programa que queramos cargar al arduino y guardamos los cambios.
Una vez que ya tenemos el fichero preparado copiamos el fichero SConstruct en el directorio actual, y ejecutamos scons

$scons

En este momento scons, compila el fichero .pde en un fichero .hex listo para ser cargado en arduino.Al terminar nos devolverá el siguiente mensaje:

scons: done building targets.

El paso siguiente será cargar el fichero .hex en el arduino.

$scons upload

Cuando termine, scons devolverá el mismo mensaje que antes.
Si en nuestro programa estamos trabajando, mandando información al puerto serie, para leelar en el ordenador, podemos verla en consola con el comando:

$screen /dev/tty.usbserial*

Harto de que las compañías de móviles te cobren distinto dependiendo a qué teléfonos llames, y que no haya forma gratuíta de saber a qué operador estás llamando, ¿verdad?

La solución llega de la mano de operadorApp, una aplicación gratuíta, que con solo introducir el número del que tenemos dudas, y el captcha solicitado, nos indicará de qué compañía es el número en cuestión.

La aplicación acaba de llegar a la AppStore, pero ya se está trabajando en la nueva versión, que incluirá la posibilidad de introducir los números directamente desde la agenda del iPhone.

No olvidéis dejar vuestra reseña en la AppStore cuando lo probéis, y desde la propia aplicación se puede enviar feedback si queréis que se incluya alguna feature en nuevas versiones.

  • Disponible gratuítamente en la AppStore | operadorApp

Después de mucho tiempo, retomo el tema de programación de arduino en mac. Os voy a explicar como intercambiar información entre arduino y un ordenador.
Las posibilidades de arduino por si solo son inumerables, pero si le añadimos la capacidad de interaccionar con un ordenador, abrimos la puerta a muchos más proyectos, o funcionalidades nuevas para nuestros proyectos.

Mandar información desde arduino

Lo primero que vamos a ver es cómo mandar información por el puerto serie por arduino, voy a basarme en el ejemplo ‘Blink’ para mostrarlo:

/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.

This example code is in the public domain.
*/
void setup() {
// initialize the digital pin as an output:
Serial.begin(9600);
pinMode(13, OUTPUT);
}

void loop() {
digitalWrite(13, HIGH); // set the LED on
Serial.println(“Encendido”);
delay(1000); // wait for a second
digitalWrite(13, LOW); // set the LED off
Serial.println(“Apagado”);
delay(1000); // wait for a second
}

Lo primero de todo es añadir en el Void Setup, la instrucción Serial.begin(9600) de este modo inicializamos la utilización del puerto serie. Lo siguiente será, a lo largo de nuestro código, mandar la información que nosotros queramos mediante Serial.println(“Encendido”) en este caso estamos mandando la palabra on. Aquí podríamos poner lo que quisieramos, incluso una variable para que mandara su valor.

El siguiente paso será recibir esa información en el ordenador, al estar en el puerto USB, tendremos muchas formas de leerlo.

Serial Monitor Arduino

Lo más sencillo es usar el Serial Monitor del propio IDE de arduino. Este sistema es únicamente de revisión del código, es decir, seguir por dónde va el programa. En caso de que estemos probando una función y no queramos activar una salida podemos mandar información por el puerto serie y ver que funciona correctamente.

Captura de pantalla 2011 03 19 a las 18 41 31

Captura de pantalla 2011 03 19 a las 18 42 59

Python

Lo siguiente y un poco más potente es a través de un lenguaje de programación como pueda ser Python. Gracias a esto podemos tomar decisiones en nuestro programa con lo que pase en la placa arduino. El código es el siguiente:

import serial
ser = serial.Serial(‘/dev/tty.usbserial-A8008qpV’, 9600)
dato = ser.readline()
if dato == ‘on\r\n’ :
print(“encendido”)
if dato == ‘off\r\n’ :
print(“apagado”)

Lo primero es importar la librería serial para trabajar con la lectura del puerto serie, en el siguiente comando configuramos el puerto. Con el comando ser.readline() lo que hacemos es leer la información del puerto serie, y posteriormente trabajar con ese valor en nuestro programa.

En este ejemplo, en el programa de arduino mandamos las palabras ‘Encendido’ y ‘Apagado’ pero con el comando Serial.println, que añade un retorno de línea a la cadena, es por ello que debemos hacer la comparación en python con ‘Encendido\r\n’ y ‘Apagado\r\n’ que es realmente lo que está mandando por el puerto arduino

En el siguiente post, explicaré, cómo mandar información del ordenador a arduino para por ejemplo, encender un led. Pero la estructura del programa es bastante similar.

Vía:
Página arduino
Página Python

Esta noche preguntaba por Twitter si había alguna manera de crear/editar los grupos de la agenda del iPhone sin necesidad de recurrir al ordenador. Una feature común en cualquier móvil corriente, pero que en este caso Apple se olvidó de incluir. Al poco tiempo recibí un correo de @cvazper que me avisaba que la aplicación Fast Groups estaba gratis en la AppStore por unos días, por lo que me evitaba bajarla de megaupload, rapidshare u otros servicios, así que me he decidido a probarla.

Nada más entrar en la aplicación nos encontramos con una lista de los grupos que tenemos actualmente, donde podemos añadir o borrar cualquiera de la lista:

IMG_0000_10

Una vez que estamos editando cualquiera de ellos, veremos los contactos que tiene, y podremos añadir cómodamente desde el listado al que estamos acostumbrados a utilizar en el iPhone, como se puede ver en la imagen de a continuación:

IMG_0000_11

Como digo, es bastante sencillo agrupar los contactos con esta aplicación, porque nos conserva el scroll en la lista de todos los contactos, por lo que podemos ir avanzando e ir añadiendo los contactos hasta recorrer la lista por completo.
Además de ordenar los contactos, también podemos utilizar Fast Groups para navegar por nuestros contactos, aunque personalmente encuentro más cómodo utilizar la que trae el iPhone por defecto, que una vez colocados los grupos, es bastante rápida (cosa que con el All Contacts que nos encontramos por defecto, es bastante laborioso el localizar cualquier número de teléfono o email), pero una característica que me parece bastante útil es un botón con icono de sobre, que nos permite escribir emails a los contactos seleccionados, algo bastante más cómodo que Mail en principio, ya que allí tenemos que ir seleccionando los contactos de uno en uno, y aquí los podemos seleccionar todos de una vez y luego empezar a escribir el correo como se ve en la imagen.

IMG_0000_12

Por todo esto, es una aplicación altamente recomendable, y más si aprovechamos estos pocos días que la tienen gratis de forma promocional.

Uno de los elementos que más deberíamos vigilar y cuidar de nuestros portátiles es la batería, ya que con el tiempo, es la que más va notando disminuida su capacidad inicial. Con estos sencillos 4 pasos, conseguirás resetear su límite de carga, y conseguir con ello una mayor duración:

  1. Carga la batería como lo haces normalmente, y cuando llegue al 100%, mantén conectada la alimentación al menos 2 horas más (da igual que lo apagues, pero no lo desenchufes).
  2. Una vez desconectado el cable, utiliza el portátil hasta que se agote del todo la batería, y el ordenador se autosuspenda automáticamente. Tras esto déjalo otras 2 horas sin conectar, para que acabe de “morirse” por completo.
  3. Enchufa el cargador, y enciende el ordenador (si has hecho todo lo anterior bien, ahora mismo debería estar apagado por completo). Cárgalo a tope y de nuevo espera 2 horas mínimo para poder desenchufarlo
  4. Comprueba lo que ha aumentado la capacidad máxima de la batería utilizando por ejemplo coconutBattery
coconutBattery

Como veis, poniendo un poco de interés en el mantenimiento de nuestro MacBook, conseguiremos que pasado el tiempo, la batería esté casi como cuando los compramos :)