RELÓGIO FALANTE – ADICIONANDO SOM A APLICAÇÕES COM PIC – C/ PIC 16F628A (REF168)

1

Que tal construir um ‘relógio falante’ que informa as horas a um toque de botão?

Hoje em dia temos muitos aplicativos para computadores que ajudam muito os deficientes visuais (cegos). Esta montagem didática também tem por objetivo ajudar tais pessoas, possibilitando uma montagem de um simples relógio falante. Veja o esquema abaixo:

Conforme mostra o esquema acima, o responsável pela precisão das horas é o circuito integrado DS1307, um relógio de tempo real, com comunicação via protocolo I2c com o PIC. Para guardar as mensagens previamente gravadas, temos uma memória flash 25L1606E , com capacidade de 2Mbytes de dados. Esta foi obtida de um roteador defeituoso, que ia para a ‘sucata’. É também usada como ‘bios’ de alguns notebooks e tablets.
Temos um conjunto de 6 chaves dactilares para programação e uso. A primeira nomeada de ‘sw_ouvir’ no pino 4 do PIC, quando pressionada informa com a mensagem similar a este exemplo: “São três horas trinta e um minutos cinquenta segundos”.
No pino 12 do PIC temos uma chave que ao ser pressionada ‘liga ou desliga o despertador’. Se estiver desligado, irá ligar informando com a mensagem: “Alarme foi ligado” e em seguida diz as horas que despertará. Mas se o alarme já estava ligado e foi pressionado esta chave, irá desligar, informando com a mensagem:”Alarme foi desligado”.
Para ajustar inicialmente o relógio, devemos pressionar a chave ‘sw_rel’ no pino 17 do PIC. Ouve-se a mensagem: “Ajustando relógio”. Mantendo este interruptor pressionado, aperte ‘hora’ (no pino 1) para ajustar horas ou ‘min’ (no pino 2) para ajustar minutos. Inicialmente se ouve a mensagem: “Ajustar horas” para ‘hora’ e a mensagem:” Ajustar minutos” para ‘min’. Note que o ajuste necessita de 2 chaves pressionadas ao mesmo tempo. A medida que pressionamos, haverá o incremento das horas ou dos minutos (conforme a chave escolhida). Ouviremos também a hora ou minutos incrementado e soltamos as chaves ao chegar no valor desejado.
Para acertar o despertador fazemos de forma parecida, somente que agora iremos pressionar a chave ‘sw_desp’ (pino 18) mais chave ‘hora’ ou ‘min’. A mensagem:” Ajustar despertador”, será ouvida logo ao apertar ‘sw_desp’. Para conferir a hora que despertará, aperta a chave ‘liga/desliga despertador’, pois ela indica, ao ligar, a hora programada. Esta mesma chave deverá ser usada para desligar o alarme quando este atuar, na hora regulada para despertar.
A mensagem do alarme começa com um ‘Bom Dia’ se as horas forem menores que 18h, e ‘Boa Noite’ se for maior ou igual a 18h. Em seguida repete: “Já está na hora de levantar”, por cerca de 1 minuto e depois cessa a mensagem.

Segue um video caseiro com o relógio em funcionamento (em protoboard apenas):

You need to install or upgrade Flash Player to view this content, install or upgrade by clicking here.

Para amplificar o som foi usado um integrado amplificador de 8 pinos, o conhecido LM386. Outros poderão ser empregados, mudando-se as ligações do esquema para corresponder ao modelo escolhido.
Para gravar a memória flash poderá usar um gravador comercial, usando o arquivo fornecido abaixo, na pasta de arquivos desta montagem. Poderá também usar o “SPIPGM PROGRAMMER’, desde que seu computador tenha ainda porta paralela e rode o ‘DOS’ usando o ‘prompt de comando’. Opcionalmente, poderá adquirir de fornecedores que também gravam o arquivo fornecido pelo cliente.
O circuito deverá ser alimentado por uma fonte de 12 volts DC, ficando mais prático usar estes adaptadores de parede. Se desejar, opcionalmente poderá ser feito uma fonte convencional usando um transformador de 110/220 volts para 12 volts, usando retificadores de silício, capacitores de filtro, e um regulador 7805 para obter os 5 volts. Os 3 volts da Flash são obtido com um resistor e um diodo zener de 3 volts a partir da linha de 5 volts.
Foi usado um pequeno alto falante miniatura para reproduzir o som. Poderá ser usado uma pequena caixa acustica, destas de computadores, se desejar.
Obs. Esta montagem é de caráter didático, sendo montado apenas em placa de protoboard, sujeito a bugs ainda não observados. Estão sendo fornecidos os arquivos que poderão ser modificados pelos hobistas conforme suas necessidades.

