[SOLUCIONADO] Intel Edison – Carga automática de sketch ARDUINO falla en versión 159 del firmware

A esta fecha (31-MAR-2016) nos topamos con la sorpresa de que al actualizar la versión del Firmware de Intel Edison a la #159.devkit (o simplemente 159) deja de funcionar adecuadamente la ejecución de sketches de Arduino al momento de reiniciar el dispositivo.

Todavía más sorprendente el hecho de que las nuevas tarjetas Intel Edison que compramos esta semana vienen con la versión 159 pre-instalada… y con el defecto.

Buscando resolver el problema, nos encontramos una entrada en el foro de Intel donde se explica una solución temporal, que consiste obtener los archivos de la versión 146 y copiarlos a la versión 159.

(!) Para facilitar el proceso hicimos una copia de los archivos en GITHUB. Seguidamente mostramos los pasos simplificados usando esta copia. 


PASO 1: Sobre-escribir los cuatro archivos contenidos en /opt/edison/ con los de la versión anterior (146) o usando los archivos en github

Para descargar los archivos al Edison se pueden usar varios métodos, uno es mediante un cliente SCP/SFTP como WinSCP; otro sería utilizando el comando wget desde el Edison si este está conectado a la Internet via WiFi así:

rm /opt/edison/* -rf

wget -O /opt/edison/clloader https://github.com/janunezc/edison_workshop/blob/master/159_fix/edison/clloader?raw=true

wget -O /opt/edison/launcher.sh https://raw.githubusercontent.com/janunezc/edison_workshop/master/159_fix/edison/launcher.sh

wget -O /opt/edison/sketch_reset https://github.com/janunezc/edison_workshop/blob/master/159_fix/edison/sketch_reset?raw=true

wget -O /opt/edison/sketch_reset.sh https://github.com/janunezc/edison_workshop/blob/master/159_fix/edison/sketch_reset.sh

PASO 2: Darle permiso de ejecución a los programas necesarios con el comando

  • chmod +x /opt/edison/clloader
  • chmod +x /opt/edison/launcher.sh
  • chmod +x /opt/edison/sketch_reset
  • chmod +x /opt/edison/sketch_reset.sh

PASO 3: Ejecutar los comandos de configuración para la auto-carga de sketches de Arduino

  • cd /opt/edison
  • systemctl enable clloader
  • systemctl start clloader

PASO 4: Rebootear de manera segura el Edison con el comando shutdown now


PASO 5: Cargar un sketch de Arduino en el Edison (por ejemplo Blink) y rebootearlo de manera segura con el comando reboot now.


PASO 6: Verifique que el sketch carga luego de apagar completamente el Edison y volverlo a encender.


FIN

Comunicación Inalámbrica usando dos NRF24L01 de bajo costo

Descripción

En este tutorial utilizaremos la librería denominada “RF24 by TMRh20” v.1.1.6 para ARDUINO IDE para comunicar dos dispositivos NRF24, uno como transmisor y otro como receptor, conectados a placas ARDUINO UNO y INTEL EDISON respectivamente.

Vamos a monitorear el resultado mediante los puertos seriales respectivos.

NIVEL INTERMEDIO

Referencias Externas

Un agradecimiento especial a terry@yourduino.com por su tutorial sobre los diferentes tipos de conexion para las multiples librerias disponibles para el NRF24.

Materiales

(*) Opcionalmente el Edison se puede reemplazar con otra tarjeta ARDUINO UNO

(!) Antes de seguir estas instrucciones asegúrese de entender las Condiciones de Uso de nuestro sitio.

Pre-requisitos

  1. Realice la configuración previa del Intel Edison (controladores, firmware, software en general) para su PC. Existen varios tutoriales para esto. Por ejemplo este.
  2. Instale el IDE de ARDUINO de https://www.arduino.cc/en/Main/Software
  3. Instale la librería “RF24 by TMRh20” en el ARDUINO IDE (Menu: Sketch > Include Library > Manage Libraries > [Install] )

rf24 manage libraries

Figura 1 – Librería RF24 by TMRh20

 

Pasos Resumidos

  1. Conecte los módulos nRF24 a las placas EDISON y ARDUINO tal y como se describe en la figura 2 abajo.
  2. Abra el ejemplo “RF24 > Getting Started” y programe con él su tarjeta ARDUINO (transmisor)
  3. Modifique el programa de ejemplo para que la variable “radioNumber” tenga un valor de 1 (ver figura 5) y programe su tarjeta EDISON (receptor) con este programa modificado.
  4. Monitoree el transmisor usando una conexion serial (Serial Monitor del ARDUINO IDE o PuTTY a 115200 baudios) y presione la tecla “T”

Procedimiento Detallado

PASO 1 –  CONEXIONES

La siguiente imagen ilustra las conexiones desde los pines del NRF24 a las placas ARDUINO o EDISON.

nrf24 pin connections

Figura 2 – Conexiones


PASO 2 – PROGRAMANDO EL TRANSMISOR

Abra el ejemplo de la librería “RF24 by TMRh20” denominado “Getting Started” (Menu: File > Examples > RF24 > Getting Started)

La variable “radio Number” definida en la línea 14 determina el modo de operación, en este caso debe ser 0 (tal y como viene predeterminada) para el transmisor.

radionumber_0

Figura 3 – Variable Radio Number para Transmisor

Cargue el programa en su tarjeta ARDUINO.

El monitor serial del IDE de arduino debe estar configurado para operar a 115200 baudios (ver figura 4).

(!) En este punto la tarjeta ARDUINO estará lista para transmitir; esperando que se conecte un receptor a la red. Puede apagar el ARDUINO por el momento.

115200

Figura 4 – Configuración de la pantalla de monitor serial


PASO 3 – PROGRAMANDO EL RECEPTOR

Utilizando el mismo programa, modifique el valor de la variable “radioNumber” para que sea igual a 1 (ver figura 5) y programe su tarjeta EDISON con esta nueva versión del programa.

radionumber_1

Figura 5 – radioNumber = 1

(!) En este punto la tarjeta EDISON estará lista para recibir datos, esperando mensajes del transmisor. Al abrir el monitor serial (SHIFT + CTRL + M) no se observará ninguna reacción. Recuerde asegurarse de que la velocidad del monitor sea 115200 baudios.


PASO 4 – PRUEBAS FINALES

Encienda el ARDUINO UNO (transmisor) conectándolo a su computador y abra el monitor serial. Verá una imagen similar a la figura 4.

Encienda el EDISON (receptor) conectándolo a la fuente de poder y al computador. Abra una terminal “PuTTY” para ver el monitoreo serial del EDISON. Recuerde la usar el puerto “Intel Virtual COM Port (COM??)” a una velocidad de 115200  como se ilusrta en la figura 6.

PuTTY_VirtualCOMPort

Figura 6 – Configurando PuTTY para monitorear el EDISON

Vaya al Monitor Serial del ARDUINO IDE y presione la tecla T

En este momento veremos como se comunican los dos equipos de manera inalámbrica como se ilustra en la figura 7.

Test_Sending_Receiving

Figura 7 – Monitoreando Transmisor y Receptor

(!) Nótese que aquí utilizamos los términos TRANSMISOR para el ARDUINO UNO y RECEPTOR para el EDISON con cierta ligereza. Ambos dispositivos transmiten y reciben en distintos momentos. El ARDUINO UNO envia datos al EDISON, el cual los envia de vuelta al ARDUINO UNO.

Intel Edison – Cómo Grabar Sonido usando un adaptador USB

Descripción

Una de las capacidades de Intel Edison que me resultan más intersantes es la capacidad de manejar dispositivos USB compatibles con LINUX, incluyendo adaptadores para grabar y ejecutar Audio.

Este pequeño proyecto nos permitirá adentrarnos en esta capacidad. Vamos a conectar un adaptador de audio USB al Edison, y vamos a grabar sonido.

Fuente: Intel’s Edison Audio Setup Guide

(!) Antes de seguir estas instrucciones asegúrese de entender las Condiciones de Uso de nuestro sitio.


En resumen:

  1. Se conecta el dispositivo de Audio al puerto USB colocando el switch de selección USB en posición “up”
  2. Se conecta el Edison a la laptop mediante el puerto serial para usar la terminal LINUX con software como putty (windows) o screen (linux)
  3. Se obtiene una lista de dispositivos de audio USB para determinar el numero de dispositivo a utilizar.
    • cat /proc/asound/pcm
  4. Se listan los puertos de audio disponibles para determinar el puerto de salida (out) y de entrada (mic).
    • pactl list | grep Name | grep usb
  5. Se configura los puertos predeterminados (sink y source)
    • pactl set-default-sink {output-device-name}
    • pactl set-default-source {input-device-name}
  6. Se ejecuta el comando arecord con los parámetros correspondientes para el adaptador en uso.
    • arecord -f cd -c 1 -d 10 -r 44100 -D hw:2,0 soundfile.wav
  7. La grabación es almacenada en un archivo soundfile.wav

Lista Recomendada de Materiales:


PASO #1 – Conectar el Edison

Para este proyecto necesitaremos conectar el Edison a un computador por medio del puerto serial USB. Esto para poder manipular la terminal linux del Edison. El purto USB Serial es el que se ubica en la parte inferior derecha. Se puede usar putty (en el caso de Windows) o screen (en el caso de Linux) para acceder a dicha terminal. En el Administrador de Dispositivos de Windows, el puerto aparece bajo el nombre “Ports (COM & LPT) > USB Serial COM Port (COMxx)


PASO #2 – Conectar el Adaptador de Audio USB edison_usb

Este proyecto se ha probado en diversos adaptadores de audio (Plantronics*, Pluggable*, SYBA*)

Se conecta el adaptador de audio USB al puerto USB principal del Edison. Nótese que el switch de selección de modo USB debe estar en posición “up” para activar el puerto USB. Esto desactiva el puerto dedicado a recibir los Sketch de ARDUINO.


PASO #3 – Listar los Dispositivos

Una vez conectado al Edison, el sistema operativo reconoce el dispositivo de audio USB. Se puede listar los dispositivos de audio conectados al Edison usando el siguiente comando. Puede ejecutarlo con el dispositivo de audio conectado y desconectado para ver la diferencia de resultado. Anote el número de dispositivo.

cat /proc/asound/pcm

cat_proc_asound_pcm


PASO #4 – Listar los Puertos de Audio

Seguidamente necesitaremos anotar el nombre de los puertos de audio, utilizando el siguiente comando.

pactl list | grep Name | grep usb

pactl_list_grep


PASO #5 – Configurar Los Dispositivo de entrada y salida de audio

Utilice los siguientes comandos para configurar los dispositivos predeterminados de entrada y de salida de audio.

pactl set-default-source {input-device-name}

pactl set-default-sink {output-device-name}

edison_set_default_audio

 


PASO #6 – EJECUTE ARECORD

El siguiente comando se usa para grabar audio del dispositivo 2,0 que anotamos en el paso #3 a un archivo “soundfile.wav”

Puede necesitar opciones diferentes de arecord dependiendo de su dispositivo de audio USB. Las opciones disponibles pueden encontrarse en este enlace.

En este ejemplo, estamos grabando 10 segundos de audio (-d 10) a un “rate” de 44100, para un dispositivo 2,0 (-D hw:2,0)

arecord -f cd -c 1 -d 10 -r 44100 -D hw:2,0 soundfile.wav


Disclaimer:

(*) Este artículo cita marcas registradas que son propiedad de sus respectivos dueños

Al momento de escribir este artículo, el autor fungía como empleado de Intel Corp

Este artículo se brinda “tal cual” y de buena fe como un método para compartir conocimientos. No se brinda garantía de funcionamiento de ningún tipo; no asumimos responsabilidad por daños o pérdidas causados al seguir estas instrucciones; salvo lo que indique la ley aplicable.

 

Un Agradecimiento especial para nuestros amigos del Laboratorio de Investigación e Innovación Tecnológics (LIIT) de UNED, con quienes hemos trabajado largas horas explorando estas tecnologías.

Edison – Linux – Cómo restablecer la conexión de Red

En otra publicación veíamos que para reiniciar la conexión de red en GALILEO se usaba un comando de init.d

Para Edison es diferente. Dado que Edison no usa init.d, hay qu usar otro tipo de comando para reiniciar:

1. Reiniciar la red:
systemctl restart wpa_supplicant.service

2. Verificar el estado del servicio de red:
systemctl status wpa_supplicant.service

o tambien…

ping google.com

Sensor de Humedad DHT11 en un Intel Galileo

IMG_20150309_183311~2

Conectar un sensor de humedad y temperatura a un Intel Galileo o Edison no es tan sencillo como uno quisiera; pero luego de preguntar en los foros adecuados, tampoco es difícil.

Aquí les comparto lo que aprendimos en el proceso (hasta hora)

  1. El DHT11 es un sensor sumamente barato y fácil de conseguir. Tiene una excelente precisión y es fácil de utilizar.
  2. Pudimos comprobar las instrucciones de DinoT_Intel en el foro, que funcionan en un Intel Galileo GEN 1
  3. Básicamente uno puede bajar los tres archivos (como lo tenemos en nuestro experimento más reciente en GITHUB) en una misma carpeta donde está el Sketch que y funciona correctamente. Tambien se puede crear una carpeta “DHT” en “~/Arduino_version/libraries/” y poner los dos archivos DHT.h y DHT.cpp ahi (pero necesitarás reiniciar ARDUINO IDE)
  4. Nuestras pruebas funcionaron en un Galileo GEN 1 a la perfección usando ARDUINO IDE versión [arduino-1.5.3-Intel.1.0.4] que se puede descargar aquí.
  5. IMPORTANTE: Utilizar 7ZIP para desempacar el achivo en c: … puede conseguirlo aquí.

Esta vez no logramos echarlo a andar en Intel Edison. Ya les contaremos si llegamos a ese punto.

Un agradecimiento especial a @spider_kenny por su contribución de conocimiento sobre tiempos determinísticos e interfases. Creo que será la base que usaremos para echarlo a andar en un Intel Edison.