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.
Clique aqui para ver um video caseiro com o relógio em funcionamento (em protoboard apenas):
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:
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:
Errata: No esquema consta cristal de 38,768khz sendo que o correto é 32,768khz.
Manuais:
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!
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.
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
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.
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
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.
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
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.
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
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.
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
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.
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
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!