Martes, Octubre 24, 2017

Arduino Yún: Todo lo que debes saber

yun.jpg

¡Oye! ¿Qué vas a haser con eso si no lo usas? ¡Súbelo súbelo! Ya sé ya sé, llevo una semana desaparecido. Cosas de las vacaciones, pero ya he vuelto. Digamos que tras algunos e-mails preguntándome sobre tarjetas Ethernet no me he podido contener de explicar la tarjeta que yo uso: Arduino Yún.

La verdad es que, si me paro a pensarlo, cuando he tenido alguna duda no había nada de información en español sobre ella así que, intentémoslo. Arduino Yún (¡oye! Si compras a través de este link a ti no te sube el precio, pero yo me llevo unos cuantos eurillos para ir tirando con los gastos del blog. Vamos, que me ayudas a continuar. Para que veas que no soy tan rufián como parece) es una de las placas más nuevas sacadas por Arduino (aunque últimamente, con todos los jaleos que están teniendo, se están poniendo las pilas) y también es una de las más caras.

De hecho, siempre había pensado que eran más baratas que comprar un Arduino UNO y una shield ethernet. Pero parece que China ha conseguido reducir el precio. El problema es que así como todas las placas tienen sus planos para Eagle, en ésta solamente se dan para Orcad, un programa para crear circuitos muy de pago. Entonces parece como que no se ha extendido la fabricación de esta placa en los lares orientales.

Pero bueno, aparte del precio hay más cosas que la diferencian. Ya que por fuera, tal y como puedes ver, es un Arduino UNO. La única diferencia aparente es esa placa metálica que tiene en el medio. Bueno, eso y la alimentación.

Y es que la alimentación será de 5 Voltios y solo puede darse mediante el cable USB o, conectando energía al pin llamado Vin (está al lado de GND). ¿Cómo hacer esto? Bueno, la opción más sencilla sería comprar uno de estos cargadores como de portátil que tengan una conexión jack y que (por favor te lo suplico) ofrezcan 5 Voltios. No juguemos con tensiones más altas que ya huelo a quemado desde aquí.

Esto iría conectado a un jack hembra y de ahí tendrías que conectar o soldar tus cables. Uno es el que iría a Vin y el otro a GND. Otra opción es conectar una batería o uno de esos inventos que sirven para unir varias pilas y conectarlas a Arduino.

Conectando Arduino Yún a una red Wifi

Pero vamos a lo que realmente importa de la placa, esa plancha metalizada que tiene pegado el nombre de Arduino Yún, esa es la que nos interesa. Ahí se encuentra el módulo wifi que es el que nos va a permitir conectarnos a Internet. Para conectarse debemos de darle corriente y él mismo generará una conexión wifi. A la que deberás conectarte. Así que, una vez conectado en cualquier navegador debes de escribir http://arduino.local  y entrarás en el panel de control de Arduino. Si esto no te funciona, otra opción es la de entrar en esta dirección 192.168.240.1. Digamos que las letras son una redirección a este número.

intro.jpg

Si no te saliera la conexión, en la placa, justo al lado de la conexión USB, hay un botón. Si te acercas verás que pone WLAN arriba y RST debajo de él. Púlsalo tres-cuatro segundos. Verás una luz azul que empieza a parpadear a lo loco aunque ya no estés pulsándolo y en breves verás aparecer la conexión en tu dispositivo. Se llamará YUN y luego le seguirán millones de números aleatorios.

Si has tenido más suerte lo que deberías ver es la pantalla en la que se te pide la contraseña. La contraseña es simple, es ‘arduino’ (sin comillas, evidente). Y ya estarás dentro. Ahora debes de entrar en ‘CONFIGURE‘ que es el lugar dónde puedes toquetear cosas.

configurar.jpg

Puedes cambiar el nombre de la placa, la contraseña, el tiempo y puedes elegir la red Wifi. Si cambias el nombre, recuerda que la dirección a la que te conectaras será http://nuevonombre.local/.

Por otra parte, ¿A que viene lo del Wifi? Claro, te has conectado a un Wifi generado por Arduino, pero lo que en realidad buscas es que él mismo se conecte a Internet. Para ello lo que se hace es decirle la conexión a la que debe de conectarse (es un menú desplegable) y la contraseña de dicha red.

