Cansado de acender leds com pic? Mude para sons!
A utilização de sons em aplicações microcontroladas abre portas para muitas coisas interessantes de serem feitas. Mas obter tais sons em um microcontrolador ‘parece’ ser muito complicado para iniciantes. Mas, se você não fizer questão da qualidade do som, poderá simplificar usando o som de 1 bit apenas. Isto mesmo! Usando apenas uma única porta do seu microcontrolador para gerar o sinal previamente guardado na memória interna (se o microcontrolador tiver boa capacidade de flash) ou em memória externa. Esta tecnologia não é nova, sendo muito empregada em comunicações (delta modulação).
A proposta deste artigo é montar um brinquedo com 7 interruptores, sendo que ao acionar cada interruptor ouviremos o som de um animal (com qualidade limitada de som, como foi citado). Veja o esquema abaixo:
O sistema é composto por um PIC16f676 para teclado e decodificação do som, de uma memória externa 24c256 com os dados dos sons e por ultimo, um amplificador de som integrado LM386 , que entregará o som para um pequeno alto falante ou caixa acústica. Como o PIC escolhido tem pouca memória flash interna, foi optado pelo uso de uma memória externa para acomodar os dados dos sons a serem reproduzidos.
A alimentação de todo o circuito poderá ser feita por uma fonte de 5 volts (carregador de celular, por exemplo).
O PIC deverá ser programado com o firmware fornecido e a EEprom 24c256 também deverá ser gravada com o firmware adicional para ela, já com os sons necessários.
O programa é bem simples: busca na EEprom no endereço inicial até o final de cada som, conforme o interruptor apertado. Cada bit recebido é repassado para a porta de saída de som. É pura simplicidade!
Os sons gravados no arquivo .hex da EEprom foram obtidos a partir de sons ‘.wav’ obtidos da internet e convertidos para ‘.hex’ usando programas conversores ‘wav para 1 bit’ como, por exemplo, o programa BTc Sound Encoder. Este poderá também ser baixado gratuitamente pela internet. O autor, no seu site, dá excelentes explicações quanto a seu uso.
Para gravar o pic foi usado o ‘simples programador de pic‘ junto com o software ‘WinPic800‘ (gratuito). Para gravar a EEprom foi usado o ‘prog_avr – simples programador de Atmel/Avr‘ em conjunto com o software ‘PonyProg2000‘. Logicamente, poderá usar um único programador para os dois ci’s, mas usei 2 para não ter que ficar desligando um para ligar outro, na ocasião do desenvolvimento de ambos firmwares.
Obs. Esta montagem é didática, sendo feita apenas em protoboard, sujeita a bugs ainda não observados. Está sendo fornecido os arquivos que poderão ser alterados conforme a necessidade do hobista.
Segue pasta com os arquivos desta montagem:
Manuais:
PIC16f676
LM386
24c256
Delta modulação
Curiosidades:
O “endereço” perfeito da Terra
Aquedutos romanos — maravilhas da engenharia
A perna do cavalo
A expulsão dos mouriscos
Como vencer a estafa
Barulho e distúrbios de audição
Será que a lua influencia sua vida?
O mistério das marés de Euripo
De onde vieram as instruções?
Outros Assuntos:
Como fazer as pazes?
Como dizer “não”
Como se livrar do ressentimento
Quando uma amizade se torna íntima demais
Lidar com dívidas
Como evitar ferir com palavras
A ciência e a Bíblia me ajudaram a encontrar o significado da vida
Assista com seus filhos pequenos estes videos:
Aprenda a perdoar
Divida suas coisas com outros
Jeová criou todas as coisas
Dar de coração traz alegria
Por favor e obrigado
Seja limpo e organizado
É errado roubar
Obedeça seus pais
Obedeça a Jeová
Sempre fale com Jeová
Seja esperto: saiba usar as redes sociais
Como enfrentar o bullying sem partir para a briga
Até o próximo artigo!
Olá Larios.
Como sempre, ótimos seus projetos e muito criativos!
Teria possibilidade de uma versão LIGHT? microcontrolador PIC12F629, clock interno, memoria 24C64 e só 3 sons, que não precisaria mais que 1 Segundo pra cada um deles? nem precisaria ser tão acurado, seria pra fazer sons de disparos de uma pistola espacial. portanto nem precisava tanta qualidade e 3 tipos de disparos estaria ótimo. até 2. Obrigado!
Olá marcustito!
Nos experimentos iniciais achei importante usar um clock alto como 20 Mhz. Não sei se funcionará com apenas 4 Mhz. No momento, não tenho disponibilidade para fazer esta alteração, mas poderá faze-lo por trocar o arquivo include de 16f676 para 12f629, mais algumas pequenas alterações de registradores (gpio/trisio/pinos que serão clk,sda, saida de som) e recompilar. Quanto ao arquivo da memória, terá que escolher os sons wav a partir da internet, e usando algum programa ‘wave to 1bit sound’ (conforme explicado no artigo) obter o hex para a eeprom externa.
Claudio
Olá Larios, ótimo artigo, uma dúvida, eu poderia utilizar uma eeprom de 512k no caso o 24c512 e assim melhorar a qualidade do som? Outra dúvida o endereço inicial e final a ser reproduzido eu tenho que informar como no seu programa if(!f0){reproduzir(0x00,7682/8); delay_ms(500); } //cachorro, como eu identifico isso na eeprom?
Olá Fernando! Sim, você poderia usar uma 24c512 ou superior. Quanto a qualidade, quanto mais amostragem melhor, mas lembre-se que ‘som a ‘1 bit’ só efetivamente melhora a qualidade quando temos velocidade de reprodução acima de 48 khz , o que não é possível pela limitação de velocidade de acesso a este tipo de Eeprom (velocidade por volta de 400 khz) . Quanto a identificar o início e fim do som, terá que, na ocasião da preparação do arquivo hex da eeprom, ir gravando os sons e anotando o tamanho gerado por cada um. Se você for usar o programa Btc citado no artigo, o autor deu bastante instruções do uso no seu site. Se for usar algum outro programa gerador de som a 1 bit, terá de ver no ‘help’ do programa como fazer isto.
Claudio