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.

 

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 24 – Arduino – Optoacopladores

Los optoacopladores son componentes electrónicos que funcionan a manera de conmutador, interruptor o switch, básicamente se componen de un diodo LED que satura a  un elemento optoelectronico (de ahi su nombre), normalmente en forma de fototransistor o fototriac. Los podemos encontramos en empaquetados que combinan a estos elementos o a un arreglo de ellos.

opto01

 

Una de sus principales funciones es aislar circuitos electrónicos sensibles o de caracteristicas diferentes, como sucede cuando el voltaje de operación varia, un caso practico puede ser el control de relevadores o solenoides de gran voltaje de operación (de 12v a 36v) a través de un Arduino (5v).

Para este post hemos probado dos modelos, el 4N26 y el PC817 ambos muy similares aunque en diferente presentación.

optocoupler

la gran diferencia entre estos dos modelos, como se ve en la imagen, es que el 4N26 tiene un pin adicional desde donde podemos activar el fototransistor si así se desea e independientemente al estado del Led.

Existe gran variedad de este tipo de componentes, aunque el modo de implementarlos sigue siendo el mismo pueden diferir en el voltaje o amperaje que llegan a controlar o incluso en el tipo de corriente que pueden manejar, tal es el caso de los que incluyen un fototriac, que son capaces de trabajar con corrientes alternas.

Es importante que revisemos las hojas de datos ya que ahi encontraremos la información necesaria sobre cada uno de los modelos que existen en el mercado, ademas que es de gran ayuda a la hora de estar diseñando nuestros proyectos.

Bien! para verlos en acción tomaremos como base la siguiente imagen, y para un ejemplo simple usaremos el sketch del Blink que viene en el IDE del Arduino, haciendo una modificación en los delay a 10000 para notar aun mejor el funcionamiento.

opto002

Si no cuentan con un solenoide pueden usar cualquier elemento que requiera de un voltaje mayor a los 5V o igual pero alimentado con una fuente externa a la del Arduino, incluso puede ser un multimetro 🙂

IMG_1554

 

Lección 23 – Arduino – Nokia 5110 LCD

El LCD es uno de los componentes que no pueden faltar a la hora de crear proyectos “interactivos”, sin duda ya conocido por todos, aun y cuando no se tiene conocimiento de sistemas embebidos o electronica, los podemos encontrar en la gran variedad de dispositivos que operamos del día a día, teléfonos, microondas, estufas, refrigeradores, maquinas expendedoras, etc., monocromáticos o de color, siempre los vemos por ahí, ya que en gran medida, es gracias a estos componentes que podemos “comunicarnos” con los aparatos.

En esta ocasión usaremos el modelo de Nokia 5110, un modulo integrado monocromático de 84 pixeles de ancho y 48 de alto, veamos algunas de las cosas que necesitamos:

  • Arduino, por supuesto.
  • LCD Nokia modelo 5110 (Adafruit, Sparkfun)
  • 4 resistencias de 10kOhms
  • 1 resistencia de 1kOhms
  • 1 resistencia de 220Ohms
  • Cables (jumpers)
  • Protoboard

Una ves tengamos los componentes a la mano, podemos basarnos en el siguiente esquema para armar el circuito.

Nok01

La mayoría de los LCD de este modelo vienen con la misma configuración de pines, así que no deberíamos tener problemas al conectar, si algo resulta mal es probable que el fabricante de tu modulo haya cambiando algunos pines, podemos basarnos en la siguiente tabla para conectar correctamente.

 

Pin Label Función Descripción
1 VCC 3v3 El rango de voltaje aplicado puede variar entre 2v7 y 3v3
2 GND Ground
3 SCE Chip select Resistencia de 1k
4 RST Reset  Resistencia de 10k
5 D/C Mode select Resistencia de 10k
6 DN(MOSI) Serial data in Resistencia de 10k
7 SCLK Serial clock  Resistencia de 10k
8 LED LED backlight Voltaje máximo de 3v3 + resistencia de 220

Es importante que el pin de VCC este conectado al pin 3v3 de Arduino y las resistencias entre los pines, puesto que el voltaje de operación es menor al del Arduino.

