Simplifique a detecção de movimento usando o ATtiny1627 Curiosity Nano

By Jacob Beningo

Contributed By DigiKey's North American Editors

A necessidade de detecção de movimento continua a crescer em muitas aplicações industriais, comerciais, domésticas e embarcadas. O problema é que a detecção de movimento pode exigir sensores digitais caros e de difícil interface. Além disso, uma vez recebidos os dados, ainda é necessário desenvolver algoritmos para detectar o movimento, o que é um esforço não trivial.

Várias soluções podem sentir o movimento, mas as soluções infravermelhas (IV ou IR em inglês) são as mais populares. Os desenvolvedores podem escolher uma solução ativa que é comum em muitos sensores digitais autônomos, mas que é mais cara e complexa de implementar. A alternativa é tirar proveito dos sensores infravermelhos passivos (PIRs), que são menos caros e mais simples de fazer interface. Um PIR fornece uma interface analógica com a qual a maioria dos microcontroladores pode fazer interface.

Este artigo discute os fundamentos da sensoriamento de movimento antes de mostrar como os desenvolvedores podem começar isso usando um PIR conectado ao DM080104 ATtiny 1627 Curiosity Nano da Microchip. Em seguida, mostra uma alternativa para o desenvolvimento de algoritmos complexos de sensoriamento de movimento que tira proveito das técnicas de aprendizagem de máquinas (ML). Dicas e truques para começar estão incluídos.

Fundamentos da detecção de movimento

Existem muitas tecnologias de sensoriamento que podem detectar movimento, mas o IR é mais amplamente utilizado. Os sensores IR ou são ativos ou passivos. Os sensores ativos compreendem um transmissor de LED IR e um receptor de fotodiodo. Os sensores ativos detectam o IR refletido dos objetos e depois usam o IR recebido para detectar se o objeto ou sujeito se moveu. Dependendo da aplicação, o sensor ativo pode conter vários fotodiodos para ver a direção do movimento. Por exemplo, ao detectar quais sinais de IR retardam ou adiantam, quatro fotodiodos podem ser usados para detectar movimentos diretivos como esquerda, direita, para frente, para trás, para cima e para baixo.

Os sensores infravermelhos passivos não podem transmitir IR, apenas recebê-lo. Um sensor PIR usa o IR transmitido pelo sujeito/objeto de interesse para detectar sua presença e qualquer movimento associado a ele. Por exemplo, um sistema de segurança doméstico terá, muitas vezes, sensores de movimento que detectam o IR emitido por um humano ou animal e determinam se ele está se movendo através de seu campo de visão. A Figura 1 mostra o que um sensor PIR analógico pode detectar sob várias condições, tais como ausência de IR, IR presente, estável e de saída (cortado).

Imagem dos sensores PIR que usam o IR emitido por sujeitos ou objetosFigura 1: Os sensores PIR utilizam o IR emitido por sujeitos ou objetos para detectar sua presença e movimento. As várias etapas de detecção são mostradas: sem IR, IR presente, estável e de saída (cortado). (Fonte da imagem: Microchip Technology)

Ao selecionar o tipo certo de sensor IR para uma aplicação, os desenvolvedores precisam considerar cuidadosamente as contrapartidas relativas aos seguintes parâmetros:

  • Custo do sensor
  • Empacotamento
  • Interface do microcontrolador
  • Algoritmo de detecção e poder computacional
  • Gama de sensores e consumo de energia

Vamos examinar um exemplo de sistema de detecção de movimento PIR que utiliza o ATtiny1627.

Introdução ao ATtiny1627 Curiosity Nano

Uma solução interessante de microcontrolador (MCU) para detecção de movimento é o ATtiny1627 da Microchip Technology. Este MCU de 8 bits tem um conversor analógico-digital (ADC) de 12 bits incorporado que pode ter sobreamostragem para 17 bits. Ele também contém um amplificador de ganho programável (PGA) que pode ajustar a sensibilidade. A combinação destas duas características pode proporcionar um sistema de detecção de movimento de baixo custo adequado a muitas aplicações.

