SUPER_BUZINA C/ MICRO SD CARD – C/ PIC 16F628A (REF209)

2

Uma nova versão para sua diversão…

No artigo “SUPER BUZINA- ADICIONANDO SONS AO PIC – C/PIC16F628A (REF181)” foi realizado uma montagem para gerar sons gravados em uma Flash do tipo 25L1606E.
Muitos hobistas encontraram dificuldade para obter memórias flash como a que foi usada neste artigo. Surgiu então a necessidade de usar uma memória mais fácil de encontrar no mercado. Porque não usar um SD Card, facilmente encontrado nas maiorias das lojas de produtos eletrônicos?
A princípio achei que não seria possível ser bem sucedido neste empreendimento, uma vez que os comandos do SD Card são mais complicados, sendo um tanto ‘temperamentais’. Ademais, o PIC escolhido para a montagem (16F628a) não dispõem de módulo SPI, necessitando emular a comunicação SPI (método ‘bit banging’). Após estudar vários manuais de SD Card, e também, vários projetos postados na internet, decidi iniciar alguns testes. Então, após muitas modificações e compilações, comecei a ter sucesso em funcionar a comunicação com o SD Card. Assim, resolvi adaptar a Super_Buzina para operar com SD Card ao invés de uma memória Flash 25L1606E.
Veja como ficou o esquema:

Para ser prático, a gravação do SD Card deve ser feito com ajuda de um computador (ex. PC ou Notebook). Então surgiu outro grande problema: Ter de usar uma formatação no SD Card.
Bem, não precisa dizer que mais pesquisas foram necessárias para poder entender o funcionamento da formatação e como usa-la para operar em conjunto com microcontrolador.
Ao formatar o SD Card com auxílio do PC, são criadas regiões no SD Card para armazenar dados e informações de formatação.
Acessando o endereço ‘0’ encontramos o MBR (Master Boot). No offset 454 a 457 obtemos a posição da primeira partição do SD Card (Boot Sector) . Nela obtemos o informações importantes da formatação usada, no caso, FAT32.
Entre as informações temos o número de FATs (Tabela de Alocação de Arquivos), número de setores reservados, número de setores por FAT, número de bytes por setor, etc. Com ajuda da matemática é possível usar estas informações para acessar as regiões onde está os arquivos gravados pelo usuário. No ‘RootDir’ obtemos o cluster de entrada e o tamanho do arquivo desejado. Cada setor do diretório de arquivos pode conter até 16 entradas de arquivos (descriptor c/ 32 bytes por arquivo), desde que se respeite alguns detalhes quanto aos arquivos gravados: os nomes do arquivos .wav a serem gravados no SD Card devem ter o máximo de ‘8’ caracteres e tem de ser ‘minúsculos’. Senão será gerado mais informações que ocuparão espaço que seria usado para endereçar o próximo arquivo .wav e resultará em mau funcionamento. Note que não foi usado acesso aos arquivos usando a tabela FAT, mas apenas a entrada e o tamanho do arquivo. Portanto, o arquivo não pode ficar fragmentado dentro do SD Card. Por isto, temos primeiro que formatar para eliminar qualquer arquivo antigo.
Na pasta ‘arquivos_wav’ tem os arquivos com sons da Super_buzina, que deverão ser copiados no SD Card. Outros sons podem ser usados. Poderá obter a partir da internet. Se forem Mp3 deverão ser convertidos para “.wav”. Poderá usar algum programa para converter, como o ‘Format Factory’. Depois deverá ser ajustado o volume, e ser novamente convertido para taxa de amostragem de 19530 hz, 8 bits e mono. Poderá usar o ‘BTC_Sound’ do Sr. RomanBlack, que facilita bastante. Ou qualquer outro programa que esteja familiarizado. Lembre de salvar estes arquivos com terminação .wav e nome com letras minúsculas e máximo 8 caracteres.
Com respeito a ligação do Micro SD Card ao circuito, optei em adquirir um adaptador de Micro SD para SD, feito de plástico.
Nele soldei terminais para pode usar o Bread_Board (placa experimental do tipo Protoboard). Estes adaptadores são baratos em relação aos soquetes comerciais para circuito impresso. O único problema está em realizar uma solda bem rápida para não derreter o plástico.
Veja como ficou o ‘protótipo’, visto pelo lado da solda, na primeira imagem abaixo:

