Tutorial 0: Iniciando con Galileo

Versión 7

     

    Paso 1: Introducción


    https://communities.intel.com/servlet/JiveServlet/showImage/235089/tutorial_header_images_class0.jpg

    Bienvenidos, este es el inicio de un viaje al mundo de la microelectrónica. Esta es la primera entrega de una serie de tutoriales diseñados para ayudarte a construir el siguiente gran dispositivo electrónico.

    Después de haber completado esta lección, serás capaz de:

    • Comprender la estructura básica  de un programa Arduino.
    • Escribir código con una correcta sintaxis.
    • Tener una noción básica de la interfaz de programación Arduino.
    • Afrontar un primer conjunto de desafíos de diseño.

     

     

    Antes de iniciar, es importante conectar la fuente de alimentación antes de conectar el cable micro USB entre la tarjeta y la PC. Conectar el cable micro USB sin alimentación puede resultar en un daño a tu tarjeta Galileo. Una vez que la fuente de alimentación ha sido conectada, un LED verde marcado con la etiqueta "ON" (localizado en la parte izquierda inferior de la tarjeta) se encenderá. Después de uno segundos, un segundo LED marcado como "USB Client" (encima del conector USB) se encenderá, indicando que la placa de desarrollo está lista para utilizarse.
     
      https://communities.intel.com/servlet/JiveServlet/showImage/235090/0_right_wrong.jpg0

     

    Características de la placa de desarrollo Galileo

     

    Arduino

    Galileo es la primera placa de desarrollo Arduino basada en la arquitectura Intel. Los conectores (Donde se conectan cables a la placa de desarrollo) están basados en el modelo de terminales Arduino 1.0, el cual también es utilizado por las placas de desarrollo Arduino Uno R3. Esto permite el uso de shields compatibles (modules que se pueden insertar en los conectores), extendiendo la funcionalidad de la placa de desarrollo Galileo. Al igual que la placa de desarrollo Arduino Uno, Galileo ofrece 14 terminales digitales de entrada/salida, 6 terminales de entrada análogas, un puerto serie, y un conector ICSP para programación serial.

     

    Quark

    Galileo contiene el procesador para aplicaciones Intel Quark SoC X1000, diseñado para aplicaciones de Internet de las Cosas (Internet of Things). Intel Quark es un procesador más pequeño y eficiente en consumo de energía en comparación con el procesador Intel Atom, lo que lo hace una gran elección para proyectos pequeños en tamaño y de bajo consumo de energía.

     

    Ethernet

    En la parte superior de la placa de desarrollo, justo a un lado de lo que parece un conector de audífonos, se encuentra un puerto 100Mb Ethernet lo que permite a Galileo conectarse de manera inmediata a una red alámbrica. Una vez que la placa de desarrollo está conectada a Internet, cualquier cosa es posible.

     

    Mini-PCIe

    Galileo es la primera placa de desarrollo certificada por Arduino que provee un puerto de comunicación mini PCI Express (mPCIe). Esto permite conectar módulos estándar mPCIe como WiFi, BlueTooth o adaptadores de tarjetas SIM de telefonía celular a la placa de desarrollo Galileo.

     

    Reloj de Tiempo Real (RTC)

    Sincroniza datos entre diferentes módulos de la placa de desarrollo Galileo, o entre placas de desarrollo Galileo por medio del Reloj de Tiempo Real. Utilizando la biblioteca de tiempo proporcionada por Arduino puedes agregar la funcionalidad de un cronometro a tu aplicación. Proyectos con conexión inalámbrica pueden sincronizarse entre placas de desarrollo por medio del Protocolo de Tiempo de Red (Network Time Protocol) y con los datos de tiempo proporcionados por el Sistema de Posicionamiento Global (GPS).

     

    microSD

    Utiliza el lector de tarjetas SD de Galileo con la librería de manejo de tarjetas Secure Digital (SD) de Arduino. A diferencia de otros Arduinos, Galileo no salva tu sketch (programa) sin la presencia de una tarjeta SD. Sin esta tarjeta, tu programa se borra al momento de cortar el suministro de energía a Galileo.

     

    Linux

    Utilizando una imagen de Linux para Galileo, puedes tener acceso a puertos seriales, WiFi, manejo de periféricos avanzados como la Arquitectura Avanzada de Sonido de Linux (ALSA) o Video4Linux (V4L2), uso de lenguajes de programación de alto nivel como Python, uso de terminales remotas Secure Shell (SSH), Node.js y OpenCV. Para hacer uso de estas características es necesario contar con una tarjeta microSD. Toma ventaja del poder de procesamiento de la arquitectura Intel Quark y crea algo Increíble.

     

     

    Paso 2: Manos a la obra

     

    Descarga e Instala

    Si cuentas con una versión de Arduino instalada en tu sistema, es posible que debas de des instalarla. La placa de desarrollo Galileo utiliza una versión especial del software de Arduino para la carga de programas.

    Para asegurar el correcto funcionamiento de la placa de desarrollo Galileo es necesario tener instalado el driver más nuevo para tu sistema operativo.

     

    La versión más actual del driver la puedes encontrar en la siguiente liga:

    communities.intel.com/docs/DOC-22226

     

    Este tutorial fue desarrollado con la versión 1.5.3 de Arduino.

    Para instrucciones más detalladas sobre la instalación del IDE de Arduino para la placa de Desarrollo Intel Galileo, consulta la guía Getting Started:

    communities.intel.com/docs/DOC-21838


    Resolución de problemas

    ¿Tienes algún problema con el software Arduino o con la placa de desarrollo? Sigue los siguientes pasos, en caso contrario prosigue a la siguiente sección para explorar el entorno de desarrollo de Arduino.

     

    Paso 1: Conecta la fuente de alimentación en primer lugar.


    Como la mayoría de las placas  Arduino, Galileo es alimentado por una fuente de cinco volts de electricidad.  La fuente de alimentación proporcionada con tu placa de desarrollo está  diseñada para entregar un máximo de cinco volts. El uso de una fuente de  alimentación diferente que entrega un voltaje mayor a cinco volts puede dañar  tu Galileo.

     

    Conecta la fuente de poder a la toma corriente. De manera gentil inserta el conector de la fuente de poder en la placa Galileo. Una vez que el LED marcado en la placa como "USB" encienda, el puerto serial-USB estará listo para transmitir y recibir datos.

     

    Paso 2: Inserta el cable micro USB.

    Existen dos entradas micro USB en la placa de desarrollo. De manera cuidadosa inserta el cable USB en el puerto marcado como "USB Client". El otro puerto, marcado como "USB Host", puede ser utilizado para conectar periféricos, como un teclado, a la placa Galileo.

     

    Paso 3: Inserta el cable micro USB.

    Abre el software de Arduino. Localiza el menú Tools, dentro de este menú selecciona el submenú Board, dentro de este último selecciona como placa de desarrollo Intel® Galileo. Nuevamente en el menú Tools, busca el submenú Serial Port. Dentro del último menú mencionado deberás de ver el listado de todos los puertos seriales disponibles en tu ordenador. Todos los nombres de los puertos series iniciaran con "tty" o "cu", en caso trabajar con Linux, en el caso que tu sistema operativo sea Windows, tus puertos seriales iniciaran con el prefijo "COM".

     

    La segunda parte del nombre describe el tipo de puerto. Debes de buscar en la lista un puerto serie que inicie con "cu", seguido por ".usbmodem" y terminando con una combinación aleatoria de letras y números, por ejemplo "fa141" o "fa121".

     

    Una vez que establezcas de manera satisfactoria la conexión, deberás ser capaz de ver en la esquina inferior derecha la leyenda "Intel® Galileo on {nombre de tu puerto serial}".

     

    ¿Se muestra la lista de puertos?

    Esta situación sucede de vez en cuando. Utiliza el viejo método de, "desconéctalo y vuélvelo a conectar" (El cable USB). La computadora al detectar un nuevo dispositivo USB volverá a iniciar la conexión de datos, recibiendo todo el tráfico de la placa Galileo a la computadora.

    Recuerda, es importante cerrar el software de Arduino antes de desconectar el cable USB la computadora. Repite este proceso de desconexión - reconexión varias veces hasta que el puerto sea identificado por tu computadora. En algunos casos, el reiniciar tu ordenador puede ayudar en el proceso de resolución de este problema.

     

    Actualización de Firmware

    Si aún no has efectuado la actualización del software residente en la placa Galileo, es importante que la lleves a cabo antes de continuar con este tutorial. Después de conectar la placa a tu computadora y de seleccionar el puerto serie correcto, dirígete al menú Helpen el IDE Arduino y selecciona Firmware Update. Este proceso puede tomar varios minutos. Sigue las instrucciones desplegadas por el IDE hasta que el proceso de actualización finalice.

     

     

    Paso 3: El IDE de Arduino

     

    Equipo Requerido

    • Placa Intel® Galileo
    • Fuente de poder compatible con Galileo
    • Cable micro USB (Tipo B)
    • Software de Arduino instalado y configurado. (Este tutorial utiliza la versión 1.5.3)

     

    Sketch de ejemplo

    Cada vez que se crea un nuevo archivo, el IDE Arduino muestra un sketch con los elementos mínimos de un programa Arduino. Echemos un vistazo a la interfaz de usuario:

     

    https://communities.intel.com/servlet/JiveServlet/downloadImage/235091/bare-min.gif

    Interfaz de usuario del IDE Arduino.

     

    De izquierda a derecha, cada icono representa:

           
    • https://communities.intel.com/servlet/JiveServlet/downloadImage/235092/icon-verify.gifVerificar

    Compila el Sketch actual. Utilízalo cuando quieras verificar si tu código contiene errores antes de cargarlo a la placa.

    • https://communities.intel.com/servlet/JiveServlet/downloadImage/235093/icon-upload.gifCarga

    Carga a la placa Galileo el Sketch actual.

    • https://communities.intel.com/servlet/JiveServlet/downloadImage/235094/icon-new.gifNuevo Sketch

    Abre una nueva ventana del IDE arduino.

    • https://communities.intel.com/servlet/JiveServlet/downloadImage/235095/icon-open.gifAbrir

    Abre un archivo.

    • https://communities.intel.com/servlet/JiveServlet/downloadImage/235096/icon-save.gifSalvar

    Salva el Sketch actual.

    • https://communities.intel.com/servlet/JiveServlet/downloadImage/235097/icon-serial-monitor.gifMonitor Serial

    Abre un monitor de transmisiones seriales. Muy útil para  depurar Sketches.

    • https://communities.intel.com/servlet/JiveServlet/downloadImage/235098/icon-options.gif

    La flecha bajo el Monitor Serial te da opciones como agregar un nuevo sketch al proyecto actual. Esta última  acción abre una nueva pestaña en la misma ventana del IDE.

    El número en la esquina inferior izquierda muestra el número de línea en la cual se encuentra el cursor.

     

    TIP: El archivo mostrado en la  imagen del IDE de Arduino, de nombre "BareMinimum", puede  ser encontrado bajo los menús File > Examples > 0.1 Basics. Revisa que  otros ejemplos se encuentran en el IDE y experimenta con ellos!


    Comentarios

    Dos diagonales consecutivas ("//") representan el inicio de un comentario dentro del código. Cuando tu código es cargado a la placa Galileo, todo el texto precedido por doble diagonales será ignorado por el compilador.

    Los comentarios son útiles para dejar notas para ti mismo, o para personas que lean tu código. También puedes escribir comentarios que abarquen múltiples líneas. Una diagonal y un asterisco ("/*") indica el indica el inicio de un comentario que ocupara múltiples líneas. Un asterisco seguido de una diagonal ("*/") indica el fin de un comentario de múltiples líneas.

     

    /* Estas leyendo un
    ejemplo de comentarios
    con múltiples líneas*/

     

    Variables

    Manejar datos a través de todo el programa puede resultar en una tarea confusa rápidamente. Las variables funcionan como contenedores  que almacenan diferentes tipos de datos. Utilizar variables para almacenar los datos que se manejan a través del programa es una manera efectiva de mantener el código organizado y de fácil lectura.

     

    Cuando se declara una variable (Se menciona por primera vez en el programa), es necesario seleccionar el tipo de datos que almacenara. Por ejemplo, si planeas medir la intensidad de una fuente de luz utilizando un foto sensor, es necesario almacenar la lectura con una gran precisión. Declarar una variable del tipo double reservara el espacio necesario en memoria para almacenar un número con punto decimal, una representación de alta precisión para el dato del foto receptor.

     

    Ejemplo:

     

    double medicion_luz


    Donde double es el tipo de variable y medicion_luzes el nombre de la variable. Para utilizar la variable en tu código solo debes de referirte a ella por el nombre que le asignaste.

     

    TIP: Dar nombres a las variables puede resultar complicado algunas veces. Asigna nombres que se relacionen con lo que representa el valor almacenado en la variable. Si el nombre está formado por dos o más palabras, utiliza un guion bajo ("_") entre cada palabra con el fin de facilitar la lectura del nombre. Cada que hagas referencia a una variable en el código, revisa que el nombre se ha escrito de manera correcta, ya que cualquier diferencia podría  ocasionar que tu programa no compile de manera satisfactoria.

     

    Para mayor información sobre los tipos de datos y variables, visita la página de referencia de Arduino: http://arduino.cc/en/Reference/HomePage


    Funciones

    En la imagen del IDE Arduino has tenido la oportunidad de observar dos de los bloques básicos que forman un Sketch, las funciones setup y loop. Todos los programas requieren el uso de estas dos funciones ya que son parte de la estructura mínima para que un Sketch compile de manera satisfactoria.

     

    La función setup es donde se declaran las variables que utilizaras a través de tu Sketch, además en esta misma función se inicializan las terminales de Galileo que interactuaran con otros componentes.

    La función loop es el centro de tu programa. Esta se ejecuta de manera periódica, repitiendo las instrucciones dentro de ella una y otra vez. Las instrucciones contenidas en esta función representan la tarea que lleva a cabo tu programa.

    Al igual que las variables, las funciones tienen diferentes tipos. Las funciones setup y loop son del tipo void (vacío). Esto quiere decir que estas funciones están diseñadas para ejecutar las instrucciones dentro de ellas, sin embargo no deben de regresar ningún dato una vez que finalicen su tarea. Funciones que si regresan un dato como resultado de su trabajo serán abordadas en lecciones futuras.

     

    Paso 4: Hola Mundo

     

    pin13

    Esta sección puede resultar familiar si ya has completado las instrucciones en el documento:Intel® Galileo Getting Started.

    Al igual que la mayoría de las placas de la familia Arduino, el pin 13 se encuentra conectado a un LED. Un buen comienzo es el ejecutar un Sketch que manipule a este LED. Aunque el encender un LED no es muy excitante, este resulta un buen primer paso en el desarrollo de aplicaciones para tu placa Galileo.

    La gran mayoría de los LEDs son sensibles a la electricidad que los alimenta. Al igual que tu placa Galileo, los LEDs y otros módulos externos tienen un límite en el voltaje que pueden recibir antes de que estos se empiezan a sobre calentar y resulten dañados. Como ingeniero, aprenderás a calcular la resistencia necesaria para reducir el voltaje aplicado a tus módulos, de manera que solo la cantidad necesaria de corriente fluya a través de ellos. Con esto, tu equipo y circuitos se mantendrán a una temperatura óptima de operación sin riesgo de resultar dañados. Recuerda, una resistencia sirve para limitar la cantidad de corriente que fluye dentro de un circuito eléctrico.

     

    Cargando un Sketch

    El software de Arduino contiene un gran repertorio de códigos de ejemplo para ilustrar el uso de los componentes disponibles en las placas de desarrollo. Para ejecutar tu primer Sketch, accede a los siguientes menús:

    File > Examples > 01.Basics > Blink

    En este punto, ya debes de haber establecido comunicación entre tu placa Galileo y tu ordenador a través del puerto serial. Para confirmarlo, revisa la parte inferior derecha del software Arduino en busca del nombre del puerto serial al que se encuentra conectado la placa Galileo.

     

    https://communities.intel.com/servlet/JiveServlet/downloadImage/235099/serial-port-1.gif

     

    El nombre de tu puerto serial puede ser diferente. Siempre selecciona el puerto que inicie con "cu.usbmodem". Si te encuentras trabajando en una computadora con sistema operativo Windows, el nombre del puerto iniciara con prefijo "COM".

    Cuando te encuentres listo para ejecutar el Sketch ejecuta la siguiente acción:

    File > Upload

    TIP: Siempre hay más de una forma de ejecutar una acción dentro de una aplicación. Cuando ejecutes el comando "Upload" seleccionándolo a través del menú "File" podrás percatarte de existe un atajo a través del teclado (Ctrl + U). Memoriza estos atajos, son una forma de maximizar tu tiempo explorando Arduino.


    Una vez que el Sketch está cargado, deberás ver el LED en la placa Galileo parpadeando.

     

    https://communities.intel.com/servlet/JiveServlet/downloadImage/235100/0_blink_sketch.gif

    Un LED parpadeando que se encuentra asociado al pin 13 de la placa.

     

    ¿Qué sucede cuando cargas un Sketch a la tarjeta?

    En primer lugar, el Sketch es compilado y almacenado en un archivo de manera temporal. Si actualmente hay un Sketch ejecutándose dentro de la placa Galileo, este será detenido. El software dentro de la placa solicita una copia del archivo que contiene el Sketch compilado, una vez cargado dentro de la placa este es ejecutado.

     

    Paso 5: En resumen

     

    Esta ha sido una corta introducción a una pequeña, pero poderosa, computadora que puedes controlar. La placa Galileo tiene un conjunto de características únicas que te permiten experimentar el mundo a través de una computadora.

    Una vez que tengas la versión correcta de Arduino ( versión 1.5.3 en este tutorial) instalada en tu ordenador, la interfaz sencilla de Arduino te permite iniciar el desarrollo de aplicaciones de manera rápida.

     

    Las dos principales funciones de un Sketch de Arduino son setup y loop. Estas proveen la estructura básica para cualquiera de tus Sketch. Las funciones setup y loop son del tipo void (vacío) por que no regresan ningún datos al terminar su ejecución.

    Existen diferentes tipos de variables para el manejo de datos. El uso de variables permite el uso eficiente de la memoria y facilita la lectura del código en el Sketch. Existen dos maneras de escribir comentarios dentro de un Sketch, haz uso de ellas.

    Te encuentras aprendiendo un nuevo lenguaje! así que hay algunas palabras que tendrás que memorizar para expresarte a través de Galileo. Utiliza como referencia la guía en http://arduino.cc/en/Reference/HomePage.

     

    Algunas veces los programas no funcionan. No te desanimes! hay personas que pueden ayudarte. Busca a otros makers como tú en los foros de esta comunidad:

    https://communities.intel.com/community/makers

     

    Intel® y Arduino se han unido para crear una placa única como Galileo, propulsada por un procesador Quark. ¿Qué crearas con ella?

     

    Desafíos


    • Hay 1000 milisegundos en un    segundo. El ejemplo de parpadeo envía las señales de encendido y apagado    al LED con intervalos de 1 segundo. Alterando la función delay puedes    lograr que el LED parpadee más rápido.
    • Asignando diferentes valores (conocidos    como parámetros) a la función delay, como podrías mostrar en código morse    el mensaje S.O.S a través del LED?
    • ¿Como se vería el Sketch del    LED parpadeante si en lugar de un solo LED hubiera dos?
    • ¿Cómo podrías mejorar el Sketch    del LED con el uso de variables? Podrías utilizar una variable del tipo    entero? puedes consultar la siguiente liga como referencia: http://arduino.cc/en/Reference/Int