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!!!

Lección 25 – Arduino – LED’s RGB

Esta lección es algo sencilla pero muy interesante ya que trabajaremos con otro tipo de LED’s los cuales son llamados LED’s RGB que por sus siglas en ingles significan Red, Green, Blue. A primera vista parecieran ser LED’s común y corrientes pero no es así ya que con LED’s RGB podemos generar cualquier color resultado de la combinación de estos tres colores principales. Al controlar la intensidad de cada uno de los tonos podemos generar combinaciones y por ende el color que tu quieras.
Como dato general el modelo de color RGB está basado en una síntesis aditiva, lo que significa que podemos representar cualquier color por adición de los tres colores de luz primarios. Este modelo es muy utilizado en la actualidad en las pantallas de los televisores, computadoras, teléfonos, etc. Si pudiéramos acercarnos muy de cerca (tal vez con una lupa) a las pantallas podríamos ver la presencia de esto tres colores.

Circuito

La configuración del LED es la siguiente. En nuestro caso tenemos un LED RGB de Catodo común, esto significa que tenemos una tierra en común y esa tierra es para los tres tonos. Nota: En dado caso que consiguieran un LED de anodo común se debe de conectar a 5Volts en lugar de tierra.

En circuito tenemos conectadas resistencias de 270 ohms, esto con el objetivo de evitar que fluya mucha corriente por el LED y que se pueda quemar.

Evernote Camera Roll 20140415 183456

RGBArduino

Código

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 :)

 

 

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 :)