Prova de conceito
A ideia de fazer este robô era para motivar alunos recém chegados o novo curso de robótica com Arduino, o qual irá até o final deste ano onde sou o professor.
Foi então em Março de 2012 que aproveitando a oportunidade, resolvi também aplicar algumas “provas de conceito”. Havia já comprado dois ou três mini servo motores de 9g, o SG90, e gostaria de testar sua aplicação em tração de robôs. No meio do processo, vi que tinha dois painéis solares, daqueles que geram 5v por 175mA (muita energia!) e ocupam um espaço/peso muito pequeno.
Resolvi juntar tudo, e fazer um robô que segue luz durante a noite, e durante o dia, sem precisar de pilhas ou baterias, ele se tornou um robô que segue o sol.
A construção
A ideia, e construção da parte física do robô durou um dia, isso mesmo, apenas um dia e logo você irá perceber porque. O desenvolvimento do programa para controle demorou mais outro dia (isso entre aprender a trabalhar com o servo, LDR e fazer todos os testes).
Acompanhe as imagens de desenvolvimento deste do robô abaixo:
[nggallery id=2]
Código fonte original
Simples, com muitas melhorias, mas funcional. Este é o primeiro código fonte, o original, gravado no pai de todos.
/* Programa para controle de carrinho seguidor de luz Paulo Marcos Trentin Data de inicio: 04-03-12 */ #include <SoftwareServo.h> // Define pinos dos sensores de luz #define F_CEN 2 #define F_DIR 1 #define F_ESQ 0 #define T_DIR 2 #define T_ESQ 3 // Diretiva de preprocessador #define LDR(pin) (analogRead(pin)) // Instancias servomotor SoftwareServo servoDir; SoftwareServo servoEsq; int sensors[] = {F_ESQ, F_CEN, F_DIR, T_ESQ, T_DIR}; void setup() { Serial.begin(9600); Serial.println("ok"); servoDir.attach(2); servoEsq.attach(3); } void goFront(){ servoDir.write(75); servoEsq.write(100); } void goLeft(){ servoDir.write(70); servoEsq.write(70); } void goRight(){ servoDir.write(100); servoEsq.write(100); } void loop() { for (int i = 0; i < 5; i++){ Serial.print(analogRead(sensors[i])); Serial.print(" "); } Serial.println(); // Vai para frente goFront(); // Verifica se deve seguir a esquerda if (LDR(F_ESQ) > LDR(F_CEN)){ goLeft(); } // Verifica se deve serguir a direita else if (LDR(F_DIR) > LDR(F_CEN)){ goRight(); } /* // Verifica se temos mais luz atras que na frente if (LDR(T_ESQ) > LDR(F_CEN) || LDR(T_DIR) > LDR(F_CEN)){ if (LDR(T_DIR) > LDR(T_ESQ)) { goRight(); }else{ goLeft(); } }*/ // Aqui faz o servo funcionar delay(15); SoftwareServo::refresh(); }
Atualização em 10/03/2014 – O esquema elétrico
Respondendo ao pedido do Felipe Inagaki, fiz o esquema elétrico do robô mostrado acima. Assim fica mais fácil reproduzi-lo em casa. Vejam que as conexões são bastante simples!
Clique Filedownload Error: file 'http://www.paulotrentin.com.br/wp-content/uploads/2012/10/robo-seguidor-de-luz_bb.png' does not exist! para baixar a imagem original acima.
A mutação do código fonte
Nem eu e nem Isaac Asimov conseguimos prever o que veio pela frente. Por saber seguir a luz, este robô aprendeu a desviar da sombra! isso mesmo, testando no sol, o robô conseguia seguí-lo a ao aparecer uma parede com sombra, ele desviava da sombra numa maneira quase que instinta. O software sofrera sua primeira mutação!
Video do robô funcionando
Infelizmente não fiz nenhum video detalhado do funcionamento do robô, mas neste video pode-se ter uma ideia de como ele era. Obrigado professor Herculano, por gravar e fornecer o video!
O pai de todos, enfim, descansa em paz
Como tudo nessa vida tem um começo, meio (as vezes reprodução) e um fim, infelizmente nosso robô seguidor de luz morreu em meados de janeiro de 2012, já com sua missão aqui na terra cumprida. Acabou viajando muito para demonstrações (para alunos e amigos em outras escolas) e não resistiu tamanhas agitações. Hoje está em algum lugar muito feliz lá no céu, ensinando à baratas que a luz não é tão perigosa quanto imaginavam.
Seus órgãos funcionais foram doados para a criação de um novo robô, portanto além de inspirador o pai, foi também um saudável doador, cumprindo com seu dever robótico.
[nggallery id=3]
O que aprendi com esse histórico robozinho
Ele foi muito querido para mim, e o motivo de não ter tirado nenhuma foto do seu lado não foi falta de amor, e sim mais uma vez, descuido com sua memória. Por isso, aprendi novamente: sempre registre muito bem coisas legais que faz.
Ele me ensinou que perfurar um CD-ROM e passar uma presilha plástica pode não ser a melhor opção para segurar um mini servo motor. Que CDs não são exatamente a melhor base para um robô, mesmo sendo um CD do linux! Aprendi que cola quente não cola capacitores em CDs.
Mas o mais importante, aprendi que com criatividade e paciência, podemos gastar muito, muito pouco para construir um robô que segue luz e desvia da sombra.
A reprodução da espécie
Esse robô superou todas as expectativas que tinha para ele, pois simplesmente funcinou 100%! E mais, acabou servindo de inspiração para outros projetos de robôs, e um deles é o que vamos ver como foi construído aqui. Enfim, ele gerou muitos filhotinhos :)
Fiquei muito feliz com os elogios de amigos e alunos, com o encanto que ele gerou nas pessoas, elas até o acharam fofo! hehe.
O pai de todos então inspirou a geração de uma nova raça de robôs, mais forte e adaptada ao meio, a qual será contada no próximo capítulo desta história.
Gostei muito da apresentação…
Obrigado Roger!
Olá, primeiramente parabéns pelo projeto, tenho 15 anos e sou um jovem aprendiz da mecatrônica e realmente achei muito interessante a ideia, tanto que a pouco tempo iniciei a construção do mesmo.
Mesmo que muitas vezes os meus projetos não deem certo, passar o tempo montando circuitos e afins é como um hoobie .
Porém estou com certa dificuldade na montagem do circuito, por ser um iniciante com o arduino, por isso gostaria se possível o esquema de ligação.
Obrigado.
Oi Felipe, desculpe pela demora em lhe responder. Agora me organizei melhor para gerenciar o site (esta vez é de verdade! hehe)
Que bom que está fazendo um robô em casa, parabéns pelo espírito de robbista hehe. Isso é o que vale, pois mostra que tu tens muito interesse na área, e verás que isso fará toda diferença!
Felipe, sua sugestão foi muito boa, fiz o esquema de ligação do robô completo, assim será mais fácil você montar e verá que não tem muito segredo não!
Espero que lhe ajude e que a demora da resposta não tenha lhe desmotivado em terminar o robô.
Bons estudos rapaz!
Olá Paulo muito obrigado pela resposta, na verdade nesse meio tempo ja fiz algumas tentativas de layout do circuito mas agora ficou bem mais facil.
Obrigado de novo pela consideração em postar o circuito e boa sorte.
Abraços :))
Ok Felipe, que bom que já fez outros testes. De qualquer modo seu comentário motivou a criação do circuito que vai facilitar a vida de outros hobbistas hehe.
Valeu pelo retorno!
Show de bola cara, muita criatividade, parabéns mesmo, continue assim, postando muita coisa legal…
eu queria saber se vc usa capacitor e qual o tipo
Sim, usei um de 2000uF.
Como fez para o servo motor girar 360 graus, sendo que em sua maioria gira 180?
Oi Diego, veja este video que fiz mostrando como destravar um servomotor permitindo que gire 360 graus: https://www.youtube.com/watch?v=EPt_IjXpVjw
Parabéns pelo projeto Paulo! Sou estudante do curso de Engenharia de Energias, e pretendo reproduzir este projeto, porém tenho uma duvida, o mesmo pode ser replicado em um Arduino UNO? Você teria algum vídeo do funcionamento dele?
Oi Camila, muito obrigado!
Atualizei o link do video do robô funcionando, ele pode ser feito sem problemas com o Arduino UNO.