Nas duas imagens seguintes temos os modelos do SD Card testados nesta montagem ( não sei se de outros fabricantes irão funcionar).

Durante os testes, achei interessante colocar um led para indicar que tinha entrado na rotina de leitura do arquivo, e o chamei de “led_tocando”. Ele é opcional, podendo ser deixado sem montar no circuito. Já o “led_erro” é importante para saber se foi conseguida a inicialização do SD Card. Pode ocorrer de termos que resetar o circuito algumas vezes para funcionar. O “led_SD” indica apenas se o cartão é SD ou SDHC (alta capacidade), usado também nos teste, sendo opcional, uma vez que estamos usando cartões SDHC.
Na saída de som, chamada ‘audio out’, podemos ligar um amplificador de som e uma corneta na saída. Também, como mostrado no esquema, podemos aproveitar a saída de som de uma sirene eletrônica (destas usadas em alarme de carro 12 v), aproveitando os transistores, transformador, disco piezoelétrico, e a corneta plástica. Conforme for, podemos até montar todo conjunto dentro da caixa plástica da sirene. Para acionar os 15 sons propostos, usamos 4 botões, que ao serem pressionados, geram um som diferente, baseado no código hexadecimal. Outras formas de acesso podem ser pensadas, mas por hora, é ainda um sistema simples.
A alimentação tanto do PIC como do SD Card é feita com 3,5 volts, obtidos a partir dos 5 volts de um regulador 7805. Foram colocados 2 diodos em série para dar a queda de tensão necessária. Se tiver um regulador de 3v3 (ex. LM1086) poderá preferencialmente ser usado.

Caso deseje ver um vídeo caseiro com a montagem em funcionamento, clique aqui.

Obs. Esta montagem foi realizada apenas em placa experimental (do tipo Protoboard), sujeita a bugs ainda não observados. Trata-se de um protótipo experimental. Está sendo fornecido os arquivos que poderão ser alterados conforme a necessidade do hobista.

Segue pasta com os arquivos desta montagem, usado o compilador CCS C (XC8 – não consegui compilar c/ versão ‘FREE’):


SUPER_BUZ_SD_CARD_FILES

Manuais:

PIC 16F628A
SD/SDHC SanDisk
FAT32

Curiosidades:
Acidente de automóvel: ‘Só acontece com os outros’?
Um filme marcante completa cem anos
Quem projetou primeiro?
A Terra foi ‘fundada’ por acaso?
Corcovado — o “diamante bruto” da Costa Rica
Seus calçados são realmente confortáveis?

Outros assuntos:

Como fazer verdadeiros amigos
Será que é amor ou paixão?
O que fazer quando seu filho mente
Como conversar com seu filho adolescente — sem discutir
Como eu posso lidar com os meus erros?
A Bíblia é apenas um bom livro?
Como ensinar seu filho a usar a internet com segurança
Perguntas Bíblicas Respondidas
Coleção de Vídeos Educativos
Histórias Bíblicas Ilustradas

Até o próximo artigo!!!

2

3 comments

  1. 0

    Olá, tudo bem?
    Muito obrigado por compartilhar estes projetos, tornando-os acessíveis até mesmo para curiosos como eu.
    É possível adaptar essa montagem para o uso com o LM386 e baterias?

    1. 0

      Olá Eduardo!
      Sim, você poderá ligar qualquer amplificador de som na saída “áudio_out” que atenda a sua necessidade.
      Cláudio

  2. 0

    larios parabéns por este projeto que parece ser simples, mais envolve mais do que tecnologia, sim inteligencia! voce conseguiu resumir em detalhes e simplificou o que parecia dificil em um projeto super interessante e facil de construir. valeu

Comments are closed.