Editing Hola Mundo eImp

Jump to: navigation, search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 2: Line 2:
 
== Hola Mundo eImp ==
 
== Hola Mundo eImp ==
  
ESTADO: Verisón Inicial
+
ESTADO: borrador
 
Miembros: [[User:Tumaku]]
 
Miembros: [[User:Tumaku]]
  
Line 17: Line 17:
 
* un hardware (''"imp"'') que combina un microcontralador con un módulo wifi. Puede conectarse automáticamente a una red inalámbrica y desde ahí a internet. El micro puede programarse en remoto
 
* un hardware (''"imp"'') que combina un microcontralador con un módulo wifi. Puede conectarse automáticamente a una red inalámbrica y desde ahí a internet. El micro puede programarse en remoto
 
* un servicio en la nube que permite ejecutar agentes en el servidor de electric imp. Los agentes pueden conectarse de forma segura a internet y a los dispositivos ''imp''
 
* un servicio en la nube que permite ejecutar agentes en el servidor de electric imp. Los agentes pueden conectarse de forma segura a internet y a los dispositivos ''imp''
* un entorno de desarrollo IDE y una consola (también en la nube) que permiten desarrollar y depurar aplicaciones desde un navegador y descargarlas tanto al servidor de electric imp como a los dispositivos ''imp''
+
* un entorno de desarrollo IDE y una consola (también en la nube) que permiten desrrollar y depurar aplicaciones desde un navegador y descargarlas tanto al servidor de electric imp como a los dispositivos ''imp''
  
 
Se sigue el tutorial [http://www.electricimp.com/docs/gettingstarted/ Getting Started] del [http://www.electricimp.com/docs/ Dev Center] de electric imp
 
Se sigue el tutorial [http://www.electricimp.com/docs/gettingstarted/ Getting Started] del [http://www.electricimp.com/docs/ Dev Center] de electric imp
Line 60: Line 60:
 
==== 2º Paso: Cargar la aplicación Hola Mundo ====
 
==== 2º Paso: Cargar la aplicación Hola Mundo ====
 
Uno vez configurado el dispositivo imp y la cuenta en el servidor, vamos a seguir el tutorial [http://www.electricimp.com/docs/gettingstarted/2-helloworld/ Hello world] para cargar y ejecutar el primer programa, el "Hola mundo" de los objetos conectados.
 
Uno vez configurado el dispositivo imp y la cuenta en el servidor, vamos a seguir el tutorial [http://www.electricimp.com/docs/gettingstarted/2-helloworld/ Hello world] para cargar y ejecutar el primer programa, el "Hola mundo" de los objetos conectados.
 
Tras crear el circuito con un LED y una resistencia y conectarlo al imp como se indica en la figura del tutorial, hay que realizar los siguientes pasos:
 
 
* Hacer login en la página de electric imp para acceder al IDE
 
* En el menú de navegación de la izquierda pulsa en "New Devices" para expandir la lista de dispositivos
 
* Pulsar sobre el icono de configuración a la derecha del nuevo dispositivo imp que acabamos de flashear (su nombre será una ristra de caracteres hexadecimales)
 
* Se puede cambiar el nombre del dispositivo a algo más amigable ("Makespace Imp" por ejemplo). Este nombre se asocia a la placa April y no al dispositivo imp propiamente dicho
 
* Pulsar sobre la lista desplegable "Associated Model" y escribir el nombre del nuevo modelo que vamos a crear "Hello world". Pulsar "Save Changes"
 
* El modelo "Hello world" aparecerá en el menú de navegación de la izquierda y pulsando sobre él se muetra el nombre de nuestro dispositivo. Directamente o pulsando sobre el nombre del dispositivo, la sección principal del IDE mostrará el editor de código donde vamos a codificar la aplicación
 
* Nuestra aplicación sólo utiliza código en el dispositivo (no requiere un agente en el servidor) con lo que nos situaremos en el cuadro de texto llamado "Device".
 
La aplicación del servidor se incluiría en la caja llamada "Agent". La tercera caja "Log" es el equivalente del Monitor serie del IDE de Arduino, tanto aplicaciones de dispositivo como agentes del servidor pueden escribir en tiempo real sobre el IDE utilizando el comando:
 
 
server.log("Mi texto");
 
 
* Copiar y pegar el siguente código en la caja "Device"
 
 
imp.configure("Hello World", [], []);
 
 
// create a global variabled called led,
 
// and assign pin9 to it
 
led <- hardware.pin9;
 
 
// configure led to be a digital output
 
led.configure(DIGITAL_OUT);
 
 
// create a global variable to store current
 
// state of the LED
 
state <- 0;
 
 
function blink() {
 
  // invert the value of state:
 
  // when state = 1, 1-1 = 0
 
  // when state = 0, 1-0 = 1
 
  state = 1-state; 
 
 
  // write current state to led pin
 
  led.write(state);
 
  server.log("Estado" + state);
 
  // schedule imp to wakeup in .5 seconds and do it again.
 
  imp.wakeup(0.5, blink);
 
}
 
 
// start the loop
 
blink();
 
 
* Pulsar el botón "Build and Run" en la parte superior del IDE. La aplicación se compilará y si hay errores se mostrarán en la consola. Si todo va bien, tras la compilación el servidor de electric imp cargará la aplicación en nuestro imp a través de internet y la conexión wifi (el imp debe estar encendido y conectado a la red wifi)
 
* Una vez cargada la aplicación, el imp empezará a ejecutarlo y el LED parpadeará. Cada vez que cambié el estado del LED también aparecerá un mensaje en la caja Log del IDE
 
 
===== Explicación básica del código =====
 
electric imp utiliza un lenguaje de programación llamado [http://www.squirrel-lang.org/doc/sqstdlib3.html Squirrel]. Lo mejor para aprender es empezar a jugar con los ejemplos de código disponibles en la sección [http://www.electricimp.com/docs/api/ API Docs] del Dev Center de electric Imp.
 
 
Un programa se ejecuta en modo secuencial empezando por la primera línea.
 
Las funciones se definen precedidas por el keyword 'function'. Pueden colocarse en cualquier parte del código y no forman parte del flujo secuencial. Por ejemplo, en el programa "Hello world" se define la función "function blink()" para cambiar el estado del LED. Sin embargo, esta función sólo se ejecuta porque al final del código hay una línea que la llama:
 
blink();
 
 
Las variables se inicializan al principio. Se les puede asignar números, cadenas, PINes,... El programa "Hello world" define una variable para gestionar el PIN al que se conecta el LED y otra variable para definir su estado.
 
 
Todo el código se realiza en la función blink(). Básicamente cada vez que se llama a está función se cambia el estado del LED y se escribe el PIN en consecuencia. También se envía un mensaje al Log del servidor indicando el cambio de estado
 
server.log("Estado " + state);
 
 
Realizado esto, se le dice al imp que entre en modo ''sleep'' durante medio segundo y que cuando vuelva a despertarse ejecute de nuevo la función blink() para así generar el parpadeo del LED
 
imp.wakeup(0.5, blink);
 
 
=== Y ahora, ¿qué?===
 
El siguiente paso será implementar un agente en el servidor. Hay un ejemplo en el tutorial [http://www.electricimp.com/docs/gettingstarted/3-agents/ Agents]. Después es cuestión de trastear por los ejemplos en [http://www.electricimp.com/docs/api/ API Docs] e ir aprendiendo sobre la marcha.
 
 
Con la ayuda de Hugo de electric imp creé un ejemplo para conectar un lector NFC a un imp y enviar la identidad de las tarjetas leídas al servidor. El código y una pequeña explicación están disponibles en [https://github.com/jmgjmg/eImpNFC github] Podríamos crear un proyecto sobre esto para la gestión de la puerta o el acceso a las máquinas.
 
 
También he documentado un ejemplo de un termómetro conectado que utiliza electricImp y muchas otras cosas [http://wiki.makespacemadrid.org/index.php?title=Term%C3%B3metro_conectado_online]
 
 
 
[[Category:Proyectos]][[Category:Internet de las cosas]][[Category:Electric Imp]]
 

Please note that all contributions to Wiki Makespace Madrid may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Wiki Makespace Madrid:Copyrights for details). Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to type the two words you see in the box below:

Cancel | Editing help (opens in new window)