Detección de movimiento con el sensor infrarrojo HC-SR501
Detección de movimiento con el sensor infrarrojo HC-SR501
No cabe duda de que una de las principales causas para que hablemos de Internet de las Cosas se debe a la reducción del costo en los componentes digitales, al aumento de la potencia de los mismos, y a la posibilidad de hacer un todo con la simplicidad de las partes. Esta es una buena noticia para darnos cuenta de que la tecnología ha puesto en la vidriera gran cantidad de elementos (cosas) que permiten hacer posible cosas que antes eran difíciles de pensar debido al alto costo del elemento, del tamaño, y de la forma de ensamble que había que realizar para integrar la solución. Si a esto le sumamos Internet, entonces podemos publicitar esta posibilidad como un nuevo fenómeno del mundo moderno: “Internet de la Cosas”.

Figura 1
El HC-SR501 es un sensor PIR que lo que hace es poder detectar movimiento a través de las ondas infrarrojas irradiadas por seres vivos o no. Estas ondas infrarrojas son capturadas y transformadas a un formato digital y procesado por un microcontrolador, con lo cual ante la presencia de movimiento en un ambiente controlado, podemos emitir un alerta de aviso para tomar una acción. Vamos a visualizar lo que acabamos de explicar.
Conectar HC-SR501 a Arduino Uno
El esquema del circuito electrónico implementado con una plaqueta Arduino Uno R3, seria:

La solución parece sencilla, y el nuevo paradigma me entrega un sensor a bajo costo y con la posibilidad de acoplarlo de una forma fácil a un circuito electrónico capaz de resolver la presencia de objetos en un ambiente. Cabe aclarar que no funciona con la simple conexión del sensor al microcontrolador, sino que habría que darle algún grado de comportamiento, es decir, grabarle un programa al microcontrolador para que procese la información recibida por el sensor. Ahora bien, no todo es una panacea, si bien estos avances nos llevan a pensar las cosas de otra manera, aparecen complicaciones al momento de transitar este nuevo camino. Siguiendo uno de los tantos ejemplos de programación que brinda la comunidad Arduino, me encontré con la sorpresa que el sensor se disparaba solo como si hubiese fantasmas en el ambiente, y eso convertía a la solución en inviable. A continuación muestro el código utilizado que dio resultados inesperados, es decir que mostraba presencia cuando no había nada, o tal vez algún fantasma que pasaba.
| Código |
|

Figura 3
El sensor tiene dos potenciómetros que permiten ajustar la sensibilidad y el tiempo que se mantiene activa la señal de salida. La sensibilidad se refiere a la distancia de detección que varía entre los 3 a los 7 mts., mientras que el otro potenciómetro regula el tiempo que se va a mantener activa la señal durante la detección que va entre los 3 segundos y los 5 min. Si bien se puede ajustar la sensibilidad, los resultados no fueron totalmente satisfactorios.
La solución vino por el lado del Software. Regular tiempos, manejar interrupciones, o acceder a componentes electrónicos a través de instrucciones programadas, es otra de las ventajas que ofrece este nuevo paradigma.
Veamos como quedo el código.
| Código |
|
Usamos la función mills() para controlar el tiempo en que se activa la señal, ya que mills() mide el tiempo en milisegundo desde que el microcontrolador comenzó a funcionar. Conviene aclarar que las funciones delay() y delayMicrosecond() ponen en pausa al programa y esto provoca un descontrol en relación a atender las interrupciones propias del microcontrolador.
Conclusiones
Esta solución nos permite generar un dispositivo de control de movimiento que puede ser usado como parte de diferentes soluciones según las necesidades del contexto en que trabajemos.
