Raspberry Pi – Asignando un dominio .local

Es muy probable que ha estas altura estemos bien familiarizados con el comando ifconfig, un comando que nos permite conocer la dirección IP que se le ha asignado a nuestra Raspberry Pi y que sirve de referencia para muchas de las actividades que podemos hacer con ella, acceso SSH, VNC, Web, etc.

¿Pero que sucede cuando por alguna razon olvidamos la IP, o reiniciamos el Router y le asigna una dirección diferente a la Raspi?, en el mejor de los casos tenemos el teclado y monitor conectados para ver en pantalla la nueva IP, pero, ¿y si no es así? estoy seguro que para muchos esto ha sido un gran dolor de cabeza.

Una de las maneras mas fáciles y rápidas de darle solución a este problema, es aplicando una técnica conocida como mDNS o Multicasting Domain Name Servicing, que básicamente consiste en tener un pequeño servicio (demonios en linux) en nuestra Raspi que le permita ser descubierta por cualquier equipo en la red a través de un nombre de dominio.

domain name

Antes de empezar con la instalación es importante tener las referencias y el software de nuestra Raspi actualizado, esto básicamente es una costumbre a considerar para mantener al día nuestro software y reducir al máximo los posibles bugs entre versiones. Para hacerlo solo ejecutamos:

sudo apt-get update

sudo apt-get upgrade

En caso de que aparezca algún tipo de mensaje solo tecleamos “Y” para que continue con la instalación. Posteriormente instalaremos “Avahi”, el servicio que mantendrá nuestra tarjeta visible en la red:

sudo apt-get install avahi-daemon

Prácticamente con esto seria suficiente, pero podemos mejorarlo aun mas definiendo algún nombre de dominio único que podamos recordar con facilidad y que suele ser de gran ayuda para cuando tenemos mas de una Raspberry Pi conectada a la misma red.

Para lograr este ultimo paso editamos los archivos:

sudo nano /etc/hosts

Y cambiamos la palabra “raspberrypi” de la ultima linea por el nombre que queramos asignarle, “robotcos” en mi caso. Y del mismo modo el archivo:

sudo nano /etc/hostname

reiniciamos para terminar y deberíamos poder acceder de la manera que queramos (SSH, VNC, Web) con el nombre que asignamos de la siguiente manera:

ssh pi@robotcos.local

.local es una extension reservada para LANs, por lo que al ser interpretada por un router automáticamente hace una búsqueda en la red local.

Simple no!? y mucho mas fácil de recordar que una dirección IP.

 

Advertisements

Raspberry Pi – Drivers TL-WN725N

Como ya hemos hablado en este blog, una de las maneras mas practicas de conectar nuestra Raspberry a la red y a internet es mediante WiFi, ya que así tenemos esa libertad de movernos sin problemas de cables. Existe muy poca variedad de adaptadores USB compatibles con el sistema de nuestra tarjeta y es probable que algunos de estos no los encontremos ni en la tienda mas popular de nuestra ciudad, por lo que recurrimos a comprar cualquier modelo que al llegar a casa no nos servirá.

En esta entrega veremos como agregar algunos drivers, para lograr expandir la compatibilidad de nuestra Raspi, específicamente para TL-WN725N de TP-LINK, que suele ser uno de los mas fáciles de encontrar.

c26-TL-WN723N-1-l

El primer paso es revisar la version de Linux que tenemos instalada, el comando uname -a devuelve una descripción similar a:

Linux raspberrypi 3.12.28+ #709 PREEMPT Mon Sep 8 15:28:00 BST 2014 armv6l GNU/Linux

De esta información lo que tomaremos para mas adelante es la parte 3.12.28+ #709, tengamos en cuenta que este dato puede variar para cualquiera.

En el siguiente paso debemos conectar el adaptador y mostrar el listado de los dispositivos conectados con el comando lsusb, encontraremos la descripción similar a:

Bus 001 Device 005: ID 0bda:8179 Realtek Semiconductor Corp.

Que corresponde al index y ID del adaptador USB que conectamos, el driver que instalaremos esta limitado a dispositivos con los siguientes IDs:

ID 2001:3310
ID 2001:330F
ID 07B8:8179
ID 0BDA:0179
ID 0BDA:8179

y para versiones de linux superiores a  3.12.28:

ID 056E:4008
ID 2001:3311
ID 0DF6:0076

Una vez que se tenga esta información tendremos que encontrar la relación con el archivo que tenemos que instalar en el siguiente listado:

Para mi caso  3.12.28+ #709, #710 – 8188eu-20140908.tar.gz hace match con la version de linux que tengo instalada por lo que 8188eu-20140908.tar.gz es el archivo que tendré que instalar.

La serie de comandos anteriores indica la forma de descargar e instalar, recuerden cambiar 8188eu-201xyyzz.tar.gz por el del archivo correcto para su version, 8188eu-20140908.tar.gz en mi caso.

Si llegamos hasta aquí sin ningún problema, solo restaría configurar las credenciales de nuestra red como hemos visto anteriormente (WiFi Setup) y reiniciar la Raspberry Pi, espero les sirva :).

Referencia: Raspberrypi.org (ingles)

Raspberry Pi – Multiples redes WiFi

En uno de nuestros post anteriores hablamos de como configurar nuestra Raspi para conectarse de manera automática a la red utilizando un adaptador USB-WiFi (ver aqui), así como hablamos de acceder de manera remota desde otro equipo utilizando herramientas como VNC o SSH (ver aqui), lo cual nos facilita la vida al no tener que comprar un monitor y accesorios solo para usarlos con nuestra tarjeta.

Hasta aquí todo es felicidad, la Raspi se conecta al iniciar, entramos a ella por SSH o al modo gráfico por VNC y trabajamos en casa u oficina sin ningún problema, pero ¿que pasa cuando me tengo que mover? si necesito conexión tengo que volver a configurar la raspberry para la nueva red ¿cierto? y ocupare monitor y accesorios nuevamente, ¿tendré que llevarlo conmigo a todo lados?.

Bueno pues una de las soluciones mas simples y rápidas es configurar nuestra tarjeta para que recuerde el mayor numero de redes o puntos de acceso a los que posiblemente se podría conectar, la casa, la oficina, la escuela, la casa de un amig@, etc.

Para que esto funcione el primer archivo a editar es:

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

y tendríamos que dejarlo similar a:

como vemos tenemos que crear un objeto “network” por cada red que nuestra Raspi recordara, así como un alias para cada una dentro del parametro id_str.

Y el segundo archivo es:

sudo nano /etc/network/interfaces

y tendría que quedar como sigue:

es muy similar al que teníamos anteriormente la única diferencia es que se agrega la referencia al archivo donde configuramos los datos de acceso y como manejara cada una de las redes. Y eso es todo! en teoría cada que nuestra Raspi encienda tratara de conectarse a cada una de las redes que hayamos listado en el archivo en el mismo orden en el que se pusieron, Red1, Red2, etc. hasta que logre una conexión. Sin duda para nosotros ha sido de gran ayuda puesto que ya no necesitamos de monitor y accesorios cada que hay que moverse, procuramos llevar listadas todas las posibles redes para conectarnos sin problema, incluso la de nuestro telefono para cuando las redes fallan y tenemos que compartir el internet, ojala les sirva tambien 🙂

 

Lección 27 – Arduino – Sensor de Movimiento PIR

Los sensores PIR son dispositivos electrónicos que nos permiten detectar el movimiento dentro rango determinado, según las característica de cada uno, los podemos encontrar en diferentes presentaciones y modos de operar, en la imagen vemos algunos de los mas comunes.

PIRs

Los sensores PIR (Passive Infrared) se caracterizan principalmente por su reducido tamaño, bajo costo, indiferencia a la luz natural, bajo consumo de energia y fácil manejo, razon por la que hoy dia se emplean en infinidad de proyectos e incluso en productos de consumo (como las lamparas comerciales que encienden al detectar movimiento).

¿Como usarlos?

Otra de las grandes ventajas de estos componentes, es que ya cuentan con gran parte de la electronica necesaria para operar y solo tenemos que agregar un par de conexiones para empezar a usarlos, veamos como empleando un Arduino.

