Simplificar la detección de movimiento con el ATtiny1627 Curiosity Nano

Por Jacob Beningo

Colaboración de Editores de DigiKey de América del Norte

La necesidad de detección de movimiento sigue creciendo en muchas aplicaciones industriales, comerciales, domésticas e integradas. El problema es que la detección de movimiento puede requerir costosos sensores digitales con los que es difícil interactuar. Además, una vez que se reciben los datos, hay que desarrollar algoritmos para detectar el movimiento, lo que no es una tarea trivial.

Varias soluciones pueden detectar el movimiento, pero las soluciones de infrarrojos (IR) son las más populares. Los desarrolladores pueden optar por una solución activa, habitual en muchos sensores digitales autónomos, pero más cara y compleja de implementar. La alternativa es aprovechar los sensores infrarrojos pasivos (PIR), que son menos costosos y más sencillos de interconectar. Un PIR proporciona una interfaz analógica a la que la mayoría de los microcontroladores pueden conectarse.

Este artículo discute los fundamentos de la detección de movimiento antes de mostrar cómo los desarrolladores pueden empezar con la detección de movimiento utilizando un PIR conectado al DM080104 ATtiny 1627 Curiosity Nano de Microchip. A continuación, muestra una alternativa al complejo desarrollo de algoritmos para la detección de movimiento que aprovecha las técnicas de aprendizaje automático (ML). Se incluyen consejos y trucos para empezar.

Principios básicos de la detección de movimiento

Hay muchas tecnologías de detección que pueden detectar el movimiento, pero los infrarrojos son los más utilizados. Los sensores IR son activos o pasivos. Los sensores activos constan de un emisor de LED IR y un receptor de fotodiodos. Los sensores activos detectan los infrarrojos reflejados por los objetos y luego utilizan los infrarrojos recibidos para detectar si el sujeto o el objeto se ha movido. Según la aplicación, el sensor activo puede contener varios fotodiodos para ver la dirección del movimiento. Por ejemplo, al detectar qué señales IR se retrasan o adelantan, se pueden utilizar cuatro fotodiodos para detectar el movimiento direccional como izquierda, derecha, adelante, atrás, arriba y abajo.

Los sensores infrarrojos pasivos no pueden transmitir IR, sólo recibirlo. Un sensor PIR utiliza los infrarrojos transmitidos por el sujeto/objeto de interés para detectar su presencia y cualquier movimiento asociado a él. Por ejemplo, un sistema de seguridad para el hogar suele tener sensores de movimiento que detectan los infrarrojos emitidos por un ser humano o un animal y determinan si se está moviendo a través de su campo de visión. La figura 1 muestra lo que un sensor PIR analógico podría detectar en varias condiciones, como sin IR, IR presente, estable y saliendo (cortado).

La imagen de los sensores PIR utiliza los infrarrojos emitidos por sujetos u objetosFigura 1: Los sensores PIR utilizan los infrarrojos emitidos por sujetos u objetos para detectar su presencia y movimiento. Se muestran las distintas etapas de detección: sin IR, IR presente, estable y salida (corte). (Fuente de la imagen: Microchip Technology)

A la hora de seleccionar el tipo de sensor de infrarrojos adecuado para una aplicación, los desarrolladores deben considerar cuidadosamente las compensaciones relativas a los siguientes parámetros:

  • Costo del sensor
  • Embalaje
  • Interfaz de microcontroladores
  • Algoritmo de detección y potencia de cálculo
  • Alcance del sensor y consumo de energía

Vamos a examinar un ejemplo de sistema de detección de movimiento PIR que utiliza el ATtiny1627.

Introducción al ATtiny1627 Curiosity Nano

Una solución interesante de microcontrolador (MCU) para la detección de movimiento es el ATtiny1627 de Microchip Technology. Esta MCU de 8 bits lleva incorporado un convertidor analógico-digital (ADC) de 12 bits que puede sobremuestrearse hasta 17 bits. También contiene un amplificador de ganancia programable (PGA) que puede ajustar la sensibilidad. La combinación de estas dos características puede proporcionar un sistema de detección de movimiento de bajo costo adecuado para muchas aplicaciones.

