electric imp – programación

Ya hemos visto en una entrada anterior las características de esta pequeña y “endiablada” tarjetita. También comentamos la cierta complejidad – o más bien cúmulo de operaciones – para poder poner en marcha un proyecto que corra en la misma. Y como quiera que nada se ve mejor que con un buen ejemplo vamos a comentar cómo desarrollar un programa básico para la imp.

Lo primero que necesitamos es una tarjeta imp, un impee (placa hardware donde dicha tarjeta se conecta) y un teléfono Android o iOS donde ejecutaremos la aplicación para grabar en la tarjeta imp los datos de acceso a nuestra red Wifi. La tarjeta electric imp precisa – a fecha de hoy – estar si o si conectada a una red Wifi para comenzar a ejecutar el programa en ellla grabado.

Respecto a la imp y los impees disponibles podemos hacernos con ellos, por ejemplo, a través de la tienda Adafruit  o en Sparkfun .

Por lo que respecta al teléfono a utilizar, hemos de consultar la página donde el fabricante nos proporciona la lista de dispositivos compatibles. En caso de que nuestro teléfono no se encuentre en dicha lista no tendremos más opción que “prueba y error”  😉

– Lo pasos preliminares –

En el ejemplo que vamos a seguir hoy contamos con una tarjeta electric imp, un impee de tipo April y, para la codificación de la conexión wifi, con un iPod touch.  Así que vamos a realizar los pasos preliminares descritos de forma sumaria en la anterior entrada – previos a la primera programación -, pero de una forma totalmente didáctica. Estos eran:

A) Obtenemos nuestra tarjeta electric imp
B) Obtenemos nuestra placa impee (o la desarrollamos)

Ya hemos comentado las tiendas donde conseguir dichos equipos. Conviene reseñar que la placa April viene lista para soldarle la consabida fila de pines de conexión, pero que estos no van incluidos en el kit. Tendremos que soldarlos nosotros.

C) Nos damos de alta en la “nube” de electric imp

Para ello accederemos a https://plan.electricimp.com/login

Una vez tengamos listo el hardware y estemos registrados en electric imp …

D) Conectamos nuestra e-imp al impee y lo encendemos
E) Cargamos los datos de conexión Wifi en la tarjeta vía móvil

Para esto, y una vez energizada la tarjeta, hemos de descargar la aplicación – bien para Android o para iOS  -indicada para nuestro teléfono.

Esta aplicación nos pide los datos de acceso (correo y password) con los que nos registramos en la “nube” de electric imp, por lo que nuestro teléfono será el “nexo” de unión entre los datos de hardware del impee y nuestra cuenta en electric imp.

Luego, haciendo uso de la tecnología “Blink-up” (registrada por electric imp) configuraremos los datos wifi en la misma (SSID y password) y enfrentaremos la pantalla del teléfono al canto de la electric imp. Esta incorpora un foto-receptor que se encarga de recibir la transmisión y programar los parámetros adecuados.

Al terminar el proceso, el diodo interno de la electric imp debe hacer un breve parpadeo en color verde. En principio ya estará conectada a internet. En el caso que tengamos que interpretar los códigos del LED interno de la imp podemos verlos aquí .

Nota: conviene no hacer uso de los canales 12 y 13 ya que al no existir en la norma USA es muy probable que nuestra Californiana electric imp no se entienda con ellos … es solo una sugerencia.

El proceso – aunque en inglés – también puede consultarse aquí.

F) El conjunto imp-impee se conecta a Internet
G) Accedemos con nuestro login a electric imp

H) Comprobamos que se ha creado una “ficha” con nuestro dispositivo.

Lo hacemos en la opción impees del menú superior

I) Comenzamos a programar …

Pues eso, ahora vamos con el primer programa. Para seguir la costumbre establecida por Mr. Ritchie ¿por qué no un Hola Mundo típico?, pues vamos a ello…

– Programando la primera aplicación –

Vamos a seguir los pasos básicos para un programa sencillo. Una vez “logeados” en electric imp, lo primero que tendremos que hacer es acceder a la zona etiquetada como “code” y allí – tras pulsar el símbolo “+” de la esquina superior izquierda – teclearemos un pequeño programa inicial. Por ejemplo este:

// Programa 01 Diverteka
imp.configure(“DIVERTEKA_00”,[ ],[ ]);
server.show(“¡Hola Mundo!”);
// Fin de programa

Una vez acabado podemos guardarlo y ejecutarlo, lo que produce un efecto visual en el planner ( vamos a él desde el menú superior). El resultado ha de ser algo similar a este:

Nota: conviene re-conectar el e-imp tras acabar con el código ya que este tiene un tiempo en el que entra en reposo y no podremos cargar y ejecutar el programa.

Parece que – según los foros del dispositivo – en algunas situaciones se ha dado el caso de que el entorno no carga correctamente el primer programa ? … pero al parecer esto se soluciona creando un segundo programa con idéntico contenido e intentando cargar este.

Pero veamos cómo interacciona el nodo del planner con el resto del entorno. Vemos que el “nodo” básico que nos muestra el entorno gráfico (planner) tiene varias zonas. Estas pueden describirse más o menos así:

– Zona ID : aquí aparecerá el identificador declarado en nuestro programa.
– Zona CARGA SOFT : nos mostrará un campo desplegable para cargar uno de los programas realizados
– Zona EDITOR : nos envía directamente al editor de código.