El problema que vas a tener es que esto te elimina la posibilidad de conectarte en universidades o lugares en los que se pide un usuario y una contraseña para conectarse. Para poder conectarte hay dos opciones: modificar el software de Arduino Yún para que lo haga o conectarlo por cable Ethernet.

Pero bueno, sigo con la conexión y luego te cuento sobre esto. Pulsando sobre ‘Configure & Restart‘ la placa se conectará por Wifi a tu conexión. Para ello tendrás que esperar mientras la barra acaba su proceso, aunque tu dispositivo se va a desconectar antes de esa red y se conectará a la más cercana. Es como un timer o una distracción creada para que le des tiempo a la placa a hacer sus cosillas y no la agobies. Que somos mucho de agobiar si nada nos para.

cargando.jpg

Una vez acabado el proceso aparecerá un link que dice que podrás encontrar la placa ahí. Si lo pulsas no es más que volver a la misma dirección que antes. Es decir, siempre que escribas http://arduino.local y estés conectado a la misma red que Arduino Yún, irás a la página de configuración del mismo.

Ahora, tu placa ya está conectada a Internet. ¿Cómo saber si eso es cierto? Una opción es, desde ese ordenador conectado a la misma red, ver si hay alguien nuevo en la red. Para eso, desde el terminal (versión Linux, en Windows no tengo ni idea) escribe sudo nmap -sP 192.168.0.1/24 (el sudo es para obtener el nombre de los dispositivos) y verás los distintos dispositivos conectados. Sino, también sabes que has podido reconfigurarlo.

Eso sí, si no has podido ya sabes, pulsa el botón secreto 3-4 segundos hasta que veas que hay una luz azul alocada que no para de parpadear a pesar de que no estés pulsando. Volverás al inicio de la conexión y Arduino generará la conexión Wifi. Si estás volviéndote loco porque no te conecta y lo estás haciendo bien. Déjalo, puede que tu conexión tenga el SSID (vamos, el nombre) oculto. Y entonces Arduino no se puede conectar a esa red. Tendrás que cambiar la visibilidad del SSID antes.

El cerebro de Arduino Yún: Linino

Bueno, una vez conectado es momento de conocer el secreto que incluye el Arduino Yún. Contiene una distribución Linux en su interior llamada Linino. ¿Esto que implica? Que además de tener la programación y los usos de un Arduino normal se pueden hacer cosas en la distribución como si de un ordenador se tratase. Es un híbrido entre Raspberry Pi y Arduino. Aunque la primera tiene una parte visual y en Arduino Yún vas a tener que hacerlo todo mediante comandos.

Bueno, la conexión la tienes y luego veremos cosas a hacer desde el típico IDE de Arduino, pero ya que está esta parte es bueno aprovecharla. ¿Para qué? Sencillo, puedes crear tus propios programas en php, python o lo que quieras para extraer datos de Internet. Desde saber si tienes una bombilla encendida en casa (tendrías que tener al menos una web que diese un uno o un cero dependiendo de eso) hasta conocer si las vistas de tu vídeo en Youtube superan el millón.

Además de leer también puedes enviar. Podría ser como el caso de la luz. Es un pequeño servidor que va subiendo los datos de una bombilla, la temperatura en casa o vete a saber qué. De esta manera podrías monitorizar un hogar, tu despacho o cualquier cosa.

¿Cómo acceder a la parte ‘inteligente’ de Arduino Yún? Debes de conectarte remotamente a la placa. Esto se hace por ssh. Voy a intentar hacerlo fácil y breve, a ver si puedo (En Linux y Mac, para Windows deberás descargarte algún programa que te permita conectarte por ssh o los hay que imitan a la terminal de Linux).

La cosa es que vayas al terminal y pongas la orden para ver qué dispositivos hay conectados a la red: sudo nmap -sP 192.168.0.1/24. Una vez reconozcas cuál es el tuyo ya sabes su dirección. Pero yo no seria Rufián si no supiese este pequeño truco. No necesitas este paso para conectarte. Lo que tienes que hacer es conectarte por ssh a arduino.local. Por eso, la orden que deberás de escribir es ssh Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. y ya está. Te pedirá que aceptes la conexión (solamente la primera vez) y luego te pedirá la contraseña (es ‘arduino’).