La mejor solución de bajo costo para empezar es utilizar la placa de desarrollo DM080104 ATtiny1627 Curiosity Nano (Figura 2). La placa de desarrollo contiene una MCU AVR que funciona a 20 megahercios (MHz) con 16 kilobytes (Kbytes) de flash, 2 Kbytes de SRAM y 256 bytes de EEPROM. La placa incluye un programador, un LED y un interruptor de usuario. Quizá lo más interesante es que la placa está diseñada para conectarse fácilmente a través de cabezales para la creación rápida de prototipos, o puede soldarse directamente a una placa de prototipo o de producción.

Imagen de Microchip ATtiny1627 Curiosity NanoFigura 2: El ATtiny1627 Curiosity Nano lleva incorporada una MCU AVR programable de 8 bits que funciona a velocidades de hasta 20 MHz con 16 Kbytes de flash, 2 Kbytes de SRAM y 256 bytes de EEPROM. La placa de desarrollo se puede soldar o puentear fácilmente en una placa base más grande para facilitar la creación de prototipos y los sistemas de producción. (Fuente de la imagen: Microchip)

El tablero también viene con algunas características adicionales que pueden ser útiles para los desarrolladores. En primer lugar, dispone de dos canales de análisis lógico, DGI y GPIO. Estos canales pueden utilizarse para depurar y gestionar el microcontrolador. En segundo lugar, los desarrolladores pueden aprovechar un puerto COM virtual (CDC) integrado para depurar o registrar mensajes. Por último, se pueden utilizar varias herramientas para escribir y desplegar el software. Por ejemplo, los desarrolladores pueden utilizar Microchip Studio 7.0, un compilador GCC, o MPLAB X, que utiliza GCC o el compilador XC8.

También hay aproximadamente una docena de repositorios de código que Microchip soporta con varios ejemplos para el ATtiny1627. Estos repositorios de código tienen ejemplos que van desde la detección de movimiento PIR, mediciones de temperatura, conversiones analógicas y mucho más.

Construcción de un banco de pruebas de detección de movimiento

Poner en marcha un banco de pruebas de detección de movimiento es sencillo y no demasiado caro. Los componentes necesarios para construir un banco de pruebas incluyen:

Ya hemos visto el ATtiny1627 Curiosity Nano. El adaptador Curiosity Nano proporciona una placa portadora para el ATtiny1627 Curiosity Nano que puede utilizarse para la creación rápida de prototipos (Figura 3). Además, ofrece tres ranuras de expansión para las placas click MIKROE junto con cabeceras accesibles para las señales de alcance o para añadir hardware personalizado.

Imagen de Microchip Curiosity Nano AdapterFigura 3: El adaptador Curiosity Nano tiene tres ranuras de expansión para placas click MIKROE junto con cabezales para acceder a las señales y añadir hardware personalizado. (Fuente de la imagen: Microchip)