Nota: el icono de CARGA SOFT se atenua y no nos deja usarlo si la imp ha pasado a reposo. Veremos luego una solución a esto…

Si queremos seguior el tutorial descrito en la WiKi del fabricante (en inglés) podemos hacerlo aquí .

A los más expertos – y con ganas de “comerse” el lenguaje Squirrel que maneja este dispositivo – les aconsejamos consultar la API del mismo.

– Programando la segunda aplicación –

Una vez que estemos duchos en la forma en que opera la e-imp podemos hacer variaciones en nuestra primera aplicación y comprobar sus efectos. Pero si lo que queremos es hacer uso de las posibilidades hardware (léase patillas de control externas) vamos a hacerlo en este segundo ejemplo.

Siguiendo el segundo ejemplo del fabricante vamos a comentar la forma de utilizar una de las patillas del imp como salida digital.

Antes de nada os comentamos que las 6 patillas que tiene electric imp como utilizables por programa (descontado las de la propia alimentación y uso interno) se pueden pre-configurar en varios modos. Tenemos una tabla que resume dichos modos aquí .

Ahora, prepararemos el hardware añadiendo un diodo LED a la patilla 9 de nuestra imp tal y como indica el fabricante, la cual se configura en modo salida vía software.

Es muy importante no olvidar la resistencia limitadora, ya que si no la colocamos podríamos destruir la salida del imp por un consumo elevado. Puede ser algo superior (circularía menos intensidad) pero nunca inferior a los 390 ohmios recomendados.

Nota para los no-especialistas en electrónica…

Al conectar el circuito, la única duda que podría surgirnos es cómo identificar las patillas del diodo LED. Debemos fijarnos que la del cátodo (K) suele ser algo más corta, que la zona visible al trasluz es mayor también en el cátodo y que si vemos el LED desde arriba, el cátodo tiene en su zona una muesca.

El código a teclear esta vez en la web sería, (lo hemos traducido y adaptado):

// Programa 02 Diverteka
// Variable que contiene el estado del LED
local ledState = 0;
// funcion de parpadeo, llamada cada 100ms
function blink()
{
// Cambia el estado
ledState = ledState?0:1;
// Muestra el estado en el pin de salida
hardware.pin9.write(ledState);
// Programa el próximo cambio de estado
imp.wakeup(0.1, blink);
}
// Configura pin 9 como salida en colector abierto y con resistencia de pull up (interna)
hardware.pin9.configure(DIGITAL_OUT_OD_PULLUP);
// Registro en el servidor
imp.configure(“DIVERTEKA_01”, [], []);
// Comienzo del parpadeo
blink();
// Fin del codigo.

Nota: hay que tener cuidado, ya que en la descripción del tutorial web se olvida el paso de la declaración de la variable “ledstate”. Así que es mejor ir al código final y teclearlo entero (o copiarlo).

Ahora, al ejecutar el código veremos parpadear el LED. Podemos variar la función blink para que el parpadeo varíe en frecuencia.

El aspecto del imp montado en una pequeña placa de prototipos sería algo así:

– Evitando el modo reposo –

En el caso de que deseemos controlar a distancia nuestra imp hemos de acceder vía web al código de la misma. Una vez allí efectuaremos las modificaciones precisas y estas – al pulsar la tecla ejecutar – se transferirán directamente al imp que comenzará a ejecutar el nuevo código.

Pero puede suceder que el imp entre en modo reposo, y que en está situación no podamos acceder al mismo. Para esto hay dos soluciones, a saber, una pasa por re-conectar nuestro hardware, lo cual no parece muy práctico si estamos en la otra punta del mundo; y la otra es añadir a nuestro dispositivo una función de “watchdog” que haga que el mismo se despierte cada cierto número de segundos. En este caso no perderíamos nunca el acceso (salvo, claro esta, que se desconecte la alimentación).

Un código que hace uso de la función de watchdog podría ser algo así:

// Programa 03 Diverteka
// Variable que contiene el estado del LED
local ledState = 0;
// funcion de parpadeo, llamada cada 100ms
function blink()
{
// Cambia el estado
ledState = ledState?0:1;
// Muestra el estado en el pin de salida
hardware.pin9.write(ledState);
// Programa el próximo cambio de estado
imp.wakeup(0.1, blink);
}
function watchdog()
{
imp.wakeup(60,watchdog);
server.log(“Imp se desperto…”);
}
// Configura pin 9 como salida en colector abierto y con resistencia de pull up (interna)
hardware.pin9.configure(DIGITAL_OUT_OD_PULLUP);
// Registro en el servidor
imp.configure(“DIVERTEKA_02”, [], []);
// Comienzo del parpadeo
blink();
watchdog();
// Fin del codigo.

En este caso, además de llamarse a la función blink – que ahora parpadea mucho más rápido, a 0,1 seg – se llama a watchdog, la cual cada 60 segundos (esto puede variarse) hace que el imp escriba un mensaje en el Log de la web, con lo cual ¡ se despierta ! y podemos por tanto acceder a él.

Así que ¡ a divertirse  con el electric imp !

 

 

  Bitcoin Currency Converter
Amount of BTC to convert
To currency:
1BTC =