PIR

Como vemos en el esquema, el sensor que estamos utilizando se alimenta directamente de los 5v que nos proporciona Arduino por lo que no sera problema conectar su linea de señal directamente a un pin digital. Según las especificaciones del modelo la linea de señal en el sensor es 0 en estado de reposo y pasa a 1 cuando detecta movimiento así que podemos leer la señal como cualquier señal digital.

Realmente sencillo verdad?, lo mejor de todo es la cantidad de proyectos que podemos realizar, podríamos incluso conectar varios sensores en red al mismo pin para ampliar el umbral que queramos monitorear, imaginen un cuarto donde solo se encienda la luz en presencia de alguien o una alarma para que no se acerquen a nuestras cosas, en fin, estoy seguro que se les ocurre algo 🙂

A considerar

Como lo comentamos en un inicio, existen diferentes modelos de este tipo de sensores, algunos como el que hemos utilizado, viene con un par de potenciómetros para ajustar la sensibilidad de detección y el tiempo para regresar a “reposo” ademas de un conector “jumper” para inhabilitarlo. Por otro lado también podemos encontrar algunos que funcionan como Colector Abierto, que quiere decir esto, que al momento de detectar el movimiento su linea de señal pasa a tierra (GND), por lo que tendríamos que agregar una resistencia Pull-Up para leer correctamente los cambios de estado.

Lección 26- Arduino – Sensor Laser

En esta ocasión traemos un tutorial bastante sencillo para elaborar un sensor Laser en casa, como ya es de suponerse nos apoyaremos en la placa Arduino para ver su funcionamiento y con un ejemplo saber como implementarlo.

Primero lo primero, los componentes:

IMG_1575

  • Apuntador Laser, es muy fácil conseguirlos, puede ser por internet en alguna tienda China, eBay o de algún juguete.
  • Fotoresistencia + resistencia de 10k.
  • Un par de cables
  • Un pequeño tubo, en este caso usare la parte protectora de un Jack stereo, pero cualquier tubo de plástico o papel puede servir, la idea es meter la fotoresistencia dentro e impedir el paso de la luz natural lo mayor posible.

Ya que tengamos lo necesario, vamos a construir la parte clave de nuestro sensor, el receptor, básicamente lo único que necesitamos es conectar o soldar el par de cables a cada una de las “patitas” de la fotoresistencia e introducimos el componente dentro del tubo de plástico de manera que tengamos acceso a los cables, tal y como se ve en la siguiente imagen.

LDR

Echo esto, podemos basarnos en el siguiente esquema para terminar nuestro sensor, el Led en el esquema representando al Laser, en mi caso lo conectamos directamente al Arduino ya que según sus especificaciones tiene un voltaje de operación es de 5v mismo que nos proporciona la placa, en caso de que consigan un modelo de mayor consumo solo asegurense de tener la alimentación adecuada.

Laser

 

Para que nuestro sensor funcione ya solo tendríamos que apuntar el Laser a nuestra Fotoresistencia y evaluarla desde el Arduino activar o desactivar lo que queramos según el valor obtenido, al estar esta semi oculta dentro del tubo su variación no es tan significativa en relación a la luz natural por lo que dependerá totalmente del Laser.

Por último y para los que quieran hacer la prueba, también les dejo el Sketch, pueden ver la variación del sensor en el Monitor Serial.

 

Johnny-Five – programando Arduino en Javascript

sgier-johnny-five

Johnny-Five es un proyecto para aficionados al desarrollo web que empiezan a jugar con Arduino o para los que ya lo hacen y buscan integrar algún prototipo a una aplicación web, corre bajo un servidor Nodejs y esta pensado para programar Arduino en Javascript con ayuda del ya famosa “Firmata”.

A pesar de que en un inicio solo se tenia la intension de usarlo para la programación de Robots, la comunidad no tardo nada en empezar a buscarle otras maneras de explotar el proyecto, como la facilidad que nos da ahora para crear proyectos de hardware y agregarle ese gran plus que es el control a distancia a través de una aplicación web.

Veamos un poco de lo que podemos hacer…