Instalando paquetes en Linino

Estás conectado a Arduino, ya puedes hacer el mal. Desde crear carpetas a modificar las opciones internas del sistema operativo. Eres el administrador del sistema y como tal eres el dios del mismo. Para utilizarlo tan solamente debes de pegar el archivo que vas a utilizar en php, python o lo que sea. Para llamarlo lo harás desde el IDE de Arduino, así que tranquilo.

Para la copia, puedes hacer un copiar/pegar del texto del programa (Ctrl+Shift+V ó la opción pegar de la terminal) o enviarlo desde tu pc a la terminal. Para el envío tendrás que abrir otra terminal y escribir la órden scp ruta-del-archivo Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.: Con eso, introduces la contraseña (‘arduino’) y ya tendrás en la carpeta root de Arduino Yún tu archivo listo para ser utilizado.

Eso sí, tal vez funciones como php o nodejs no estén. Hay que instalarlarlas. Para ello se utiliza el comando opkg que sustituye al apt-get que tal vez conozcas de algunas distros Linux. Bueno, repaso rápido: opkg update para actualizar, opkg install nombredelpaquete para instalar paquetes. Aquí te dejo la información oficial por parte de Arduino del YunPackageManager. Recuerda que cuando termines de utilizar la terminal, con escribir exit cortarás la conexión con la placa.

Pero bueno, si no te ves instalando cosas con la terminal, hay otra manera. Si vuelves a arduino.local, entrando en ‘CONFIGURE‘ de nuevo hay una línea en la parte superior:

For more advanced network configuration features, see the advanced configuration panel (luci)

Pulsa en el link y entrarás en un menú más amplio al que te habían prometido. De hecho si me pongo a explicarte sobre él igual no acabo nunca. Así que vayamos al grano.

Pulsa en la pestaña superior llamada ‘System‘. Una vez ahí, pulsa la pestaña ‘Software‘ del sub-menú. Y ya. Acabas de llegar a un lugar dónde encontrarás un listado de los paquetes instalados en la placa. Además, puedes buscar entre todos los ‘Available Packages‘ el paquete que te interese. Bien sea con el filtro o con el listado que hay en la pestaña de debajo de la palabra ‘Status‘. Por otra parte, si ya te sabes el nombre del paquete, con escribirlo en la primera casilla y pulsando ‘OK‘, se habrá instalado.

paquetes.jpg

Puede darse el caso en que haya paquetes que ocupen más de lo que cabe en la memoria de el Arduino Yún. Si eso pasa, tendrás que cargarte toda esa instalación que se ha quedado a medias antes. Para ello puedes entrar en la pestaña ‘System‘ -> ‘Backup/Flash Firmware‘ del menú extendido que te he enseñado antes. Y pulsando ‘Perform Reset‘ (la segunda opción) la placa volverá a estar de fábrica.

restore

Una vez con esto, hay una manera de instalar ese paquete tan grande: la tarjeta SD. ¿De verdad no te parecía raro que hubiese un orificio para la tarjeta SD y uno para un USB? La tarjeta se utiliza para aumentar la memoria interna de la placa. Pero no es algo inmediato. Tiene sus cositas. Cositas que puedes leer aquí en detalle.

Cómo comunicar Arduino y Linino

Como te he dicho, puedes extraer datos de Internet. Pero, ¿Cómo utilizarlos en Arduino? Bueno, para eso está el Bridge. Bridge es puente en inglés, digamos que es lo que comunica la parte Linux y la parte Arduino. De hecho conozco un caso en el que se rompió el bridge (cosas de las primeras placas, supongo) y se podía ver como ambas partes funcionaban pero no existía la comunicación. Varios Arduino Yún después he de decir que nunca más lo he visto ni me ha pasado. Fue algo raro.