A melhor solução de baixo custo para começar é usar a placa de desenvolvimento DM080104 ATtiny1627 Curiosity Nano (Figura 2). A placa de desenvolvimento contém um MCU AVR que funciona até 20 megahertz (MHz) com 16 quilobytes (Kbytes) de flash, 2 Kbytes de SRAM e 256 bytes de EEPROM. A placa inclui um gravador de memória, LED e um interruptor de usuário. Talvez o mais intrigante é que a placa é projetada para ser facilmente conectada através de barra de pinos para prototipagem rápida, ou pode ser soldada diretamente em um protótipo ou placa de produção.

Imagem do Microchip ATtiny1627 Curiosidade NanoFigura 2: O ATtiny1627 Curiosity Nano tem um MCU AVR incorporado programável de 8 bits, funcionando a velocidades de até 20 MHz com 16 Kbytes de flash, 2 Kbytes de SRAM e 256 bytes de EEPROM. A placa de desenvolvimento pode ser facilmente soldada ou conectada em uma placa base maior para facilitar a prototipagem e os sistemas de produção. (Fonte da imagem: Microchip)

A placa também vem com algumas características adicionais que podem ser úteis para os desenvolvedores. Primeiro, tem dois canais do analisador lógico, DGI e GPIO. Estes canais podem ser usados para depurar e gerenciar o microcontrolador. Em segundo lugar, os desenvolvedores podem aproveitar uma porta COM Virtual (CDC) na placa para depurar ou registrar mensagens. Finalmente, várias ferramentas podem ser usadas para escrever e implantar o software. Por exemplo, os desenvolvedores podem usar o Microchip Studio 7.0, um compilador GCC, ou MPLAB X, que usa ou o GCC ou o compilador XC8.

Há também aproximadamente uma dúzia de repositórios de código que o Microchip suporta com vários exemplos para o ATtiny1627. Estes repositórios de código têm exemplos que vão desde a detecção de movimento PIR, medições de temperatura, conversões analógicas e muito mais.

Construindo uma bancada de teste de detecção de movimento

Colocar uma bancada de teste de detecção de movimento em funcionamento é simples e não muito caro. Os componentes necessários para construir uma bancada de teste incluem:

Já examinamos o ATtiny1627 Curiosity Nano. O adaptador Curiosity Nano fornece uma placa portadora para o ATtiny1627 Curiosity Nano que pode ser usada para prototipagem rápida (Figura 3). Além disso, ele fornece três slots de expansão para Click Board MIKROE junto com barras de pinos acessíveis para sinais de osciloscópio ou para adicionar hardware personalizado.

Imagem do adaptador Curiosity Nano da MicrochipFigura 3: O adaptador Curiosity Nano tem três slots de expansão para Click Board MIKROE junto com barras de pinos para acessar sinais e adicionar hardware personalizado. (Fonte da imagem: Microchip)

Finalmente, o sensor PIR MIKROE-3339, mostrado na Figura 4, fornece o sensor IR passivo KEMET PL-N823-01 em uma forma simples e expansível que pode ser conectado diretamente ao adaptador Curiosity Nano. É importante notar que o MIKROE-3339 requer alguma modificação quando usado com os exemplos da Microchip para detecção de movimento. Estas modificações podem ser encontradas na página 10 da Nota de Aplicação AN3641 da Microchip, "Low-Power, Cost-Efficient PIR Motion Detection using the tinyAVR® 2 Family".

Imagem do Click Board MIKROE-3339 da MikroElektronikaFigura 4: O Click Board MIKROE-3339 fornece um sensor PIR PL-N823-01 da KEMET em uma forma fácil de protótipo. (Fonte da imagem: MikroElektronika)

Software de detecção de movimento PIR