Suponiendo que todo va bien hasta aquí, continuemos con el programa. Dentro de este modulo encontramos un controlador de Phillips modelos PCD8544, el cual maneja los datos de una manera similar a la comunicación SPI pero gracias a la gran comunidad que existe, podemos encontrar algunas librerías que nos facilitan el trabajo pesado de interpretar protocolos de comunicación, listamos algunas:

  1. PCD8544 Arduino library
  2. Adafruit LCD library (se requiere la libreria grafica GFX)
  3. h3r0 ejemplo (foro de Arduino)

Hemos probado las tres opciones y nos han funcionado a la perfección, ya depende de que tan complejo sean los gráficos que queramos mostrar, para nuestro caso tomamos la ultima y le agregamos nuestro plus, es mas sencilla de entender y no requiere ninguna otra librerías adicional.

cargamos el sketch a nuestro Arduino y en un momento estaríamos viendo el logo en pantalla.

la foto

 

Pasando imágenes personalizadas:

Para poder agregar nuestras propias imágenes a partir de Mapa de Bits (.bmp) hemos probado la aplicación de LCD Assistant, la cual nos crea un arreglo de bytes que corresponden los pixeles en pantalla, solo tenemos que configurar las magnitudes, 84×48 en nuestro caso.

LCDassist

 

La opción File -> Save output nos da el resultado en texto, y podemos copiar el arreglo y pegarlo en nuestro ejemplo para ver los cambios (linea 26 – char hhmx[]={ } ).

Y eso es todo, espero les sea de utilidad y podamos ver algunos proyectos a la luz muy pronto 🙂

 

 

 

Fabricación casera de PCBs

A medida que avanzamos como #Maker, descubrimos lo sencillo que pueden llegar a ser construir nuestras propias cosas, empezamos a construir y ensamblar como locos por todos lados, echamos a volar la imaginación y en ocasiones la idea tan descabellada en la que pensamos un día no parece estar tan lejos de la realidad. Es un momento cercano a este cuando nuestras necesidades empiezan a crecer y la Proto Board parece ser insuficiente para implementar nuestros tan amados proyectos. Es por esta razón que en #HHMX hemos preparamos esta pequeña guía sobre fabricación casera de PCBs que espero sea de utilidad para dar el siguiente paso como Makers. Materiales:

  • PCB virgen (Placa de baquelita o fibra de vidrio con cara de cobre).
  • Papel transfer, Papel cebolla o Papel arroz (Cualquier tipo de papel encerado puede servir).
  • Plancha para ropa.
  • x-acto.
  • Pinzas tweezers.
  • Pinzas de plastico.
  • Marcador de punto fina.
  • Cloruro Férrico.
  • Taladro (herramienta rotativa con punta de 1/32”).
  • Recipiente amplio.
  • Sierra (manual o eléctrica).

El proceso 1. Antes que todo pues obviamente necesitamos el diseño de nuestro proyecto, supongo que cada quien se inclina por algún favorito, Eagle, KiCad o incluso Fritzing. Bueno pues sea cual sea tenemos que imprimir las pistas o rutas de nuestro proyecto diseñado, solo asegúrense de imprimir únicamente las pistas y no la parte que va en serigrafía.

eagle

Eagle CAD

2. Para la impresión es importante que seleccionemos la opción “espejo” en la ventana de impresión ya que al pasar el diseño a la placa de cobre se vuelve a invertir, hacemos primero una copia sobre papel normal para posteriormente pegar con un poco de cinta adhesiva una proporción del transfer y volver a imprimir.

print1

Esto por que algunas veces el costo del papel es elevado y de esta manera economizamos utilizando solo lo necesario. Lo recomendable es ajustar las propiedades de la impresora a la mayor calidad posible, para que adhiera la mayor cantidad de toner posible. Una vez tengamos la impresión, retiramos el papel transfer del normal y continuamos con la PCB
3. La placa de cobre no requiere ningún trato especial, únicamente hay que limpiarla muy bien para retirar posibles impurezas, en este ejemplo hemos utilizado una fibra y jabón para platos, algunos otros ejemplos en linea sobre este proceso recomiendan el uso de lana de metal o una lija de agua supongamos que también puede servir.