Segue pasta zipada com os arquivos para a montagem:

relogio_falante__files

Adicionalmente, segue pasta zipada com a segunda versão, com a funcionalidade de calendário. Foi adicionado mais uma chave dáctilar (switch tact) no pino 3 do PIC, que quando apertada se ouve a mensagem: ‘Ajustando Calendário’. As chaves ‘sw_hora’, ‘sw_min’, ‘sw_desp’ e ‘sw_rel’ são usadas juntamente com ‘sw_cal’ para acertar respectivamente data, mês, ano e dia da semana. Para se ouvir relógio seguido do calendário, a chave ‘sw_ouvir’ deve ser apertada por mais que 0,5 segundos. Se for feito um aperto rápido, somente se ouvirá horas, minutos e segundos, sem o calendário.
O restante da funcionalidade não foi alterada:

relogio_falante_calendario

Errata: No esquema consta cristal de 38,768khz sendo que o correto é 32,768khz.

Manuais:

25L1606E
PIC16F628A
LM386

Curiosidades:
Em foco: saúde
O que a Bíblia diz sobre o Natal?
A ponta da asa das aves planadoras
Saiba mais sobre os relógios de pulso
Os desafios para resolver o “problema da longitude”
Um grande mistério científico desvendado
Fantástica descoberta no campo visual

Outros assuntos:
Ouça leitura da Bíblia dramatizadas
Como controlar as birras
Como chegar a um acordo
Jesus era casado? Jesus tinha irmãos?
Como os pais podem ensinar os filhos sobre sexo?
Deus é o culpado pelo nosso sofrimento?
O que acontece quando morremos?
O que é o inferno? É um lugar de tormento eterno?
Artigos para promover a felicidade de casais
A Bíblia é produto da sabedoria humana?
O que é um amigo de verdade?
Por que rejeitar a pornografia?
Para crianças pequenas – videos educativos (desenho animado)

Até o próximo artigo!

1