Requerimientos:

– Arduino pre cargado con Firmata(File > Examples > Firmata > StandardFirmata)

– NodeJs y npm instalado, en nuestro post anterior te decimos como (Instalación de NodeJs)

– Johnny-five instalado, creamos un directorio,  Blinkerjs en nuestro caso y desde Terminal tecleamos.

cd Blinkerjs/
npm install johnny-five

Es importante hacer este ultimo paso dentro del directorio creado par la elaboración de nuestro proyecto de prueba, y básicamente con esto tendremos el entorno listo, probemos ahora un ejemplo báscio.

podemos agregar el código anterior en un archivo con extension .js y guardarlo en el directorio creado.

Suponiendo que vamos bien hasta aquí, que tengo mi Arduino conectado por USB y que mi archivo se llamo blink.js, ejecuto lo siguiente en Terminal.

node blink.js

tendríamos que estar viendo algo similar a esto:

Pero, ¿que con eso?, con Arduino lo hago y con mucho menos pasos, bueno pues en realidad esto es solo el principio y estoy seguro que todos aquellos que hagan algo de desarrollo web y mejor aun de Nodejs, estarán imaginando el gran alcance de este Framework.

Para darnos una idea aun mayor de lo que podemos hacer con Johnny-Five en HHMX preparamos un pequeño caso practico aunque algo rápido, ya que nos tomaremos tanto tiempo en explicar todo el código, es un poco de HTML y Javascript estoy seguro que encontraran suficiente información acerca de este tema. Lo primero sera bajarse los archivos de Github (.zip), necesitamos agregar un modulo mas a nuestro entorno:

 

cd Johnny-Five_Test

npm install http

e igual como lo hicimos en el ejemplo anterior ejecutar “node httpTest.js” y ya que este corriendo abrimos desde el navegador “index.html”.

Voila! control desde la web 🙂 , parece sencillo no?, pues si, lo es!, ojalá tengan un poco de tiempo paras seguir jugando con esta Librería y se den cuenta ustedes mismo de las maravillas que podemos lograr, esperamos ver proyectos pronto!!!

Instalación de NodeJs

nodelogo

Node.js es una plataforma de desarrollo Web que trabaja del lado del servidor ejecutando código en Javascript, un lenguaje muy popular en la elaboración de aplicaciones Web, NodeJs se ha convertido en uno de los favoritos por su enfoque en la programación asíncrona, proporcionando información únicamente cuando esta se actualiza y sin tener que hacer peticiones innecesarias algo que mejorar por mucho el rendimiento de nuestras aplicaciones en la nube.

¿Pero por que hablamos de ello en Hardware Hacking MX?, bueno pues en realidad NodeJs no solo se encuentra ganando terreno en el desarrollo de Software, si no también en la implementación de Hardware, al “correr” del lado del servidor nos da acceso a los diferentes periféricos de una computadora lo que incluyendo al puerto USB, que como ya sabemos es el medio de comunicación mas usado por las plataformas electrónicas con la que jugamos a diario.

Su instalación es muy sencilla, en la pagina oficial podemos encontrar ejecutables para los diferentes sistemas operativos (descargas):

nodedownloads

 

Para Windows y Mac solo hay que ejecutar el instalador y seguir los pasos en pantalla, para el caso de sistemas Linux se requieren algunos pasos extra, por esta ocasión describiremos como hacerlo en Ubuntu.

A partir de la versión 12.04 ya podemos encontrar el paquete en los repositorios, así que desde cualquier Terminal tecleamos:

Si por alguna razón no se encuentra el paquete de instalación o si cuentan con una version anterior, podemos seguir los siguientes pasos:

Para comprobar la correcta instalación podemos teclear en la misma terminal node –version y nos mostrara la version del paquete instalado, 0.10.26 hasta el día de hoy.

Adicionalmente la instalación incluye un gestor de paquetes llamado NPM que se incluye en NodeJs a partir de sus versiones mas recientes, podemos verificar su instalación capturando npm –version, y es todo!

Con esto tendremos preparado el terreno para un par de proyectos que tenemos pensados compartir en #HHMX 🙂