CACHORRO ELETRÔNICO – C/ ATMEGA 328P – ARDUINO NANO (REF326)

Um atento “cachorro eletrônico” para “vigiar” sua residência…

Este artigo mostra como pode ser implementado a parte eletrônica de um dispositivo experimental que reproduza latidos de um cachorro. Veja os esquema abaixo:

Para testes com sons gravados na própria flash de um microcontrolador decidi adquirir um ATMEGA 328 – PU, com lindos 32kbyte de flash. Com este tamanho de flash obteria mais tempo de reprodução com uma melhora de qualidade em relação aos sons a 1 bit (como os obtidos através do BTC Sound Encoder). Como na minha região não estava disponível este chip em formato DIP, optei em adquirir uma placa de Arduino Nano, que tem um ATMEGA 328P, em montagem SMD. A vantagem desta placa é que os pinos se encaixam perfeitamente no protoboard (placa experimental).
De posse do Arduino Nano resolvi testar seu ambiente de trabalho pela primeira vez. Rodei alguns programas exemplos, fiz alguns programinhas básicos, etc. Percebi que ocorre um consumo expressivo da flash para programas simples como o ‘Blink’ (piscar um led na placa). Mas com tanta flash porque economizar! Pensei: Porque não tentar fazer o programa no próprio IDE do Arduino? Então fiquei motivado com esta ideia e meio aos trancos, saiu este primeiro projeto com Arduino Nano: Cachorro Eletrônico.

FUNCIONAMENTO:
Basicamente o que esta montagem faz é reproduzir o som de um cachorro latindo quando ocorre um disparo do sensor piroelétrico (como uma pessoa entrando na zona de detecção) ou se houver um barulho acima do limiar de detecção de um sinal do microfone de eletreto. Podemos assim dizer que os ‘olhos e ouvidos’ deste “cachorro” são dois sensores: um microfone de eletreto e um módulo sensor piroelétrico HC-SR501. Quando ocorre o acionamento da gravação pelo sensor piroelétrico, foi programado uma repetição do latido por mais tempo. A partir da quarta repetição ligará um relé. Este relé poderá acionar uma lâmpada na casa (interna ou externa) dando assim a impressão que o dono ouviu os latidos e ligou a luz. Em geral, isto afugenta meliantes que buscam obter coisas alheias de modo fácil.
O acionamento pelo microfone tem um tempo mais curto, pois barulhos nas cercanias da casa podem ser comuns (escapamento de carro, rojões, buzinas, etc). Se não fosse mais curto, talvez teria o problema de incomodar ‘demais’ a vizinhança. Um trimpot junto ao microfone permite ajustar a sensibilidade ao nível desejado. Dependendo do ruído ambiente, deverá ser ajustado para mais ou menos.
Falando em ajustes, no cabeçalho do programa tem vários ‘defines’ que podem ser customizados pelo usuário. Temos como alterar a número de repetições de latido para o acionamento pelo som. Também o número de repetições para acionamento pelo sensor piroelétrico. Neste último, podemos mudar em qual repetição irá acionar o relé. Quanto ao timbre produzido, podemos escolher para se ouvir um som de cachorro grande ou o latido de um cachorro de pequeno porte (som irritante). Isto se consegue alterando o número de amostragens do som em relação ao original.
Para testes no protoboard, usei um circuito integrado para amplificar o som gerado pelo Arduino e entregar alguns poucos watts em um alto falante de 8 ohms. Caso queira um volume maior, talvez possa usar um outro circuito integrado de saída de som, mais potente, como por exemplo, um TDA7293 ao invés do LM386. Deverá ser previsto fonte de alimentação adequada ao circuito: que forneça uma tensão de 5 volts para o Arduino e a outra tensão para o circuito de saída de som no caso de se optar por outro integrado que não o LM386).
O arquivo “SOM_CACHORRO_LATINDO” contêm um array de constantes. Estas são obtidas usando o programa EncodeAudio. Faça download e coloque ele em uma pasta qualquer. Clique nele, e escolha o arquivo de som que deseja usar. Este tem que ser .wav, de 8 bits, 8khz de amostragem e mono. Fique atento ao tamanho do arquivo de som .wav, para caber na flash (e anote para colocar isto no programa). O EncodeAudio converte o som em uma sequência de bytes que ficará armazenada na área de transferência. Então basta clicar entre as chaves do array e usar o Control+V para colar.
Nota: Testei somente com Arduino Nano. Outras versões de Arduino que usem microcontroladores diferentes do ATmega 328P não irão funcionar. O motivo é que alterei o setup padrão de funcionamento do timer 0 para operar em frequência mais alta. Este timer é responsável por rotinas de temporização como Millis(), Delay(), DelayMicroseconds(), etc. Portanto, não foi usado tais rotinas de tempo neste sketch visto que não funcionariam. Quem sabe no futuro eu aprenda a criar bibliotecas que possam permitir a plena funcionalidade de outras versões de Arduino.

Obs. Esta montagem é experimental, sendo de caráter didático, montada apenas em placa experimental (do tipo “Protoboard”), sujeita a “bugs” ainda não detectados. Está sendo fornecido os arquivos para que cada hobista possa alterar o programa segundo suas necessidades.

Segue pasta zipada com os arquivos da montagem:

CACHORRO_ELETRONICO_ZIP

Manuais:
Site oficial do Arduino
Arduino Nano (esquema)
Arduino Nano (manual)
LM386 datasheet
HC-SR501 datasheet

Curiosidades:
O faro do cachorro
A engenharia instintiva da vespa-cabloca
Uma cidade de papel
Células – bibliotecas vivas

Outros assuntos:
Como se proteger do crime?
A violência doméstica tem solução?
A verdadeira história da criação
O que você deve saber sobre transtornos mentais

Vídeos:
Como as formigas evitam o engarrafamento?
Teve projeto: As asas da coruja
Teve projeto: A cauda do cavalo-marinho
As maravilhas da criação revelam a glória de Deus – A água
Deixe a tristeza de lado

Até o próximo artigo!

Back To Top