Para empezar con el Bridge lo primero es iniciarlo. Para ello, en el IDE de toda la vida, tendrás que escribir Bridge.begin(). Imagino que sabrás que lo suyo es ponerlo en el setup() del programa.

Antes te he enlazado a la librería Bridge de Arduino pero te voy a explicar el caso en el que yo utilizo la librería y cómo. El caso es la extracción de los datos que un programa ejecutado en la parte Linux genera un resultado. El caso que te decía antes de que con php extraigo un valor y de ahí enciendo una luz o creo algún aviso.

Para eso utilizo esta estructura:

 Process proceso;
 proceso.runShellCommand("cat archivo");
 while(proceso.running());
 dato = proceso.parseInt();

Aquí lo que he hecho es crear un proceso (del tipo Process) y lo que hago es pedirle que haga una acción en la terminal de Linux. En este caso mostrar el contenido de un archivo. Mientras el proceso está haciéndose, la placa se espera. Y cuando acaba lo que hago es guardar el número que ha salido como dato. Esto me permite saber cuántas cajas tengo en un almacén o que sé yo.

Cada vez que vayas a utilizar un comando en la terminal no tienes que declarar un proceso. Lo suyo es que declares el proceso en el setup y luego que utilices libremente el runShellCommand tanto en setup como en loop. Por otra parte, tienes ejemplos en la librería que te he dicho antes para crear una web dónde Arduino publique la temperatura o crear un cliente HTTP que lea una página web y la saque por el puerto Serie.

Vamos, frikadas todas las que quieras. Pero bueno, que al final es una placa con conexión a Internet.

Conectando mediante cable Ethernet

Otra forma de conexión a Internet es mediante cable Ethernet. Ya te he comentado que si tienes una red que pida usuario para conectarse andas jodido. Aquí puedes conectar la placa directamente al router o utilizar un pc.

En el router es algo directo, para utilizar el pc lo que se hace es que el pc es el receptor de Internet y envía la conexión por cable al Arduino Yún. Sí sí, es una solución desesperada pero a veces no hay más remedio. Para hacerlo lo que tienes que hacer es configurar que la conexión cableada se comparta. En Ubuntu y similares se hace entrando en la conexión cableada y en las opciones de IPv4 cambiar el método automático por el método ‘Compartida con otros equipos‘.

Pero bueno, cada distribución y cada sistema operativo tiene sus cosas. Tendrás que buscarlo. Un poco de ‘compartir conexion por ethernet xxx‘ en Google, dónde xxx es tu sistema operativo, puede ser de utilidad.

Una última cosa…

Y bueno, por fin llegaste al final. Si te lo has leido todo: enhorabuena, you are a champion! En serio, seguramente con la lectura en F, en diagonal y todas esas mierdas a las que tendemos ahora yo mismo no me lo habría podido leer del todo. Antes de despedirme quería decir solo una diferencia que he encontrado con Arduino UNO y similares y que puede volver loco a más de uno.

La cosa es que el nivel de LOW y HIGH varía según la placa. El Arduino UNO tiene un microcontrolador ATmega328. En éste el nivel LOW en una interrupción empieza al bajar de 3 Voltios. En el caso del Arduino Yún, el microcontrolador es un ATmega32U4, igual que en el Arduino Leonardo. Esto lo que implica, a parte de algunos cambios en pines y tal, es que el nivel bajo empieza en 1 Voltio.

Por lo que si tienes un proyecto en Arduino UNO y lo pasas a Arduino Yún, puede que tengas problemas con las interrupciones. Ten cuidado.

Y nada, por fin he acabado con esto. Espero que conozcas ya el Arduino Yún y que te animes a comprarlo y utilizarlo en tus proyectos con Internet.

 

Fuente: rufianenlared

Compártelo. ¡Gracias!

 
Grupo Digital de Ayuda! Laboratorio Linux! - Linux para todos.

¿Quién está en línea?

Hay 67 invitados y ningún miembro en línea

Contador de Visitas

9010168
Hoy Hoy 203
Ayer Ayer 1481
Esta semana Esta semana 1684
Este mes Este mes 33869
Total de Visitas Total de Visitas 9010168

Día con más
visitantes

10-17-2017 : 1687

Gracias por su visita