Há várias opções que os desenvolvedores podem usar para criar suas soluções de software para detecção de movimento. A primeira solução é utilizar os materiais de exemplo fornecidos pela Microchip na AN3641. O repositório de código para o software de exemplo de detecção de movimento pode ser encontrado no Github.

A aplicação ocorre em algumas fases. Em primeiro lugar, a aplicação inicializa e aquece o sensor PIR. Em segundo lugar, uma rotina de interrupção de serviço do ADC é usada para coletar amostras periódicas do sensor PIR. Em terceiro lugar, a média dos dados do ADC é calculada. Finalmente, um algoritmo de detecção é usado para sinalizar se o movimento foi detectado. Se for detectada atividade, o LED na placa piscará e um sinal de detecção será enviado pela porta serial. O fluxo completo do programa pode ser visto na Figura 5.

Imagem do fluxo de software para a aplicação de detecção de movimento da Microchip (clique para ampliar)Figura 5: O gráfico representa o fluxo de software para a aplicação de detecção de movimento da Microchip. (Fonte da imagem: Microchip)

A segunda opção para detecção de movimento é aproveitar a inicialização e a rotina de interrupção do ADC a partir dos exemplos da Microchip, mas em vez de usar seu algoritmo de detecção, usa ML. Os dados PIR podem ser coletados e depois usados para treinar uma rede neural. O modelo ML pode então ser convertido para rodar no microcontrolador com TensorFlow Lite para microcontroladores, usando matemática de ponto fixo com pesos de 8 bits.

O que é interessante no uso do ML desta maneira é que ele elimina a necessidade de os desenvolvedores projetarem um algoritmo para suas necessidades específicas. Em vez disso, eles podem apenas experimentar o sensor sob as condições esperadas e usar os casos necessários para sua aplicação. O ML também permite aos desenvolvedores escalar e ajustar rapidamente seus modelos à medida que novos dados se tornam disponíveis.

Dicas e truques para a detecção de movimento usando o ATtiny1627

Há muitas opções disponíveis para os desenvolvedores que estão interessados em iniciar a detecção de movimento. As "dicas e truques" que os desenvolvedores devem ter em mente para simplificar e acelerar seu desenvolvimento, incluem:

  • Construir uma plataforma de protótipo de baixo custo utilizando peças prontas para uso.
  • Aproveitar o exemplo de detecção de movimento da Microchip que pode ser encontrado no GitHub.
  • Projetar protótipos de hardware com a pegada do ATtiny1627 Curiosity Nano e soldar diretamente a placa sobre o hardware para simplificar os protótipos iniciais.
  • Para códigos menores, mais eficientes e otimizados, utilize o compilador XC8 da Microchip.
  • Leia o AN3641 da Microchip, Low-Power, Cost-Efficient PIR Motion Detection Using the tinyAVR® 2 Family, antes de iniciar uma aplicação de detecção de movimento.
  • Considere seriamente o uso do ML para o algoritmo de detecção de movimento.

Os desenvolvedores que seguem estas "dicas e truques" descobrirão que poupam um pouco de tempo e sofrimento, quando fazem o protótipo da sua aplicação.

Conclusão

A detecção de movimento está se tornando uma característica comum em muitas aplicações, especialmente onde a não intervenção for vantajosa. Os desenvolvedores podem minimizar seus custos de lista de material e simplificar seu projeto aproveitando um sensor PIR e um MCU de baixo custo. Como mostrado, o ATtiny1627 é um excelente ponto de partida, e a Microchip fornece uma ampla gama de ferramentas e notas de aplicação para ajudar os desenvolvedores a começar. Além disso, para minimizar a complexidade do desenvolvimento de algoritmos para detectar movimento, o aprendizado de máquina pode ser usado.

DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

About this author

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo is an embedded software consultant. He has published more than 200 articles on embedded software development techniques, is a sought-after speaker and technical trainer, and holds three degrees, including a Masters of Engineering from the University of Michigan.

About this publisher

DigiKey's North American Editors