Para quem não leu o antigo projecto, o Arduino é um micro controlador que permite ligar vários dispositivos e os comandar com uma linguagem de programação própria que é “gravada” dentro do chip do Arduino. Os dispositivos podem ser leds, motores, sensores etc…
Sendo uma placa bastante pequena e barata, e existindo centenas de periféricos a preços aceitáveis, é uma excelente maneira de termos acesso à robótica caseira.
Este último mês estive de volta de mais um projecto que me derreteu o pouco juízo que tinha. Armado em engenheiro, convencido que sei muito disto, quando a realidade é bem diferente, tentei ir a outro nível. Acender uns Leds já não era para mim, meti na cabeça que tinha de dar um salto e fazer algo mais complicado. O resultado foi positivo mas a minha cabeça pede descanso por uns meses….
O pequeno projecto que vou relatar para um tipo de electrónica é um passeio no parque, mas para mim, esse passeio requer levar tenda de campismo, saco cama, lanterna, comida para 30 dias e estojo de primeiros socorros. É provável que dispare uma ou outra gaffe, mas não serão muitas, a realidade é que funciona e deixo o vídeo como prova.
Então o que me lembrei eu de fazer? Um relógio. Sim isso, aquela cena que dá horas e tal… Mas não é ir buscar a hora ao relógio do PC. É construir um relógio e metê-lo a funcionar sem estar ligado a um computador e sem utilizar outro componente já com a função de horas. O meu último projecto tinha sido acender uns Leds e formar umas letras, se esse já me deu cabo da cabeça, este nem imaginam.
Ora então como fiz isto? Foi simples e complicado ao mesmo tempo. Simples na teoria, complicado na prática. Ora bem, o Arduino por si só não tem uma maneira de guardar as horas. O que fazer então? Temos que recorrer a duas peças presentes em praticamente tudo o que é motherboards. O RTC e Oscilador de cristais. Estas são pequenas peças presentes em milhões de circuitos em todo o mundo. Passo a explicar: basicamente o RTC conta o tempo que o Oscilador lhe dá. O RTC (Real time clock) é um pequeno chip de 8 pernos (utilizei um da marca Dallas) que conta e guarda o tempo. Mas conta o tempo? Calma, isto não é fácil nem de perceber nem de explicar. Vamos ao oscilador de cristais para ajudar a perceber. Este oscilador em quartzo é basicamente a mesma peça que temos nos nossos relógios de pulso. O Quartzo tem uma propriedade muito interessante. Quando lhe é aplicada voltagem, ele vibra sempre com a mesma frequência, neste caso: 2 elevado a 15 vezes por segundo (32.768 Mhz). O Oscilador de cristal tem um formato cilíndrico com mais ou menos 1 centímetro de comprimento e tem lá dentro uma pequena folha de quartzo. Está ligado a 2 dos pernos do RTC. Quando o RTC lhe aplica corrente, o Oscilador mete o quartzo a vibrar. O RTC conta o número de vezes que o quartzo vibra e quando chega a 2 elevado a 15, sabe que passou 1 segundo incrementando essa unidade de tempo à hora e data que tem guardado. Estas duas peças trabalham assim em conjunto, e lá está, uma dá a unidade de tempo e a outra vai contando-o (resumindo muitíssimo a teoria claro). Faltou aqui outro pormenor: é que cada vez que desligamos o sistema, a hora é perdida. O RTC tem de ser alimentado constantemente com corrente para não perder a hora, para isso usamos uma simples pilha. Antigamente os computadores usavam baterias soldadas na boards em vez de pilhas. Passado 10/15 anos derramavam, tal como acontecia com os condensadores. Hoje em dia a pilha (formato moeda) é mais fiável e permite ser substituída.
Continuando, com RTC, oscilador, pilha e usando o Arduino como controlador para isto tudo, tive condições de fazer um relógio. Mas, e como mostro as horas? Bom, ligado ao PC, posso ver as horas numa janela, mas isso não fica grande coisa, tem de ser autónomo do PC. Então, tive que arranjar um pequeno display, um LCD de 16 caracteres por 2 linhas. Custam cerca de 7 dólares, bastante barato e exactamente o que eu precisava. E como o fabricante dizia que funcionava com o Arduino, melhor ainda, perfeito.
Reuni as peças todas comecei a ler na Internet e vi logo que a coisa não era assim tão simples. O LCD necessitava de ser ligado com vários fios e para afinar o contraste da imagem tinha de meter um potenciómetro. Para ajudar à festa (que ainda não esta muito complicado) resolvi que para acertar as horas teria de ser via bluetooth com Android, sim porque eu tenho tendência para escolher tudo o que é complicado. Mandei vir de Hong Kong um pequenito circuito bluetooth para o Arduino de modo a poder aceder com o Android, e como? Bem tive que fazer o programa. Como já tinha trabalho que chegue, não me atirei para Java/Eclipse e optei pelo App Inventor para fazer o programa que é bem mais simples.
O circuito bluetooth tem 4 pinos, 2 para corrente e 2 para dados. No meio da salgalhada, ainda resolvi meter 4 pilhas de 1,5V com um interruptor para alimentar tudo. E agora soldar isto tudo? Pois é, foi uma tourada daquelas! Usei um circuito novo (breadboard impressa) para soldar os componentes. Alguns dos fios, os que vão ao Arduino, não soldei para poder usar o controlador para outros projectos.
O resultado final foi um relógio digital que mostra a data e hora num LCD e permite ser acertado via Android (telemóvel). Quando se desliga o sistema a hora é guardada.
De notar ainda que o Arduino tem de ser programado, o programa é bastante simples, onde fica bem mais complicado é a rotina para meter o RTC a trabalhar. Aqui não perdi mais tempo e fui buscar o código na Internet, ainda tentei fazer eu a rotina, mas…
Agora antes que comecem se é que já não começaram a pensar, “- mas para que raio serve isto”? Bom o que conta aqui é o gozo em fazer as coisas, em aprender e em criar. Óbvio que efeitos práticos são poucos, mas…. Posso dar uns exemplos: substituindo o Arduíno por um Arduíno construído por nós (será um projecto de futuro) o preço desce ainda mais, possibilitando fazer, por exemplo, um circuito para fazer disparar as luzes da casa a determinada hora por um preço muito baixo. Todo o esquema que falei aqui é necessário para se saber que horas são. Depois é juntar em relé, juntar código de alarme e fazer disparar a luz de um candeeiro. Mas sei lá, por exemplo, automatizar os estores da casa (juntando um motor e um relé). Reparem que com um Arduino podem fazer robótica sem necessitar de um PC para ser executado, precisam dele sim para passar o código para o Arduino, mas depois fica autónomo. De resto basta ter imaginação e uma boa dose de paciência.
Em termos de código, quem quiser, posso enviar, é só pedirem.
Para verem o vídeo deste tutorial clicar aqui.
Outros projectos Arduino:
Acender um candeeiro com o Arduino/Android
Olá, ótimo projeto.
tem como enviar o código fonte?
Muito bom o seu projeto, gostei muito, poderia me enviar o código do projeto: rildosd@ig.com.br.
Obrigado.
Já enviei o código para o seu mail.
Obrigado
Bom o projeto, gostei muito, poderia me enviar o fonte do projeto.
Obrigado.
Olá Rildo, deixe o seu email para lhe enviar o código.
Olá..parabéns pelo projeto.
você poderia encaminhar o código para mim, estava procurandp algo semelhante a dias…
obrigado.
herick.conceicao@uol.com.br
Olá viva, enviei o código para o seu e-mail.
Cumprimentos
ola gostei do seu progeto tem como vc mandar o codigo ,eu estou montado um medidor de temperatura e gostaria de juntar esse relogio com o medidor , pois queria gerar um arquivo em txt e ter o controle da temperatu e quando ficar variando saber o dia e a hora que aconteceu ,se posivel ,, valeu um abraço
Olá Aldir, envio já por e-mail.
Cumprimentos
Boa tarde,
Muito bom o tutorial e o projeto.
Me envia o código também pra mim brincar aqui?
adriano.sena@msn.com
Valeu
Oi, pode me enviar o codigo, eu to penando com o RTC… e parabéns pelo site!
Código enviado
Cumprimentos
pode me passar o código fonte
Parabens pelo projecto !
Peco que me emvie o codigo !
kevingulele@gmail.com
Código enviado
Cumprimentos
Boa noite Pushstart,
Por gentileza poderia encaminhar o código do projeto.
Desde já agradeço.
Hudson
Código enviado cumprimentos
Pushstart,
Segue e-mail.
hudsonnardi@yahoo.com.br
Olá! Ótimo projeto! pode me enviar o código por favor?
alexandre@theodoro.com.br
Olá! ótimo projeto! pode me enviar o código por favor?
Obrigado!
alexandre@theodoro.com.br
olá! ótimo projeto! pode me enviar o código por favor?
alexandre@theodoro.com.br
Código enviado
Cumprimentos
Muito bom ! Pode me enviar o código fonte ? (giovannaspqr@gmail.com)
Código enviado
Cumprimentos
Muito legal seu projeto, gostaria de acrescenta-lo ao meu conhecimento e projeto, será q vc poderia me enviar seu código fonte para o meu email ?(brunomalost@hotmail.com). Assim q conseguir acrescentar ao meu proj te passo as fotos de como ficou… Grato
Bruno, código enviado
Cumprimentos
Ola amigo,
Gostei muito do seu projeto, ficaria honrado em poder utilizar ele num outro projeto que estou tentando fazer. Poderias me passar o código? Obrigado.
Meu email é cknies@gmail.com
Codigo enviado
Boa noite… eu estou crianado um sistema de automação residencial a alguns dias estou querendo acrescentar um sistema de hora e data, para interagir com o resto da casa, confesso que acabei me precipitando e implante um ship rfid na minha mão para poder abrir as portas e acionar as lampadas, ventiladores e até o ar condicionado onde cada cômodo ajusta automaticamente os objetos de acordo com as minhas preferencias q são pre-programadas. E gostaria de adicionar mais este benefício de horario e data afim de acionar o dispertado, desligar ventiladores , desligar ar condicionado e acender as luzes do quarto. Tudo q montei ate agora foi com arduino mega, uns atmega 328, xbee’s, wifibee, bluetooth bee e alguns outros componentes, alem do android é claro. Mas a programação do app pro android quem fez foi um amigo meu de laboratório. Eu gostaria da sua ajuda para acrescentar mais essas funções ao meu sistema… se puder me ajudar so me enviando o codigo do arduino para eu usar no meu projeto eu agradeceria muito… no momento eu estou ainda em fase de protótipos, mas quando concluído todo a sistema, criarei as proprias placas especificas para as suas respectivas atividades, mas com brechas para poder fazer atualização e aprimoramentos conforme necessário ao longo do tempo a fim de no futuro poder comercializar esse sistema em residências ou ate mesmo em escritórios e indústria. .. alem de ser para mim um metodo educativo… sou técnico de eletrônica e pretendo ser um engenheiro futuramente… obrigado…
Código enviado. Cumprimentos
Olá boa tarde, você poderia mandar o código para o meu email cris.tau@hotmail.com achei o projeto muito interessante.
Agradeço.
excelente trabalho, Parabéns, você poderia enviar o codigo para o meu email cris.tau@hotmail.com
Desde de já Agradeço.
excelente trabalho, Parabéns, você poderia enviar o código para o meu e-mail cris.tau@hotmail.com
Desde de já Agradeço.
Código enviado Cristina.
tiago vc tem algum codigo para rtc ds 1307 para um relogio com alarme, para liga uma luminaria no horario e desliga em outro horario,.
desde ja agradeço.
oliveira-e-oliveira@ig.com.br
Tiago vc tem algum codigo para rtc ds1307 com alarme para liga um rele com uma lampada
desde ja agradeço,
Olá Marcio, alarme não tenho, mas o código será basicamente o mesmo que neste projecto, com o extra de verificar se a hora alvo já chegou. Tens o código deste projecto? Para ligar lampada, estás a falar de led 3v ou lampada 220v? Se for 220v então um rele é necessario. Comprei um no dx.com bem barato, a ligação é facil, 2 fios vindos do arduino (+ e -) e 2 fios para o circuito externa, ou seja a lampada.
Parabens Tiago,
Gostaria de saber apenas como você solucionou o problema de imprimir 2 digitos para hora, min e seg aparecendo o zero quando os mesmos são menores que 10?
Um abraço
Olá Elias, o código pergunta se é menor que 10 e depois é só meter na coordenada certa.
No LCD para imprimir podemos dizer qual caracter vai ser escrito:
void printData(){
int rtc[7];
ds1307get(rtc,true);
//* mete horas no ecra lcd – inicio
lcd.setCursor(0,1);
lcd.print(“00:00:00”);
if (rtc[HORAS] < 10) { lcd.setCursor(1,1); lcd.print(rtc[HORAS]); } else { lcd.setCursor(0,1); lcd.print(rtc[HORAS]); } if (rtc[MINUTOS] < 10) { lcd.setCursor(4,1); lcd.print(rtc[MINUTOS]); } else { lcd.setCursor(3,1); lcd.print(rtc[MINUTOS]); } if (rtc[SEGUNDOS] < 10) { lcd.setCursor(7,1); lcd.print(rtc[SEGUNDOS]); } else { lcd.setCursor(6,1); lcd.print(rtc[SEGUNDOS]); } //* mete horas no ecra lcd - fim
Olá poderia me passar o código fonte?
dr.mauricio150@gmail.com
agradeço!
Olá Mauricio.
Código já enviado
excelente trabalho, Parabéns, você poderia enviar o codigo para o meu email klaitton@hotmail.com
Desde de já Agradeço.
Olá,
código enviado.
Olá!
Parabéns pelo trabalho, estava procurando alguma coisa desse tipo para um projeto escolar há algumas semanas… Poderia enviar o codigo para mim?
r_wandscheer@hotmail.com
Obrigado
Olá Rafael, obrigado!
Código enviado
Oi! Adorei seu trabalho, poderia me mandar o codigo por favor?
vanessa.schmidt@cep.g12.br
Obrigado Vanessa,
código enviado.
Olá, teria como me enviar o código?
karina.Tie@hotmail.com
obrigada 🙂
Olá Karina, código enviado.
Primeiramente, parabéns pela iniciativa e pelo projeto.
Se tiver como me enviar o codigo, ficarei grato.
wilsonrljr@outlook.com
Olá Wilson, obrigado.
Já lhe enviei o código.
Oi, parabens pelo projeto .
Tem como me enviar o código?
Desde já, agradeço .
Olá,
já lhe enviei o código para o mail.
Cumprimentos
Adorei o projeto, parabéns! Quero fazer algo parecido.
Se importa de me enviar o código?
Obrigada!
Olá Ana.
Código enviado.
Parabéns pelo projeto Tiago
Estou buscando algo parecido.
pode me enviar o código?
Obrigado, Abraço
Código enviado
Parabéns pelo projeto.
Estou tentando fazer um relógio com leds que giram e gostaria de tentar usar o código do seu projeto com base, se for possível eu agradeço.
Um abraço.
Olá Hugo.
Código Enviado
Ola parabens
pode me passar o codigo?
Olá Rafael.
Código enviado.
Cumprimentos
Boa noite!
Estou com bastante dificuldade em montar o código para simular no Arduino, você poderia me enviar o codigo, ficarei grato.
alves.adriano@hotmail.com
Olá Adriano.
Código enviado
Poderia me enviar o código por favor.
leonardo.pinheiro.ti@gmail.com
Olá Leonardo.
Código enviado
Ola, achei excelente o projeto, poderia enviar o código fonte por favor?
kivaister@gmail.com
Olá,
código enviado
Bom projecto !
pode me passar o código ?^^
lameirinhaslopes@gmail.com
Bom projecto !~!
pode me passar o código ?^^
lameirinhaslopes@gmail.com
Olá Carlos.
Código enviado
Excelente post! Parabéns!
Por favor, poderia enviar o código fonte?
Obrigado!
Olá Luciano,
código já enviado
Olá parabéns pelo projeto, e realmente o cérebro frita mesmo com os projetos
poderia me enviar o código, achei interessante atualizar a hora pelo Bluetooth
Grato
Olá Jorge, código já enviado
pode me enviar o código
Já enviado. Cumprimentos
Olá, antes de mais quero dar os meus parabéns pelo seu esforço e dedicação ao fazer um projeto deste nível.
Seria possível enviar-me o código (tanto para arduino como para o bluetooth) para o seguinte mail: dudoto22@gmail.com
Ficaria grato.
Cumprimentos
Miguel
Código enviado.
Cumprimentos
Pode me enviar o código fonte ?? Pvf
kaikecastro@hotmail.com
Nossa muito legal o projeto!
pode me passar o codigo fonte:]
email: kaikecastro@hotmail.com
Olá Kaike, código enviado.
Cumprimentos
Olá Amigo, você ainda possui o código desse projeto?
Olá Amigo, gostei muito do projeto. Muito Bacana.
Poderia me enviar o código?
jonathan.info@gmail.com
Olá Jonathan, código enviado.
Olá amigo você poderia me enviar o código ?
rodrigoeduardosilv@bol.com.br
Olá Rodrigo. Código enviado
Cumprimentos
ótimo projeto, teria como me enviar o código.
alexsandro.unidefined@gmail.com
Olá viva, código enviado.
Cumprimentos
Muito bom o seu projeto, gostei muito, poderia me enviar o código do projeto
oscartepoz@gmail.com
Cumprimentos
Olá viva, código enviado
Olá, eu poderia passar o código, grato
luis_191090@hotmail.com
Poderia me enviar o código por favor.
luis_191090@hotmail.com
Olá viva, código enviado
Olá, antes de mais quero dar os meus parabéns pelo seu contributo e dedicação para fazer um projecto deste nível.
Seria possível enviar-me o código.
pjlrebelo@hotmail.com
Cumprimentos
Paulo Rebelo
Olá Paulo. Código enviado
Boa tarde,
Muito bom o tutorial e o projeto.
Me envia o código também pra mim brincar aqui?
coelhofluis@gmail.com
Olá Luis, código enviado.
Cumprimentos
Oi amigo. Pode me mandar o codigo por email?
Boa tarde Amigo. Pode me enviar o codigo? Grato.
Código enviado por mail.
Cumprimentos
Olá tudo beimmmmmmmm.
poderia por gentileza também me enviar o código colega, ficaria muito grato, até mais.
meu e-mail é: odilonmarcelo@yahoo.com.br
Olá Odilon
Código enviado.
Cumprimentos
Boa noite!
poderia enviar o código fonte?
celio_ne@hotmail.com
Código enviado
Cumprimentos
Olá, parabéns pelo seu contributo e dedicação para fazer um projecto deste nível.
Gostava de saber como acertar o relogio por bluetooth
Seria possível enviar-me o código.
Obrigada
Código enviado,
cumprimentos
Olá, parabéns pelo projeto.Sou um amante pelo arduino, principalmente por facilitar o trabalho duro na programação de microcontoladores.
Seria possível enviar-me o código.
Obrigado!
Codigo Enviado Leonardo.
Cumprimentos
Gostei muito do seu projeto, sera que consigo acrescentar um controle RF nele, vc me envia o código do que vc já fez?, vlw obrigado
Controlo de RF? O que quer dizer com RF, pode explicar melhor?
Código enviado.
Poderia me enviar esse projeto para juangarcia725@hotmail.com
agradeço
Olá viva, código enviado.
Ola, poderia me enviar o código?
bernardocaeiro2000@gmail.com
Obrigado
Código enviado
Boa noite! Por favor você poderia me enviar o código fonte? Muito obrigado!
Olá Viva, código enviado.