pcb

4. Planchar sobre la placa de cobre no es nada mas que poner el transfer sobre ella y literalmente planchar!, si el diseño de nuestro proyecto se adapto muy bien a una sola cara de la placa no implicara trabajo adicional, pero si no quedo mas remedio que hacerlo a dos caras, como es nuestro caso, nos llevara un poco mas de tiempo buscar la mejor alineación.

drill

Algo que nos ha funcionado es poner cuatro puntos o señales adicionales al diseño para usarlos como guía, colocamos primero una cara del diseño (con el lado de la impresión hacia la placa de cobre) y la fijamos con un poco de cinta adhesiva, con ayuda de un taladro perforamos los cuatro puntos, y esto nos servirá para poder alinear la segunda cara. Hacer PCBs a doble cara no es un proceso sencillo precisamente por el problema de alinear las caras, si bien este tutorial parece fácil, créanme que hemos errado al menos dos veces antes del resultado esperado, aunque sin duda vale la pena 🙂 .

pcb2

5. Ya que tengamos alineado el papel transfer y pegado en la PCB virgen, no queda mas que planchar. Recuerden que para los casos donde el proyecto requiera una sola capa, el proceso de alineación no es necesario. El tiempo aproximado de planchado es de 3 minutos con el calor de la plancha al máximo, es recomendable que si trabajamos sobre una mesa, coloquemos una prenda de algodón por debajo, para evitar quemaduras.

iron

6. Se aprecia un poco cuando el toner se ha adherido al cobre, creo que después de un par de placas lo llegaran a notar sin problema. Ya que hayamos planchado hay que esperar un poco a que la placa se enfrié para posteriormente meterla en agua y esperar un tiempo a que el papel se empiece a deshacer o romper, aproximadamente 15 minutos.

pcb3

7. Con ayuda de unas pinzas podemos empezar a desprender el papel de la placa, si todo a ido bien, tendríamos que estar viendo el 99% del toner pegado al cobre.

pcb4

8. Algo que hacemos y que en lo personal me ha parece una mejor manera, es el perforado y corte de la PCB antes de “atacar” con acido, a diferencia de otros ejemplos que he visto, en ocasiones ya tienes tu PCB muy bonita y con las rutas bien marcadas cuando cometes un error al perforar donde no debías 😦 , lo que implica volver a realizar el proceso y gastar mucho mas acido, no por que sea costoso si no que es un elemento contaminante y si bien no lo podemos impedir pues al menos usemos lo menos posible.

9. Otra cosa que seguro será un obstáculo es el error en las pistas sobre el cobre, por lo que tendremos que corregir, para el caso donde no se haya pasado el toner suficiente podemos usar un marcador de tinta indeleble con punta fina y rayar sobre la parte necesaria, de manera que la parte de la pista faltante que cubierta de tinta, y para los casos donde haya toner de mas, podemos usar un x-acto para retirar el toner o la tinta adicional.

pcb5

10. Ya que este lista nuestra PCB, cortada, perforada y con las correcciones necesarias continuamos con el atacado, lo mas común es usar 3/4 de cloruro férrico + 1/4 de agua, usando lo suficiente para cubrir totalmente la PCB.

pcb6

11. Es importante estar moviendo constantemente el contenido, así se crea una mejor reacción y el cobre que no necesitamos será removido adecuadamente.

pcb7

Dependiendo del tamaño de la placa, el tiempo de atacado puede variar, el truco esta mover constantemente y observar hasta que el cobre que no necesitamos haya desaparecido.

12. Una ves echo esto, será necesario lavar la placa con abundante agua hasta eliminar cualquier residuo de acido.

Para terminar podemos usar algún disolvente de pintura, como el utilizado para quitar el esmalte de las uñas (acetona o thinner ).

pcb8

 

Y es todo!

Si bien el proceso no es el mejor, puede ser una muy buena opción para proyectos funcionales y que ocuparemos a manera de demostración o en un ambiente poco agresivo. El ultimo paso es agregar los componentes y soldar, que por cierto también se vuelve una habilidad después de un tiempo 🙂 .

pcb9