26 comentários sobre “RELÓGIO FALANTE – ADICIONANDO SOM A APLICAÇÕES COM PIC – C/ PIC 16F628A (REF168)

    1. 0

      Olá Luis!
      Respondendo a pergunta: …consigo montar um display para ver as horas alem de só escutar?
      R. Não, esta montagem não está preparada para receber um LCD. Terá que ser alterado todo o programa.
      Cláudio

  1. 0

    Olá Cláudio!Tudo bem?
    Quero saber, se você pode desenvolver um projeto para meu uso e posta-lo em seu blog. Talvez mais pessoas estejam com a mesma necessidade que eu no momento.
    Grande abraço e obrigado.

    1. 0

      Olá Dindobel!
      Apesar de gostar muito de criar ‘projetinhos’ com microcontroladores, eu não tenho condições de pegar um projeto para desenvolver, pois não tenho conhecimento pleno, mas parcial nesta área e o tempo para esta atividade é reduzido, apenas a título de “hobby”. O que costumo fazer é anotar no meu ‘caderninho’ as sugestões, e em artigos futuros, pode ser que eu use o tema para um artigo.
      Claudio

  2. 0

    Olá Cláudio! Finalmente montei um gravador que usa a porta paralela e usei a memória SST25VF016B que tirei do gravador de DVD, lembra?
    Como você disse, levei uma canseira até conseguir fazer o bichinho funcionar. Primeiro fiz um backup do arquivo da memória, apaguei e gravei o arquivo .BIN do relógio. Só que primeiro ele avisa que o tamanho do arquivo não corresponde ao tamanho da flashrom. Então pergunta: continue [y/n]? A gravação para em 75% e diz novamente que o tamanho do arquivo não condiz com a flash. Resolvi regravar o arquivo original que fiz backup e gravou 100%. Pode me dá uma ajudinha? Grande abraço e muito obrigado.

    1. 0

      Olá Dindobel!
      A parte crítica é justamente conseguir gravar esta flash, exceto se tiver um gravador comercial para ela. Depois que conseguiu gravar o arquivo conseguiu funcionar no circuito?
      Cláudio

      1. 0

        Eu consigo gravar 100% o arquivo que já estava na flash.
        O arquivo FLASH_RELOGIO_FALANTE_CAL.bin, só grava até 75% e diz que o tamanho não é compatível com a memória.Será que eu consigo com a que você usou MX25L1606 ou MX25L1605?
        Ou terei que comprar um gravador comercial? Ainda não montei o circuito do relógio.Abraço.

        1. 0

          Olá Dindobel!
          Com a mx25l1606e com certeza funciona, pois foi a que eu usei. Como eu disse anteriormente, não tenho certeza se funcionará este outro modelo de flash, apesar de muitas semelhanças. Lí alguns artigos na internet, que mencionam que este tipo de memória nem sempre tem a capacidade máxima. Durante a produção, parece que muitos bytes podem não funcionar corretamente, mas um software rodando no processador auxiliar dribla as falhas. Eu não tenho programador comercial, mas montei em protoboard mesmo, o programador “SPI FlashROM Programmer 2.23 by RayeR”, usando a porta paralela e uns poucos componentes, sendo que a memória eu soldei em uma plaquinha com formato de ci de 8 pinos (para facilitar montar no protoboard). Após o uso eu desmontei do protoboard. Quantos bytes tem o programa original da flash? Tem como ler qual a capacidade da flash em seu programador?
          Cláudio

          1. 0

            Olá Cláudio!
            No programador ela aparece assim:

            FlashRom Jedec ID Tipo: BF2541H
            SST SST25VF016B (2MB)

            O programa original tem 2,097,152 bytes.Grava 100%
            Eu percebi que o programador para em 75% com o arquivo do relógio, justamente com 1,593,334 bytes, o tamanho total do programa FLASH_RELOGIO_FALANTE_CAL.bin. Só não sei se ele parando em 75%, realmente finaliza a gravação. Só testando no circuito. Será isso mesmo?
            Grande abraço e mais uma vez, obrigado.

          2. 0

            Olá Dindobel!
            Bem, pela lógica é isto mesmo. E parece ser confirmado pela regra de três (1593334 x 100 / 2097152= 75,99 %). Terá que montar e ver se vai funcionar também na questão das instruções de comando, pois como disse, não usei ela na minha montagem.
            Cláudio

  3. 0

    Olá Cláudio! Eu posso usar um cristal de 32,768khz no lugar do 38,768khz? Pois não estou encontrando este que você usou no projeto.
    Grande abraço.

    1. 0

      Olá Dindobel! Você deve usar o de 32,768khz. Foi uma errata no esquema saindo incorretamente 38,768khz. Este cristal é muito comum em relógios, destes importados, de custo reduzido (5 a 10,00 Reais). Obrigado por trazer a tona este engano.
      Cláudio

  4. 0

    Olá Cláudio! Você mencionou que a 25L1606E possui 2M de memória. Observei no Datasheet que consta as lestras MX25L1606E… como :
    16M-Bit [x1/x2] cmos serial flash. É o mesmo tipo de memória? Obrigado.

    1. 0

      Olá Dindobel!
      Creio que seja apenas uma questão de ‘modo de dizer’. Note que 2 Mbytes é o mesmo que 16 Mbits (8 bits por byte).
      Cláudio

  5. 0

    Olá! Parabéns por estar sempre compartilhando conhecimento com todos.
    Seria possível eu utilizar esta eeprom SST25VF016B que achei em um gravador de dvd, no lugar da 25L1606E? A pinagem é a mesma.Grande abraço e obrigado.

    1. 0

      Olá Dindobel!
      Olhando os datasheets , apesar de algumas diferenças internas, as instruções usadas no programa parecem compatíveis, levando a crer que possa ser uma substituta. Mas não posso afirmar com certeza que vá funcionar, pois nunca usei esta memória. Faça um teste e depois dá um retorno para nós.
      Cláudio

  6. 0

    Cláudio, fico muito agradecido pela dica! 😀 Vou tentar montar um circuito desses para teste. Tem alguma placa-mãe específica que possa encontrar esta eeprom? Um abraço e tenha uma ótima semana!

  7. 0

    Boa noite grande Lários!!!
    Estou precisando de uma caneta(Ponta de Prova TTL e CMOS)Igual ou parecida com esta do link que usa um PIC 12F675: https://www.youtube.com/watch?v=ktmX0ghK1MA.Já procurei por todo o seu site e não encontrei algo parecido. Trabalho com conserto de automóveis e as que tem no mercado sempre têm uma tensão residual na ponta (Agulha) que às vezes queimam os módulos dos veículos. Poderia projetar uma para divulgação no seu site??? Muito obrigado caro Lários…

    1. 0

      Olá Batmonstro!
      Acredito que não encontrará alguma ponta de prova que não tenha alguma tensão residual, pois ela é necessária para indicação dos níveis corretos (em especial, o de alta impedância). Acredito que a queima dos módulos pode ser em decorrência de eletricidade estática (alta tensão de milhares de volts) no corpo (salto de borracha, e não uso de pulseira de aterramento padrão).
      Cláudio

    1. 0

      Olá Xuguinho!
      Os sons podem ser gravador a partir da voz humana (alguém falando no microfone) usando o programa ‘Audacity‘ e um PC.
      Poderá usar também sons .wav para formar uma somátoria de arquivos a serem gravados.
      Caso o som esteja em ‘mp3’ terá que converte-lo em ‘.wav’ usando um programa como o ‘Format Factory‘, mas antes, poderá aumentar o ganho do som usando um programa como o ‘MP3Gain‘.
      Sons baixos não dão boa gravação e os alto demais irão distorcer na hora de reproduzir. Tem que experimentar até atingir um nível satisfatório.
      Depois precisa alterar a taxa de amostragem convertendo com um programa apropriado. Poderá usar o ‘Btc Sound Encoder‘ para alterar esta taxa para 19530 hertz, mono.
      Depois, devera abrir com um programa editor, como o ‘Frhed‘ para eliminar os cabeçalhos relativos as informações .wav logo no começo do arquivo. Elimino também os espaços finais muito longos. E coloco a finalização da faixa, quando usada (0x22).
      Salvo então como um arquivo .bin (já que não tem mais cabeçalhos, não é mais .wav).
      Este será usado para gravar na flash, respeitando o tamanho a ser gravado (o arquivo tem que ser igual ou menor que a capacidade da flash). Note que algumas flash gravam apenas de 255 em 255 bytes. Se o programa ficar com pedaço final inferior a isto, não será gravado. Deverá preencher este espaços finais com 0x7f até completar 255 bytes.
      Para gravar a flash poderá usar o programa SPIPGMW que usa a porta paralela do PC (ou adaptador usb/paralela) ou um gravador de flash de sua preferencia.
      No começo, dá um pouco de canseira até pegar o jeito.

      Cláudio

  8. 0

    Bom dia Cláudio. Feliz Ano Novo!!! Parabéns pelo projeto. É bem interessante. Tenho uma dúvida sobre a compilação: Por gentilza, poderia me informar qual foi o programa utilizado para gerar a flash BIN? Um abraço e fica com Deus.

  9. 0

    Parabéns pelo blog.
    Só tive contacto com o blog hoje, mas faço intenções de ser frequentador. Estive a dar uma espreitada num dos códigos e gostei muito da elegância como esta escrito.

    um óptimo trabalho parabéns.

    1. 0

      Olá Morsego! Obrigado por sua demonstração de apreço pelo trabalho deste blog. Mas a ‘elegância’ citada por você é mero acaso, pois sou apenas iniciante na linguagem “C”.
      Cláudio

  10. 0

    Parabens pelo otimo projeto amigo , so me diz uma coisa eu viu um projeto parecido com esse seu poreém alem do seu ser em protugues usa um micro mais acessivel , o que eu vi tinha um display para mostrar os digitos tb , teria como serfeito a incusão desse display ou de lcd ou de led usando um 74hc595 ?

    1. 0

      Olá Liliano!
      Obrigado por seu comentário de apreço pelo artigo em questão. Como o objetivo foi construir um relógio para pessoas com deficiência visual, não vi a necessidade de colocar um display (inútil para um cego). Para incluir um ‘display’ terá que usar um pic com mais pinos para o lcd (+6 pinos) ou alterar todo o programa para liberar pelo menos 4 pinos para usar junto com um shift register 74hc595, que no meu modo de ver não seria muito prático.
      Cláudio

Os comentários estão fechados.