Por último, el sensor PIR MIKROE-3339, que se muestra en la Figura 4, proporciona el sensor IR pasivo KEMET PL-N823-01 en una forma sencilla y ampliable que se puede conectar directamente al adaptador Curiosity Nano. Es importante señalar que el MIKROE-3339 requiere algunas modificaciones cuando se utiliza con los ejemplos de Microchip para la detección de movimiento. Estas modificaciones se pueden encontrar en la página 10 de la Nota de Aplicación AN3641 de Microchip, "Low-Power, Cost-Efficient PIR Motion Detection using the tinyAVR® 2 Family" (Detección de movimiento PIR rentable y de bajo consumo usando la familia tinyAVR® 2.

Imagen de la placa click MIKROE-3339 de MikroElektronikaFigura 4: La placa click MIKROE-3339 proporciona un sensor PIR KEMET PL-N823-01 en una forma fácil de crear un prototipo. (Fuente de la imagen: MikroElektronika)

Software de detección de movimiento PIR

Hay varias opciones que los desarrolladores pueden utilizar para crear sus soluciones de software para la detección de movimiento. La primera solución es utilizar los materiales de ejemplo proporcionados por Microchip en AN3641. El repositorio de código para el ejemplo de software de detección de movimiento se puede encontrar en Github.

La aplicación se produce en varias fases. En primer lugar, la aplicación inicializa y calienta el sensor PIR. En segundo lugar, se utiliza una rutina de servicio de interrupción del ADC para muestrear periódicamente el sensor PIR. En tercer lugar, se promedian los datos del CAD. Por último, se utiliza un algoritmo de detección para señalar si se ha detectado movimiento. Si se detecta actividad, el LED incorporada parpadeará y se enviará una señal de detección a través del puerto serial. El flujo completo del programa puede verse en la Figura 5.

Imagen del flujo de software de la aplicación de detección de movimiento de Microchip (haga clic para ampliar)Figura 5: El gráfico representa el flujo de software para la aplicación de detección de movimiento de Microchip. (Fuente de la imagen: Microchip)

La segunda opción para la detección de movimiento es aprovechar la inicialización y la rutina de interrupción del ADC de los ejemplos de Microchip, pero en lugar de utilizar su algoritmo de detección, utilizar ML. Los datos PIR se pueden recoger y utilizar para entrenar una red neuronal. El modelo ML puede entonces convertirse para ejecutarse en el microcontrolador con TensorFlow Lite para microcontroladores, utilizando matemáticas de punto fijo con pesos de 8 bits.

Lo interesante de utilizar el ML de esta manera es que elimina la necesidad de que los desarrolladores diseñen un algoritmo para sus necesidades específicas. En su lugar, pueden limitarse a tomar muestras del sensor en las condiciones previstas y en los casos de uso que necesitan para su aplicación. El ML también permite a los desarrolladores escalar y ajustar rápidamente sus modelos a medida que se dispone de nuevos datos.

Consejos y trucos para la detección de movimiento con el ATtiny1627

Hay muchas opciones disponibles para los desarrolladores que están interesados en comenzar con la detección de movimiento. Entre los "consejos y trucos" que los desarrolladores deben tener en cuenta para simplificar y acelerar su desarrollo, se encuentran:

  • Construir una plataforma de prototipos de bajo costo utilizando piezas disponibles.
  • Aprovecha el ejemplo de detección de movimiento de Microchip que puedes encontrar en GitHub.
  • Diseña prototipos de hardware con la huella del ATtiny1627 Curiosity Nano y suelda directamente la placa en el hardware para simplificar los prototipos iniciales.
  • Para obtener un código más pequeño, eficiente y optimizado, utilice el compilador XC8 de Microchip.
  • Lea el documento de Microchip AN3641 Low-Power, Cost-Efficient PIR Motion Detection Using the tinyAVR® 2 Family antes de iniciar una aplicación de detección de movimiento.
  • Considere seriamente el uso de ML para el algoritmo de detección de movimiento.

Los desarrolladores que sigan estos "consejos y trucos" descubrirán que se ahorran bastante tiempo y disgustos a la hora de crear el prototipo de su aplicación.

Conclusión:

La detección de movimiento se está convirtiendo en una característica común en muchas aplicaciones, especialmente cuando la ausencia de contacto es beneficiosa. Los desarrolladores pueden minimizar los costos de la lista de materiales y simplificar su diseño aprovechando un sensor PIR y una MCU de bajo costo. Como se ha mostrado, el ATtiny1627 es un excelente punto de partida y Microchip proporciona una amplia gama de herramientas y notas de aplicación para ayudar a los desarrolladores a empezar. Además, para minimizar la complejidad del desarrollo del algoritmo para detectar el movimiento, se puede utilizar el ML.

DigiKey logo

Descargo de responsabilidad: Las opiniones, creencias y puntos de vista expresados por los autores o participantes del foro de este sitio web no reflejan necesariamente las opiniones, las creencias y los puntos de vista de DigiKey o de las políticas oficiales de DigiKey.

Acerca de este autor

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo es un consultor de software integrado que actualmente trabaja con clientes en más de una docena de países para transformar drásticamente sus negocios mejorando la calidad del producto, el costo y el tiempo de comercialización. Ha publicado más de 200 artículos sobre técnicas de desarrollo de software embebido, es un conferenciante y entrenador técnico muy solicitado y tiene tres títulos que incluyen una Maestría en Ingeniería de la Universidad de Michigan. No dude en ponerse en contacto con él en jacob@beningo.com, en su sitio web www.beningo.com, y suscríbase a su boletín mensual Embedded Bytes Newsletter.

Acerca de este editor

Editores de DigiKey de América del Norte